←2011-09 2011-10 2011-11→ ↑2011 ↑all
2011-10-01
00:00:37 <elliott> pikhq: what's up with mplayer/mplayer2
00:00:56 <pikhq> elliott: Fuck if I know.
00:01:15 <elliott> thx super helpful :P
00:01:25 <elliott> people should really stop naming forks such misleading things
00:02:02 -!- derdon has quit (Remote host closed the connection).
00:08:38 <oerjan> spearing utensil
00:13:38 <elliott> xD
00:14:03 <CakeProphet> braincursion is the best because it has nothing to do with recursion.
00:15:30 * CakeProphet makes the best esolangs.
00:15:46 <CakeProphet> best is the best word.
00:16:13 <MDude> But does Braincursion perform in incursion?
00:17:03 <CakeProphet> what is that?
00:17:09 <CakeProphet> oh nevermind
00:17:34 <CakeProphet> uh, no.
00:17:43 <CakeProphet> braincursion should be more like brainloop or something.
00:22:32 -!- tiffany has quit (Quit: ZNC - http://znc.sourceforge.net).
00:24:35 -!- ive has joined.
00:53:59 <elliott> hi
00:57:59 <zzo38> What is "some" and "many" commands for Control.Applicative.Alternative supposed to mean? The description just says "One or more" and "Zero or more".
00:59:10 <oerjan> @src some
00:59:10 <lambdabot> some v = some_v
00:59:10 <lambdabot> where many_v = some_v <|> pure []
00:59:10 <lambdabot> some_v = (:) <$> v <*> many_v
00:59:24 <oerjan> @src many
00:59:24 <lambdabot> Source not found.
01:00:55 <oerjan> > some [1,2]
01:00:59 <lambdabot> mueval-core: Time limit exceeded
01:01:02 <oerjan> eek
01:01:13 <oerjan> :t some [1,2]
01:01:14 <lambdabot> forall t. (Num t) => [[t]]
01:01:18 <zzo38> I tried that. Using some or many on nonempty lists doesn't stop.
01:01:29 <oerjan> > take 5 $ some [1,2]
01:01:32 <lambdabot> mueval-core: Time limit exceeded
01:01:36 <oerjan> > take 1 $ some [1,2]
01:01:40 <lambdabot> mueval-core: Time limit exceeded
01:01:44 <oerjan> not at all, it seems
01:02:14 <oerjan> > take 1 $ many [1,2]
01:02:18 <lambdabot> mueval-core: Time limit exceeded
01:02:21 <oerjan> :t many
01:02:22 <lambdabot> forall (f :: * -> *) a. (Alternative f) => f a -> f [a]
01:03:00 <oerjan> hm it may seem like it gives the empty list _last_
01:03:23 <oerjan> i suspect it's meant for parser-like things
01:03:52 <oerjan> if used in Parsec, many would probably mean the same as Parsec's many
01:04:13 <elliott> oerjan: Parsec has an Alternative instance nowadays
01:04:24 <elliott> it just defines+exports its own identically-named equivalents because <hysterical raisins>
01:04:25 <oerjan> yeah so it may use it directly
01:04:34 <zzo38> I did looked and found the "many" command in Parsec.
01:04:42 <elliott> oerjan: I suspect it overrides some = ourSum and many = ourMany
01:04:46 <elliott> since they're part of Alternative
01:04:55 <oerjan> ok
01:05:17 <monqy> except: it doesn't
01:06:30 <elliott> monqy: ?
01:06:40 <monqy> it doesn't put its many in the applicative instance
01:06:46 <monqy> its many still exists and gets exported though
01:06:55 <elliott> ok
01:06:58 <elliott> silly
01:07:15 <monqy> any instead of some it has many1
01:07:31 <zzo38> Does the Applicative many still work though?
01:07:32 <elliott> s/any/and/
01:07:43 <monqy> right
01:12:25 <zzo38> Using the Control.Applicative.many with Parsec does seem to work just as well as far as I can tell.
01:12:32 -!- tiffany has joined.
01:14:43 <CakeProphet> elliott: wow bitshifts are great
01:14:47 <CakeProphet> for music.
01:15:04 <elliott> ok
01:21:33 <oerjan> > let default = 1 in default
01:21:34 <lambdabot> <no location info>: parse error on input `default'
01:21:44 <oerjan> what is that a keyword for again
01:22:29 <monqy> I always forget
01:23:11 <elliott> oerjan: clsases
01:23:12 <elliott> classes
01:23:16 <elliott> its
01:23:17 <elliott> the worst keyword
01:23:33 <elliott> as in
01:23:37 <elliott> default (Double)
01:23:38 <elliott> or whatever
01:23:43 <oerjan> oh that one
01:23:45 <elliott> by default (ha) it's "default (Integer, Double)"
01:23:47 <elliott> it's only for Num
01:23:49 <elliott> it is therefore
01:23:50 <elliott> The Worst
01:24:03 <oerjan> well ghc extends it
01:24:32 <CakeProphet> 100*sin((t>>2)+(t>>7)+(t>>(7*sin(t/450|t|t>>5))))
01:24:37 <CakeProphet> suddenly I am a master of 8-bit noise music.
01:24:50 <oerjan> but right now it is ruining my variable naming
01:27:06 <elliott> oerjan: you're coding? :D
01:27:09 <elliott> SHOCK HORROR
01:27:30 <oerjan> well someone had the bad sense of suggesting Geom isn't TC
01:29:19 <elliott> > let forall x = x in forall 0
01:29:20 <lambdabot> 0
01:29:22 <elliott> nice
01:30:40 -!- Vorpal has quit (Ping timeout: 258 seconds).
01:31:32 <elliott> oerjan: btw http://www.haskell.org/haskellwiki/Keywords
01:31:58 <oerjan> hey if i wanted to actually look it up i would have done so already :P
01:32:26 <Patashu> CakeProphet: what does that sound like
01:32:38 <CakeProphet> http://www.bemmu.com/music/index.html
01:33:01 <CakeProphet> Patashu: note you may want to turn your volume down
01:33:04 <CakeProphet> if it's at full.
01:33:16 <Patashu> it's like 8bit breakcore
01:33:18 <CakeProphet> or adjust the first 100 to 75
01:33:21 <CakeProphet> your choice.
01:33:42 <CakeProphet> Patashu: play around with some of the numbers
01:33:43 <CakeProphet> it's fun.
01:35:01 -!- augur has quit (Remote host closed the connection).
01:35:09 <elliott> <CakeProphet> 100*sin((t>>2)+(t>>7)+(t>>(7*sin(t/450|t|t>>5))))
01:35:12 <elliott> this is reasonably interesting
01:36:24 <CakeProphet> 75*sin((t>>2)+(t>>7)+(t>>(63*sin(t/1000|t|t>>5))))
01:36:30 <CakeProphet> slight variation. a bit slower.
01:36:51 -!- ive has quit (Quit: leaving).
01:37:28 <Patashu> ((t>>8)&(t>>12))+sin(t) sounds like a telegraph
01:37:47 <elliott> CakeProphet: 100*sin(t^Math.sqrt(t))
01:37:49 <CakeProphet> Patashu: try using some odd numbers.
01:37:55 <CakeProphet> elliott: uh oh
01:37:58 <elliott> you will not regret it
01:38:20 <Patashu> that one is awesome
01:38:26 <CakeProphet> awww yeah
01:38:34 <CakeProphet> sqrt, good call.
01:38:36 <elliott> yeah i'm amazed how awesome that turned out
01:38:40 <CakeProphet> gets slower.
01:38:40 <elliott> CakeProphet: XOR on sqrt
01:38:43 <elliott> so it doesn't even make any sense
01:38:47 <elliott> it relies on the float representation
01:39:33 <CakeProphet> 100*sin(t^Math.sqrt(t/50))
01:39:38 <CakeProphet> slows it down
01:40:11 <elliott> CakeProphet: Patashu: 100*sin(Math.log(10*t)^Math.sqrt(10*(t%1024))<<8)
01:40:54 <elliott> CakeProphet: Patashu: 100*sin(Math.log(10*(t%9))^Math.sqrt(10*(t%1024))<<8)
01:40:55 <CakeProphet> haha nice
01:40:55 <Patashu> What the fuck
01:40:57 <elliott> 100*sin(Math.log(10*(t%9))^Math.sqrt(10*(t%1024))<<8)
01:40:59 <Patashu> How are you coming up with these so fast
01:40:59 <elliott> this one is even better
01:41:04 <CakeProphet> maths
01:41:05 <elliott> Patashu: i'm just fucking with shit
01:41:07 <CakeProphet> leet maths
01:41:09 <Patashu> Yeah so am I
01:41:12 <Patashu> But I come up with useless shit
01:41:14 <Patashu> Yours are so good
01:41:24 <elliott> lol this is complete coincidence I assure you
01:41:27 <monqy> better at fucking with shit than you is his middle name
01:41:28 <CakeProphet> bahahaha
01:41:30 <CakeProphet> second one is great.
01:41:31 <elliott> the genius there was using modulo to get something vaguely repetable
01:41:37 <CakeProphet> yes.
01:41:44 <CakeProphet> I hadn't consider using modulo
01:41:50 <CakeProphet> +ed
01:41:56 <CakeProphet> I've been using weird bitshift patterns
01:41:59 <CakeProphet> to get complex rhythms.
01:41:59 <elliott> oh man
01:41:59 <elliott> 100*sin(Math.log(10*(t%9))^Math.sqrt(10*(t%1024))<<(t/1024))
01:42:03 <CakeProphet> modulo is something more regular.
01:42:23 <Patashu> damn that is so good
01:42:28 <CakeProphet> bahahaha
01:42:30 <elliott> Patashu: i'm as surprised as you are, let me assure you
01:42:59 <CakeProphet> | and ^ are very similar
01:43:02 <CakeProphet> in tonal quality
01:43:03 <CakeProphet> there.
01:43:17 <elliott> 100*sin(Math.sqrt(t)^Math.sqrt(10*(t%1024))<<(t/1024)) <-- this is a good beat
01:43:20 <elliott> think I'll lay something on top of this
01:44:05 <CakeProphet> it's very difficult to time these things in unison.
01:44:19 <Patashu> you don't need the Math.sqrt(t)^ part
01:44:23 <Patashu> it's entirely the second part doing it
01:44:26 <elliott> Patashu: oh neat
01:44:38 <elliott> it's a bit different like that, but I like it more
01:45:14 <CakeProphet> (t*((t>>8|t>>9)+(t>>10)&27)*100)
01:45:25 <Patashu> 100*sin(Math.log(100*(t%1024))<<(t/1024)) is kind of cool
01:45:26 <CakeProphet> change the 27 to any odd number for similar melodies but with new elements
01:46:05 <CakeProphet> so in an actual song for example you could start at 2
01:46:09 <CakeProphet> then 3, then 7, and so on
01:46:35 <CakeProphet> but using an even number produces a different rhythm and is kind of abrupt.
01:46:42 <CakeProphet> so odd is good to keep the continuity.
01:47:16 <elliott> (128*sin(Math.sqrt(10*(t%1024))<<(t/1024)))/cos(t>>9)
01:47:44 <CakeProphet> elliott is good at the beats, lol
01:47:51 <elliott> I'm just modifying this existing one :P
01:47:54 <elliott> yours is nice
01:48:19 <CakeProphet> also throwing in oscillators everywhere is good
01:48:24 <Patashu> 100*sin(Math.log(100*(t%1024))<<(t/1024))+50*cos(Math.sqrt(100*(t%1024))<<(t/1024))
01:48:25 <Patashu> breakcore track
01:49:03 <elliott> lol
01:49:07 <elliott> i like it
01:51:07 <elliott> tan(Math.sqrt(t%65536))*100
01:52:03 <elliott> this WILL break your speakers: tan(Math.sqrt(t%65536)+t)^Math.sqrt(t)
01:52:38 <CakeProphet> (128*sin(Math.sqrt(10*(t%1024))<<(t/(1024*tan(t/1500>>7)))))/cos(t>>9)
01:53:08 <Patashu> can you use ?: in this?
01:53:13 <elliott> yes
01:53:15 <elliott> but it's probably cheating :)
01:53:17 <Patashu> awesome
01:53:17 <Patashu> brb
01:53:24 <CakeProphet> throw some | or & in there for good measuer
01:53:25 <CakeProphet> (128*sin(Math.sqrt(10*(t%1024))<<(t/(1024*tan(t/1500>>7|8)))))/cos(t>>9)
01:53:28 <CakeProphet> lol
01:53:48 <CakeProphet> with no regard for precedence of course.
01:54:21 <Patashu> example of ?: usage
01:54:21 <Patashu> sin((t%8192)>4096?tan(Math.sqrt(t%4096)):Math.sqrt(10*(t%1024))<<(t/1024))*100
01:54:43 -!- augur has joined.
01:54:51 * elliott drops a dope-ass minimal track: (Math.sqrt(t%(t^~2))^Math.sqrt(t/~27))*100
01:54:52 <elliott> Have I uh
01:54:55 <elliott> Have I got my "lingo" correct
01:55:03 <elliott> Patashu: i like this
01:55:20 <monqy> your dope ass hurts my ears ow
01:55:34 <monqy> so much pitch
01:55:38 <CakeProphet> elliott: minimalist 8-bit dark ambient
01:55:40 <CakeProphet> or something.
01:56:13 <elliott> <CakeProphet> (128*sin(Math.sqrt(10*(t%1024))<<(t/(1024*tan(t/1500>>7|8)))))/cos(t>>9)
01:56:24 <elliott> I like how everyone is just progressively remixing my thing into an unrecognisable fuzz
01:57:34 <CakeProphet> it's only slightly fuzzy
01:59:59 <elliott> CakeProphet: Patashu: ((t%2048)*Math.sqrt(t/9))+(t*t*t*t)
02:00:06 -!- tiffany has quit (Quit: ZNC - http://znc.sourceforge.net).
02:02:31 <elliott> hmm
02:02:42 <elliott> CakeProphet: Patashu: you guys gotta produce something for me to remix, I'm having a writer's block :P
02:03:20 <Patashu> ok
02:03:21 <Patashu> sec
02:03:56 <elliott> HOLY SFUCKING SHIT
02:04:15 <elliott> Patashu: CakeProphet: TURN DONWN YOUR FUCKING SPEAKERS: sin(t/Math.E)*2048
02:04:30 <Patashu> why not just *100 instead
02:04:39 <elliott> because
02:04:39 <elliott> i was
02:04:40 <elliott> foolish
02:05:04 <CakeProphet> lol
02:05:10 <CakeProphet> (128*sin(Math.sqrt(10*(t%1024))<<(t/(1024*sin(Math.sqrt(10*(t%512))&(t>>8|t>>9)/5000)))))/cos(t>>9)
02:05:13 <CakeProphet> more remix
02:05:15 <CakeProphet> less fuzz
02:05:22 <elliott> challenge
02:05:25 <elliott> successfully use Math.random
02:05:28 <elliott> in a way that doesn't just add some noise
02:05:31 <elliott> CakeProphet: also that's great
02:05:33 <CakeProphet> I was about to say
02:05:36 <elliott> and note that Math.random
02:05:37 <CakeProphet> that's pretty much what random does
02:05:39 <CakeProphet> is white noise
02:05:39 <elliott> will change every single frame
02:05:45 <CakeProphet> unless you use it as a control signal
02:05:45 <elliott> CakeProphet: well yes but you can easily use randomness to like
02:05:50 <CakeProphet> and then it's still probably going to sound like noise.
02:05:50 <elliott> generate random beats
02:05:57 <elliott> it's just a matter of doing it in this tiny a system
02:06:32 -!- MDude has changed nick to MSleep.
02:06:35 <CakeProphet> well you can modulo random and number on the right-hand side of >> maybe
02:06:45 <elliott> gogogogogo do it
02:06:53 * elliott is working on new stuff
02:07:13 <elliott> GONNA DROP A RELEASE
02:07:15 <elliott> OR SO THEY SAY
02:07:16 <elliott> IN THE HOOD
02:08:07 <CakeProphet> elliott: I like how changing the cos() part of that one you made makes it sound completely different.
02:08:20 <CakeProphet> changing the bitshift amount
02:08:20 <elliott> it's cos of the cos
02:08:24 <CakeProphet> ...
02:09:07 <CakeProphet> I wonder what happens on zero divide
02:09:11 <CakeProphet> when cos(blah) = 0
02:09:23 <elliott> infinity
02:09:23 <elliott> probably
02:09:25 <elliott> it's floating point
02:09:33 <elliott> t/0 seems to come out as silence
02:09:40 <CakeProphet> makes sense.
02:11:28 <elliott> hmm
02:11:30 <elliott> function f(n){r=1;while(n)r*=n--;return r}
02:11:34 <elliott> does this factorial look right to everyone?
02:13:22 <zzo38> I think so.
02:13:54 <elliott> lol, I hung my browser with factorial :/
02:14:15 <Patashu> 50*sin(Math.sqrt(100*(t%1024))<<(t/768))+((t%8192)>4096?50*sin(Math.sqrt(100*((t)%1024)<<(t/1024))):0) this is sick
02:14:38 <CakeProphet> 50*sin((t>>3^t)+(t>>6)+(t>>Math.random(63)))
02:14:41 <CakeProphet> all glory to the hypnotoad
02:14:43 <elliott> Patashu: I can verify that this is indeed in desperate need of professional medical attention
02:14:48 <Patashu> XD
02:14:57 <elliott> CakeProphet: oe
02:14:57 <elliott> wo
02:14:58 <elliott> ow
02:15:38 <elliott> what's the common approximation to factorial?
02:15:40 <elliott> I forget
02:15:43 <Patashu> look it up
02:15:53 <elliott> :'(
02:15:59 <elliott> I was under the impression we were ``bros''
02:16:00 <elliott> :'(
02:16:02 <monqy> :'(
02:16:21 <Patashu> http://en.wikipedia.org/wiki/Stirling's_approximation
02:16:32 <elliott> right
02:17:24 <CakeProphet> elliott: challenge accepted: 50*sin((t>>5^Math.sqrt(t))&(t>>6)&(t>>Math.random(63)))
02:17:27 <CakeProphet> not noise
02:17:36 <CakeProphet> ...by someone's definition.
02:17:38 <Patashu> slight variation 50*sin(Math.sqrt(100*(t%1024))<<(t/768))+((t%8192)>4096?50*sin(Math.sqrt(100*(t%1024)<<(t/2048))):0)
02:18:04 <elliott> sin(Math.pow(1.61803399,t)/Math.sqrt(5))*100
02:18:05 <elliott> lame
02:18:11 <elliott> CakeProphet: I like it
02:18:34 <zzo38> I think I made the Alternative instance for barrier monads. I think it is following the rule correctly, although it is not following the rule for MonadPlus, so it isn't MonadPlus.
02:18:44 <elliott> Patashu: I like
02:18:52 <Patashu> 50*sin(Math.sqrt(100*(t%1024)<<(t/2048))) this is the new part by itself
02:18:55 <elliott> <Patashu> slight variation 50*sin(Math.sqrt(100*(t%1024))<<(t/768))+((t%8192)>4096?50*sin(Math.sqrt(100*(t%1024)<<(t/2048))):0)
02:18:59 <elliott> I like this a lot because it has such a clean sound
02:18:59 <Patashu> it goes doof doof doof doof then wobble wobble wobble then puretone puretone puretone
02:19:02 <zzo38> instance Alternative (Barrier f b) where { empty = Fail []; Unit x <|> _ = Unit x; Fail y <|> x = annotateFail y x; Barrier a c <|> x = Barrier a $ \y -> (c y <|> x); };
02:19:06 <elliott> like it was recorded on cassette
02:19:07 <elliott> not mud
02:19:24 <monqy> zzo38: what are the rules and how are they not followeing
02:19:26 <zzo38> annotateFail :: String -> Barrier f b t -> Barrier f b t; annotateFail [] x = x; annotateFail y (Fail []) = Fail y; annotateFail y (Fail x) = Fail $ y ++ "\RS" ++ x; annotateFail y (Unit x) = Unit x; annotateFail y (Barrier a c) = Barrier a $ annotateFail y . c;
02:19:30 <elliott> "\RS"?
02:19:41 <elliott> I am sceptical of that being a good idea?
02:19:41 <zzo38> "\RS" is the ASCII record separator code.
02:19:44 <monqy> having Fail at all is bizarre
02:19:59 <monqy> fail too
02:20:13 <elliott> CakeProphet: Patashu: So who's going to ruin this fun diversion by making some dubstep
02:20:24 <Patashu> I don't know how to make dubstep from first principles
02:20:32 <elliott> Thank god
02:21:03 <zzo38> It says that <|> is associative and empty is identity of <|> and I think it follows that with what I have.
02:21:19 <CakeProphet> elliott: dubstep is very unlikely
02:21:20 <zzo38> MonadPlus has addition rules which I do not think barrier monads have.
02:21:23 <CakeProphet> as that would require a filter of some kind.
02:21:26 <CakeProphet> 50*sin(Math.sqrt(100*(t%1024))+(t/768))+((t%8192)>4096?50*sin(Math.sqrt(100*(t%1024)<<(t/2048))):Math.random(1000))
02:21:30 <CakeProphet> however by changing some stuff in Patashus
02:21:38 <CakeProphet> we now have 8-bit psytrance
02:22:06 <zzo38> Do you think I am correct about this things?
02:22:08 <Patashu> the Math.random(1000) doesn't seem to do anything
02:22:12 <CakeProphet> nope
02:22:28 <CakeProphet> it probably doesn't happen enough to be noticable.
02:22:41 <CakeProphet> *noticeable
02:22:43 <CakeProphet> stupid English
02:22:47 <Patashu> no it like
02:22:49 <Patashu> literally does nothing
02:22:49 <Patashu> XD
02:23:01 <CakeProphet> right... I just explained why that could be..
02:23:09 <zzo38> Are those sound effect in JavaScript?
02:23:16 <elliott> yes, with http://www.bemmu.com/music/index.html
02:23:23 <elliott> a remix of Patashu: (51|((t%80000)>>9))*sin(Math.sqrt(161.8*(t%2048)<<(t/1024)))
02:23:49 <elliott> CakeProphet: I really like that
02:25:13 <monqy> zzo38: the additional rules being mzero>>=f=mzero and v>>mzero=mzero ?
02:25:21 <CakeProphet> elliott: let me know when you come up with a distortion function and a variable-frequency lowpass filter connected to a LFO input.
02:25:21 <elliott> remix of CakeProphet 50*sin(Math.sqrt(100*(t%8192))+t)+((t%8192)>4096?50*sin(Math.sqrt(100*(t%1024)<<(t>>9))):Math.random(1000))
02:25:26 <CakeProphet> and then we can make some dubstep
02:25:28 <zzo38> To me doesn't seem good way, it doesn't even work very well, it doesn't play/stop properly, etc. You can use SoX for sound effect. If you need to, you can use ImageMagick -fx command to specify and output raw sound pipe to SoX input raw
02:25:31 <zzo38> monqy: Yes.
02:25:37 <elliott> CakeProphet: dude you need none of that
02:25:48 <CakeProphet> sure you do
02:25:54 <elliott> like
02:25:54 <Patashu> What I want to figure out
02:25:57 <elliott> <elliott> 100*sin(Math.log(10*(t%9))^Math.sqrt(10*(t%1024))<<(t/1024))
02:26:01 <elliott> CakeProphet: do you see any multitracking here
02:26:04 <elliott> any filters
02:26:07 <Patashu> Is how to take a beat like sin(Math.sqrt(10*(t%1024))<<8) and apply it to a conditional that creates a rhythm out of it
02:26:10 <elliott> no, you just see something which happens to sound perfect
02:26:11 <Patashu> like xx.xx.x.
02:26:19 <elliott> we don't need to create dubstep from first principles
02:26:24 <elliott> we just need to accidentally fall onto a pile of dubstep
02:26:32 <CakeProphet> ....not going to happen.
02:26:41 <elliott> <Patashu> Is how to take a beat like sin(Math.sqrt(10*(t%1024))<<8) and apply it to a conditional that creates a rhythm out of it
02:26:43 <elliott> this is not much of a beat
02:26:51 <elliott> CakeProphet: come on we just need something that sounds vaguely like wub
02:26:51 <Patashu> it isn't?
02:27:02 <CakeProphet> noep
02:27:08 <CakeProphet> we're in time domain, dawgs.
02:27:08 <elliott> Patashu: play it
02:27:52 <CakeProphet> also I'm not going to lie I do enjoy things that are dubstep-influenced
02:27:57 <CakeProphet> but find dubstep itself to be very very boring.
02:28:13 <elliott> i call this one "poop machine": (sin(t%9999)*(t>>9)) &~ t
02:28:17 <CakeProphet> oh no.
02:28:21 <elliott> kind of industrialesque
02:28:23 <elliott> by which i mean
02:28:24 <elliott> it sounds like shit
02:28:42 <elliott> <elliott> remix of CakeProphet 50*sin(Math.sqrt(100*(t%8192))+t)+((t%8192)>4096?50*sin(Math.sqrt(100*(t%1024)<<(t>>9))):Math.random(1000))
02:28:45 <elliott> CakeProphet: did you like this i think it is: great
02:28:51 <Patashu> Hmm
02:28:54 <Patashu> I grabbed the wrong thing
02:29:02 <Patashu> Oh I know
02:29:04 <Patashu> I forgot the 100*
02:29:06 <Patashu> Lol
02:29:23 <CakeProphet> elliott: I found the high-pitched beat kind of annoying >_>
02:29:34 * CakeProphet is a tough customer
02:29:35 <elliott> CakeProphet: Dude, my ears are practically bleeding. live the music.
02:29:52 <CakeProphet> poop machine is good though
02:29:59 <Patashu> (t%2048>1024)||(t%4096>1024)?100*sin(Math.sqrt(10*(t%1024))<<8):0 here's an example
02:30:04 <Patashu> it goes doofdoofdoofpausedoofdoofdoofpause
02:30:15 <zzo38> monqy: If I did MonadPlus, the empty that I defined for Alternative, it follows the first rule of MonadPlus but not the second one. At least, I think it is.
02:30:33 <CakeProphet> Patashu: I find 75 or 50 to be a good number for amplitude
02:30:34 <monqy> zzo38: oh. I don't know how Barrier works, so
02:30:35 <elliott> Patashu: (t%4096<999)?0:(100*sin(Math.sqrt(10*(t%1024))<<8))
02:30:36 <CakeProphet> 100 is usually too loud.
02:30:40 <Patashu> turn your sperakers down then
02:30:43 <CakeProphet> I do.
02:30:54 <Patashu> elliot: o
02:31:04 <CakeProphet> ?: is totally cheating.
02:31:04 <lambdabot> Maybe you meant: . ? @ v
02:31:09 <Patashu> no it isn't
02:31:10 <Patashu> it's useufl
02:31:11 <CakeProphet> somehow
02:32:32 <CakeProphet> (Math.round(sin(t/500)))?0:(100*sin(Math.sqrt(10*(t%1024))<<8))
02:32:34 <CakeProphet> vaguely house like
02:33:00 <CakeProphet> and now suddenly
02:33:01 <CakeProphet> (Math.round(sin(t/250)))?0:(100*sin(Math.sqrt(10*(t%1024))<<8))
02:33:03 <CakeProphet> not sounding like shit
02:33:43 <elliott> Patashu: ((t%(4096+(t>>9))<999)?(t%9999)/9999:1)*(100*sin(Math.sqrt(10*(t%1024))<<8))
02:34:16 <elliott> ((t%(4096+(t>>9))<999)?(t%9999)/9999:(t/99999))*(100*sin(Math.sqrt(10*(t%1024))<<8))
02:34:49 <elliott> ((t%(4096+(t>>9))<999)?(t%9999)/9000:(Math.log(t)/999))*(100*sin(Math.sqrt(10*(t%1024))<<8))
02:35:04 <elliott> CakeProphet: I like those
02:37:26 <elliott> Patashu: Math.round(sin(t/(250+(t>>9)))*(t%9999)/999)?0:(100*sin(Math.sqrt(10*(t%1024))<<8))
02:37:28 <zzo38> monqy: Unit x >>= f = f x; Fail x >>= f = Fail x; Barrier a c >>= f = Barrier a $ c >=> f; So if you did mzero = Fail [] like I have empty = Fail [] then the first law is obviously by the definition but the second one doesn't go.
02:37:39 <Patashu> New breakcore track 100*sin(Math.sqrt(10*(t%1024))<<((t/512)%1024))
02:38:19 <elliott> I think a primary problem here is the fact that they essentially have to be three second soundbites :P
02:38:23 <zzo38> And I don't think there can be other definitions of mzero and mplus for barrier monad that satisfies the definition either.
02:38:24 <elliott> Or else just degenerate into huge messes
02:39:00 <elliott> CakeProphet: Patashu: Challenge: Beat with no trig
02:39:16 <Patashu> I can approximate sin using a taylor expansion
02:39:17 <Patashu> Your move
02:39:26 <elliott> Patashu: Without cheating
02:40:14 <CakeProphet> halp no trig
02:40:16 <CakeProphet> (Math.round(sin(t/250)))?0.1*Math.random()|t:(100*sin((Math.sqrt(10*(t%1024))<<8)+(t>>7|t>>9)))
02:40:19 <CakeProphet> have some more psytrance
02:40:39 <Patashu> hmm
02:40:39 <Patashu> http://www.youtube.com/watch?v=GtQdIYUtAHg
02:40:42 <Patashu> we need to do some of these
02:40:53 <elliott> CakeProphet: are you doing it? :P
02:40:54 <Patashu> holy shit they're good
02:40:59 <elliott> Patashu: I think we've surpassed most of them tbh
02:41:02 <elliott> the ones in the second video are better
02:41:03 <Patashu> idk
02:41:05 <Patashu> second one is awesome
02:41:12 <elliott> well ok my multitrack thing surpassed 'em :D
02:42:10 <elliott> CakeProphet: Patashu: basically the problem with trig is that your tracks end up repeating very rapidly...
02:42:12 <elliott> because of the oscillation
02:42:18 <elliott> it's cool to have stuff that changes slightly over time
02:43:32 <CakeProphet> elliott: 50*Math.round(t>>7&t>>9)*Math.exp(t%200,2) no trig
02:43:59 <elliott> CakeProphet: j'approuve
02:44:21 <CakeProphet> oh you meant just for the rhythm?
02:44:22 <oerjan> zzo38: i think the second law is considered somewhat optional, as many monads don't follow it
02:44:25 <elliott> 50*Math.round(t>>7&t>>9)*Math.exp(t%2000,2) this is catchy
02:44:44 <CakeProphet> elliott: ...lol
02:44:44 <elliott> CakeProphet: well I mean
02:44:54 <elliott> CakeProphet: it'd be nice to have beats with less trig so that they evolve over time
02:45:14 <CakeProphet> wait am I even using exp correctly
02:45:22 <elliott> you're squaring
02:45:27 <CakeProphet> okay good.
02:45:32 <elliott> Math.PI*99*Math.round(t>>7&t>>9)*Math.exp(t%20,2)
02:45:35 * CakeProphet doesn't know JS
02:46:10 <CakeProphet> why PI?
02:46:24 <Patashu> wow
02:46:25 <Patashu> t*(t>>8&t>>12)
02:46:28 <Patashu> this one is so simple and so interesting
02:46:40 <elliott> wow
02:46:45 <elliott> did you invent that one?
02:47:11 <CakeProphet> a lot of the ones in the video resemble that.
02:47:13 <Patashu> yeah
02:47:16 <Patashu> I'm trying out ones like in the video
02:48:18 <elliott> CakeProphet: Patashu: Math.pow(Math.log(t),(t>>8&t>>12))
02:48:23 <elliott> academic music for serious people
02:49:45 <elliott> i think i will remix something next, so i'll just WAIT HERE
02:50:03 <CakeProphet> t * ((t>>12|t>>8)&63&t>>4)
02:50:40 <CakeProphet> elliott: so prestiguous
02:50:43 <CakeProphet> your music sir.
02:50:57 <CakeProphet> so yeah this one appeared in my clipboard I don't think I made it.
02:51:03 <elliott> CakeProphet: I don't even release CDs any more, I just publish it in journals.
02:52:04 <elliott> CakeProphet: t * ((t>>12|t>>8)&&t>>4)
02:52:11 <CakeProphet> (sin(t/20)*((t>>8|t>>9)|(t>>10|t>>9))+(t>>12)*100)
02:52:20 <elliott> 99 * ((t>>12|t>>9)&&t>>4)
02:52:20 <elliott> eerie
02:52:40 <elliott> CakeProphet: it's like a toy piano from hell
02:52:49 <CakeProphet> elliott: spooooky ekrkwierjijij AahH
02:53:02 <elliott> rip
02:53:30 <elliott> (sin(t/90)*((t>>0|t>>9)|(t>>10|t>>99))+(t>>1)*10)
02:53:35 <elliott> i call it "mud"
02:55:07 <CakeProphet> changing the | to + is interesting: (sin(t/20)*((t>>8|t>>9)+(t>>10|t>>9))+(t>>12)*100)
02:55:10 <CakeProphet> makes it much noisier
02:55:13 <CakeProphet> but same melody
02:55:37 <CakeProphet> elliott: I've made something very similar to this before
02:55:40 <elliott> well + is just like | with more interference
02:55:43 <CakeProphet> while fucking around with other things.
02:55:59 <CakeProphet> yes that's what I've gathred so far
02:56:08 <CakeProphet> if I use + instead of | I get more noise.
02:56:31 <CakeProphet> also what the hell does t >> 0 even do
02:56:34 <elliott> it's obvious if you realise that | is bitwise saturation arithmetic
02:56:36 <elliott> t >> 0 = t
02:56:36 <Patashu> nothing
02:56:37 <elliott> :p
02:57:18 <pikhq> http://en.wikipedia.org/wiki/Kellogg%E2%80%93Briand_Pact
02:57:22 <pikhq> War is illegal in the US.
02:57:29 <pikhq> (and many other nations)
02:57:37 <elliott> "except in matters of self-defense"
02:57:59 <pikhq> Still fucks up many US actions.
02:58:20 <pikhq> e.g. every single one since then but the Japanese front of WWII.
02:58:22 <elliott> CakeProphet: Patashu: challenge: a beat with more than one actual beat
02:58:30 <elliott> as in
02:58:31 <elliott> two beat sounds
02:58:34 <CakeProphet> elliott: evil mud monster the remix: (sin(t/90)*((t>>0|t>>9)>>(t>>10|t>>99))>>(t>>1)*10)
02:58:42 <elliott> oh dear, why not remix something good
02:58:54 <CakeProphet> lower the 99 for different sounds
03:00:08 <elliott> I think it's finally time for me to start remixing myself.
03:00:25 <CakeProphet> (sin(t/90)*((t>>1|t>>9)>>(t>>11|t>>99))>>(t>>1)*10)
03:00:31 <CakeProphet> this one is a bit more suspenseful
03:00:35 <CakeProphet> and sounds more like an evil monster.
03:00:51 <CakeProphet> no idea how it's reverbing but I think it had to do with millions of >> everywhere
03:01:05 <elliott> I should name 100*sin(Math.log(10*(t%9))^Math.sqrt(10*(t%1024))<<(t/1024)), it's totally my masterpiece so far
03:01:28 <CakeProphet> yes it's great.
03:01:59 <zzo38> I think you should do, make it not JavaScript or web-browser, and allow you to include MML as well as the mathematical formulas.
03:02:22 <elliott> CakeProphet: Patashu: 90*cos(Math.log(9*(t%9))^Math.sqrt(9*(t%4201))<<(t/1024))
03:02:29 -!- DHeadshot has quit (Read error: Connection reset by peer).
03:02:47 -!- DH____ has joined.
03:03:38 <CakeProphet> altering the %9 leads to interesting results
03:03:54 <elliott> 90*sin(Math.sqrt(9*(t%4201))<<(t/1024))
03:04:28 <CakeProphet> oh neat.
03:05:37 <elliott> CakeProphet: Patashu: 90*sin(Math.sqrt(9*(t%4201))<<(t/9999))
03:05:48 <elliott> at twenty-one seconds in
03:05:49 <elliott> strays
03:05:50 <elliott> KIND OF
03:05:54 <elliott> close
03:05:55 <elliott> to something that might
03:05:56 <elliott> VAGUELY
03:05:58 <elliott> be described
03:05:59 <elliott> as RELATED
03:06:06 <elliott> to SOMETHING THAT SOUNDS REMOTELY LIKEdubstep
03:06:16 <elliott> sorry twenty-two
03:06:19 <CakeProphet> ...only in that it has a slow half-time-like rhythm
03:06:24 <CakeProphet> also: 90*sin(Math.sqrt(9*(t%4201))<<(t/1024))+35*sin(Math.log(10*(t%9))^Math.sqrt(10*(t%1024))<<(t/1024))
03:06:26 <elliott> IT ALSO SOUNDS SORT OF LIKE "WUB" MAN
03:06:38 <CakeProphet> Cakeprophet's shitty remix of elliott's grand opus that's actually just adding the two together and changing volume.
03:06:50 <elliott> CakeProphet: I like how the beat is totally broken
03:07:00 <CakeProphet> only a little
03:07:14 <CakeProphet> that's why I made one really soft
03:07:16 <CakeProphet> so that didn't clash
03:07:17 <elliott> Patashu hasn't released anything in a while.
03:07:54 <CakeProphet> 90*sin(Math.sqrt(9*(t%4201))<<(t/1024))+50*Math.random()*sin(Math.log(10*(t%9))^Math.sqrt(10*(t%1024))<<(t/1024))
03:07:57 <CakeProphet> for best results
03:07:58 <CakeProphet> free vinyl crackle.
03:08:03 <CakeProphet> true hipster music.
03:09:04 <elliott> CakeProphet: beautiful. :p
03:09:04 <CakeProphet> well maybe if you made the modulos share common factors...
03:09:10 <CakeProphet> then it would sync the beats more?
03:09:25 <CakeProphet> er, not share common factors.
03:09:29 <CakeProphet> one be a multiple of the other
03:09:31 <CakeProphet> help better wordage.
03:10:06 <elliott> do you think one day people will like
03:10:09 <elliott> post comments on youtube:
03:10:52 <elliott> Today's teens listen to SHIT like sin(t)/99 and Math.log(Math.PI)|4201. Thumbs up if you remember REAL music. You say t<<9>>0, we say CAKEPROPHET!
03:11:18 <elliott> rare eight-bit PCM pressings of the innovative thirty-second compositions that founded the genre of shitcore
03:11:24 <CakeProphet> yes we are clearly masters of our craft.
03:11:28 <CakeProphet> also
03:11:36 <CakeProphet> you know this means we totally need to write something for Haskell.
03:11:45 <elliott> We're like Delia Derbyshire, if Delia Derbyshire was a talentless hack
03:12:32 <CakeProphet> so that you can combine things like this, sequence them, insert certain parameters for a number of measures and then switch to different parameters, etc.
03:12:43 <elliott> Why would you want to tarnish the beautiful purity
03:12:53 <CakeProphet> for science!
03:13:16 <CakeProphet> I didn't realize bitshift was pure and floating point hacks was pure.
03:13:36 <CakeProphet> dfgodfieo49w4oi4j4to4to94t9otuw94ut9wu4tuuuuuuuuu9tw9utwu9twutwu9tw
03:13:49 <elliott> Would Reddit be better off without r/jailbait, r/picsofdeadbabies, etc? What do you honestly think? (self.AskReddit)
03:13:52 <elliott> CakeProphet: what
03:14:07 <CakeProphet> a dead baby is fine.
03:14:29 <CakeProphet> jailbait is fine.
03:14:33 <CakeProphet> both good things for the world.
03:14:38 <CakeProphet> thus good enough for reddit.
03:15:04 <CakeProphet> http://www.anencephalie-info.org/e/advice.php
03:15:09 <CakeProphet> advice on taking dead baby pics.
03:15:36 <CakeProphet> A picture can even be the only tangible memory of what your baby looked like. For siblings who weren’t been born or were too young at the moment of the baby’s death, it’s important to be able to show them a picture saying : "this was your brother, your sister."
03:15:47 -!- hagb4rd has quit (Ping timeout: 248 seconds).
03:16:01 <CakeProphet> "this was your brother as his entire body shut down from <insert horrible fate>"
03:16:11 <CakeProphet> good family moments.
03:16:57 <elliott> "It is with this in mind that we have made the choice to share the stories of the brief, but wonderful lives of babies with anencephaly."
03:16:58 <elliott> ah.
03:17:09 <CakeProphet> If your baby is stillborn
03:17:10 <CakeProphet> Take pictures nevertheless !
03:17:17 <CakeProphet> good advice
03:17:27 <CakeProphet> excellent material for r/picsofdeadbabies
03:21:45 <CakeProphet> it seems that no what you do with random()
03:21:49 <CakeProphet> it just introduces noise.
03:22:06 <CakeProphet> even as a conditional
03:25:48 <elliott> CakeProphet: well the important thing to remember is that it changes every t
03:29:05 <elliott> yay i think mchost can get multiplayer support soon
03:29:12 <elliott> CakeProphet: Patashu: CONTRACTUALLY OBLIGATED CLAPPING PLS
03:30:10 <CakeProphet> elliott: clap clap clap t*(Math.round(sin(t/45))?Math.exp(sin((t>>63)/4000), 2):(t>>3)>>(t>>9))
03:30:18 <CakeProphet> best clap
03:30:38 <elliott> i was expecting clap noises
03:31:00 <CakeProphet> nope
03:31:05 <CakeProphet> you get psychedelic clapping
03:31:14 <CakeProphet> it's similar but more like acid.
03:33:40 -!- tiffany has joined.
03:36:56 -!- SgeoN1 has quit (Read error: Connection reset by peer).
03:36:59 -!- SgeoN2 has joined.
03:46:39 <CakeProphet> guess the song: wobwobwobWOBWOBWOBwobwobwobWOBWOBWOBW
03:47:33 <elliott> theme from titanic
03:47:47 <CakeProphet> close
03:48:13 <elliott> thriller?
03:48:52 <CakeProphet> thrieller DUBSTEP REMIX.
03:49:39 <CakeProphet> I remember when only cool kids knew about dubstep.
03:49:43 <elliott> http://www.youtube.com/watch?v=YhjnKnFp1Cs
03:49:44 <elliott> art.
03:49:46 <CakeProphet> like me.
03:50:12 <CakeProphet> I enjoy the song Genesis by Justice
03:50:14 <CakeProphet> set to Thriller
03:50:14 <elliott> http://www.youtube.com/watch?v=IWuPd0fHdyc
03:50:16 <CakeProphet> there's a video of such
03:50:17 <elliott> omg this is so bad.
03:50:31 <elliott> YOU KNOW IT'S KNOW IT'S KNOW IT'S KNOW IT'S KNOW IT'S KNOW IT'S THRILLER NIGHT
03:50:37 <elliott> this is impressively bad
03:50:49 <CakeProphet> this definitely isn't dubstep style as the person claims.
03:50:58 <elliott> dubstep, n. anything bad
03:51:01 <CakeProphet> okay now it is.
03:52:31 <CakeProphet> Noisia's new stuff is an example of something that dubstep-influenced but also not shit.
03:52:36 <CakeProphet> *this is
03:53:31 <CakeProphet> also Pretty Lights
03:56:21 -!- Patashu has quit (Ping timeout: 244 seconds).
03:57:17 <CakeProphet> http://www.youtube.com/watch?v=GTG7TPlvpMI
03:57:24 <CakeProphet> listen to ze dubstep-esqueness in the middle
04:02:51 -!- Patashu has joined.
04:05:41 <CakeProphet> sup
04:08:23 <elliott> hello
04:12:00 <zzo38> I can figure out things about relation between list monad and barrier monad when using collect to convert from barrier monad to list monad. Such as, (x : y) corresponds to (yield x >> y) and (=<<) corresponds to (rebind) and (map) corresponds to (flip convert id)
04:14:26 <zzo38> And (join . repeat) corresponds to (many) although the former runs faster (at least in GHCi)
04:15:36 <zzo38> Do you understand that? What are these things would be in the mathematical point of view?
04:20:12 <zzo38> What would they be called in mathematics?
04:26:22 <CakeProphet> homomorphisms? probably not.
04:27:38 <CakeProphet> isomorphisms?
04:28:08 -!- tiffany has quit (Remote host closed the connection).
04:28:39 <zzo38> It is not really isomorphic because of some differences such as the working of the return type of barrier monads. While the collect operation does not use the return type, it can still be used in other operations.
04:29:39 <zzo38> But it work if you never care about the return type, I guess. You could have uncollect to do the reverse operation too, I think; but still these things are missing, so, I think that means it is forgetful operations
04:31:44 <zzo38> Is that it?
04:32:16 <CakeProphet> maybe you have a monomorphism from lists to barriers then.
04:32:25 <CakeProphet> injective but not bijective.
04:32:43 <zzo38> OK.
04:33:24 <zzo38> And they are both monads. Does that also called something else specific in mathematics?
04:35:00 <CakeProphet> no clue.
04:36:37 <zzo38> Instead of (or as well as) saying (x : y) to (yield x >> y) you could also say (return) to (yield) and (++) to (>>)
04:36:45 <CakeProphet> http://en.wikipedia.org/wiki/Natural_transformation
04:36:47 <CakeProphet> this looks relevant.
04:37:05 <zzo38> The barrier monad program is a literate program, so it is also a report about it. That mean, I should also have these kind of things about the mathematics mentioned in the report!
04:39:34 <CakeProphet> you more or less have a morphism from an endofunctor to another endofunctor.
04:40:26 <CakeProphet> wait why am I pretending to know anything about category theory.
04:41:34 <zzo38> Is the eta described there the same as or related to the eta for monads?
04:42:12 <CakeProphet> no I don't think it's the exact same thing.
04:42:31 <CakeProphet> it's just that the eta for monads is a natural transformation.
04:42:45 <zzo38> Yes that is what I thought.
04:43:33 <zzo38> I suppose I can even include commutative diagrams in the report; the TeXbook does describe how to make them.
04:43:43 <zzo38> (That is, would I need commutative diagrams.)
04:43:45 <CakeProphet> everything in category theory seems really simple
04:43:54 <CakeProphet> it's just that there's a lot of terminology.
04:45:15 <zzo38> That is probably because there is a lot of things that can be done with category theory.
04:47:36 -!- itidus20 has left ("Leaving").
04:48:20 <zzo38> Is that why?
04:50:02 <CakeProphet> no clue.
04:50:24 <CakeProphet> the only thing I know of that's been "done" with category theory is Haskell.
04:50:31 <elliott> ...
04:50:35 <CakeProphet> elliott: :)
04:51:09 <CakeProphet> it's interesting to note
04:51:14 <CakeProphet> that I am not actually aware of all things.
04:51:22 <CakeProphet> this may be surprising.
05:19:56 <oerjan> http://oerjan.nvg.org/esoteric/GeomTM.hs
05:20:09 <oerjan> not _really_ tested
05:21:36 -!- zzo38 has quit (Remote host closed the connection).
05:32:45 -!- augur has quit (Remote host closed the connection).
05:33:00 <oerjan> now linked from wiki
05:34:54 <monqy> It's sad when languages' power don't even come from their gimmicks :(
05:35:01 <monqy> but rather something boring
05:35:02 -!- aloril has quit (Ping timeout: 276 seconds).
05:35:18 <oerjan> oh
05:35:45 <monqy> :'(
05:36:55 <oerjan> well it is _possible_ you could use the geometric points more usefully. unfortunately i don't quite understand that part of the spec, there seems to be parts missing.
05:38:59 <oerjan> and besides the floating point scares me away a bit :P
05:48:47 -!- aloril has joined.
05:50:06 <elliott> oerjan: redundant dollar sign
05:50:13 <elliott> swapBlocks m n = unwords $ [cmd ++ show i |
05:50:41 <elliott> also, one day I will figure out how you decide when to put a type signature or not, and if so how many blank lines go between the signature and the definition :D
05:51:50 <elliott> oerjan: this is me appreciating your code btw
05:55:25 <elliott> oerjan: IM APEICEAITNG
05:57:31 <elliott> monqy: tell oerjan rude not talk
05:59:53 <monqy> oerjan: rude not talk
06:00:02 <oerjan> elliott: oh right, that $ got left over from a more pointless version :P
06:00:09 <elliott> monqy: wow it work
06:00:16 <oerjan> i was making food
06:00:17 -!- derrik has joined.
06:00:19 <elliott> no
06:00:22 <elliott> it was definitely monqy
06:00:43 <elliott> but seriously, <elliott> also, one day I will figure out how you decide when to put a type signature or not, and if so how many blank lines go between the signature and the definition :D
06:00:45 <elliott> how do you do it :P
06:00:50 <elliott> pls. don't say it's just arbitrary
06:00:52 <elliott> i would sads
06:01:32 <oerjan> i guess there are occasions when silence is better.
06:01:52 <elliott> oh no
06:02:18 <elliott> ?undo f m n = unwords [if i == m then "t" else "nil" | i <- [1 .. n-1]]
06:02:19 <lambdabot> f m n = unwords concatMap (\ i -> [if i == m then "t" else "nil"]) [1 .. n - 1]
06:02:24 <elliott> lambdabot...
06:02:41 <elliott> ?pl f m n = unwords (map (\ i -> if i == m then "t" else "nil") [1 .. n - 1])
06:02:41 <lambdabot> f = (unwords .) . (. (enumFromTo 1 . subtract 1)) . map . flip flip "nil" . flip flip "t" . (if' .) . (==)
06:02:42 <oerjan> i guess i just forgot outOf, and the final tests were later and i don't think they need any
06:02:46 <elliott> ?pl f m n = map (\ i -> if i == m then "t" else "nil") [1 .. n - 1]
06:02:46 <lambdabot> f = (. (enumFromTo 1 . subtract 1)) . map . flip flip "nil" . flip flip "t" . (if' .) . (==)
06:02:50 <elliott> ?pl f n m = map (\ i -> if i == m then "t" else "nil") [1 .. n - 1]
06:02:51 <lambdabot> f = flip (map . flip flip "nil" . flip flip "t" . (if' .) . (==)) . enumFromTo 1 . subtract 1
06:03:09 <elliott> ?pl f n m = map (== m) [1 .. n - 1]
06:03:09 <lambdabot> f = flip (map . (==)) . enumFromTo 1 . subtract 1
06:03:10 <oerjan> and i got so involved in how much space to put around _comments_ that i forgot about the signatures.
06:04:01 <elliott> m `outOf` n
06:04:01 <elliott> | m >= 0 && m < n = unwords . map (bool "t" "nil" . (== m)) $ [1 .. n-1]
06:04:01 <elliott> | otherwise = error "Bit position out of range"
06:04:02 <elliott> oerjan: hth :P
06:05:03 <oerjan> elliott: also it was never _quite_ that pointless :P
06:05:16 <elliott> oerjan: I was improving an entirely different function >:(
06:05:23 <elliott> bool really needs to be in Data.Bool
06:05:46 <oerjan> i actually decided not to make it too advanced
06:06:27 <elliott> oerjan: i am not being serious :P
06:06:33 <elliott> list comprehensions are really nice tbh
06:06:45 <elliott> I keep meaning to try and use an idiom I saw in Glasgow source in my code
06:06:56 <elliott> which is using case on list comprehensions to do various searches and the like
06:07:30 <elliott> case [x | x <- xs, x > 4, x `mod` m == 0] of [x] -> ...; [x,y] -> ...; _ -> error ...
06:08:35 <oerjan> elliott: i changed a few things :P
06:08:52 <elliott> oerjan: in-place? without keeping a copy of the old one available? :(
06:08:55 <elliott> WAIT IT IS ON MY HARD DRIVE
06:08:59 <elliott> ANYONE WHO WANTS THE "REAL SHIT" ...
06:09:00 <elliott> CONTACT ME ; )
06:09:04 <elliott> (i am referring to drug)
06:10:16 <elliott> oerjan: too old-school for branch patterns, I see
06:10:17 <oerjan> yeah that vcs stuff never got a hold on me
06:10:26 <oerjan> branch patterns?
06:10:28 <elliott> erm
06:10:29 <elliott> bang patterns
06:10:34 <elliott> the function was named branch :'(
06:10:36 <elliott> im tire
06:10:39 -!- augur has joined.
06:10:41 <oerjan> heh
06:10:42 <elliott> (im a slep son)
06:10:52 <oerjan> i didn't want to add any extensions
06:11:05 <elliott> hey oerjan
06:11:06 <elliott> encodeTM table initialState runOffLeftEnd paddingValue input
06:11:06 <elliott> = unlines $ [
06:11:21 <elliott> [oerjan's blood boils, becomes soup; soup is fed to children, tastes delightful]
06:11:58 <oerjan> argh that $ was introduced when i tried to find out how to avoid a double newline before right_end
06:12:39 <oerjan> gefixt
06:13:03 <elliott> oh you use null here..........i want to eliminate this call to null....
06:13:06 <elliott> death to booleans
06:13:34 <oerjan> i'm afraid that may not make it any nicer inside a lambda
06:13:46 <elliott> oerjan: i don't mean just turning it into the obvious pattern match
06:13:54 <elliott> I mean making it so that you don't have to specifically check for the null case :P
06:14:21 <oerjan> but i _added_ the null case in order not to have to pass a halting_states parameter
06:14:28 <elliott> heh
06:14:30 <elliott> ok then :P
06:15:01 <elliott> i note that you inconsistently use camelcase and _s (it isn't the glasgow globalName and local_name)
06:15:09 <elliott> (believe it or not, i like this code)
06:15:36 <oerjan> i thought i used camelcase for the haskell and _ for the Geom
06:15:49 <elliott> well ok
06:15:56 <elliott> i guess that is a convention of sorts :P
06:16:28 <oerjan> the first two program lines are snatched from another Geom program on the wiki
06:16:47 <elliott> heh
06:17:18 <oerjan> since i didn't understand the geometry part, i needed neq as an easy way to get a nil :P
06:18:13 <oerjan> and the drop was useful otherwise as well
06:20:00 * oerjan adds a comment about that
06:21:59 <oerjan> oh right, i used _ for the haskell functions which defined geom commands of the same name
06:21:59 <elliott> heh http://www.haskell.org/ghc/survey2005-summary
06:22:06 <elliott> oerjan: that's what I interpreted your sentence as
06:22:14 <elliott> "Until now, we considered GHC's error messages to be rather good"
06:22:15 <elliott> r u srs
06:22:36 <elliott> I think GHC might have the worst error reporting of any "mainstream" language
06:22:42 <elliott> 's main implementation
06:22:54 <monqy> "mainstream"
06:23:18 <elliott> well Haskell is not really mainstream mainsteram.
06:23:22 <elliott> mainstream
06:23:31 <elliott> but it's certainly popular.
06:23:33 <monqy> g++ compile errors are bad right? it's been a long time since I've seen them though
06:23:41 <elliott> oh, that's true
06:23:49 <elliott> that's mostly the STL's fault though :P
06:24:11 <elliott> Gregor: Resident D Expert (Sufferer): Why the hell is D so high on TIOBE? I know TIOBE is complete bullshit, but nobody fucking uses D.
06:24:31 <elliott> I guess it IS behind RPG and Ada though :P
06:26:24 <elliott> monqy: oerjan: have you ever looked at the ghc source btw, i did yesterday and it's utterly terrifying
06:26:40 <elliott> they have their own string type implemented with ForeignPtr that stores a hash of itself so equality is fast... so weird...
06:27:01 <monqy> I kind of did yesterday but not really at all
06:27:36 <oerjan> i think the closest i've been was some ghc api modules
06:27:49 <elliott> I like how they have their own mini-mtl
06:28:02 <elliott> well ok it's just ID and MonadIO but still
06:28:16 <elliott> ooh they have their own generic exception monad typeclass
06:28:21 <elliott> ~fancy~
06:28:51 <elliott> oh my good lord
06:28:58 <elliott> monqy: oerjan: ok no wait FastString isn't the worst
06:28:59 <elliott> they have
06:29:00 <elliott> wait for it
06:29:02 <elliott> FastBool
06:29:09 <elliott> type FastBool = Int#
06:29:09 <elliott> fastBool True = 1#
06:29:09 <elliott> fastBool False = 0#
06:29:10 <oerjan> O_o
06:29:16 <elliott> isFastTrue 1# = True
06:29:16 <elliott> isFastTrue 0# = False
06:29:16 <elliott> isFastTrue _ = panic "FastTypes: isFastTrue"
06:29:36 <elliott> the literal fastest boolean type
06:29:37 <monqy> what
06:29:47 <oerjan> the fastest boolean type in the west
06:29:54 <elliott> type FastInt = Int#
06:29:58 <elliott> OMG GUYS STOP THIS IS SILLY
06:30:01 <monqy> how does this work
06:30:07 <elliott> monqy: how does what work
06:30:08 <elliott> FastBool?
06:30:11 <monqy> yes
06:30:11 <elliott> it's just an unboxed int
06:30:14 <elliott> used like C booleans
06:30:41 <monqy> and fastBool and isFastTrue are used where
06:30:52 <elliott> in code that uses FastBool
06:30:53 <elliott> one presumes
06:30:55 <monqy> inlined?
06:31:07 <elliott> FastFunctions -- i was hoping this would be an unboxed function type
06:31:20 <elliott> but it's just a bunch of terrifying functions
06:31:48 <elliott> oh my good fuck
06:31:54 <elliott> data FastMutInt = FastMutInt (MutableByteArray# RealWorld)
06:31:54 <elliott> newFastMutInt = IO $ \s ->
06:31:54 <elliott> case newByteArray# size s of { (# s, arr #) ->
06:31:54 <elliott> (# s, FastMutInt arr #) }
06:31:54 <elliott> where !(I# size) = SIZEOF_HSINT
06:32:02 <elliott> it burns
06:32:19 <monqy> -- hey, no harm inlining it, :-P
06:32:19 <monqy> {-# INLINE inlinePerformIO #-}
06:32:19 <monqy> inlinePerformIO :: IO a -> a
06:32:19 <monqy> inlinePerformIO = unsafePerformIO
06:32:20 <monqy> good
06:32:27 <elliott> that's in the non-ghc section
06:32:32 <monqy> oh
06:32:33 <elliott> (thus explaining the comment)
06:32:38 <elliott> instance Monad (IOEnv m) where
06:32:38 <elliott> (>>=) = thenM
06:32:38 <elliott> (>>) = thenM_
06:32:38 <elliott> return = returnM
06:32:38 <elliott> fail _ = failM -- Ignore the string
06:32:42 <elliott> DUDE IT'S A TRANSFORMER OVER IO
06:32:45 <elliott> WHY WOULD YOU MAKE FAIL USELESS
06:33:08 <elliott> im secretly trying to find the parts that have their own monads
06:33:39 -!- oerjan has quit (Quit: Good night).
06:33:56 <elliott> oerjan
06:33:57 <elliott> run away
06:33:58 <elliott> from
06:34:00 <elliott> the hakel
06:34:19 <elliott> ./main/CmdLineParser.hs:-- EwM (short for "errors and warnings monad") is a
06:34:19 <elliott> ew
06:34:20 <elliott> (m)
06:34:31 <monqy> checkeng out GhcMonad.hs now
06:34:57 <elliott> oh no
06:36:09 <elliott> utils/Bag.lhs... hepl...
06:36:39 <elliott> -- This module implements intervals over the integer line and sets of
06:36:39 <elliott> -- disjoint intervals.
06:36:42 <elliott> sure is compiler code
06:36:49 <elliott> augh
06:36:56 <elliott> monqy: dont look at utils/State.hs
06:37:03 <monqy> now i want to......
06:37:09 <elliott> do
06:37:10 <elliott> nt
06:37:21 <monqy> {- XXX hack -}
06:37:32 <monqy> a Good Start
06:38:06 <monqy> so much unboxed tuples
06:38:39 <monqy> whats in MonadUtils.....
06:38:43 <elliott> Relative to John's original paper, there are the following new features:
06:38:43 <elliott> 1. There's an empty document, "empty". It's a left and right unit for
06:38:43 <elliott> both <> and $$, and anywhere in the argument list for
06:38:43 <elliott> sep, hcat, hsep, vcat, fcat etc.
06:38:43 <elliott> It is Really Useful in practice.
06:38:44 <elliott> Really Useful
06:38:50 <elliott> monqy: its mini mtl "the baby version"
06:39:03 <monqy> liftIO4 = (((.).(.)).((.).(.))) liftIO
06:39:04 <monqy> Good
06:39:40 <elliott> wow is that
06:39:41 <elliott> wow
06:40:17 <monqy> all these monads functions
06:40:27 <elliott> more like
06:40:28 <elliott> GONADS,
06:40:32 <monqy> snap!!
06:40:50 <elliott> waht
06:40:59 <monqy> oh,
06:41:07 <elliott> ??????//////
06:41:09 <monqy> i wonder where they use
06:41:13 <elliott> waht
06:41:13 <monqy> mapAndUnzip4M
06:41:14 <elliott> snap???
06:41:16 <monqy> oh
06:41:22 <elliott> waht is sanp
06:41:26 <monqy> as in oh snap but without the oh................................
06:41:28 <monqy> thats a
06:41:30 <monqy> thing
06:41:31 <monqy> right
06:41:32 <elliott> oh.......................
06:41:39 <elliott> ..........but.....snap means "i asaid that,
06:41:41 <elliott> at the same time,
06:41:43 <elliott> you said the same thing,"
06:41:44 <monqy> oh
06:41:47 <elliott> it am like
06:41:54 <elliott> <oerjan> o i am write cod
06:41:55 <monqy> i was not, aaware it was thas sepcific
06:41:58 <elliott> <monqy> ha ha cod is fish
06:42:02 <elliott> <elliott> cod? isnt that a FUSH
06:42:09 <elliott> <monqy> snap!!!!!!!!! snep
06:42:13 <elliott> <elliott> snorp...........
06:42:19 <elliott> <monqy> now we are all wizards........
06:42:27 <monqy> wizards are good
06:42:34 <elliott> <monqy> ........of death
06:42:39 <monqy> death wiazards
06:42:45 <elliott> eadjieatnaeti wiazskrjzlrds
06:42:50 <elliott> wow it polish wizardry
06:42:59 <elliott> take that.... jk "just kidding" rowling
06:43:03 <monqy> infixl 3 `snocBag`
06:43:13 <elliott> (alias "j r r" "just rolling rabbits" tolkein)
06:43:34 <monqy> wow all of these bag functions
06:43:40 <elliott> bunctions
06:43:41 <monqy> mapAccumBagLM
06:43:47 <monqy> flatMapBagPairM
06:44:07 <elliott> im a flat map bag pair
06:44:46 <elliott> -- This is how gcc does it, so it can't be that bad:
06:44:46 <elliott> let
06:44:46 <elliott> const | FF32 <- sz = CmmInt 0x80000000 W32
06:44:46 <elliott> | otherwise = CmmInt 0x8000000000000000 W64
06:45:55 <elliott> oh god
06:45:56 <elliott> "const"
06:45:56 <elliott> nice
06:45:58 <elliott> shadwowing
06:46:53 <elliott> monqy: osmeone needs to.... make ghc...not horible to read
06:47:21 -!- elliott has left ("Leaving").
06:47:25 -!- elliott has joined.
06:47:30 <elliott> monqy: there is only one place left to hide...
06:48:08 <monqy> wher,e,,
06:48:16 <monqy> is the other compilers...better
06:48:19 <monqy> to read
06:48:21 <elliott> monqy: we must
06:48:25 <elliott> delve into
06:48:26 <elliott> http://repetae.net/dist/jhc-0.7.7.tar.gz
06:48:52 <monqy> hopeing for good
06:49:27 <monqy> check out Util/RWS.hs
06:49:47 <elliott> :')
06:49:48 <elliott> god bless
06:49:56 <elliott> i dont relaly get RWS
06:49:57 <elliott> like
06:49:57 <elliott> ok
06:49:59 <elliott> reader and state
06:50:00 <elliott> thats reasonable
06:50:02 <elliott> read only state
06:50:03 <elliott> and rw state
06:50:05 <elliott> but writer is like
06:50:08 <elliott> kinda orthogonal to those
06:50:15 <elliott> i can't imagine that much fits the writer part of it??
06:50:21 <elliott> like a compiler isn't going to be just linearly outputting
06:50:23 <elliott> i dunno
06:50:46 <monqy> ooh a Perhaps Monoid
06:51:00 <elliott> haha nice
06:51:17 <elliott> -- this point of this module is not only to share the 'size' syntax, but to
06:51:17 <elliott> -- provide optimally lazy versions of size comparasin functions when dealing
06:51:17 <elliott> -- with lazy structures. This is especially useful when having to compare the
06:51:17 <elliott> -- size of possibly long lists.
06:51:17 <elliott> -- it is up to each instance to decide what 'size' means
06:51:25 <elliott> a personal voyage of discovery to find out what size means
06:51:39 <elliott> this reminds me I should put something up on hackage for efficient length comparisons sometime
06:51:55 <elliott> monqy: Util/GMap.hs... MODERN...
06:52:02 <monqy> gmap
06:52:04 <derrik> ize is a measurement of surface, no?
06:52:10 <monqy> hi derrik
06:52:26 <derrik> hi monqy
06:52:29 <derrik> *size
06:52:52 <elliott> I personally find the size/wheelchair distinction quite arbitrary.
06:53:11 <monqy> you don't say
06:53:27 <elliott> jhc is disappointingly low on ohrrifying right now
06:53:30 <elliott> readHFile :: FilePath -> IO (FilePath,HoHeader,forall a . Binary a => ChunkType -> a)
06:53:32 <elliott> what
06:53:43 <monqy> promising
06:53:56 <derrik> normally people think that location is a dot, but in reality it never is
06:54:03 <derrik> it's a surface
06:54:12 <monqy> what
06:54:12 <derrik> or an amount of space
06:54:16 <elliott> what
06:54:32 <elliott> monqy: I like how Name/Prim.hs has do not edit warnings on every single type
06:54:44 <monqy> aaaaaaaaaa
06:54:48 <elliott> waht
06:54:56 <monqy> this file
06:55:12 <monqy> noinline / do not edit / ACTUAL LINE OF CODE / ...repeat....
06:55:47 <elliott> monqy: wellat least it is genrated
06:55:59 <monqy> yes...
06:56:47 <monqy> i like how ther'es RWS and also a ReaderWriter
06:57:30 -!- derrik has left.
06:57:34 <monqy> bye derrik
06:57:48 <elliott> did
06:57:50 <elliott> did it work...
06:58:20 <monqy> perhAps>..
06:59:02 <elliott> im going to a slep in wonder of jhc code
06:59:07 <monqy> whoa C/Generate.hs las a hong esxport list...
06:59:10 <elliott> makes me want to write a compiler...
06:59:19 <elliott> monqy: oh that reminds me of
06:59:20 <elliott> one of my files
06:59:38 <elliott> monqy: https://github.com/ehird/mchost/blob/master/MC/Protocol/Types.hs
06:59:43 <elliott> monqy: behold exprot list...
06:59:54 <monqy> mmmm, export list
07:00:31 <elliott> farewell young girafes...
07:00:36 <monqy> bye..........
07:00:40 <elliott> and glodsped.......
07:00:52 <monqy> are gerafes fast
07:01:27 <elliott> i
07:01:29 <elliott> cry
07:01:30 <elliott> hepl
07:01:39 <elliott> https://github.com/ghc/ghc/commit/7bfc28d4a1c7c20714bfc11acc072e2f16927d80
07:01:40 <elliott> so cish
07:02:10 <monqy> cish
07:07:14 -!- elliott has quit (Ping timeout: 258 seconds).
07:15:16 -!- Sgeo|web has joined.
07:15:23 <Sgeo|web> There exists something called OfficeIRC
07:15:34 <Sgeo|web> IRCX server + XMPP gateway and some other stuff
07:15:47 <Sgeo|web> What IRCX is, I'm not entirely sure
07:36:29 <Sgeo|web> It's Microsoft's own IRC protocol!
07:36:51 <Sgeo|web> Actually, it looks pretty cool
08:05:26 <pikhq> There's also Comic Chat. :)
08:13:00 -!- Phantom_Hoover has joined.
08:22:55 -!- copumpkin has quit (Ping timeout: 260 seconds).
08:23:19 -!- copumpkin has joined.
08:51:57 <cheater> who here knew japanese?
08:52:01 -!- monqy has quit (Quit: hello).
08:52:32 <cheater> i'm reading a haskell tutorial in that language, i understand everything but not if the author states copyright
08:52:40 <cheater> this one: http://d.hatena.ne.jp/itchyny/20110902/1314965062
09:47:23 -!- hagb4rd has joined.
09:59:53 -!- sebbu2 has joined.
09:59:53 -!- sebbu2 has quit (Changing host).
09:59:53 -!- sebbu2 has joined.
10:01:08 -!- sebbu has quit (Ping timeout: 248 seconds).
10:01:13 -!- Ngevd has joined.
10:03:36 <Ngevd> Hello!
10:07:01 <Patashu> I can't decide between playing DDR and having a nap
10:07:02 <Patashu> Woe is me
10:08:38 <fizzie> The official Microsoft solution nowadays is that Microsoft Lync (formerly Office Communicator) thing, which is built on SIP and can do federation stuff to speak with any external XMPP nets.
10:12:32 <fizzie> (Actually, if you happen to know about this stuff: I have a person who'd like to have me in Office Communicator to avoid running the silly Messenger thing; they have federation for MSN/Live activated on the server, and we were able to get it working if I ran the real Live Messenger too, but if I use some more reasonable client (tried bitlbee, Telepathy, Pidgin) the connection-from-Lync (it shows "Network: Microsoft Lync" instead of "Network: Microsoft Live" in
10:12:32 <fizzie> the real messenger) doesn't appear on contact lists at all. It is listed in the web-messenger thing, but there's no "send IM" option for it, only email.)
10:13:48 <fizzie> (Googling has mostly found me people who'd like to connect to an actual Office Communicator -ish environment with other clients, which doesn't really help.)
10:21:37 -!- aloril has quit (Ping timeout: 240 seconds).
10:24:17 -!- aloril has joined.
10:25:18 -!- sebbu2 has changed nick to sebbu.
10:38:57 -!- Ngevd has quit (Ping timeout: 252 seconds).
10:43:58 -!- derdon has joined.
10:53:13 -!- pikhq has quit (Ping timeout: 240 seconds).
10:53:27 -!- pikhq has joined.
11:31:32 -!- copumpkin has quit (Ping timeout: 244 seconds).
11:31:57 -!- copumpkin has joined.
11:33:19 -!- MSleep has changed nick to MDude.
11:34:04 <MDude> Well cool, I got somrthing that doens't sound noisy.
11:34:05 -!- derdon has quit (Remote host closed the connection).
11:34:05 <MDude> ((sin(t>>12)) * t) % 16
11:37:18 <fizzie> This reminds me of.
11:37:20 <fizzie> Just a moment.
11:37:25 <Patashu> someone on a different forum posted this: ((t>>8|t>>4)+sin(t)|t+cos(t*0.7)|t)&240
11:37:56 <MDude> It mostly reminded me of the example program you make int he Chuck tutorial.
11:39:16 <fizzie> C-oneliner music: http://p.zem.fi/o3r6
11:39:38 <Patashu> Oh, fizzie
11:39:42 <Patashu> You weren't here when we played around with http://www.bemmu.com/music/index.html
11:40:11 <fizzie> Well, no; the above came from another #channel.
11:40:50 <Patashu> We came up with some sick beats
11:40:57 <fizzie> Given that it links to "viznut's video", seems like it's the same people to blame.
11:41:07 <Patashu> Yep
11:41:19 <Patashu> Me elliot and CakeProphet came up with these (I posted them on the tasvideos forums) http://tasvideos.org/forum/viewtopic.php?p=289101
11:41:24 <fizzie> Aways for nows.
12:01:58 <Phantom_Hoover> Patashu, you were playing with the music thing without me?
12:02:08 <Patashu> You weren't on
12:02:14 <Phantom_Hoover> :(
12:02:24 <Patashu> elliott started btw
12:12:05 <Phantom_Hoover> DAMN HIM
12:17:51 -!- Ngevd has joined.
12:18:05 <Ngevd> Hello!
12:23:57 -!- Vorpal has joined.
12:24:39 -!- Ngevd has quit (Remote host closed the connection).
12:29:25 -!- Ngevd has joined.
12:29:25 -!- Ngevd has quit (Read error: Connection reset by peer).
13:08:06 <Patashu> typeracer thinks I'm pro
13:08:07 <Patashu> Speed:168 wpm
13:08:07 <Patashu> Accuracy:100%
13:08:07 <Patashu> Congratulations! You are now certified as able to type 168 wpm!
13:09:55 -!- tiffany has joined.
13:35:01 <CakeProphet> Patashu: didn't we start playing with it a lot after I showed something?
13:35:13 <CakeProphet> also 168 is insane u used h4x
13:36:37 <Patashu> oh
13:36:38 <Patashu> it might have been you
13:36:40 <CakeProphet> Phantom_Hoover: in any case, you may blame me.
13:36:41 <Patashu> also
13:36:48 <Patashu> I got 168 once and 166 once in about a half hour sesson
13:36:52 <CakeProphet> Cake "the WORST" Prophet
13:36:58 <Patashu> 168 is my 'absolutely no errors' speed
13:37:01 <CakeProphet> Patashu: isn't that kind of approaching the world record?
13:37:07 <Patashu> I'm sure it's not
13:37:08 <Patashu> let me check
13:38:05 <Patashu> keep in mind 168 is my PEAK not my average
13:38:38 <Patashu> http://rcranger.mysite.syr.edu/famhist/blackburn.htm
13:39:04 <Patashu> oh
13:40:31 <CakeProphet> Patashu: yeah it is.
13:40:32 <Patashu> this guy is pretty cool http://www.youtube.com/watch?v=M9lpqG9ZvGY&feature=related
13:40:51 <Patashu> it's like brrt brrt brrt
13:40:53 <CakeProphet> you are roughly tied with a former record folter.
13:41:04 <Patashu> nope sorry
13:41:05 <CakeProphet> so that puts you at "close" to the current record sort of.
13:41:10 <Patashu> the record is for 150 for 50 minutes sustained
13:41:14 <Patashu> sustained I can only get 125ish
13:41:39 <CakeProphet> Patashu: these jokes are so bad.
13:41:43 <Patashu> yep
13:42:17 <CakeProphet> he doesn't even look like he's typing anything.
13:43:07 <CakeProphet> that's weird that they type numbers.
13:43:23 <Patashu> well it makes sense to me
13:43:26 -!- azaq23 has joined.
13:43:33 <Patashu> wpm is very dependent on what type of text you're typing
13:43:37 <Patashu> numbers, not so much
13:48:10 -!- DH____ has quit (Read error: Connection reset by peer).
14:07:29 -!- oklopol has joined.
14:07:42 <oklopol> so did you hear the news
14:07:54 <Phantom_Hoover> Is Finland at war.
14:07:55 <oklopol> \N doesn't exist
14:08:03 <oklopol> and
14:08:05 <oklopol> by
14:08:07 <oklopol> \N
14:08:10 <oklopol> i mean naturals
14:08:27 <Phantom_Hoover> Oh also elliott tells me he told you about that gravity thing but couldn't find the link because he is stupid and weak.
14:08:41 <oklopol> right, i'd still like to see that
14:08:56 <oklopol> anyway this guy proved peano axioms are inconsistent
14:09:03 <Phantom_Hoover> Ask and ye shall receive: matthen.com/javascript/gravity.html
14:09:07 <Phantom_Hoover> oklopol, um really?
14:09:10 <oklopol> we scrapped all our articles and i'm going to
14:09:14 <oklopol> become like a
14:09:18 <oklopol> i dunno waiter maybe
14:09:37 <oklopol> 404
14:09:37 <Phantom_Hoover> I am highly... not sceptical; oklosceptical, perhaps.
14:09:44 <oklopol> oops
14:09:53 <oklopol> i did errored copypaste
14:10:47 <cheater> if you rearrange the letters you get klop loo
14:10:54 <cheater> and both mean toilet!
14:11:06 <CakeProphet> Crowding of teeth is recognized as an affliction that stems in part from a modern western lifestyle.[citation needed] It is unknown whether it is due to the consistency of western diets,[citation needed] a result of mouthbreathing;[citation needed] or the result of an early loss of deciduous (milk, baby) teeth[citation needed] due to decay.
14:11:07 <oklopol> these look like orbits to me! sorcery.
14:11:11 <CakeProphet> lolwat
14:11:15 <oklopol> can i see multiple planets tho
14:11:22 <CakeProphet> how does mouthbreathing make your teeth crowded.
14:11:49 <cheater> CakeProphet: what is teeth crowding?
14:11:51 <Phantom_Hoover> CakeProphet, I doubt it does, what with {{fact}} every other word.
14:12:06 <cheater> is that when wisdom teeth push your teeth together?
14:12:08 <CakeProphet> cheater: exactly what it sounds like.
14:12:11 <CakeProphet> no
14:12:15 <CakeProphet> it occurs when you lose your baby teeth.
14:12:19 <cheater> ok
14:12:35 <CakeProphet> and the permanent ones erupt but don't have enough room because of other teeth in the way etc
14:12:39 <CakeProphet> results in crooked teeth.
14:12:41 <cheater> ah ok that
14:13:29 <cheater> mouth breathing means your teeth are mostly apart rather than pushing against each other
14:13:38 <oklopol> also Phantom_Hoover yes really, but i doubt it has passed peer review of any kind
14:13:41 <cheater> so they might be more prone to going wrong places
14:13:48 <Phantom_Hoover> oklopol, ah.
14:13:48 <oklopol> but it doesn't look completely crackpotty
14:14:05 <cheater> writing a curses tutorial for haskell
14:14:07 <cheater> who wants
14:14:12 <Phantom_Hoover> (I thought Peano was pretty solid as far as inconsistency goes anyway.)
14:14:24 <oklopol> it's basically a list of 1000 or so simple little things he proves, and the punch line is BOOM math is gone
14:14:50 <cheater> i think i may have heard of it
14:14:53 <cheater> who is that oklopol
14:14:58 <oklopol> well actually he also proves you can still do pretty much everything you were able to do before
14:15:25 <oklopol> with another set of axioms that replaces induction with every number has a successor
14:15:32 <oklopol> except 0
14:16:02 <oklopol> cheater: don't remember
14:16:38 <cheater> damn you
14:17:06 <cheater> also why would 0 not have a successor
14:21:36 <Phantom_Hoover> His wife never bore him a son, duh.
14:22:23 <CakeProphet> is inconsistent being used in the sense of "does not contain a contradiction" here?
14:24:31 <oklopol> http://www.freak-search.com/en/thread/889644/peanos_axioms_are_inconsistent -- heheehe
14:24:34 <oklopol> not that one :DS
14:24:43 <oklopol> cheater: sorry i meant predecessor
14:24:59 <CakeProphet> http://en.wikipedia.org/wiki/Jaffa_Cakes#Cake_or_biscuit.3F
14:25:04 <oklopol> CakeProphet: no, in the sense "contains a contradiction"
14:25:17 <CakeProphet> McVities defended its classification of Jaffa Cakes as cakes in court, producing a 12" (30 cm) Jaffa Cake to illustrate that its Jaffa Cakes were simply miniature cakes. McVities argued that a distinction between cakes and biscuits is, among other things, that biscuits would normally be expected to go soft when stale, whereas cakes would normally be expected to go hard.
14:25:26 <CakeProphet> Sounds like an enthralling case.
14:25:29 <CakeProphet> oklopol: er, right.
14:25:52 <CakeProphet> oklopol: so what was the punchline with Peano (aka the contradiction)
14:26:08 <oklopol> that they are inconsistent
14:26:13 <oklopol> oh
14:26:15 <CakeProphet> ..
14:26:17 <CakeProphet> lol
14:26:20 <oklopol> i have no idea, it's hundreds of pages
14:26:34 <CakeProphet> ah okay
14:26:34 <oklopol> well 120 something
14:26:51 <CakeProphet> that's still hundreds
14:26:53 <CakeProphet> one hundred to be exact.
14:26:56 <Phantom_Hoover> CakeProphet, I assume it was being fought for tax reasons.
14:26:59 <oklopol> and it's just a list of lemmas, more than 10 a page
14:27:04 <CakeProphet> Phantom_Hoover: yes that's what the article explains.
14:27:34 <cheater> oklopol: ok that's better
14:27:41 <CakeProphet> just imagine someone in court, presenting a Jaffa Cake in court and arguing for its cakeness.
14:28:18 <oklopol> :D
14:29:13 <Patashu> peano arithmetic is inconsistent when you lose your baby teeth.
14:29:29 <Patashu> presenting a Jaffa Cake in court and arguing that peano arithmetic is inconsistent
14:29:34 * Patashu is a markov chain bot
14:31:51 <Phantom_Hoover> Losing your baby teeth to a Jaffa Cake.
14:32:01 <Phantom_Hoover> Or Tel Aviv Cakes as they're known nowadays.
14:32:25 -!- pikhq_ has joined.
14:32:36 -!- pikhq has quit (Ping timeout: 248 seconds).
14:32:50 <CakeProphet> I think the best way to determine if a Jaffa Cake is indeed a cake
14:33:02 <CakeProphet> is to ask: would you use it as a birthday cake?
14:33:27 <Phantom_Hoover> You might use a big one.
14:33:34 <oklopol> i don't celebrate birthdays
14:33:48 <Patashu> hey guys I have a keyboard idea
14:33:51 <CakeProphet> of course now I must look up birthday cakes, and learn about their history.
14:34:08 <Patashu> shift keys that turn themselves off if you press two letters in a row
14:34:13 <Patashu> (just before you press the second)
14:34:16 <CakeProphet> GEnius
14:34:29 <Patashu> it'll only slow you down for entirely capitalized words which are rare
14:34:31 <oklopol> oh you mean like windows lets you do since 1930
14:34:35 <CakeProphet> how about a keyboard with a huge array of common words?
14:34:39 <Patashu> oklopol: really? damn
14:34:40 <Patashu> where?
14:34:46 <oklopol> i don't recall, i don't use it
14:34:47 <Patashu> cakeprophet: woah woah now
14:34:53 <oklopol> but you can switch that on
14:35:20 <CakeProphet> I NEVER HOLD SHIFT WHILE TYPING
14:35:22 <CakeProphet> NOT EVERY
14:35:25 <CakeProphet> -Y
14:35:35 <CakeProphet> CAPS LOCK IS FOR CHUMPOS
14:35:54 <Patashu> oklopol, I just checked the obvious spot (keyboard and accessibility) and don't see such a setting
14:36:05 <oklopol> huh.
14:36:19 <Patashu> also, I just realized how awkward typing full capitalized words would be
14:36:22 <Patashu> try the motion
14:36:25 <oklopol> it's called sticky keys
14:36:29 <Patashu> it's like shift letter release all shift letter release all
14:36:30 <oklopol> press shift 5 times
14:36:49 <CakeProphet> Patashu: it's not awkward when you type like I do
14:36:55 <CakeProphet> (read: completely non-standard)
14:37:06 <Patashu> Stickykeys doesn't do what I said
14:37:08 <Patashu> SEE?
14:37:13 <oklopol> one finger for letters, penis smash for space
14:37:17 <Patashu> I CAN TYPE HOLDING DOWN SHIFT AND IT STILL CAPITALIZES EVERYTHING.
14:37:23 <oklopol> oh.
14:37:28 <oklopol> that's what you meant
14:37:38 <oklopol> i don't see what additional use yours would be
14:37:47 <Patashu> typing faster without making mistakes
14:37:52 <Patashu> I was on typeracer earlier
14:37:54 <oklopol> eh
14:37:56 <CakeProphet> Well I occasionally do ACcidentally CApitalize words.
14:37:56 <Patashu> a common mistake was capitalizing two letters
14:38:02 <Patashu> which typeracer considers an error I have to backspace and fix
14:38:04 <Patashu> breaks your flow
14:38:05 <oklopol> sticky keys would get rid of that
14:38:16 <oklopol> because you cannot accidentally hold it too long
14:38:25 <CakeProphet> Patashu: so wait you're on windows?
14:38:29 <CakeProphet> what's wrong with you
14:38:29 <Patashu> yep
14:38:44 <Patashu> oo
14:38:46 <Patashu> I see what it does
14:38:47 <Patashu> let me try that
14:39:08 <Patashu> Terminator
14:39:08 <Patashu> wow
14:39:10 <Patashu> that's pretty cool
14:39:57 <CakeProphet> in CakeFuck there are no lexemes. All components of CakeFuck grammar are composed of blasphemes.
14:39:57 <Patashu> I don't think it would help though
14:40:11 <Patashu> since if you're still holding shift stickykeys doesn't lift it up
14:40:16 <Patashu> it's STICKY keys after all
14:42:23 <oklopol> why would you hold it
14:43:08 <Patashu> I don't hold it
14:43:15 <Patashu> it just remains held for a fraction of a second longer than it needs to be
14:43:23 <Patashu> because of how my hands happen to move
14:44:14 <oklopol> well dunno i don't use capitals much so never even tried sticky keys
14:44:30 <Patashu> you need to use capitals if you type on typeracer
14:44:34 <Patashu> it considers ANY error a typo
14:44:38 <oklopol> also i hate them before even trying them because five shift hits brings them up
14:44:38 <Patashu> and won't let you move on until you fix it
14:44:49 <Patashu> you can turn that off btw
14:45:00 <oklopol> yeah but this computer is somewhat newish
14:45:38 <Patashu> doesn't stop you from turning it off...............
14:46:12 <oklopol> no, but certainly stops me from having turned them off
14:46:15 <CakeProphet> Capitals are the Best
14:46:21 <CakeProphet> I love to use Capital Letters.
14:46:36 <Patashu> Me Too
14:46:44 <CakeProphet> aaaaAAAAAAAAAAAAAAAAAAaaaaaaaaaAAAAAAAAAAAaaaaaAAaaaAAAaaaaAAAaaaaaaaaaAAAAAAAAAAAAAAAaaaaaaaaAAAAAAAAAAAAAaaaaaaaAAaaaAAAaaaaAAAaaaAAAaaaaAAAAaaa
14:46:56 <CakeProphet> holding down and then press shift on and off is fun.
14:47:00 <CakeProphet> *down a
14:47:49 <Patashu> doesn't work for me
14:47:55 <Patashu> the repeat stops when I press anything even shift
14:47:58 <CakeProphet> that's because Windows is evil.
14:48:02 <oklopol> doesn't work on my cupboard either
14:48:19 <CakeProphet> huh, weird.
14:48:29 <CakeProphet> are you also unsing vindoes?
14:48:37 <Patashu> he must be
14:48:39 <oklopol> yes, of course
14:48:40 <Patashu> he complained about stickykeys
14:48:49 <oklopol> i never use anything else
14:48:59 <CakeProphet> fuckin' veirdoes
14:49:08 <tiffany> if I made my own programming language it would look like this: http://aperture.physibots.info/p/2c
14:49:09 <oklopol> well i've used ubuntu briefly but this is so much better
14:50:17 <CakeProphet> shameful.
14:50:35 <tiffany> hehe
14:50:38 <tiffany> sticky keys on windows
14:51:03 <tiffany> it's especially annoying when you're playing a game like spore that crashes when you defullscreen it :p
14:51:38 <CakeProphet> I wonder what a Victorian era person would think about the phrase "sticky keys on windows"
14:51:43 <oklopol> :D
14:51:50 <Patashu> lol
14:52:03 <oklopol> tiffany: i hear you can turn that shit off
14:52:16 <tiffany> I tried it once on xp and it didn't
14:52:17 <CakeProphet> yes there's this magical checkbox
14:52:34 <CakeProphet> when it asks to make your keys sticky (awwww yeah)
14:52:39 <Phantom_Hoover> tiffany, the correct response is to stop playing Spore already.
14:52:50 <tiffany> I don't play spore anymore, or use windows
14:52:50 <tiffany> :s
14:52:52 <CakeProphet> but Spore is so good.
14:52:55 <CakeProphet> oh okay.
14:53:08 <oklopol> okay one thing about windows that almost made me switch to ubuntu foreverly is that 3am restarts. you can turn them off but just the fact they made that is so incredibly idiotic i just want to burn everyone who ever worked at microsoft.
14:53:20 <tiffany> heh
14:53:21 <Phantom_Hoover> tiffany, I note also that you have committed the cardinal sin of building a language around syntax.
14:53:28 <Phantom_Hoover> CakeProphet, excuse me no it isn't.
14:53:30 <CakeProphet> 3am.... restart?
14:53:30 <CakeProphet> wat?
14:53:36 <Phantom_Hoover> It's the shadow of a game that would have been good.
14:53:44 <CakeProphet> is Windows intolerant of nocturnal people? ignorant of their ways?
14:53:47 <tiffany> windows is a microkernel and should never need to restart
14:53:55 <tiffany> linux is a monolithic kernel and should need to restart all the time
14:54:04 <CakeProphet> wat
14:54:08 <CakeProphet> Windows isn't a microkernal.
14:54:15 <tiffany> I have been lied to then :I
14:54:17 <tiffany> anyway
14:54:21 <tiffany> windows reboots for the smallest of things
14:54:31 <oklopol> CakeProphet: updates need restarts, and the default is that it automatically restarts at 3am
14:54:34 <oklopol> every night
14:54:39 <CakeProphet> oklopol: oh right.
14:54:41 <tiffany> and then you never reboot unless kernel updates on linux, and even then you can get around it
14:54:42 <tiffany> http://funcorner.eu/wp-content/uploads/2011/03/computer_update.jpg
14:54:42 <CakeProphet> yes that was always annoying.
14:55:02 <CakeProphet> I do have to reboot occasionally as my computer tends to freeze when coming out of sleep.
14:55:05 <oklopol> so everyone who has used windows has probably lost a few hours of unsaved work because of that
14:55:12 <CakeProphet> but I'll go weeks at a time without turning off my laptop.
14:55:18 <tiffany> I save compulsively
14:55:25 <Phantom_Hoover> What is even with university websites being designed around the principle that nobody will try to use them when applying.
14:55:28 <tiffany> that little asterisk next to unsaved files is the bane of my existence
14:55:33 <oklopol> i don't save running programs though
14:56:01 <tiffany> sometimes I hit ctrl+s faster than gedit can write the file to disk
14:56:16 <Phantom_Hoover> gedit?
14:56:24 <tiffany> tiny little editor that I use for things
14:56:40 <Phantom_Hoover> I know; the name is short for "get a proper text editor".
14:56:47 <tiffany> :|
14:56:48 <CakeProphet> I'm almost positive Phantom_Hoover kno-- okay good.
14:56:50 <tiffany> I have code::blocks
14:56:52 <tiffany> and emacs
14:57:06 <tiffany> I use code::blocks for C/C++ and don't really like emacs
14:57:13 <Patashu> lol oh man
14:57:16 <CakeProphet> I used gedit a lot until I switched to emacs.
14:57:17 <oklopol> tiffany: yeah i rape ctrl+s all the time as well, but older browsers would lose your open pages, then there's running games, searches you're running, etc
14:57:22 <Patashu> I want to read more finitism/constructivism crackpottery
14:57:23 <Patashu> I must have more
14:57:24 <Patashu> give me more
14:57:28 <tiffany> "older browsers"
14:57:34 * CakeProphet rapes C-x C-s
14:57:38 <tiffany> firefox doesn't save tabs unless you hunt down that stupid option
14:57:39 <Phantom_Hoover> Patashu, read everything Zeilberger has ever written.
14:58:35 * tiffany resists complaining about such a major hop (6.0.2 -> 7.0.0) had very little feature updates...
15:02:12 -!- Ngevd has joined.
15:02:18 -!- Ngevd_ has joined.
15:02:27 -!- Ngevd_ has left.
15:06:58 <oklopol> "<tiffany> firefox doesn't save tabs unless you hunt down that stupid option" --- i only use ie and chrome
15:07:18 <tiffany> last I checked chrome doesn't save my tabs :s
15:07:25 <oklopol> it does
15:07:29 -!- ais523 has joined.
15:07:36 <oklopol> maybe it doesn't like you
15:08:06 <tiffany> I don't think any of my browsers like me
15:08:09 <tiffany> they all crash regularly
15:08:20 <tiffany> opera, firefox, chromium, midori :|
15:08:55 <Ngevd> Chrome saves your tabs but you have to open them manually
15:08:55 -!- SgeoN2 has quit (Read error: Connection reset by peer).
15:09:13 <Ngevd> You click "6 new tabs" or whatever at the bottom of the new tab page
15:09:14 -!- SgeoN1 has joined.
15:11:21 <oklopol> why don't you use ie, that's the best browser
15:11:53 * tiffany drops oklopol into a sea of trojans
15:12:06 <tiffany> heh
15:12:19 <oklopol> ie is unsafe?
15:12:26 <oklopol> that's not what i've heard
15:12:27 <tiffany> one of my friends found this thing called 99 000 trojans, it installs 99 000 trojans on any windows/mac OS
15:14:03 <Patashu> 99,000 unique trojans?
15:14:07 <oklopol> i thought trojans and viruses were extinct
15:14:18 <Patashu> trojans by definition can't become extinct
15:14:28 <tiffany> ^
15:14:34 <tiffany> sort of not
15:14:44 <Phantom_Hoover> Well, anyone with a decent classical education knows that the Trojans were wiped out in the Trojan War, although a small band of them purportedly became the Romans.
15:14:58 <tiffany> but as long as there are people with computers, there will be malware
15:15:06 <tiffany> actually
15:15:15 <tiffany> probably as longa s there are antivirus companies
15:15:20 <Patashu> lOL
15:15:32 <Patashu> hospitals don't want to cure your cancer, man!
15:15:34 <Patashu> end the fed!
15:15:41 <Patashu> no autism vacinnes!
15:16:23 <Patashu> everyone just needs to use common sense!
15:16:45 <tiffany> common sense - so rare it's a superpower
15:17:09 <Patashu> protip: just because you start your argument with 'it's common sense that' doesn't make it right
15:17:21 <Patashu> the lesser known fact is that common sense is often not sense
15:18:06 <Phantom_Hoover> <tiffany> but as long as there are people with computers, there will be malware
15:18:19 <Patashu> not once @ comes along
15:18:22 <Patashu> :shades:
15:18:24 <Phantom_Hoover> inb4 <future elliott> Not with @!
15:18:28 <Phantom_Hoover> Patashu, damn you!
15:18:30 <tiffany> o.o
15:18:44 <Phantom_Hoover> No, @.@
15:21:18 <Phantom_Hoover> Madoka-Kaname, ^ note feature request.
15:22:25 * tiffany clings to madoka-kaname
15:30:44 -!- hagb4rd has quit (Ping timeout: 248 seconds).
15:32:36 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .).
15:34:44 -!- Ngevd has quit (Remote host closed the connection).
15:35:23 -!- Ngevd has joined.
15:40:53 * Madoka-Kaname snuggles tiffany ^^
15:44:14 -!- Ngevd has quit (Remote host closed the connection).
15:51:48 * tiffany snuggles ^^
16:23:37 <ais523> IBM have just overtaken Microsoft in market cap? that's surprising
16:28:06 <tiffany> I think I like ibm more than microsoft
16:28:43 -!- plycke has joined.
16:28:48 <tiffany> https://www.ibm.com/developerworks/ ~
16:28:50 -!- plycke has quit (Excess Flood).
16:31:38 -!- monqy has joined.
16:50:16 -!- azaq23 has quit (Ping timeout: 258 seconds).
17:07:23 -!- elliott has joined.
17:10:23 <elliott> 11:34:05: <MDude> ((sin(t>>12)) * t) % 16
17:10:23 <elliott> heh
17:10:32 <elliott> 11:39:16: <fizzie> C-oneliner music: http://p.zem.fi/o3r6
17:10:39 <elliott> fizzie: those are from http://www.youtube.com/watch?v=GtQdIYUtAHg
17:10:42 <elliott> linked from http://www.bemmu.com/music/index.html
17:10:50 <elliott> 11:40:57: <fizzie> Given that it links to "viznut's video", seems like it's the same people to blame.
17:10:51 <elliott> right
17:11:43 <elliott> 11:41:19: <Patashu> Me elliot and CakeProphet came up with these (I posted them on the tasvideos forums) http://tasvideos.org/forum/viewtopic.php?p=289101
17:11:51 <elliott> I can't recognise which one is my masterpiece X-D
17:12:44 <elliott> oh, it's
17:12:45 <elliott> 100*sin(Math.log(10*(t%9))^Math.sqrt(10*(t%1024))<<(t/1024))
17:15:55 <oklopol> can you hear those somewhere
17:16:12 <elliott> oklopol: http://www.bemmu.com/music/index.html
17:16:22 <elliott> 100*sin(Math.log(10*(t%9))^Math.sqrt(10*(t%1024))<<(t/1024))
17:16:22 <elliott> and
17:16:23 <elliott> 100*sin(Math.sqrt(t)^Math.sqrt(10*(t%1024))<<(t/1024))
17:16:28 <elliott> are pretty good ones made by me
17:16:28 <elliott> well
17:16:30 <elliott> at least mostly by me
17:16:33 <elliott> it was kind of incestuous
17:17:01 <oklopol> wo - fucking w that's awesome :D
17:17:11 <elliott> i like patashu's 50*sin(Math.sqrt(100*(t%1024))+(t/768))+((t%8192)>4096?50*sin(Math.sqrt(100*(t%1024)<<(t/2048))):0)
17:17:32 <elliott> oklopol: that first one was basically complete luck so don't go worshipping me :P
17:18:02 <oklopol> yeeah right
17:18:04 <elliott> 14:08:56: <oklopol> anyway this guy proved peano axioms are inconsistent
17:18:04 <elliott> 14:09:07: <Phantom_Hoover> oklopol, um really?
17:18:08 <elliott> Phantom_Hoover: Dude we discussed this in-channel.
17:18:22 <Phantom_Hoover> I DIDN'T SEE
17:18:26 <elliott> Yes, you did.
17:18:29 <elliott> It's the Nelson guy.
17:18:30 <oklopol> i like the farts in patashu's
17:19:04 <elliott> t*(t>>8&t>>12) is still great
17:19:29 <oklopol> :O
17:20:21 <elliott> 08:51:57: <cheater> who here knew japanese?
17:20:21 <elliott> 08:52:32: <cheater> i'm reading a haskell tutorial in that language, i understand everything but not if the author states copyright
17:20:21 <elliott> 08:52:40: <cheater> this one: http://d.hatena.ne.jp/itchyny/20110902/1314965062
17:20:21 <elliott> 14:14:05: <cheater> writing a curses tutorial for haskell
17:20:22 <elliott> 14:14:07: <cheater> who wants
17:20:24 <elliott> hmm, cheater sure has been pioneering the form of "get information entirely from other people then restate it to create my very own blogspam"
17:20:27 <elliott> lately
17:20:40 <oklopol> it certainly makes sense that bitshifts awesome it up, but this is just ridiculously great
17:21:47 <elliott> 14:31:51: <Phantom_Hoover> Losing your baby teeth to a Jaffa Cake.
17:21:47 <elliott> 14:32:01: <Phantom_Hoover> Or Tel Aviv Cakes as they're known nowadays.
17:21:48 <elliott> Phantom_Hoover: :DDD
17:22:07 <elliott> 14:32:50: <CakeProphet> I think the best way to determine if a Jaffa Cake is indeed a cake
17:22:07 <elliott> 14:33:02: <CakeProphet> is to ask: would you use it as a birthday cake?
17:22:07 <elliott> As a fan of Tel Aviv cakes I can confirm that I wouldn't eat a cake-sized one.
17:22:35 <oklopol> i would so
17:23:13 <Phantom_Hoover> Sorry no Tel Aviv Cakes are the worst.
17:24:08 <elliott> -- Phantom_Hoover, worst person
17:24:38 <Phantom_Hoover> How can I be worst, I don't like Tel Aviv Cakes.
17:25:13 <elliott> 14:53:47: <tiffany> windows is a microkernel and should never need to restart
17:25:13 <elliott> 14:53:55: <tiffany> linux is a monolithic kernel and should need to restart all the time
17:25:17 <elliott> tiffany: ............................................
17:25:22 <tiffany> :s
17:25:46 <oklopol> tiffany: u a girl right
17:25:50 <elliott> 14:54:04: <CakeProphet> wat
17:25:50 <elliott> 14:54:08: <CakeProphet> Windows isn't a microkernal.
17:25:50 <elliott> NT is a pseudo-microkernel.
17:25:54 <elliott> But that has nothing to do with restarts.
17:26:14 <cheater> elliott: why don't you find someone else to be pesky to?
17:26:23 <tiffany> everything says that by design it's harder to update a running monolithic kernel than a microkernel
17:26:32 <tiffany> except for elliotts
17:27:20 <elliott> cheater: Do you intentionally use ridiculous stereotypically-British terms when firing out that stock phrase?
17:27:47 <elliott> But seriously, no, I'm impressed; while directly copying a Japanese tutorial is not very difficult, I would have bet against anyone being able to rope #haskell into writing a tutorial for them over the course of a whole day.
17:29:01 <elliott> Also I didn't actually address you at all in that message, so I'm hardly being pesky to you; it's not my fault if your IRC client bugs you whenever anyone talks /about/ you.
17:29:20 <elliott> 14:56:16: <Phantom_Hoover> gedit?
17:29:21 <elliott> 14:56:40: <Phantom_Hoover> I know; the name is short for "get a proper text editor".
17:29:23 <cheater> you're talking shit about me
17:29:24 <elliott> Phantom_Hoover: I use gedit sometimes.
17:29:48 <elliott> cheater: Did I say anything untrue?
17:29:48 <oklopol> cheater: only behind your back
17:29:52 <cheater> yes.
17:29:54 <oklopol> so what are you complaining about
17:29:58 <elliott> cheater: What, then?
17:30:05 <elliott> I can hardly rectify it if I don't know what I said.
17:30:16 <cheater> riiiight
17:30:26 <cheater> who is supposed to buy you playing dumb?
17:30:39 <ais523> hey, you two, calm down, this conversation isn't going anywhere
17:30:41 <cheater> maybe only you believe someone will actually go for this idiotic performance
17:31:02 <cheater> ais523: hopefully it will go in the direction of elliott leaving me alone
17:31:03 <oklopol> while it's true it's annoying when elliott plays dumb, i can assure you it's more annoying when he tries to play smart
17:31:26 <elliott> ais523: I'm perfectly calm, cheater is loudly accusing me of lying and I'm asking him to tell me what I did. But really I don't care.
17:31:48 <ais523> well, OK, but you're rather inciting the conversation
17:31:55 <ais523> if you think cheater is a troll, you might want to stop feeding him
17:31:58 <cheater> lying is one thing, libel is another
17:32:00 <ais523> and if you don't, why are you responding like that?
17:32:16 <oklopol> ais523: having incite is a GOOD quality
17:32:25 <elliott> ais523: Are you seriously saying asking for clarification is something you'd only do to a troll??
17:32:50 <ais523> no; but asking for clarification the way you are looks like goading
17:32:58 <ais523> oklopol: you aren't oerjan, stop making puns that bad
17:33:11 <oklopol> mwahaha
17:33:15 <oklopol> where's oerjan
17:33:17 <elliott> ais523: Shrug, I tend to like to know what someone is referring to when they apparently accuse me of libel
17:34:00 <cheater> as if anyone is buying that you don't know
17:34:18 <cheater> you could at least not insult the intelligence of other people in here
17:34:30 <cheater> but apparently you don't give a shit about that either
17:34:41 <elliott> Well, I'm certainly buying it. But I won't respond any further, if you're just going to refuse to answer because it's "obvious".
17:34:58 * Phantom_Hoover pops some popcorn.
17:35:34 <cheater> the only obvious thing here is that you've yet again denigrated me, got called out on it, and are pretending you didn't make the stink
17:36:31 <cheater> maybe you aren't experienced enough to realize people don't fall for this sort of thing, but you're definitely not dumb enough not to know when you insult someone.
17:36:52 <Phantom_Hoover> cheater, I'm dumb enough to fall for it.
17:37:05 <cheater> well done, blog about it
17:37:17 <cheater> now, back to what i was doing
17:37:34 <oklopol> i wonder how many eyes i could eat before realizing that's not what eyes are for
17:38:04 <cheater> oklopol: at least this many ꙮ
17:38:11 <oklopol> sorry i can't read that
17:38:14 <oklopol> what is it
17:38:21 <cheater> it's the Multiocular O.
17:38:27 <oklopol> wow.
17:38:47 <cheater> the glyph is a drawing of 7 eyes
17:39:09 <oklopol> :o
17:41:32 <fizzie> You can see an image of it at http://www.fileformat.info/info/unicode/char/a66e/index.htm -- and of course at the code chart, but those are unwieldy.
17:41:52 <oklopol> that's incredibly cute and beautiful and awesome
17:41:57 <oklopol> wow.
17:41:58 <cheater> i think the wikipedia page had a graphical image
17:42:08 -!- sllide has joined.
17:42:10 <cheater> ꙮklꙮpꙮl
17:42:26 <oklopol> :(
17:42:34 <ais523> o
17:42:42 <cheater> it's funny because ok- is a prefix from the word that means "eye"
17:42:47 <cheater> or "eyes"
17:42:53 <cheater> so it kinda fits.
17:43:15 <cheater> your nick is a tarpit of inspiration, oklopol
17:43:41 <oklopol> yes!
17:43:47 <oklopol> i did not come up with it.
17:43:53 <cheater> who has?
17:44:21 <oklopol> this dude from #vjn
17:44:57 <cheater> what is that place about?
17:45:30 <oklopol> let me show you the last three lines
17:45:34 <oklopol> [20:22:01] <@oklofok> o
17:45:34 <oklopol> [20:22:01] <@oklofok> o
17:45:34 <oklopol> [20:22:01] <@oklofok> o
17:45:57 <Vorpal> I played some Trauma.... Wtf.
17:45:59 <Vorpal> so strange
17:46:14 <cheater> oklopol: sounds interesting
17:46:26 <cheater> oklopol: what does vjn stand for? :D
17:46:52 <oklopol> well you don't know finnish so
17:47:06 <cheater> o
17:47:13 <oklopol> it's a scouting term, i used to be a scout
17:47:15 <cheater> how do you guess :|
17:47:24 * Phantom_Hoover ponders a topological language.
17:47:26 <cheater> maybe i DO know finnish
17:47:29 <oklopol> maybe
17:47:32 <oklopol> who knows
17:47:35 <cheater> Just
17:47:40 <elliott> Phantom_Hoover: Topolanguage?
17:47:42 <Phantom_Hoover> Like, it's a fungoid, and the only control structure is setting the wrapping behaviour.
17:47:53 <elliott> Phantom_Hoover: That reminds me of eodeodmeomdoeeroermdrome in a way.
17:47:59 <elliott> Like, if the actual space is fixed.
17:48:03 <elliott> But you just control the wrapping.
17:48:11 <elliott> Space as in the contents, instructions whatever.
17:48:42 <cheater> Phantom_Hoover: more interesting if you can control the size of the field too
17:49:21 <cheater> i wonder if SpaceChem is a fungoid
17:49:46 <elliott> pikhq_: I miiiiiiiiight end up working on Kitten again.
17:51:53 <Phantom_Hoover> Topological kitten.
17:52:05 <elliott> Topitten.
17:52:09 <elliott> Kittological.
17:52:12 <elliott> Wow this doesn't work.
17:52:19 <oklopol> you are not by any change talking about mathematical topologies
17:52:30 <Deewiant> Topolitten
17:52:54 <elliott> oklopol: By any change?
17:52:59 <oklopol> :DD
17:53:02 <oklopol> chance
17:53:06 <elliott> Deewiant: Verily
17:53:37 <fizzie> Kipologitten.
17:54:27 <oklopol> topology is beautiful
17:55:13 <oklopol> so i kind of feel like punching through a wall
17:55:15 <oklopol> is that normal
17:57:01 <Phantom_Hoover> oklopol, what is the topology of a kitten.
17:57:26 <elliott> Phantom_Hoover: Beautiful.
17:58:18 <elliott> Gregor: Oh man, the Node guy is having an existential crisis for inflicting it on the world.
18:00:04 <monqy> oh??
18:00:15 <elliott> https://plus.google.com/115094562986465477143/posts/Di6RwCNKCrf
18:00:19 <elliott> a poem:
18:00:20 <elliott> my tears
18:00:22 <elliott> are red
18:00:23 <elliott> like blood
18:00:25 <elliott> i forced
18:00:26 <elliott> the world
18:00:28 <elliott> to write
18:00:30 <elliott> network code
18:00:33 <elliott> in continuation passing style
18:00:36 <elliott> fuck life
18:01:17 <elliott> "The entire system is broken - all the languages and all the operating systems. It will all need to be replaced."
18:01:22 <elliott> he is going to produce something much much worse than @
18:05:18 <oklopol> he's right at least, everything is shit
18:12:30 <pikhq_> Some things more so than others.
18:12:51 <pikhq_> I think initialisation from the BIOS is the most shitty thing.
18:13:37 <Madoka-Kaname> elliott, so he's arguing for the removal of abstractaion?
18:13:40 <Madoka-Kaname> abstractation*
18:13:41 <Madoka-Kaname> w/e
18:13:51 <Madoka-Kaname> For... the user's sake?
18:13:57 <Madoka-Kaname> What?
18:14:28 <pikhq_> Believe you me, you *want* to abstract some things.
18:15:15 <Madoka-Kaname> > text $ reverse "...sgniht fo tol a rO"
18:15:16 <lambdabot> Or a lot of things...
18:15:32 <pikhq_> Repeat after me: modern hardware is the only thing that sucks worse than modern software.
18:15:51 <Madoka-Kaname> Well, software can kinda patch over the hardware problem, so...
18:16:07 <pikhq_> It doesn't make the hardware suck less.
18:16:14 <pikhq_> It just increases the software suck a bit.
18:16:17 <Madoka-Kaname> =p
18:16:39 <Vorpal> an
18:16:53 <Vorpal> anyone* understand what the game Trauma is about, really
18:17:18 <elliott> You're presuming it's about anything.
18:17:26 <Vorpal> obviously extremely pretentious artsy. I mean, compared to this Braid doesn't seem pretentious at all…
18:17:37 <elliott> You're presuming it's about anything.
18:17:46 <pikhq_> For an example of something that sucks: SSDs. Now, yes, they're pretty sweet and all, but is there any *reason* to have a disk controller in there to let everything else pretend that it's a spinning disk?
18:17:56 <elliott> "More an experimental piece of interactive storytelling than a game, Trauma involves a young woman who wakes up in hospital having survived a car crash that killed both her parents. The player assumes the role of a psychologist, exploring four separate dreams constructed from real-world photographs mixed with strange, mildly hallucinatory images."
18:17:58 <pikhq_> Instead of a particular form of RAM, that is.
18:18:02 <elliott> That's about as detailed as you're gonna get.
18:18:30 <Vorpal> pikhq_, backward compatibility
18:18:42 <pikhq_> Vorpal: Is the bane of good design.
18:18:56 <MDude> Obviously, it's about convinving the girl to take the death of her parents as a sign that she needs to be a superhero.
18:18:56 <Vorpal> pikhq_, you said reason, not justification
18:19:04 <pikhq_> See: Win32, UNIX.
18:19:27 <elliott> MDude: obviousl
18:19:28 <elliott> y
18:19:55 <Vorpal> pikhq_, I agree. But it still is the reason. Oh and it is block oriented because of erase block size. Impractical to make it on anything but block level
18:20:35 <elliott> SSDs should probably expose themselves as write-once interfaces.
18:20:37 <elliott> Not RAM.
18:20:45 <pikhq_> Vorpal: ATA is still the *wrong* interface.
18:20:50 <Vorpal> pikhq_, that is true
18:21:07 <Vorpal> pikhq_, I never claimed it was the right interface. I was just trying to come up with a reason. NOT with a justification
18:21:13 <pikhq_> Vorpal: True, true.
18:23:10 <oklopol> why don't i own a basketball?!?!?!?!?
18:23:14 <oklopol> fuck i'm leaving
18:23:30 <Vorpal> pikhq_, I think too many people confuse reason and justification, sure they are related but they are different
18:25:41 <oklopol> lojban has 4 words for "because"
18:25:48 <pikhq_> Also, fuck BIOS. Just fuck BIOS.
18:31:23 <MDude> \
18:33:51 <elliott> pikhq_: I wonder if I could use a pointer-bumping RAM-allocator for @
18:34:01 <elliott> I don't think so, because that would basically require a copying GC for RAM
18:34:31 <elliott> Hmm
18:34:35 <elliott> I could do a compacting algorithm
18:38:18 <elliott> pikhq_: THX FOUR HELP
18:39:28 <Sgeo|web> Either galculator only deals with reals, or its definition of abs() is wrong
18:39:47 <Sgeo|web> It tells me that the square root of -1 is -nan, so I'll go with the former
18:39:58 <elliott> Galculator can compute with the entire reals? Wow.
18:40:46 <Sgeo|web> "Only dealing with reals" does not imply that it deals with all reals.
18:40:56 <Sgeo|web> Sgeo|web, joke killer.
18:42:03 <elliott> I have this calculator here; it can work with the numbers zero or one. So, sure, it only deals with arbitrary sets, but...
18:44:03 -!- zzo38 has joined.
18:45:30 <zzo38> Do you know that?
18:45:40 <monqy> no
18:45:53 <zzo38> Do you know if there are drivers for FreeDOS to access USB printers?
18:46:34 <zzo38> Do you know if there are drivers for BBL/Abundance to print on fax machines?
18:47:27 <elliott> hi
18:47:43 <elliott> monqy: did you find...scary... in jhc...
18:48:11 <monqy> ih havent been loiiingk
18:48:14 <monqy> lookgin
18:48:16 <monqy> look ing
18:48:21 <elliott> lsgoidkfnj
18:48:24 <ais523> elliott: what's your opinion on what happened to http://esolangs.org/wiki/Brainlove?
18:48:33 <ais523> as in, it was renamed to [[Elog]] which is a completely different language
18:48:37 <ais523> and the page content just replaced
18:48:42 <ais523> it's sort-of the opposite of a copy-and-paste
18:48:43 <elliott> http://esolangs.org/w/index.php?title=Brainlove&action=history
18:48:44 <pikhq_> elliott: Well, copying GC *is* a compacting algorithm... :)
18:48:46 <elliott> umm, where are the previous revisions?
18:48:48 <elliott> oh, moved
18:48:54 <elliott> ais523: I think we should revert it
18:48:56 <ais523> it's a move-and-replace delete, I think
18:49:06 <elliott> move Elog back to Brainlove, copy-and-paste-move the actual Elog language to [[Elog]]
18:49:16 <ais523> nah, it should be a history split
18:49:17 <elliott> and add a note to Brainlove about the creator considering Elog the successor, or something
18:49:21 <ais523> I haven't done one of these in /years/
18:49:22 <ais523> let me try
18:49:25 <elliott> ais523: I was thinking in terms of something a non-admin could do, but yes
18:49:48 <elliott> wow, it really is completely differen
18:49:48 <elliott> t
18:49:59 <elliott> ais523: hmm... wait
18:50:07 <elliott> this might be our one chance at destroying a BF derivative
18:50:10 <elliott> I suggest we do nothing :P
18:50:15 <ais523> bah
18:50:19 <ais523> *nah
18:50:22 <ais523> although "bah" also fits
18:52:10 <elliott> ais523: http://esolangs.org/wiki/Talk:Elog
18:52:12 <elliott> not quite...
18:52:20 <ais523> elliott: I'm still doing the split
18:52:22 <elliott> oh :P
18:52:33 * elliott reverts the latest change to [[Talk:Brainlove]], anyway
18:52:37 <elliott> which is unrelated to the split
18:52:51 <elliott> oh, too late
18:52:55 <elliott> ais523: YOU ARE TOO FAST
18:53:09 <elliott> that was the noisiest recent changes action I've ever seen
18:53:37 <ais523> I've never done one of those ever, I think, except once in my own userspace in Wikipedia for practice
18:53:45 <Sgeo|web> Did Elog have any real history of its own?
18:53:50 <ais523> they don't come up very often, and normally are used to revert mistaken history merges
18:53:55 <ais523> Sgeo|web: it did have a bit
18:53:59 <ais523> two revisions
18:54:16 <elliott> you might want to tell Aptennap why you did it before they see it and get upset :P
18:54:38 <ais523> [[Elog]] needs categorisation, anyway
18:55:15 <Sgeo|web> If Brainlove was moved to Elog, how is that even possible, if Elog had stuff there?
18:55:16 <elliott> done, at least partially
18:55:44 <Sgeo|web> And in recent changes, I don't see any revisions after the move
18:55:48 * Sgeo|web may be a bit confused
18:56:38 <ais523> you know, I have no idea what a history split looks like in recent changes
18:56:41 <ais523> this may be a rare opportunity to see
18:56:47 <ais523> (you can't really in Wikipedia because recent changes moves too fast)
18:57:33 <elliott> oh dear, a git problem that sg doesn't inherently avoid
18:57:37 <elliott> ais523: Like I said: noisy
18:58:18 <elliott> "You're doing it wrong. You shouldn't pull to merge; or rather, you should commit before you pull. Then you can't lose anything - because all your changes are committed."
18:58:19 <elliott> Yawn
18:58:31 <zzo38> They don't even have a printer yet, but I would like to know about these kind of driver for FreeDOS and BBL/Abundance and that stuff, so that I can know what to tell them.
18:58:32 <elliott> hmm, git pull should stash before pulling, and then try and pop the stash
19:01:27 <ais523> I think that's a VCS workflow problem in general
19:02:00 <ais523> at least darcs can pull with working version changes, though
19:02:22 <Vorpal> so can svn but then it is not a dvcs
19:02:34 <ais523> and its behaviour is pretty much equivalent to stash/pull/stash, with conflicts just leaving the repo in a conflicted state and the next commit on the conflicted files counting as resolving the conflict
19:02:49 <ais523> Vorpal: distributedness shouldn't matter for this issue
19:02:55 <Vorpal> indeed
19:03:08 <Vorpal> but it means it is same as up with changed files
19:03:46 <elliott> I'm occasionally overcome by a desire to switch to a really oddball VCS
19:03:57 <elliott> Monotone or arch or Fossil or something
19:04:01 <elliott> It usually passes pretty quickly though
19:04:16 <Sgeo|web> You should be using ais523's VCS
19:04:29 <ais523> Sgeo|web: hey, elliott's actually been developing that
19:04:46 <Sgeo|web> Huh, cool
19:04:49 <elliott> ais523: well, ostensibly
19:04:51 <ais523> oddball VCSes wouldn't be "because it's better" but "because I'm being weird for no good reason"
19:05:06 <Sgeo|web> Ah
19:05:08 <ais523> hmm, there should be a POSIX standard VCS that nobody ever actually uses
19:05:17 <elliott> Monotone is kind of interesting, but I can't shake the feeling it was designed in an alternative universe where development is totally different.
19:05:21 <ais523> that works vaguely like CVS but is incompatible for no obvious reason
19:05:23 <Vorpal> ais523, rcs maybe?
19:05:24 <pikhq_> ais523: svnhgit?
19:05:30 <elliott> I guess it's because it's really old -- it only postdates darcs by a year
19:05:38 <elliott> But it's still alien
19:05:44 <ais523> darcs is really old?
19:05:50 <elliott> ais523: 2002
19:05:54 <elliott> ais523: one of the first open-source DVCSes
19:05:59 <ais523> that's not really old
19:05:59 <elliott> (the first was arch, 2001)
19:06:06 <elliott> ais523: yes it is, in terms of DVCSes
19:06:10 <Vorpal> ais523, in this context it is old
19:06:14 <ais523> well, OK, but not in terms of VCSes in general
19:06:30 <Vorpal> but then that wasn't the context either
19:06:42 <elliott> TeamWare (1990s) → Code Co-op (1997) → BitKeeper (1998) → arch (2001) → darcs (2002)
19:06:55 <pikhq_> ais523: Things predating DVCSes are just eeew, though.
19:06:55 <elliott> it took until 2005 for anyone to actually start caring, with git and mercurial
19:07:01 <Vorpal> never heard of teamware
19:07:06 <elliott> Vorpal: it's some sun crap
19:07:11 <Vorpal> ah
19:07:13 <elliott> but it inspired bitkeeper apparently
19:07:14 <ais523> when does VSS date from?
19:07:20 * Vorpal forces elliott to use Visual SorceSafe
19:07:21 <elliott> ais523: 1994
19:07:30 <ais523> hmm, not as bad as I'd thought
19:07:32 -!- zzo38 has left.
19:07:35 <Vorpal> ais523, VSS?
19:07:39 <ais523> it'd have been hilarious if it was 2006 or something
19:07:39 <elliott> wow, VCSes were very stagnant to start with
19:07:41 <Vorpal> which one is that
19:07:42 <elliott> Vorpal: * Vorpal forces elliott to use Visual SorceSafe
19:07:43 <pikhq_> Visual SourceSafe.
19:07:46 <elliott> SCCS was 1972
19:07:47 <Vorpal> ah
19:07:50 <elliott> and then
19:07:51 <ais523> Vorpal: that's the most amazing failure to expand an acronym I've seen
19:07:53 <elliott> there was no other VCS
19:07:56 <ais523> given that you used its expansion a few lines ago
19:07:56 <elliott> until RCS in 1982
19:08:04 <elliott> well... there was "CA Software Change Manager"
19:08:04 <Vorpal> heh
19:08:12 <elliott> "CCC was designed to manage all the components that went into an aircraft engine, and seeing as the same engine was used by both the U.S. Air Force and U.S. Navy (for the F-14 Tomcat and F-15 Eagle) it required robust and reliable parallel development."
19:08:15 <pikhq_> VSS also makes RCS look decent.
19:08:32 <pikhq_> At least RCS didn't pretend to handle multiple users.
19:08:56 <pikhq_> Though, CVS did. :(
19:09:04 <elliott> oh, wow, does anyone remember when that guy had to quit developing Mercurial because he used BitKeeper at work?
19:09:12 <elliott> it was Bryan O'Sullivan (of Haskell fame)
19:09:44 <ais523> pikhq_: RCS is better at what it claims to do than VSS is at what /it/ claims to do, though
19:09:58 <ais523> at least RCS actually works when used for its intended purpose
19:10:02 <elliott> RCS is fairly decent, really
19:10:07 <Vorpal> <elliott> oh, wow, does anyone remember when that guy had to quit developing Mercurial because he used BitKeeper at work? <-- sounds familiar
19:10:09 <elliott> it's even sort of distributed
19:10:14 <elliott> in that, there's only one repository, but it's kept with the files
19:10:28 <elliott> well
19:10:28 <elliott> file
19:10:34 <elliott> I think you can actually use RCS distributed
19:10:37 <elliott> if you really wanted to
19:10:43 <Vorpal> sounds like a horrible idea
19:10:53 <pikhq_> It's a bit issue-filled, but sure, RCS does what it damned well claims.
19:10:54 <elliott> Vorpal: better than svn
19:11:12 <pikhq_> It stores the history of a file. Nice and simple.
19:11:32 <elliott> really, darcs is quite astonishing, history-wise
19:11:49 <elliott> for being one of the first DVCSes ever, it resembles the current user-interfaces of DVCSes
19:11:49 <elliott> like
19:11:55 <elliott> arch, darcs, monotone, svk
19:12:05 <elliott> all have wildly different, mostly extremely weird interfaces
19:12:08 <ais523> its interface is better than most current DVCSes by default, IMO
19:12:13 <Vorpal> elliott, yeah only VSS is worse than svn really
19:12:14 <elliott> ais523: indeed, but my point is like
19:12:18 <elliott> if you renamed record to commit
19:12:21 <elliott> and whatsnew to log or whatever
19:12:32 <elliott> you'd have something surprisingly close to "current" DVCSes
19:12:40 <ais523> most old DVCSes had really silly interfaces, whereas darcs' is not amazingly difficult from hg/git/bzr?
19:12:43 <elliott> somehow they got it pretty right first time
19:12:48 <elliott> ais523: yeah
19:12:50 <Vorpal> elliott, oh god, wasn't svk some thing on top of svn?
19:12:55 <pikhq_> Vorpal: Yes.
19:12:58 <elliott> Vorpal: yes, it's great :D
19:13:01 <Vorpal> ugh
19:13:26 <elliott> poll time: you have to use CVS or svn; which
19:13:51 <pikhq_> I make tarballs on a regular basis.
19:14:03 <elliott> that's not using CVS or svn
19:14:08 <pikhq_> Precisely.
19:14:20 <Vorpal> elliott, svn because with cvs if someone is committing while you are pulling you can get a inconsistent checkout.
19:14:32 <Vorpal> neither is good
19:14:33 <elliott> Vorpal: how high-traffic is your repository?
19:14:44 <elliott> that's like not using git because of the patch-ordering consistency issue
19:14:45 <Vorpal> elliott, assume something like freebsd ports
19:14:54 <elliott> like, is that really the best objection you can come up with
19:14:58 <elliott> Vorpal: you work on freebsd ports?
19:15:06 <elliott> cfunge: "freebsd ports"
19:15:09 <Vorpal> elliott, no, but in your scenario I am
19:15:10 <Vorpal> :P
19:15:24 <elliott> speaking of ports
19:15:30 <elliott> CVSup is a really weird piece of software
19:15:30 <pikhq_> CVS has a *lot* of really, really bad ideas that even SVN doesn't follow.
19:15:31 <CakeProphet> Lapro V. is sekret man.
19:15:37 <Vorpal> elliott, well yes
19:15:37 <elliott> it's written in fucking Modula-3
19:15:40 <elliott> MOUDLA-3
19:15:41 <Vorpal> is it!?
19:15:43 <Vorpal> why
19:15:53 <elliott> BECAUSE THE GUY LIKES MODULA-3???
19:15:54 <elliott> it even has its like
19:15:54 <CakeProphet> Modula is the best.
19:15:57 <Vorpal> elliott, I forgot what cvsup actually does
19:15:57 <CakeProphet> modules.
19:15:59 <elliott> own bindings to all the system interfaces it needs
19:16:03 <elliott> written in Modula-3
19:16:05 <elliott> and
19:16:08 <elliott> Vorpal: this is the best part
19:16:16 <pikhq_> For instance, a CVS tag does not have to correspond to a single changeset, because CVS doesn't know what a "changeset" is.
19:16:16 <elliott> Vorpal: the guy wrote his own Modula-3 for it
19:16:20 <Vorpal> lol
19:16:22 <elliott> because nobody could find a working Modula-3 compiler to compile it with
19:16:26 <elliott> so he wrote his own
19:16:28 <Vorpal> pikhq_, yes
19:16:35 <CakeProphet> elliott: wow
19:16:45 <pikhq_> Really, CVS not knowing what a "changeset" is is itself a major dealbreaker.
19:16:46 <Vorpal> elliott, what did cvsup do?
19:16:48 <Vorpal> I forgot
19:16:56 <elliott> Vorpal: rsync
19:17:02 <Vorpal> elliott, oh but with cvs?
19:17:12 <elliott> Vorpal: I don't think it even uses CVS
19:17:20 <Vorpal> elliott, so the name?
19:17:21 <elliott> oh
19:17:22 <elliott> "CVSup, when it recognizes a CVS file, will adapt its algorithm to take advantage of this and reduce the amount of data transferred."
19:17:28 <elliott> Vorpal: well it was intended to keep cvs repos in sync
19:17:28 <Vorpal> ah
19:17:33 <Vorpal> right
19:18:15 <Vorpal> anyway, yes cvsup on ports was always faster than emerge --sync (which used rsync)
19:18:27 <Vorpal> mostly due to not needing to read all the local files to compare
19:18:35 <Vorpal> I think
19:22:08 <elliott> I really hate how git makes me say something as scary as "git reset HEAD foo"
19:22:10 <elliott> just to unstage something
19:22:53 <pikhq_> There's a serious mismatch between the git UI and everything else.
19:23:02 <pikhq_> Just... Bleh.
19:23:59 <Sgeo|web> Am I an evil person for overhearing a conversation about where to find hg hosting and mentioning bitbucket?
19:24:22 <elliott> YES
19:24:24 <elliott> SO EVIIIIIIIIIIL
19:24:55 <Sgeo|web> I mean, I've heard people here say bad things about BitBucket before, but I have 0 experience with BitBucket, so don't know either way
19:25:18 <elliott> bleh, where the hell should I put this showConcatMap function?
19:25:30 <elliott> I suppose I could just inline it where I use it
19:25:41 <CakeProphet> doesn't Google Code host hg?
19:25:46 <elliott> google code is an abomination
19:25:50 <CakeProphet> well, right.
19:26:02 <elliott> I have heard exactly one person in my entire life say they like Google Code's UI, and they were terrible :P
19:27:09 <elliott> ?hoogle (a -> ShowS) -> [a] -> ShowS
19:27:09 <lambdabot> Text.Show showListWith :: (a -> ShowS) -> [a] -> ShowS
19:27:09 <lambdabot> Numeric showSigned :: Real a => (a -> ShowS) -> Int -> a -> ShowS
19:27:20 <elliott> ?hoogle (a -> b -> b) -> [a] -> b -> b
19:27:21 <lambdabot> Prelude foldr :: (a -> b -> b) -> b -> [a] -> b
19:27:21 <lambdabot> Data.List foldr :: (a -> b -> b) -> b -> [a] -> b
19:27:21 <lambdabot> Prelude scanr :: (a -> b -> b) -> b -> [a] -> [b]
19:27:24 <elliott> <lambdabot> Text.Show showListWith :: (a -> ShowS) -> [a] -> ShowS
19:27:24 <elliott> oh
19:27:25 <elliott> :DDD
19:27:31 <fizzie> I knew a BitBucket guy, he wanted (and got) us to use it in our group project on some course.
19:27:54 <fizzie> Here "BitBucket guy" just means "likes it", not "is officially involved it in any way".
19:37:00 -!- oerjan has joined.
19:39:04 <Vorpal> fizzie, surely s/any/some/ there?
19:39:20 <Vorpal> brb
19:41:19 <oerjan> any and some, the great scandinavian shibboleths
19:42:56 <Phantom_Hoover> Vorpal, what?
19:43:02 <Phantom_Hoover> He didn't say 'any'...
19:43:40 <elliott> <fizzie> Here "BitBucket guy" just means "likes it", not "is officially involved it in any way".
19:44:03 <Phantom_Hoover> Oh.
19:46:53 <Vorpal> is there a haskell package for doing matrix multiplication in efficient ways?
19:47:05 <Vorpal> for large matrices
19:47:13 <Vorpal> say, > 100x100
19:47:30 <oerjan> there's a binding to ...lapack, iirc
19:47:53 <Vorpal> oerjan, ah. I forgot, what was blas relation to lapack? An implementation?
19:48:50 <oerjan> i don't know, it's just lapack is what istr people mentioning as a frequently used linear algebra package (in C i think?)
19:49:00 <oerjan> (it
19:49:04 <Vorpal> fortran too
19:49:07 <oerjan> 's in the acronym of course)
19:49:11 <elliott> Vorpal: hmatrix
19:49:16 <oerjan> yeah it _would_ be one of those two :P
19:49:18 <Vorpal> elliott, thanks
19:49:21 <elliott> Vorpal: repa may interest you, it can automatically parallelise this stuff
19:49:23 <elliott> and is more hip than hmatrix
19:49:34 <Vorpal> hm okay
19:49:42 <elliott> Vorpal: and there's http://hackage.haskell.org/package/repa-algorithms
19:49:50 <elliott> http://hackage.haskell.org/packages/archive/repa-algorithms/2.2.0.1/doc/html/Data-Array-Repa-Algorithms-Matrix.html is matrix-matrix multiplication
19:49:59 <elliott> but it's definitely not lapack fast :P
19:50:07 <elliott> hm that thing recommends looking at hvector
19:50:23 <elliott> oh but there is no hvector
19:50:25 <elliott> so i guess it means hmatrix
19:50:40 <Vorpal> elliott, lapack fast is kind of what I need
19:50:49 <Vorpal> so hmatrix it is then
19:51:09 <elliott> Vorpal: what are you doing
19:51:11 <Vorpal> oerjan, I think lapack is both for fortran and C. That was my point
19:51:18 <Vorpal> elliott, my own secret project.
19:51:29 <elliott> Vorpal: you are not interesting like ais523, you don't get to have secrets
19:52:05 <Vorpal> elliott, whatever
19:53:05 <Vorpal> elliott, hm does hmatrix support parallelism too?
19:53:18 <Vorpal> because lapack with parallelism would be ideal here
19:53:22 <elliott> i'll tell you if you tell me what you are doing :p
19:54:18 <elliott> Vorpal: HMPH
19:54:35 <elliott> Vorpal: The answer is yes and no, anyway.
19:54:58 <Vorpal> oh thanks, I was writing out a short desc as you answered, guess I wouldn't have needed that
19:55:16 <elliott> Vorpal: I'll answer properly if you give that. :p
19:55:17 <Vorpal> you saved me the work of writing out the whole thing, for that I'm grateful.
19:55:23 <elliott> Helpfully, even!
19:55:37 <oerjan> elliott: Vorpal could have a secret project to conquer the world with dictatorial mundaneness
19:56:14 <Vorpal> elliott, sure, optimisation problem on physical measurements using least squares. There. Boring.
19:56:30 <Vorpal> elliott, no answer helpfully
19:56:37 <elliott> ok, I won't
19:56:41 <elliott> since you asked so kindly
19:56:47 <elliott> I will no answer helpfully
19:56:49 <Vorpal> ...
19:57:01 <Vorpal> elliott, come on. I guess I'll just use fortran otherwise.
19:57:05 <Vorpal> XD
19:57:22 <elliott> Vorpal: the answer is that no, to my knowledge hmatrix does no automatic parallelisation, though I guess your lapack, blas, gsl libraries could do so internally
19:57:28 <elliott> but you can always use the parallel package
19:57:31 <Vorpal> hm right
19:57:37 <Vorpal> fairly easy still
19:57:41 <elliott> (GHC's concurrency support is irrelevant, because your matrix computations are almost certainly pure)
19:57:41 <Vorpal> probably
19:57:50 <elliott> which part is probably
19:57:57 <elliott> if you have a tight loop that does IO, you don't have a tight loop
19:57:58 <Vorpal> elliott, "fairly easily"
19:58:00 <elliott> oh
19:58:28 <Vorpal> I just need to read in the hundreds of measurements from a file, they are already measured.
19:58:28 -!- sllide has quit (Ping timeout: 248 seconds).
19:58:41 <elliott> Vorpal: you will want to read http://ghcmutterings.wordpress.com/2009/10/06/parallelism-concurrency/ and the documentation at http://hackage.haskell.org/packages/archive/parallel/3.1.0.1/doc/html/Control-Parallel-Strategies.html for parallel information
19:58:51 <Vorpal> hm
19:59:00 <Vorpal> thanks
20:01:50 <elliott> :t showListWith
20:01:51 <lambdabot> Not in scope: `showListWith'
20:01:58 <elliott> :t Text.Show.showListWith
20:01:59 <lambdabot> forall a. (a -> ShowS) -> [a] -> String -> String
20:02:01 <elliott> oerjan: I blame y- oh
20:02:07 <elliott> > Text.Show.showListWith shows [9,0,9] ""
20:02:08 <lambdabot> Not in scope: `Text.Show.showListWith'
20:02:11 <elliott> .........
20:02:52 <elliott> ais523: pikhq_: gah, how do I undo "git commit"?
20:04:33 <Deewiant> elliott: git reset --soft
20:04:43 <Deewiant> elliott: git reset --soft 'HEAD^'
20:05:11 <ais523> I think that's about right
20:05:39 <elliott> Deewiant: Thanks
20:05:48 <elliott> Now I just need to figure out where to put showConcatMap = foldr . flip
20:08:37 <Vorpal> elliott, hm given the amount of data I have doing this on the GPU might be more efficient, in which case C + opencl is probably less headache inducing than doing it from haskell
20:09:05 <elliott> Vorpal: I invite ais523 to shatter your illusions
20:09:22 <Vorpal> elliott, oh? I thought matrix multiplication on GPU was fairly efficient
20:09:25 <ais523> it is
20:09:32 <elliott> It probably is, but I'm sure there's some catch to your problem
20:09:34 <ais523> but the GPU toolchain takes a bit of getting used to
20:09:36 <Vorpal> then what is elliott talking about
20:09:45 <ais523> elliott: matrix multiplication, GPUs are pretty much perfect for
20:09:54 <ais523> computer graphics is mostly matrix multiplication, among other things
20:10:00 <elliott> ais523: I'm sure Vorpal is doing something more than just multiplying a billion matrices and doing nothing else
20:10:09 <Vorpal> elliott, I'm transposing them too
20:10:14 <CakeProphet> t*(t>>6&t>>(7*sin(t/4000)))
20:10:17 <CakeProphet> this one is really cool.
20:10:18 <elliott> Vorpal: Anyway, the time it'll take you to deal with the OpenCL API's unforgivable terribleness is not worth it IMO
20:10:28 <Vorpal> elliott, possibly
20:10:34 <elliott> Vorpal: Unless it'll save you over two days of computation time, I'd stick to hmatrix
20:10:42 <elliott> Because it'll definitely cost you two days of coding time :P
20:10:47 <Vorpal> *or*, I could just shove it into mathematica and wait a few days.
20:11:02 <elliott> ais523: haha, look at Vorpal, he thinks Mathematica would complete his problem in days
20:11:08 <Vorpal> elliott, no
20:11:12 <elliott> he must not have heard of the hip new unit of time, decades
20:11:16 <Vorpal> elliott, months would be more like it
20:11:20 <Vorpal> maybe decades. Maybe
20:11:50 <Vorpal> elliott, anyway I have about 200 GB data.
20:12:17 <Vorpal> I guess I'll try hmatrix on a subset and extrapolate the time it would take on the whole.
20:13:27 <elliott> Vorpal: You'll probably fuck up the Haskell and cause it to take about fifteen times longer than it should. (I would. Most people would.)
20:13:37 <Vorpal> elliott, true...
20:13:42 <Vorpal> elliott, so then, C?
20:13:53 <elliott> Vorpal: No, just don't give up on Haskell before you've proved it's not your own fault.
20:13:53 <Vorpal> and then add opencl if it takes forever
20:14:06 <Vorpal> elliott, I don't have a lot of time to waste on this.
20:14:25 <elliott> Vorpal: You're considering using C for the problem. You're considering using C with OpenCL for the problem.
20:14:29 <elliott> You definitely have enough time to waste.
20:15:08 <Vorpal> elliott, anyway this is quite trivial in C with lapack. The APIs don't seem too insane for it
20:15:34 <elliott> Shrug, hurt yourself if you wish
20:15:59 <CakeProphet> numpy is probably your best choice.
20:16:06 <Vorpal> elliott, it suffers the general numerical C function explosion though
20:16:11 <Vorpal> elliott, same as gmp
20:16:20 <oerjan> <elliott> Now I just need to figure out where to put showConcatMap = foldr . flip <-- istr flip . foldr, also maybe composeMap would be a more generic name?
20:17:22 <elliott> Er yes, flip . foldr
20:17:25 <elliott> And possibly
20:17:26 <elliott> Hmm
20:17:41 <elliott> It's (ala Endo foldMap . map f), isn't it?
20:17:49 <elliott> Where (ala Endo foldMap) is what mconcat SHOULD be on functions :)
20:17:55 <elliott> Hmm
20:18:04 <elliott> I guess it can't be because that'd leave out (a -> b) for a ~/~ b
20:18:37 <CakeProphet> do modern machines have a circular bitshift operation?
20:18:48 <Vorpal> CakeProphet, why numpy? Python is slow...
20:18:58 <CakeProphet> Vorpal: dude but it's eeregunt
20:19:00 <elliott> Vorpal: numpy is written in C.
20:19:06 <Vorpal> elliott, "eeregunt"?
20:19:08 <Vorpal> errr
20:19:09 <elliott> It's obviously not your best choice, because it'd involve coding Python.
20:19:09 <Vorpal> CakeProphet, ^
20:19:12 <Vorpal> wtf is "eeregunt"
20:19:14 <elliott> But numpy is certainly fast.
20:19:18 <elliott> By virtue of being written in C.
20:19:19 <Vorpal> elliott, hm
20:19:22 <Vorpal> right
20:19:27 <elliott> (Hint: You don't write loops with numpy, you call pre-existing loops.)
20:19:32 <Deewiant> Vorpal: "elegant"
20:19:44 <Vorpal> Deewiant, maaaybe
20:19:50 <Vorpal> a bit too typoed for that
20:19:54 <CakeProphet> I think Vorpal was taking my suggestion as serious advice.
20:20:06 <elliott> Vorpal: Deewiant is right.
20:20:07 <Deewiant> I do believe it was intentional, not a typo
20:20:09 <Vorpal> CakeProphet, you were joking? okay
20:20:15 <elliott> I am the expert in interpreting people.
20:20:26 <CakeProphet> yes elliott is our people person
20:20:31 <CakeProphet> otherwise we are all daft fools.
20:20:32 <elliott> Not even remotely the same thing.
20:20:46 <CakeProphet> "people person" in the sense of understanding people.
20:20:49 <elliott> I used to get really irritated at PEOPLE ON THE INTERNET for not being able to get what a completely incoherent rambler was trying to say. :p
20:20:52 <oerjan> :t flip . foldr
20:20:53 <lambdabot> forall b a. (a -> b -> b) -> [a] -> b -> b
20:20:54 <elliott> ~~SOCIAL SKILLS~~
20:20:56 <CakeProphet> not as in "la de da de da I love oscialising"
20:21:02 <elliott> I love oscialising.
20:21:22 <elliott> hm oh dear
20:21:29 -!- pikhq has joined.
20:21:33 <elliott> I bet oerjan knows if there's a way to log thread creation and destruction with GHC
20:21:37 -!- pikhq_ has quit (Ping timeout: 256 seconds).
20:21:38 * CakeProphet is an expert in incoherent rambling.
20:21:38 <elliott> If not him then DEFINITELY Deewiant
20:21:43 <CakeProphet> TOGETHER WE CREATE A CONVERSATION.
20:22:15 <CakeProphet> elliott: er, thread creation? couldn't you just track that yourself? Or are you talking about parallel?
20:22:18 <oerjan> elliott: istr one uses MVars or so to communicate from threads that want to tell about it...
20:22:27 <elliott> Destruction is more important than creation
20:22:29 -!- Ngevd has joined.
20:22:31 <elliott> And I'm talking about forkIO threads
20:22:32 <CakeProphet> ah yes
20:22:49 <Ngevd> Hello!
20:22:49 <elliott> Basically the problem is:
20:22:50 <CakeProphet> well you /could/ put a putStr at the end of the thread, but that's probably not, uh, fool-proof.
20:22:56 <elliott> My logging things kept logging empty data lists coming in
20:22:58 <elliott> Even after disconnect
20:23:03 <elliott> And I'm like
20:23:04 <elliott> okay
20:23:05 <elliott> but it's at EOF
20:23:07 <elliott> so why are you still running
20:23:12 <elliott> I switched data0I → dataI
20:23:17 <elliott> so now it throws an exception on EOF like it should
20:23:23 <elliott> and the iterIO library SHOULD exit
20:23:27 <elliott> and the thread SHOULD therefore die
20:23:30 <elliott> but I want to make sure it actually is dying
20:23:37 <elliott> otherwise I have like, a thread leak
20:23:48 <CakeProphet> you could catch the exception and print, right?
20:23:56 <CakeProphet> >_>
20:24:07 <CakeProphet> definitely too easy because you would have though of that.
20:24:07 <elliott> iterIO exceptions are not exceptions in that sense.
20:24:11 <elliott> Well, they are, but no, Iter.run catches EOF.
20:24:13 <CakeProphet> ah okay.
20:24:32 <elliott> Throwing an EOF exception is expected termination behaviour in iterIO.
20:25:06 <CakeProphet> 16:18 < CakeProphet> do modern machines have a circular bitshift operation?
20:25:23 <CakeProphet> is there a circular bitshift anywhere?
20:25:48 <CakeProphet> y = (x >> shift) | (x << (32 - shift));
20:25:48 * oerjan vaguely recalls the 6502 ROT
20:25:54 <CakeProphet> oh look I found a circular bitshift idiom in C
20:25:59 <CakeProphet> hurray Wikipedia.
20:26:22 <CakeProphet> ....wow that's really obvious.
20:26:26 <Vorpal> CakeProphet, you mean roll?
20:26:34 <CakeProphet> uh, maybe?
20:26:36 <Deewiant> So many extra parens
20:26:50 <elliott> Deewiant: Thank god
20:26:56 <Vorpal> CakeProphet, if you mean the top bit is put in the bottom bit
20:26:58 <elliott> Nobody uses bitwise operations, nobody knows what precedence bitwise operations are :P
20:27:00 <Vorpal> then there is rol I guess
20:27:01 <CakeProphet> some people are afraid of bitwise operator precedence.
20:27:04 <Vorpal> on x86
20:27:05 <CakeProphet> such as myself.
20:27:15 <CakeProphet> Vorpal: its a bitshift
20:27:17 <CakeProphet> and its circular
20:27:21 <CakeProphet> pretty self-explanitory.
20:27:32 <oerjan> an operator precedence bitwised my sister
20:27:38 <Vorpal> CakeProphet, you mean moving top bit to bottom bit or vice versa?
20:27:47 <CakeProphet> ....
20:27:53 <CakeProphet> not just top and bottom I assume.
20:28:06 <Vorpal> CakeProphet, more than one bit at once? Sure
20:28:22 <CakeProphet> I would think that's opssible, yes.
20:28:39 -!- zzo38 has joined.
20:29:10 <CakeProphet> also for a 64-bit system 32 would most likely need to be 64 in the above expression.
20:29:29 <Vorpal> CakeProphet, yeah use stdint.h and int32_t or int64_t
20:29:40 <CakeProphet> ah didn't know that was a thing.
20:29:42 * CakeProphet is a C noob.
20:29:50 <Vorpal> CakeProphet, it is C99
20:29:57 <elliott> CakeProphet: What are you doing?
20:30:07 <CakeProphet> elliott: ...reading Wikipedia and being curious. :P
20:30:12 <Vorpal> CakeProphet, won't work in C++ nor C89
20:30:31 <CakeProphet> well if I ever time travel into the past that might be an issue.
20:30:57 <CakeProphet> on the plus side I get to invent CakeScript and revolutionize computing or something.
20:31:03 <CakeProphet> probably not.
20:31:22 <Vorpal> probably not indeed
20:31:23 <CakeProphet> unless I go back a really long time.
20:31:32 <Vorpal> like the 1950s?
20:31:49 <CakeProphet> and then I can spend like 20 years making what is essentially a Perl/Haskell hybrid, back when Algo is still around.
20:31:52 <CakeProphet> yes.
20:31:56 <CakeProphet> +l
20:32:31 <Vorpal> CakeProphet, problem with perl/haskell: won't run on the computers back then
20:32:36 <CakeProphet> that's fine
20:32:46 <CakeProphet> I'll just develop it, publish it, and then wait for it to catch on.
20:32:48 <CakeProphet> >_>
20:32:54 <Vorpal> CakeProphet, -_-
20:33:16 <CakeProphet> or maybe I'll make C but with more Haskell.
20:33:21 <CakeProphet> and MAKE COMPUTING BETTER FOREVER.
20:33:34 <elliott> Vorpal: I'm sure a Haskell compiler would have been practical as soon as Algol was
20:33:34 <Ngevd> Why not just make Haskell?
20:33:53 <elliott> Ngevd: He's trying to ruin computing, not save it.
20:33:53 <Vorpal> elliott, maybe but the GC and so on
20:33:59 <Vorpal> not really realistic back then
20:34:00 <elliott> Vorpal: Region inference
20:34:08 <elliott> Incremental GC
20:34:10 <oerjan> then someone named iverson will investigate it and extract its essence into a language called apl
20:34:20 <Vorpal> elliott, not sure the code for those could fit on the computers back then
20:34:31 <elliott> Vorpal: Executable packers? :p
20:35:04 <Vorpal> elliott, I meant in ram
20:35:17 <CakeProphet> well "make Haskell" would actually require that I know something about compilers
20:35:21 <elliott> just compress the program and decompress the gc every gc cycle
20:35:23 <Vorpal> elliott, or core memory rather
20:35:25 <CakeProphet> I suppose making computing better also would.
20:35:26 <elliott> and vice versa
20:35:29 <Vorpal> elliott, remember. CORE MEMORY
20:35:33 <Vorpal> if you were LUCKY
20:35:42 <elliott> I am: joking.
20:35:47 <Vorpal> right
20:35:56 <Vorpal> you forgot the indicator
20:35:58 <CakeProphet> :P
20:36:31 <CakeProphet> :P is either "I'm joking" or "haha fuck off"
20:36:51 <oerjan> best not to collapse that wavefunction
20:36:55 <Vorpal> your best bet would be to bet on horses instead, put it in a number bank account overseas
20:37:18 <CakeProphet> is a number where you go to deposit and withdraw numbers?
20:37:22 <CakeProphet> *number bank
20:37:28 <oerjan> core memory should be perfect for ghc core, right
20:37:35 <CakeProphet> do they accept irrational numbers?
20:37:39 <Vorpal> CakeProphet, should be parsed as "number (bank account)"
20:37:47 <Vorpal> CakeProphet, like they don't know who you are
20:37:54 <Vorpal> you just have a number to access the account
20:38:22 <Vorpal> traditionally Swiss accounts
20:38:38 <CakeProphet> Vorpal: ah so a Swedish bank, as it would be referred to in the states.
20:38:49 <Vorpal> CakeProphet, Swiss
20:38:50 <CakeProphet> er, yes Sqiss
20:38:51 <Vorpal> not Swedish
20:38:52 <CakeProphet> lol
20:39:05 <CakeProphet> I forget who has awesome banks.
20:39:19 <oerjan> huh godel's lost letter is making a post on that claimed peano inconsistency proof
20:40:09 <elliott> swedish bank
20:40:11 <oerjan> no, laptop, this is not the right time to start thrashing
20:40:12 <CakeProphet> Sqitzerland is the best.
20:40:15 <Vorpal> oerjan, "gödel's lost letter", what is that
20:40:24 <CakeProphet> swedish banks are neutral on the matter of secrecy.
20:40:41 <oerjan> Vorpal: a blog, one of the best, about theoretical computer science, in particular complexity theory
20:41:22 <oerjan> the full title is "Gödel's lost letter and P = NP"
20:41:37 <CakeProphet> I love prestigious blags.
20:41:49 <CakeProphet> good for the world.
20:42:19 <oerjan> http://rjlipton.wordpress.com/2011/10/01/what-if-peano-is-inconsistent/ although i am just starting to read it myself
20:45:55 <elliott> Re: The Inconsistency of Arithmetic
20:45:56 <elliott> You are quite right, and my original response was wrong. Thank you for spotting my error.
20:45:56 <elliott> I withdraw my claim.
20:45:56 <elliott> Posted by: Edward Nelson on October 1, 2011 1:39 PM | Permalink | Reply to this
20:46:08 <elliott> that seems a bit, um, sudden, if the guy is writing a book about it
20:46:45 <oerjan> at least it's up front :P
20:46:59 <elliott> I'm wondering if he means some sub-claim or something
20:47:05 <CakeProphet> yes I think so
20:47:25 <CakeProphet> I believe he's talking about a specific point in a discussion
20:47:32 <CakeProphet> ...points I don't understand..
20:47:51 <CakeProphet> I agree with all your comments up to (3). But I don’t use (3). I use the Chaitin machine, or proof verifier, for the fixed theory Q_0^*
20:47:55 <CakeProphet> weird emoticin.
20:47:59 <CakeProphet> *o
20:48:45 <Madoka-Kaname> :t text
20:48:46 <lambdabot> String -> Doc
20:48:55 <elliott> Madoka-Kaname: http://hackage.haskell.org/packages/archive/pretty/1.1.0.0/doc/html/Text-PrettyPrint-HughesPJ.html
20:49:19 <Madoka-Kaname> > text $ fix ("]["++)
20:49:27 -!- augur has quit (Remote host closed the connection).
20:49:32 <Madoka-Kaname> > text $ take 1000 $ fix ("]["++)
20:49:34 <lambdabot> ][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]...
20:49:34 <lambdabot> thread killed
20:49:43 <Madoka-Kaname> text isn't lazy. :(
20:50:34 -!- ive has joined.
20:50:45 -!- derdon has joined.
20:51:20 <lifthrasiir> -rw-r--r-- 1 lifthrasiir staff 131183666 10 2 05:46 lostkng.b.wrl
20:51:21 <lifthrasiir> -rw-r--r-- 1 lifthrasiir staff 176209 10 2 05:46 lostkng.b.wrl.bz2
20:51:23 <elliott> text s = case length s of {sl -> textBeside_ (Str s) sl Empty}
20:51:23 <lifthrasiir> low entropy!
20:51:32 <elliott> lifthrasiir: LostKng is full of lots of noise
20:51:38 <elliott> if you ran it through a BF optimiser that might help
20:51:45 <CakeProphet> I don't know it's kind of ambiguous as to which claim he is withdrawing.
20:51:47 <elliott> but it's still essentially repetitive thanks to the bad compiler
20:51:47 <CakeProphet> maybe if I knew more maths.
20:52:00 <elliott> hm wait
20:52:01 <oerjan> :t val
20:52:01 <lambdabot> forall a. Dif a -> a
20:52:03 <elliott> oerjan: text s = case length s of {sl -> textBeside_ (Str s) sl Empty}
20:52:04 <oerjan> :t var
20:52:05 <lambdabot> forall a. String -> Sym a
20:52:07 <lifthrasiir> elliott: well, but it has ran through bf2whirl so it has even more noise
20:52:08 <elliott> that doesn't necessarily force length s right?
20:52:11 <elliott> lifthrasiir: haha
20:52:20 <oerjan> > var $ fix ("]["++)
20:52:22 <lambdabot> ][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]...
20:52:26 <oerjan> Madoka-Kaname: that one is
20:52:29 <elliott> textBeside_ :: TextDetails -> Int -> RDoc -> RDoc
20:52:29 <elliott> textBeside_ s sl p = TextBeside s sl p
20:52:37 <elliott> oerjan: I guess something forces the length on output, then
20:52:39 <lifthrasiir> anyway it would be the biggest ever Whirl program (131MB)
20:52:53 <elliott> yeah
20:52:55 <lifthrasiir> even esotope chokes while using lots of memory
20:53:03 <elliott> lifthrasiir: yikes
20:53:13 <lifthrasiir> (even though it uses compressed format to reduce memory! :S)
20:53:18 <elliott> oerjan: anyway re:
20:53:18 <elliott> <oerjan> <elliott> Now I just need to figure out where to put showConcatMap = foldr . flip <-- istr flip . foldr, also maybe composeMap would be a more generic name?
20:53:25 <elliott> the genericity doesn't help, I still have no idea where to put it :D
20:53:31 <elliott> MC.Protocol does /not/ seem the place
20:53:48 <elliott> lifthrasiir: Has esotope-bfc been updated to the new system?
20:53:55 <lifthrasiir> in progress.
20:54:43 <elliott> cool
20:54:50 <oerjan> <elliott> that doesn't necessarily force length s right? <-- i wouldn't think so, probably textBeside_ does then
20:54:59 <elliott> oerjan: it's just a constructor, so no
20:55:02 <elliott> it's the rendering function that forces it
20:55:06 <elliott> because of line width etc.
20:56:18 <oerjan> <elliott> the genericity doesn't help, I still have no idea where to put it :D <-- Data.Function or Data.List?
20:56:29 <elliott> oerjan: I don't own the base package :P
20:57:31 <oerjan> no, but if people keep reinventing it...
20:57:44 <oerjan> :t compose
20:57:45 <lambdabot> Not in scope: `compose'
20:57:49 <oerjan> @hoogle compose
20:57:49 <lambdabot> No results found
20:58:13 <oerjan> it would seem natural in relation to things like max/maximum
20:58:23 <CakeProphet> elliott: the problem with these bitshift DSP things is that there's no apparently sane way to compose them together..
20:58:36 <CakeProphet> maybe if you actually understood what was going on..? then you could sync times?
20:58:58 <oerjan> @hoogle [a b b] -> a b b
20:58:58 <lambdabot> Data.Map unions :: Ord k => [Map k a] -> Map k a
20:58:58 <lambdabot> Data.Graph.Inductive.Internal.Heap mergeAll :: Ord a => [Heap a b] -> Heap a b
20:58:58 <lambdabot> Data.Graph.Inductive.Basic grev :: DynGraph gr => gr a b -> gr a b
20:59:15 <oerjan> @hoogle [b -> b] -> b -> b
20:59:16 <lambdabot> Data.Generics.Schemes everywhere :: (a -> a) -> a -> a
20:59:16 <lambdabot> Data.Generics.Schemes everywhere' :: (a -> a) -> a -> a
20:59:16 <lambdabot> Prelude until :: (a -> Bool) -> (a -> a) -> a -> a
20:59:38 <oerjan> i guess we've done that search before
21:00:25 <elliott> yeah :P
21:00:25 <CakeProphet> also, I made THE REAL poop machine: t*(t>>6&t>>(1000*sin(t/4000)))
21:00:47 <elliott> oerjan: meanwhile, I am inventing The Best Sequence Structure
21:01:55 <Madoka-Kaname> :t foldl ($)
21:01:56 <lambdabot> Occurs check: cannot construct the infinite type: b = b1 -> b
21:01:56 <lambdabot> Probable cause: `$' is applied to too many arguments
21:01:56 <lambdabot> In the first argument of `foldl', namely `($)'
21:02:10 <Madoka-Kaname> :t flip foldl $ ($)
21:02:11 <lambdabot> forall b a b1. (((a -> b1) -> a -> b1) -> b -> (a -> b1) -> a -> b1) -> [b] -> (a -> b1) -> a -> b1
21:02:17 <Madoka-Kaname> :t foldl
21:02:17 <lambdabot> forall a b. (a -> b -> a) -> a -> [b] -> a
21:02:34 <Madoka-Kaname> :t ($)
21:02:35 <lambdabot> forall a b. (a -> b) -> a -> b
21:03:05 <zzo38> I want to see if I can understand contravariant. Are barrier monads contravariant with respect to the back types? Since we have convert :: (f -> f') -> (b' -> b) -> Barrier f b t -> Barrier f' b' t; I looked up something about contravariant and this function seem similar with back type but I am unsure I don't know much about it, really
21:03:06 <Madoka-Kaname> :t (.)
21:03:07 <lambdabot> forall a b (f :: * -> *). (Functor f) => (a -> b) -> f a -> f b
21:03:28 <Deewiant> @ty flip foldl $ flip ($)
21:03:29 <lambdabot> forall b a b1. ((a -> (a -> b1) -> b1) -> b -> a -> (a -> b1) -> b1) -> [b] -> a -> (a -> b1) -> b1
21:03:34 <Madoka-Kaname> :t flip $ foldl (.)
21:03:35 <lambdabot> forall a b. [a -> a] -> (a -> b) -> a -> b
21:03:59 <fizzie> Vorpal: In case this wasn't answered, BLAS is the thing that does Basic Linear Algebra Somethings; vector-vector, vector-matrix and matrix-matrix operations, mostly. And then LAPACK builds on top of those to do more complicated linear algebra things.
21:04:06 <Madoka-Kaname> :t (flip $ foldl (.)) id
21:04:06 <lambdabot> Couldn't match expected type `[a -> a]'
21:04:07 <lambdabot> against inferred type `a1 -> a1'
21:04:07 <lambdabot> In the first argument of `(flip $ foldl (.))', namely `id'
21:04:14 <Madoka-Kaname> :t foldl (.) id
21:04:15 <lambdabot> forall a. [a -> a] -> a -> a
21:04:36 <Madoka-Kaname> :t foldl (.) id [+1,+2,+3,+4,+5) 0
21:04:37 <lambdabot> parse error on input `)'
21:04:38 <Madoka-Kaname> :t foldl (.) id [+1,+2,+3,+4,+5] 0
21:04:39 <lambdabot> A section must be enclosed in parentheses thus: (+ 1)
21:04:40 <lambdabot> A section must be enclosed in parentheses thus: (+ 2)
21:04:40 <lambdabot> A section must be enclosed in parentheses thus: (+ 3)
21:04:52 <Madoka-Kaname> :t foldl (.) id [(+1),(+2),(+3),(+4),(+5)] 0
21:04:52 <lambdabot> forall a. (Num a) => a
21:04:57 <Madoka-Kaname> > foldl (.) id [(+1),(+2),(+3),(+4),(+5)] 0
21:04:58 <lambdabot> 15
21:05:05 * Madoka-Kaname pokes oerjan
21:05:25 <Phantom_Hoover> Poerjan.
21:07:37 <elliott> Madoka-Kaname: that's the obvious implementation, yes
21:08:37 <oerjan> <zzo38> [...] Are barrier monads contravariant with respect to the back types? [...] <-- i think so yes
21:09:00 <Madoka-Kaname> :t wee l a = wee (tail l) $ head l $ a
21:09:01 <lambdabot> parse error on input `='
21:09:06 * Madoka-Kaname hides
21:09:24 <Madoka-Kaname> @pl wee l a = wee (tail l) $ head l $ a
21:09:25 <lambdabot> wee = fix ((`ap` head) . ((.) .) . (. tail))
21:09:31 <elliott> oerjan: oh no, my perfect structure is not so perfect
21:09:40 <Sgeo|web> AIM spambots are amusing
21:09:43 <Madoka-Kaname> :t fix ((`ap`head).((.).).(.tail))
21:09:44 <lambdabot> forall a b. [a -> a] -> a -> b
21:09:51 <Madoka-Kaname> Kyu?
21:10:07 <Madoka-Kaname> @pl wee l a = wee (tail l) $ (head l) a
21:10:07 <lambdabot> wee = fix ((`ap` head) . ((.) .) . (. tail))
21:10:23 <elliott> oerjan: head... is O(n)...
21:10:29 <Sgeo|web> Kyuubey?
21:10:29 <oerjan> fancy.
21:11:08 <elliott> oerjan: :'(
21:11:14 <elliott> oerjan: do you want to know what it was...................................
21:11:27 <oerjan> Madoka-Kaname: why foldl? i think it's going to be worse than foldr there in practice.
21:11:40 <Madoka-Kaname> @pl wee l a = if' (length l == 0) a (wee (tail l) $ (head l) a)
21:11:40 <lambdabot> wee = fix (ap (ap . if' . (0 ==) . length) . (`ap` head) . ((.) .) . (. tail))
21:11:42 <oerjan> > (flip . foldr) [(+1),(+2),(+3),(+4),(+5)] 0
21:11:42 <lambdabot> Couldn't match expected type `a -> b -> b'
21:11:42 <lambdabot> against inferred type `[...
21:11:58 <oerjan> wat
21:12:04 <Madoka-Kaname> :t fix(ap(ap.if'.(0==).length).(`ap`head).((.).).(.tail))
21:12:05 <lambdabot> Not in scope: `if''
21:12:06 <oerjan> oh right
21:12:12 <elliott> oerjan: :'(
21:12:12 <Madoka-Kaname> :t fix(ap(ap.if' .(0==).length).(`ap`head).((.).).(.tail))
21:12:13 <lambdabot> Not in scope: `if''
21:12:15 <oerjan> > (flip . foldr) id [(+1),(+2),(+3),(+4),(+5)] 0
21:12:17 <lambdabot> 15
21:12:35 <Madoka-Kaname> :t foldr
21:12:36 <lambdabot> forall a b. (a -> b -> b) -> b -> [a] -> b
21:12:45 <elliott> monqy: tell oerjan not nice not talk
21:13:03 <Sgeo|web> Madoka-Kaname: /人◕ ‿‿ ◕人\ Contract?
21:13:10 <Madoka-Kaname> Sgeo|web, nthx
21:13:16 <Madoka-Kaname> Try again tomorrow
21:13:16 <monqy> what happened
21:13:21 <monqy> is oerjan not niceing
21:13:25 <elliott> monqy: oerjan not talking
21:13:32 <oerjan> elliott: do you want to tell about it
21:13:43 <elliott> oerjan: if only.. to provide laughter...of how...
21:13:45 <elliott> dumbi was :'(
21:13:59 <monqy> :'(
21:14:26 <elliott> oerjan: it was...
21:14:28 <elliott> oerjan: a difference list zipper
21:14:37 <Madoka-Kaname> @pl wee l a = if (length l == 0) then a else (wee (tail l) $ (head l) a)
21:14:37 <lambdabot> wee = fix (ap (ap . if' . (0 ==) . length) . (`ap` head) . ((.) .) . (. tail))
21:14:40 -!- augur has joined.
21:14:44 <elliott> i was thinking that since zippers were basically functional doubly linked lists... and difference lists had O(one) append...
21:14:47 <elliott> combine... to get perfect structure?
21:14:53 <Madoka-Kaname> :t if'
21:14:54 <lambdabot> Not in scope: `if''
21:15:30 <oerjan> Madoka-Kaname: length is a very good way of ruining any chance of working on infinite lists
21:15:53 <oerjan> i.e., please use pattern matching.
21:16:00 <elliott> oh no use of head and tail and length
21:16:02 <elliott> and even
21:16:05 <elliott> length l == 0 instead of null l
21:16:06 <elliott> but even then
21:16:07 <elliott> no
21:16:08 <elliott> adbad
21:16:10 <elliott> person :(
21:16:19 <oerjan> well you could use null. but still, use pattern matching instead.
21:16:23 <Madoka-Kaname> oerjan, an infinite list of functions is never going to return anyways.
21:16:24 <Madoka-Kaname> =p
21:16:31 <elliott> um
21:16:36 <oerjan> @_@
21:16:40 <elliott> methinks Madoka-Kaname is not very experienced with lazy evaluation.
21:16:52 <monqy> :t if'
21:16:53 <Sgeo|web> > take 5 $ [1..]
21:16:53 <lambdabot> Not in scope: `if''
21:16:54 <lambdabot> [1,2,3,4,5]
21:16:56 <elliott> > foldr (.) id (cycle [(0:),(9:)]) []
21:16:57 <lambdabot> [0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,...
21:16:59 <elliott> Madoka-Kaname: behold
21:17:06 <Madoka-Kaname> Uh.
21:17:07 <monqy> what is this if' thing in the @pl output
21:17:08 <elliott> > length (cycle [(0:),(9:)])
21:17:09 <Madoka-Kaname> ^^;
21:17:16 <Madoka-Kaname> Okey, you win.
21:17:23 <elliott> okey spelled with e
21:17:24 <lambdabot> thread killed
21:17:30 <Madoka-Kaname> > foldr (.) id [id..] 0
21:17:31 <lambdabot> No instance for (GHC.Enum.Enum (b -> b))
21:17:31 <lambdabot> arising from a use of `e_10' at...
21:17:32 <Phantom_Hoover> lambdabot is suitably mortified.
21:17:39 <Madoka-Kaname> > foldr (.) id (repeat id) 0
21:17:42 <lambdabot> mueval-core: Time limit exceeded
21:17:42 <oerjan> monqy: it's just for @pl's internal use for if then else. if' b t e = if b then t else e
21:17:52 <Sgeo|web> why did i put a $ there
21:17:56 <Sgeo|web> > take 5 [1..]
21:17:57 <lambdabot> [1,2,3,4,5]
21:18:10 <monqy> if onley: points fre patren matcheing
21:19:17 -!- augur has quit (Remote host closed the connection).
21:19:46 <CakeProphet> (t*((t>>16|t>>8)+(t>>23)&63&t>>(3+3*sin(t/10000)))*4)
21:19:47 <CakeProphet> bahahahaha
21:19:49 <CakeProphet> insane.
21:19:56 <Madoka-Kaname> What does that do
21:20:07 <CakeProphet> http://www.bemmu.com/music/index.html
21:20:45 <elliott> CakeProphet: this is not very listenable
21:20:52 <CakeProphet> .....oh, it's not?
21:20:58 <oerjan> Madoka-Kaname: the difference here is that (0:) and (9:) are lazy functions while id is a strict function. this means that composing an infinite list of the former can still give a useful function, since they don't need to always look at their argument, while id does.
21:20:59 <elliott> well
21:21:02 <elliott> don't get me wrong
21:21:03 <elliott> it's genius
21:21:07 <elliott> just not very tuneful :D
21:21:14 * CakeProphet listens to noise music.
21:21:21 <CakeProphet> maybe I'm just desensitized to that.
21:21:33 <elliott> i like it, i'm just saying 100*sin(Math.log(10*(t%9))^Math.sqrt(10*(t%1024))<<(t/1024)) is way better.
21:21:33 <elliott> :|
21:21:58 <elliott> CakeProphet: the beat in yours is interesting though.
21:22:22 <CakeProphet> I've noticed that changing the multiplier there (the *4 in this case) tends to decrease the intensity
21:22:23 <oerjan> Madoka-Kaname: basically foldr (.) id (repeat f) whatever = fix f
21:22:30 <CakeProphet> I've basically been playing with this one expression but plugging in different parameters.
21:24:18 -!- pikhq_ has joined.
21:25:06 <CakeProphet> it's based off the original one I posted to this channel: (t*((t>>8|t>>9)+(t>>10)&27)*100)
21:25:37 <CakeProphet> so then I made a similar one but with more distortion: (t*((t>>9|t>>8)+(t>>10)&27&t>>4)*100)
21:25:40 <elliott> yeah I recognised it as an obvious remix :P
21:25:43 <CakeProphet> and now I've gotten to this craziness.
21:26:22 <CakeProphet> changing the 4 to a 3 also yields interesting results.
21:26:28 <CakeProphet> actually this pattern is awesome and does all sorts of shit.
21:27:01 -!- pikhq has quit (Ping timeout: 248 seconds).
21:28:17 <elliott> CakeProphet: 100*sin(Math.log(t%9)^Math.sqrt((9+(t>>8))*(t%1024))<<(t/1024))
21:28:19 <CakeProphet> elliott: 100*sin(Math.log(10*(t%9))^Math.sqrt(10*(t%1024))<<(t/1024)) is pretty awesome...
21:28:23 <CakeProphet> not going to lie
21:28:35 <elliott> BUT NOW I AM EVOLVING IT
21:28:40 <CakeProphet> this one has LASER SOUNDS
21:28:41 <CakeProphet> nice.
21:28:57 <elliott> it has long-term evolution which is nice
21:29:03 <CakeProphet> still a small but committed fanbase will prefer my more avant garde style. :P
21:29:25 <CakeProphet> I like to add really low frequency oscillators to evolve things. I'm not really sure where this one evolves.
21:29:29 <elliott> t*Math.random() <-- avant garde
21:29:30 <CakeProphet> sqrt?
21:29:43 <Madoka-Kaname> CakeProphet, what does that function return?
21:29:49 <CakeProphet> ...sqrt? or?
21:29:55 <Madoka-Kaname> The input.
21:29:58 <CakeProphet> t?
21:30:05 <CakeProphet> what are you talking about.
21:30:19 <Madoka-Kaname> What are those equations supposed to be outputting.
21:30:23 <elliott> pcm samples
21:30:24 <CakeProphet> numbers
21:30:28 <CakeProphet> yes that.
21:30:34 <CakeProphet> also numbers.
21:30:35 <elliott> eight-bit ones.
21:30:37 <CakeProphet> floating point
21:30:39 <CakeProphet> er
21:30:43 <CakeProphet> floating point as well right?
21:30:44 <elliott> eight thousand of them per second
21:30:51 <elliott> CakeProphet: well, yes, but that'll get rounded off when converting to audio i think
21:30:56 <CakeProphet> ah okay.
21:30:58 <elliott> var sample = (f(t)) & 0xff;
21:30:59 <elliott> sample *= 256;
21:30:59 <elliott> if (sample < 0) sample = 0;
21:30:59 <elliott> if (sample > 65535) sample = 65535;
21:30:59 <elliott> yeah
21:31:07 <elliott> fsvo rounded off, bitmasked :P
21:31:07 <CakeProphet> that's why it's so deliciously 8-bit
21:31:12 <CakeProphet> all of this stuff would sound weird with a higher sample rate.
21:31:37 <CakeProphet> not that it doesn't already sound weird.
21:31:50 <CakeProphet> Madoka-Kaname: are you familiar with how signal processing at all?
21:31:58 <Madoka-Kaname> Kinda not really.
21:31:58 <CakeProphet> or, like, sinusoids, or pcm or....
21:32:34 <elliott> CakeProphet: http://wurstcaptures.untergrund.net/music/?oneliner=100*sin(Math.log(10*(t%259))%5EMath.sqrt(10*(t%251024))%3C%3C(t%2F1024))&rate=22050
21:32:38 <elliott> case in point re: sample rate :P
21:32:55 <CakeProphet> yeah I tried using that site with different sample rates. doesn't sound the same.
21:33:14 <elliott> oh man
21:33:17 <elliott> CakeProphet: http://wurstcaptures.untergrund.net/music/?oneliner=100*sin(Math.log(10*((t%2F5.5125)%259))%5EMath.sqrt(10*((t%2F5.5125)%251024))%3C%3C((t%2F5.5125)%2F1024))&rate=22050
21:33:17 <CakeProphet> the 8-bit deliciousness is important.
21:33:20 <CakeProphet> to the deliciousness.
21:33:20 <elliott> that scales for the difference in sample rate
21:33:25 <elliott> in my original amazing masterpiece
21:33:39 <elliott> it actually sounds pretty cool
21:33:43 <elliott> it's amazing how fleshed out the beat is
21:33:51 <CakeProphet> elliott: it's all like... high resolution though.
21:33:56 <elliott> yeah but still :P
21:34:05 <elliott> oh wait i got the sample rate wrong
21:34:13 <elliott> omg
21:34:15 <elliott> CakeProphet: http://wurstcaptures.untergrund.net/music/?oneliner=100*sin(Math.log(10*((t%2F5.5125)%259))%5EMath.sqrt(10*((t%2F5.5125)%251024))%3C%3C((t%2F5.5125)%2F1024))&rate=44100
21:34:26 <elliott> it just sounds like a CD version of my original masterpiece :D
21:34:29 <CakeProphet> oh yeah 44.1k is much better
21:34:40 <elliott> yeah i just got the sample rate wrong for the scale factor
21:34:44 <CakeProphet> and also standard sample rate of a lot of things.
21:35:26 <fizzie> 48k has claimed quite a lot of market share from 44.1k lately.
21:35:37 <elliott> FSVO quite a lot
21:35:45 <CakeProphet> http://wurstcaptures.untergrund.net/music/?oneliner=(t*((t%3E%3E8%7Ct%3E%3E9)%2B(t%3E%3E10)%2627)*100)&rate=44100
21:35:48 <CakeProphet> my original masterpiece
21:35:57 <CakeProphet> now sounds like a purring glass machine gun.
21:36:28 <elliott> http://wurstcaptures.untergrund.net/music/?oneliner=100*sin(Math.sqrt(t%2F5.5125)%5EMath.sqrt(10*((t%2F5.5125)%251024))%3C%3C((t%2F5.5125)%2F1024))&rate=44100
21:36:31 <elliott> this is also pretty cool
21:36:36 <elliott> CakeProphet: just change t → t/5.5125
21:36:38 <elliott> to upsample it
21:36:50 <CakeProphet> ....I wonder if I can reassign it.
21:36:59 <CakeProphet> to be lazy
21:37:03 <elliott> probably
21:37:05 <elliott> t=foo,expr
21:37:09 <elliott> it still sounds like shit though
21:37:36 <CakeProphet> ((t/=5.5125)*((t>>8|t>>9)+(t>>10)&27)*100)
21:37:39 <CakeProphet> loses its 8-bit charm. :P
21:37:58 <elliott> i prefer the eight bit version on the whole but my two masterpieces sound pretty good in CD hz :P
21:38:03 <CakeProphet> lol
21:39:10 <elliott> 100*sin(Math.log(t)^Math.sqrt((9+(t>>8))*(t%1024))<<(t/1024))
21:39:17 <elliott> oh
21:39:19 <elliott> i prefer
21:39:19 <elliott> 109*sin(Math.log(t)^Math.sqrt((9+(t>>8))*(t%1024))<<(t/1024))
21:39:22 <tiffany> o_o
21:40:22 <CakeProphet> Madoka-Kaname: okay so the most basic kind of signal would be like A*sin(f*t + p) where A = amplitude, f = frequency (usually constant but doesn't need to be (for example with frequency modultion)), t = time (just think of some infinitely rising number in seconds) p = phase
21:40:33 <elliott> CakeProphet: Dude.
21:40:37 <fizzie> The values of "quite a lot" that include most DVD and digital TV streams, I believe. (And with 96k, blu-ray. 48k, 96k and 192k are the only things allowed for the primary soundtrack on Blü-ray.)
21:40:41 <CakeProphet> Madoka-Kaname: sin or cos, only difference is the phase. These are the "purest" tones in that all other can be composed of a series of sinusoids.
21:40:41 <elliott> You don't need to know any of that shit to produce TUNEZ on this. :p
21:40:45 <elliott> fizzie: But almost no music.
21:40:50 <CakeProphet> elliott: it certainly helps.
21:41:07 <elliott> CakeProphet: I know almost no signal processing, and I am sooooo good at this.
21:41:27 <CakeProphet> just that tiny bit of information helps for example, if you want to apply a LFO into your signal.
21:41:30 <CakeProphet> to modulate some parameter.
21:41:37 <CakeProphet> to create a slowly evolving melody.
21:41:49 <fizzie> elliott: Well, uh... DVD-audio. Anyway, quite a lot of sound is associated with a picture.
21:41:59 <elliott> fizzie: YouTube. :p
21:42:07 <elliott> CakeProphet: 109*sin(Math.log(t)^Math.sqrt((t>>9)*(t%1029))<<(t/1024))
21:42:33 <elliott> oh man
21:42:33 <elliott> 109*sin(Math.log(t>>4)^Math.sqrt((t>>9)*(t%1029))<<(t/1024))
21:42:34 <elliott> this is better
21:42:42 <CakeProphet> I wish I could manipulate these signals in the frequency domain. needs moar fft
21:43:23 <CakeProphet> elliott: oh that's nice. what are you adjusting to get the gradual evolution?
21:43:29 <CakeProphet> is it the sqrt?
21:43:34 <elliott> I think it's the <<
21:43:39 <CakeProphet> ahhhh
21:43:46 <CakeProphet> yes that would do it.
21:43:47 <elliott> It's still limited because the whole thing is in a sin call though, I think I'll try doing some stuff outside it
21:44:00 <CakeProphet> it's interesting that it actually doesn't limit it that much.
21:44:20 <CakeProphet> basically what you're doing is very very complex frequency modulation.
21:44:27 <CakeProphet> well... that's what you would be doing if you added a t* to the beginning.
21:44:34 <elliott> fsvo very complex
21:44:49 <CakeProphet> ...yes
21:45:28 <CakeProphet> actually I should try some frequency modulation
21:45:32 <CakeProphet> lets see if I remember anything.
21:45:46 <CakeProphet> should be possible to emulate vocal sounds.
21:46:06 * CakeProphet needs to find His Notes(tm)
21:46:53 <elliott> http://wurstcaptures.untergrund.net/music/?oneliner=t%2F%3D5.5125%2C(109*sin(Math.log(t%3E%3E4)%5EMath.sqrt((t%3E%3E9)*(t%251029))%3C%3C(t%2F1024)))&rate=44100
21:46:57 <elliott> and you call yourself the avant garde one :P
21:47:49 <CakeProphet> this is lame pop bullshit bra
21:48:43 <elliott> oerjan: he;lp where do i put showconcatmap
21:48:53 <elliott> I don't want to have an MC.Utils so soon :(
21:51:00 <CakeProphet> elliott: sin(t/20)*((t>>8|t>>9)|(t>>10|t>>9))+(t>>4)*100
21:51:05 <CakeProphet> bam suddenyl I am noise music master.
21:51:43 <elliott> CakeProphet: Well, it certainly does sound like noise.
21:52:33 <CakeProphet> yes that's the goal.
21:53:27 <fizzie> You could do "old-fashioned" vocal sounds with a cascade of a few placed-at-the-formants IIR resonators (and e.g. half-wave-rectified sine or something for the voiced source), but that oneliner format doesn't let you refer to previous samples.
21:53:27 <elliott> I hear oerjan whispering... just make an MC.Utils...
21:53:53 <elliott> fizzie: Yes it does.
21:53:56 <elliott> It's just JS code.
21:54:00 <elliott> It would be cheating though.
21:54:56 <fizzie> Well, okay; "does not really have a simple way for it", then.
21:54:57 <CakeProphet> referring to old sample values would allow you to write things like delays.
21:55:24 <elliott> fizzie: Just transform x into hist[t]=x.
21:55:34 <elliott> I guess you might need an "if hist is undef hist=[]" before that.
21:55:36 <Sgeo|web> Absolutely not expecting something to use <audio> o.O
21:55:48 -!- SgeoN1 has quit (Ping timeout: 248 seconds).
21:55:52 <CakeProphet> as a delay essentially refers to a previous element at t-(some constant) in a "delay buffer"
21:56:01 <CakeProphet> or delay line
21:56:09 <CakeProphet> and then +'s that to your signal
21:56:20 <CakeProphet> well, that's optional
21:56:30 <elliott> Sgeo|web: What?
21:56:53 <CakeProphet> more noise music: sin(t/20)*((t>>4|t>>13)&(t>>4|t>>12))+(t>>12)*100
21:56:54 <Sgeo|web> elliott: when I clicked that, I did not expect sound to start immediately playing.
21:56:54 <CakeProphet> so good.
21:56:55 <Sgeo|web> I thought that it would use Flash or something
21:56:58 <fizzie> That's what a delay line would do if you fed the output into it; it's not what a delay inherently is.
21:57:11 * CakeProphet has been restraining his urge to produce complete chaos.
21:57:15 <CakeProphet> until now.
21:57:19 <elliott> fizzie: I was just saying re: access to previous samples.
21:57:21 <Sgeo|web> My Nexus One is now in safe mode
21:57:24 <Sgeo|web> For some reason
21:57:47 <fizzie> If you want delayed copies of some function, just duplicate the function with s/t/t-42/.
21:57:59 <CakeProphet> fizzie: right
21:58:53 <oerjan> <elliott> oerjan: he;lp where do i put showconcatmap <-- "i dunno"
21:59:47 <fizzie> Incidentally, I haven't looked; what does that web-thing use for audio output? The funky audio data API thing?
22:00:32 <elliott> <audio ...="data:wav.........>">l,ew;la,q;we
22:00:58 <fizzie> Aw, how old-fashioned.
22:01:13 <fizzie> Okay, it has the positive side of actually working.
22:01:16 <fizzie> But still.
22:01:42 <Sgeo|web> .wavs actually are sane to construct by ... well, it's not by hand, but it's ... well, of course it's possible, but..
22:01:48 <Sgeo|web> Is it simple to do?
22:01:55 <fizzie> It's non-trivial to do that for indefinitely long audio without nasty gaps.
22:02:13 <elliott> fizzie: <audio> is old-fashioned?
22:02:55 <Sgeo|web> October 2nd, 2011 is old-fashioned.
22:03:04 <fizzie> Yes, compared to the completely nonstandard Audio Data API. :p
22:03:46 <elliott> fizzie: Fair enough :P
22:03:47 <fizzie> Anyway, with that thing you don't need to pre-generate a fixed-length snippet.
22:04:19 <fizzie> Er, except in the sense that you need to fill a buffer. But still!
22:04:58 <fizzie> (At least it then plays back the buffers without breaks.)
22:05:09 <Sgeo|web> I know nothing about .wav
22:05:23 <fizzie> It's a not too complicated header to write.
22:05:30 <elliott> Sgeo|web: http://www.bemmu.com/music/magic.js
22:06:00 <fizzie> It would be non-trivial to read all possible things you can find in a .wav, but to write one isn't hard.
22:06:24 -!- augur has joined.
22:06:28 <Sgeo|web> There's no cookies on that site that need to be kept private, right?
22:06:55 <elliott> what
22:07:13 <Sgeo|web> Arbitrary Javascript, easy to give someone a link which will do stuff
22:07:27 <elliott> no its not
22:07:33 <elliott> it doesnt take oneliners via urls
22:07:46 <Sgeo|web> Oh
22:07:49 <elliott> also do you ever think about anything except trivial security jesus
22:07:54 <elliott> well that or namespace collisions
22:08:08 * Sgeo|web wants to learn non-trivial security
22:08:31 <CakeProphet> elliott: the real underground scene: sin(t/5)*(((t>>4|t>>13)&(t>>4|t>>12))&(t>>12))*50
22:08:58 <elliott> Sure does sound like shit.
22:09:05 <elliott> Ooh, nice layering though
22:09:25 <CakeProphet> elliott: you just don't know how to appreciate good noise.
22:10:25 <CakeProphet> incidentally lowering the divided sin(t/5) does soften it up a bit.
22:10:31 <CakeProphet> +in
22:10:55 <CakeProphet> it's essentially a modulation of the amplitude on the sin tone at the beginning.
22:11:00 <CakeProphet> of the line.
22:14:24 <CakeProphet> so using higher frequencies will create the psychoacoustic effect of consolidating some of the slow tonal changes into faster oscillating single tones
22:14:40 <elliott> "wow" . com
22:15:05 <CakeProphet> but it mainly just raises the pitch..
22:15:16 <CakeProphet> psychoacoustics is neat though.
22:15:51 <elliott> props to the first mpthree decoder written for this thing
22:18:02 <elliott> I bet monqy knows the perfect place to put my function :'( :'( :'(
22:18:23 <monqy> what function
22:18:38 <elliott> showConcatMap
22:18:39 <fizzie> Wasn't there a JavaScript one? That jsmad thing?
22:18:44 <elliott> :: (a -> ShowS) -> [a] -> ShowS
22:18:49 <elliott> = flip . foldr
22:18:53 <elliott> fizzie: Yes but, as a oneliner. :p
22:19:06 <elliott> You can assume a no-header version I GUESS.
22:19:12 <elliott> And it can be very bad. :p
22:19:47 <monqy> I do not know where to put this function ;_;
22:19:55 <monqy> are there any good places
22:20:01 <Phantom_Hoover> Put it in a little function house.
22:20:08 <elliott> Phantom_Hoover: awwwwwww
22:20:22 <elliott> monqy: well I guess something like Text.Show.List or maybe Data.List if I generalise it from ShowS but.......
22:20:28 <elliott> i want to stay in the MC... namespace...
22:20:38 <Phantom_Hoover> Give it a little loop and feed it on values.
22:21:22 <monqy> MC.Util.Text.Show.List a good module
22:21:29 <elliott> no
22:21:34 <Phantom_Hoover> MC
22:21:37 <monqy> thats the joke
22:22:07 <monqy> i never know what to do with utility functions :(
22:22:19 * Phantom_Hoover considers getting a gaming PC and not putting Windows on it.
22:22:25 <CakeProphet> I should compile these things in C so that I can hear them continue to play beyond the time limit on the site.
22:22:43 <CakeProphet> but really I should be writing an incident report for my technical writing class.
22:22:51 <CakeProphet> I wonder what kind of incident I should write about.
22:25:02 <CakeProphet> by the way all of my music is copyright. No one may use those expressions again without my consent
22:25:33 <CakeProphet> (in a loop where i increases to some number or infinitely)
22:25:37 <CakeProphet> s/i/t/
22:28:19 <CakeProphet> elliott: are you working on a masterpiece to trump "layered atonal shit machine" or are you unable to one-up my artistic superiority?
22:30:48 <elliott> I'm working on mchost
22:30:55 <elliott> * Phantom_Hoover considers getting a gaming PC and not putting Windows on it.
22:30:57 <elliott> Phantom_Hoover: useful
22:33:23 <CakeProphet> well, wine would still be functional for a number of games.
22:33:36 <CakeProphet> though unless it's a high-end machine you'll probably experience some stuttering
22:33:42 <elliott> Um, no.
22:33:45 <elliott> WINE is not an emulator.
22:33:50 <Phantom_Hoover> elliott, thatsthejoke.jpg
22:34:09 <elliott> The only stuttering could be caused by WINE's implementations of the Windows API being less efficient than Windows' itself, and really I expect hardware to be a far greater factor than that.
22:34:18 <CakeProphet> elliott: it can still play a lot of Windows games, whatever you want to call that...
22:34:25 <CakeProphet> ah
22:34:31 <CakeProphet> I see.
22:34:34 <elliott> CakeProphet: I am saying that "though unless it's a high-end machine you'll probably experience some stuttering" doesn't really make much sense.
22:34:42 <CakeProphet> right right I understand now.
22:34:46 <elliott> I mean, there's an additional layer to a Windows machine, in that WINE translates to X calls, but Gtk has that same layer ;P
22:34:48 * Sgeo|web should see if AW works in WINE
22:34:50 <elliott> s/;P/:P/
22:34:50 <CakeProphet> I didn't know how Wine worked exactly.
22:34:52 <tiffany> I imagine there's some overhead converting all the directX calls to opengl
22:35:04 <elliott> CakeProphet: It's basically just a loader for PE executables + a WinAPI implementation
22:35:04 <tiffany> aren't there like 17 000 functions in directx :|
22:35:23 <elliott> tiffany: I bet there's graphics drivers that convert directx to opengl :)
22:35:30 <Sgeo|web> Does WINE automatically call mono if needed?
22:35:39 <tiffany> I've never gotten mono to work in wine
22:35:43 <elliott> Sgeo|web: WINE and mono are orthogonal.
22:35:48 <elliott> You can install .NET in WINE.
22:35:54 <Sgeo|web> mono without WINE seems to work fine for my project
22:36:01 <Sgeo|web> Erm, for my professor's project
22:36:02 <CakeProphet> mono doesn't even need wine
22:36:07 <CakeProphet> that makes no sense to talk about them together.
22:36:10 <Sgeo|web> CakeProphet: I noticed.
22:36:10 <elliott> Then it doesn't define any native code things or use too recent C-sharp stuff.
22:36:22 <Sgeo|web> Well, it supports .NET 4.0 now
22:36:52 <CakeProphet> how would one run mono in wine even?
22:36:56 <tiffany> wait so
22:37:03 <elliott> CakeProphet: Mono runs on Windows.
22:37:06 <tiffany> mono can run the .net executables?
22:37:08 <elliott> Thus Mono runs on Wine.
22:37:15 <elliott> tiffany: Yes, assuming they don't have any native code stuff in them.
22:37:23 <elliott> CLI .exes are not really full of native code.
22:37:30 <elliott> They're a wrapper around a bunch of, well, CLI bytecode.
22:37:40 <elliott> (CLI being Common Language Infrastructure, i.e. .NET)
22:37:50 <elliott> "mono foo.exe" should work.
22:37:54 <tiffany> :o~
22:37:57 <elliott> You may need to install additional packages for Winforms stuff.
22:38:29 <Sgeo|web> elliott: it does. For me for this one thing, anyway
22:38:34 <CakeProphet> if I recall winforms is not very well supported.
22:38:37 <elliott> Sgeo|web: What does?
22:38:43 <Sgeo|web> mono foo.exe
22:38:43 <Phantom_Hoover> It's like Java but less obvious!
22:38:49 <elliott> Sgeo|web: I was talking to tiffany
22:38:53 <Sgeo|web> Oh
22:38:53 <elliott> CakeProphet: On what, Windows or Mono?
22:38:58 <CakeProphet> mono
22:38:59 <elliott> The few winforms things I've tried on Mono have worked for me.
22:39:17 <CakeProphet> I don't recall specific I just recall needing to avoid that in some stuff I was working on earlier.
22:39:29 <CakeProphet> resulting in my discover that there is absolutely no good webkit binding in mono.
22:39:33 <CakeProphet> *discovery
22:39:41 <tiffany> I don't have directx installed in mono ;P
22:40:23 <CakeProphet> anyways, C# is for chumps
22:40:28 <CakeProphet> or people who are hired by chumps.
22:41:13 <CakeProphet> thus it is questionable if the person being hired is a chump for being hired by chumps. highly circumstantial but there's evidence in favor of being a chump.
22:41:25 <CakeProphet> I often think about the calculus of chumps.
22:41:50 * CakeProphet might be a chump.
22:42:41 <elliott> I can confirm that you're definitely a chump.
22:46:31 <CakeProphet> oh look a second viznut video that was made yesterday: http://www.youtube.com/watch?v=qlrs2Vorw2Y
22:46:43 <elliott> yes we saw that.
22:46:48 <CakeProphet> oh.
22:46:52 <fizzie> There's the whole "emulate DirectX using OpenGL/GLSL", I'm pretty sure there's some amount of overhead there since the architectures are somewhat different.
22:46:56 <Sgeo|web> What language should I use where I might otherwise choose C#
22:47:06 <elliott> Sgeo|web: haskell
22:47:06 <zzo38> C
22:47:14 <zzo38> C-flat
22:47:17 <Sgeo|web> AW actually gives a choice between using OpenGL and using DirectX
22:47:17 <elliott> enhanced cweb
22:47:45 <zzo38> Enhanced CWEB
22:47:57 <zzo38> Or, Enhanced CWEB Sharp (which, as far as I know, does not exist)
22:48:08 <CakeProphet> wow these are really good.
22:48:58 <CakeProphet> (t|(t>>9|t>>7))*t&(t>>11|t>>9) in particular
22:49:20 <CakeProphet> and now the one after that is good. THEY ARE ALL GOOD
22:49:49 -!- derdon has quit (Remote host closed the connection).
22:50:26 <CakeProphet> that one is actually very similar to one I made.
22:50:42 <CakeProphet> but way better.
22:54:10 <Madoka-Kaname> You have full Javascript functionality available, right?
22:54:23 <elliott> Yes.
22:55:09 <CakeProphet> (t|(t>>9|t>>7))*t&(t>>11|t>>9);alert("Test");
22:55:10 <CakeProphet> works
22:55:13 <CakeProphet> but with no alert
22:58:25 <CakeProphet> ah everything after a semicolon is ignored.
22:58:37 -!- Ngevd has quit (Read error: Connection reset by peer).
22:58:55 <CakeProphet> good song: document.writeln(t)
23:00:21 <tiffany> o.o
23:01:12 <tiffany> javascript: and data: URIs typed or pasted in the address bar are disabled to prevent social engineering attacks.
23:01:13 <tiffany> Developers can enable them for testing purposes by toggling the "noscript.allowURLBarJS" preference.
23:01:15 <tiffany> =_=
23:02:14 <CakeProphet> "social engineering attacks"
23:02:19 <CakeProphet> they make it sound disciplined.
23:03:42 <CakeProphet> tiffany: what is =_= supposed to be? &_&
23:03:47 <CakeProphet> cool kid glasses?
23:03:57 <tiffany> idk
23:04:04 <tiffany> I guess a -_- except with bags
23:04:20 <CakeProphet> %_% I see.
23:04:29 <monqy> social engineering attacks
23:04:46 <zzo38> I think javascript: and data: URIs are useful in address bar, they shouldn't be disabled.
23:04:54 <CakeProphet> +_+ aka "hey click on this URL for dislike button javascript://"
23:05:00 <CakeProphet> zzo38: that's why you can enable them.
23:05:11 <monqy> cakeprophet but that's not in the address bar........................
23:05:17 <monqy> if you're clikcing it
23:05:20 <tiffany> firefox should ask you how intelligent you are
23:05:27 <tiffany> and say "be honest" above the checkboxes
23:05:32 <CakeProphet> monqy: er I mean "copy and paste this into address bar"
23:05:34 <CakeProphet> my bad.
23:05:39 <tiffany> and for each checkbox, you get stupidity protection settings to match
23:05:47 <CakeProphet> I doubt facebook allows javascript URLs to be clickable.
23:05:48 <zzo38> But it seems a stupid idea to disable them, even "social engineering attacks"
23:06:12 <CakeProphet> zzo38: you are relying on your average web browser user to know what a javascript URL might do.
23:06:31 <zzo38> People that use a computer at all ought to understand how.
23:06:47 <CakeProphet> ought is different from reality though.
23:06:52 <CakeProphet> obviously.
23:07:06 <tiffany> facebook doesn't let anything except http urls be clicked I think
23:07:29 <CakeProphet> I recall a javascript URL that could turn any page into a katamari.
23:07:35 <tiffany> cakeprophet: I thought average web browser user thought that everything code-looking was automatically hax
23:07:51 <CakeProphet> tiffany: maybe..
23:08:03 <CakeProphet> http://kathack.com/
23:08:04 <CakeProphet> fun times.
23:08:05 <fizzie> Not if they're being told it's "hax" that gives you $DESIRABLE_OUTCOME.
23:08:09 -!- Ngevd has joined.
23:08:22 <fizzie> Or, rather, they'll run it anyhow in that case.
23:08:31 <Phantom_Hoover> CakeProphet, dude, websplat.
23:08:57 <zzo38> HTTP URLs are not even the only URLs you would use, and even then, some HTTP URLs can be danger too, in some cases
23:08:58 <CakeProphet> rolling facebook into a katamari is awesome.
23:09:00 <tiffany> once upon a time I prime number generator in lua at school and got in trouble
23:09:57 <tiffany> zz038, average web users think that http is the only kind of URL and yet they don't question that every URL has http before it
23:10:09 <tiffany> s/question that/question why
23:10:18 -!- calamari has joined.
23:10:20 <monqy> "< tiffany> once upon a time I prime number generator in lua at school and got in trouble" what
23:10:23 <CakeProphet> fizzie: oh, dude, websplat. that's awesome.
23:10:35 <tiffany> monqy: command prompt window -> HACKER
23:10:47 <Phantom_Hoover> I did computing for a year in school and resolved to give up when we were using Javascript on IE 5 for Mac to do all the coding.
23:10:57 <tiffany> omg
23:10:57 <Phantom_Hoover> This was in 2010.
23:11:02 <tiffany> I'm in web design one
23:11:09 <tiffany> we're learning HTML 3.2 transitional
23:11:12 <tiffany> no CSS, no javascript
23:11:21 <tiffany> and we're supposed to use IE
23:11:26 <tiffany> it's not as bad as IE 5 though
23:11:28 <monqy> why are you in "web design one"
23:11:41 <tiffany> I wanted to learn web design [design part, not the html part]
23:11:43 <monqy> avoid "web" anything it's going to be Bad
23:11:57 <zzo38> Obviously there is no use putting a file:// URL there (and if you are blocking things on Facebook, to certainly block file:// URL), but ftp:// and gopher:// and telnet:// are as safe as HTTP; you might also want https:// URLs to be allowed
23:11:59 <Phantom_Hoover> Yes but excuse me we were told to use IE 5 for Mac on computers with an up-to-date version of Safari and a non-prehistoric Firefox because "the debugging output was better".
23:12:04 <tiffany> and it's also the closest physical thing to a programming course in the county and surrounding counties
23:12:16 <Phantom_Hoover> monqy, correction, avoid computing altogether, do maths.
23:12:21 <Madoka-Kaname> CakeProphet, function(){if(!this.I)this.I=1;else throw"";document.getElementById('player').innerHTML="<embed src=\"http://www.youtube.com/v/LDIGvfW5E_U?version=3&amp;hl=en_US&amp;autoplay=1\" type=\"application/x-shockwave-flash\" width=\"560\" height=\"315\" allowscriptaccess=\"always\" allowfullscreen=\"true\"></embed>";throw"";}()
23:12:34 <Madoka-Kaname> I can produce actual music. Ha.
23:12:42 <monqy> Phantom_Hoover: I wish I was able to, in the past, when it would have mattered
23:12:48 <monqy> it is too late now
23:13:00 <tiffany> anything computer related at my school is super easy
23:13:04 <Phantom_Hoover> monqy, it's never too late for maths!
23:13:05 <CakeProphet> bahahaha I'm cheating at websplat
23:13:09 <CakeProphet> by collecting all of the images into a katamari
23:13:11 <zzo38> If you want safest URLs, allow only Gopher URLs of type 0 on port 70 that are not local network addresses.
23:13:12 <CakeProphet> before I start.
23:13:28 <tiffany> gopher~ :D
23:13:32 <monqy> Phantom_Hoover: but it's too late to avoid computing :'(
23:13:39 <tiffany> heh
23:13:40 <Phantom_Hoover> monqy, it is the nineties and there is time for avoiding computing.
23:13:41 <monqy> I'm stuck in a world of awful
23:13:58 <Phantom_Hoover> Also don't worry, I went through a phase of computing too but I got over it.
23:14:00 <tiffany> all computer-ish courses in my school are unbelievably easy because they copmensate for people who type 15 wpm
23:14:09 * tiffany 's highest score on typeracer is 116
23:14:09 * CakeProphet should design websites specifically as platforming levels.
23:14:30 <monqy> how do I get out of this computing deal? I came to hate it a while ago but I don't know how to escape
23:14:47 <tiffany> I'm changing out all my classes next semester
23:14:48 <tiffany> math~
23:15:07 <tiffany> and there's no way I'm taking spanish
23:15:08 <Ngevd> The secret to performing screamo:
23:15:09 <monqy> tiffany: how does "computer-ish courses" being easy have anything to do with typing speed
23:15:15 <Ngevd> Whisper Muse songs over skype
23:15:19 <tiffany> monqy: because 90% of all of them are copying text
23:15:22 <Phantom_Hoover> monqy, just get bored every time you write a program.
23:15:37 <tiffany> CCC = learn to type by copying text
23:15:39 <Phantom_Hoover> Although admittedly I was mathsing before I was computing, so I had the advantage from the start.
23:15:45 <tiffany> web design 1 = learn html by copying html
23:16:31 <monqy> this sounds worse than sgeo's school
23:16:47 <tiffany> my school got an F rating and then bribed their way to a D~
23:16:49 <Phantom_Hoover> monqy, at least tiffany is probably going to an actual school, rather than a university.
23:16:57 * tiffany is in 10th grade
23:17:08 <Ngevd> What's that in English measure?
23:17:12 <Phantom_Hoover> What are these grade things what's that in Ses.
23:17:15 <tiffany> um
23:17:37 <Ngevd> Year 11
23:17:43 <Ngevd> S4
23:17:47 <monqy> I'm stuck in a university :(
23:17:50 <tiffany> american gradescale = A: 90-100%, B: 80:99%, C: 70:79%, D: 60:69%, F: 0:59%
23:17:56 <elliott> <tiffany> firefox should ask you how intelligent you are
23:17:56 <elliott> <tiffany> and say "be honest" above the checkboxes
23:17:58 <elliott> <tiffany> and for each checkbox, you get stupidity protection settings to match
23:18:02 <elliott> tiffany: It is not even remotely a matter of intelligence.
23:18:06 <Phantom_Hoover> Ah, I remember S4; that was the javascript.
23:18:15 <Phantom_Hoover> tiffany, 90% for an A?
23:18:17 <tiffany> elliott: hurp durp I'm getting free monies by copypasting javascriptz
23:18:26 <monqy> what
23:18:27 <Phantom_Hoover> Man, your exams are weird.
23:18:38 <elliott> tiffany: Going to a webpage should not even remotely be able to compromise a user's system or information in any way.
23:18:44 <Ngevd> I got a distinction in ICT
23:18:54 <fizzie> Especially weird having an overlapping A and B.
23:18:55 <tiffany> elliott: I'm pretty sure security holes are inevitable
23:18:56 <elliott> tiffany: But whatever: it is fashionable indeed to blame the failures of computing on its users.
23:19:04 <monqy> javascript is too powerful for its own good
23:19:07 <Ngevd> The closest it got to programming was database design
23:19:07 <monqy> ;_;
23:19:11 <elliott> tiffany: Of course they are. javascript: in URL bars is a security hole.
23:19:13 <Phantom_Hoover> 80% is effectively a guaranteed A in SQA exams, and it's unusual for it to go above 75%.
23:19:16 <elliott> Plugging security holes is good security practice.
23:20:08 <tiffany> ngevd: in the US we have preschool, kindergarten, and then grades 1-12, then college
23:20:43 <tiffany> elliott: once upon a time my brother was using IE and clicked something and it downloaded "security tools" without him knowing
23:20:45 <Ngevd> Pre-school, nursery, reception, years 1-13, college
23:21:06 <Ngevd> Or university
23:21:09 <Phantom_Hoover> Nursery, P1-7, S1-6, university.
23:21:13 <Ngevd> Actually college can go after year 11
23:21:22 <Ngevd> But that's called a sixth form college normally
23:21:31 <Phantom_Hoover> You mean most places /don't/ build the primary/secondary distinction into their year system?
23:21:32 <Phantom_Hoover> :weird:
23:21:45 <elliott> tiffany: You gonna say that's your brother's fault?
23:21:53 <elliott> Turns out clicking a link shouldn't be able to compromise your system.
23:21:58 <zzo38> Due to the complexity of HTML, CSS, JavaScript, Unicode, etc, you can compromise and mix up everything. Use plain ASCII text file, and have not these problems. If you want interactive you can use ANSI terminal code with a few things disabled and changed for more security.
23:21:58 <Ngevd> Primary/secondary is all over the place
23:22:01 <tiffany> well obviously
23:22:04 <monqy> usa has "elementary school" "middle school" "high school"
23:22:05 <Ngevd> Northumberland has First, Second, Middle
23:22:06 <elliott> Blaming it on the user is ridiculous.
23:22:11 <Sgeo|web> Elementary = k-6
23:22:11 <Ngevd> Wait
23:22:16 <Ngevd> First, Middle, High
23:22:17 <elliott> Yes, security holes are basically inevitable, but they are most DEFINITELY avoidable in a large variety of cases.
23:22:25 <tiffany> can you blame the user when they do something stupid?
23:22:33 <elliott> It is nobody's fault but the maintainers of systems that these methods are not being used.
23:22:35 <Sgeo|web> high school = 9-12, although where I live, 9th grade is a separate building elsewhere
23:22:41 <elliott> tiffany: What was done that was stupid?
23:22:41 <tiffany> like typing in commands to format their harddrive without knowing what it is?
23:22:53 <tiffany> there should be idiot guards in place because people are idiots
23:23:06 <Madoka-Kaname> elliott, not using C/C++ should take out, like, a whole bunch of them
23:23:06 <elliott> Misanthropy is a poor substitute for understanding.
23:23:12 <tiffany> :|
23:23:12 <Phantom_Hoover> People are not idiots, and the sooner you realise that the better.
23:23:22 <elliott> Madoka-Kaname: It would indeed.
23:23:23 <Sgeo|web> So, K-6, 7-8, 9, 10-12 is what it felt like
23:23:39 <Sgeo|web> Although I attended Kindergarten elsewhere
23:24:09 <elliott> tiffany: It is also ridiculous for a system to allow the user to permanently wipe their data without it being made clear to them what is going to happen -- in a way that will actually work, not just putting a bunch of red warning signs that HCI research pretty conclusively proves don't work.
23:24:23 <elliott> tiffany: Of course the real blame is on whoever is telling people to format their harddrives.
23:24:48 <elliott> It might not be illegal to tell someone to format their hard drive because they don't know better, but it's certainly unethical.
23:25:15 <Madoka-Kaname> elliott, make them type in yes|format...
23:25:44 <tiffany> madoka-kaname: make it negate the question at least once~
23:26:03 * Phantom_Hoover → sleep; please suspend argument until tomorrow morning.
23:26:04 -!- Phantom_Hoover has quit (Quit: Leaving).
23:26:16 <elliott> Madoka-Kaname: Yeah -- obviously you cannot stop someone being tricked into authorising the computer to do something they don't want, at the core of it.
23:26:27 <tiffany> "Do you not want to format your harddrive?"
23:26:28 <elliott> But even then it's a problem of lack of decent computer education, not of stupidity.
23:26:39 <Ngevd> Do to being weird, I attended an antepodian kindergarten
23:27:02 <tiffany> I was in this stupid kids program for most of my life because I write incredibly slowbad
23:27:24 <fizzie> Phantom_Hoover: We have "primary/comprehensive school" years 1-9 (of which 1-6 and 7-9 are sort of separate parts) which is the only mandatory part; then for most people there's "upper secondary/gymnasium" or a vocational school for three years (classes usually numbered 1-3, sometimes -4); after that tertiary education (college/university/whatever).
23:27:26 <tiffany> there was one year where I was allowed a thing that I was able to type on instead of write, and then they didn't give me it the next year
23:27:30 -!- Vorpal has quit (Ping timeout: 260 seconds).
23:27:35 <calamari> elliott: could run the browser in a jail
23:27:50 <elliott> calamari: that's one partial solution, yep
23:27:58 * Madoka-Kaname hugs tiffany
23:28:02 <elliott> that doesn't stop webpages reading e.g. the user's bank login details though
23:28:03 * tiffany hugs madoka-kaname <3
23:28:05 <zzo38> calamari: Yes, that can be done.
23:28:09 <elliott> if they're stored in the browser
23:28:19 <calamari> elliott: true, it wouldn't
23:28:28 <elliott> but it is a good partial step
23:28:35 <elliott> isn't microsoft doing that with IE as of recently?
23:28:53 <Madoka-Kaname> calamari, or write the browser in Haskell/Java/C#/etc
23:28:55 <Ngevd> Reading the user's bank login details?
23:28:55 <calamari> I'm sure Gregor knows all my bank passwords since my kids love his javascript platformer
23:28:55 <zzo38> I have think to solve such problem in a computer system I designed. Computer security is implemented in hardware (if you open it and remove the warning labels, you can adjust everything). But software still does many things and you can write the programs yourself too, without adjusting the jumpers inside; such as BASIC and Forth, adjusting files and external devices, etc.
23:29:13 <coppro> elliott: one jail per tab obv
23:29:17 <tiffany> ^
23:29:32 <tiffany> call it prisonfox
23:29:37 <elliott> coppro: yeah, it's still not perfect though :P
23:29:48 <elliott> I think zzo38's solution is the best.
23:29:52 <elliott> Let's alld othat.
23:29:52 <Madoka-Kaname> Write the browser in Haskell, and the jail shouldn't be needed.
23:29:56 <elliott> calamari: havenworks went down :(
23:30:08 <elliott> Madoka-Kaname: Haskell, uh, does not eliminate security flaws.
23:30:20 <Madoka-Kaname> Nothing needing a jail should exist, at least.
23:30:28 <elliott> Sure it should
23:30:31 <elliott> JS exposes a cookie API
23:30:34 <calamari> elliott: websplat still seems to work for me
23:30:36 <elliott> You fuck up a conditional in rare circumstances
23:30:39 <Ngevd> Oh dear god it's tomorrow
23:30:42 <elliott> Oops, now you can access every cookie
23:30:44 <Madoka-Kaname> OK, yeah.
23:30:46 <Madoka-Kaname> That makes sense.
23:30:52 <tiffany> I wonder if there are programs that can convert assembly to circuit board diagrams
23:30:55 <elliott> it does eliminate things like buffer overruns though
23:30:59 <elliott> calamari: yeah but the final level is down :P
23:31:00 <tiffany> make a hardware version of the linux kernel :P
23:31:03 <elliott> web.archive.org has it though
23:31:11 <elliott> tiffany: hardware is more limited than that
23:31:16 -!- Jafet has joined.
23:31:20 <elliott> tiffany: but talk to ais523, he compiles ICA to hardware
23:31:25 <tiffany> o.o
23:31:38 <ais523> ICA doesn't have pointers, I imagine Linux uses them quite a lot
23:31:40 <elliott> ICA = idealised concurrent algol, it's basically Haskell with a weird syntax :P
23:31:48 <ais523> elliott: it resents that!
23:31:53 <ais523> it's basically Algol 60 with a weird syntax
23:32:09 * tiffany knows very little haskell and does not know what algol is
23:32:13 <elliott> ais523: stripped down to the point of being almost functional
23:32:21 <elliott> tiffany: algol was the first structured language
23:32:22 <calamari> elliott: oh, I see what you're saying.. I didn't really play that page anyways
23:32:25 <ais523> oh, it is functional, /but/ it's very impure
23:32:28 <Sgeo|web> According to galculator, 1/0 is a syntax error
23:32:32 <elliott> well
23:32:34 <elliott> or close to it
23:32:42 <elliott> ais523: ok, it's like lazy ML then... it is lazy right?
23:32:53 <elliott> calamari: lame, you can't compete with quintopia and me and Gregor's friend
23:32:54 <elliott> (the bosses)
23:32:57 <ais523> it is lazy, indeed
23:32:59 <Sgeo|web> Actually, galculator's paper mode doesn't like 0
23:33:01 <Sgeo|web> It wants 0.0
23:33:01 <elliott> er as in
23:33:02 <elliott> bosses of playing
23:33:09 <ais523> well, /technically/ it's strict, but it's call-by-name
23:33:11 <ais523> so it acts lazy
23:33:11 <elliott> Sgeo|web: why not just use frink
23:33:18 <calamari> elliott: my 5 year old son doesn't care about that ;)
23:33:22 <Madoka-Kaname> elliott, didn't that whatevernet virus spread by exploiting the fact that Microsoft didn't think about how much power they were giving .lnk files?
23:33:27 <Sgeo|web> frink did not come with this thing
23:33:28 <elliott> ais523: except with multiple evaluation, which matters in an impure language
23:33:31 <ais523> strict/lazy is a bit weird when it comes to CBN languages
23:33:35 <ais523> elliott: yep
23:33:37 * Sgeo|web goes to install it
23:33:41 <elliott> calamari: you want him to compete at the professional level when he grows up, don't you???
23:33:46 <ais523> Haskell doesn't have multiple evaluation, for instance, but it's pure so you can't tell
23:33:49 <elliott> Sgeo|web: it's not in the package manager
23:33:50 <Sgeo|web> There's only one reason I even heard of frink before now...
23:33:56 <Sgeo|web> elliott: ugh, blah
23:34:02 * tiffany holds madoka-kaname's hand~
23:34:04 <elliott> Sgeo|web: http://futureboy.us/frinkjar/frink.jnlp
23:34:07 * Madoka-Kaname hugs tiffany ^^
23:34:08 <calamari> elliott: lol
23:34:08 <elliott> open that
23:34:11 <tiffany> :3
23:34:14 <elliott> ais523 will now be shocked that anyone uses jws
23:34:22 <ais523> I'm not, I've seen it used before
23:34:26 <ais523> I just think it's badly designed
23:34:40 <elliott> oh wait
23:34:41 <elliott> Sgeo|web: you want http://futureboy.us/frinkjar/frinkwithlibs.jnlp
23:34:44 <elliott> that has more libraries :P
23:34:53 -!- copumpkin has quit (Ping timeout: 244 seconds).
23:35:00 <elliott> Sgeo|web: oh, and you want Sun's java I think, because it'll install into the menu then
23:35:02 <ais523> also, Oracle have mostly killed it by revoking the signing keys that most of the standard libraries that JNLP programs used were signed with
23:35:13 <ais523> I'm not sure if it's even possible to get Sun's Java nowadays
23:35:17 <elliott> ais523: umm, ouch
23:35:17 <ais523> at least, it's no longer in the package manager
23:35:18 -!- copumpkin has joined.
23:35:20 <Sgeo|web> elliott: I have Sun's java installed because I wanted to get Cybertown half working
23:35:20 <elliott> ais523: sure it is
23:35:27 <ais523> what name?
23:35:30 <elliott> ais523: sun-java[asterisk]
23:35:35 <elliott> ais523: you'll need the partner repo or w/e
23:35:43 * tiffany isn't sure what java she has, all she did was install default-jre >>
23:35:44 <ais523> oh, I see, it's just not in a repo I happen to have?
23:35:49 <elliott> ais523: well, it's non-free
23:36:03 <coppro> ``/win 4
23:36:03 <tiffany> java version "1.6.0_18"
23:36:04 <tiffany> OpenJDK Runtime Environment (IcedTea6 1.8.7) (6b18-1.8.7-2~squeeze1)
23:36:04 <tiffany> OpenJDK Client VM (build 14.0-b16, mixed mode, sharing)
23:36:05 <tiffany> that works
23:36:07 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: /hackenv/`/win: No such file or directory \ /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: /hackenv/`/win: cannot execute: No such file or directory
23:36:09 <ais523> ah no, it is in there
23:36:09 <elliott> coppro: you are really bad at irssi
23:36:31 <tiffany> I'm really bad at irssi :s
23:37:29 <Ngevd> ...I don't actually know what irssi is
23:37:37 <ais523> No candidate version found for sun-java6-plugin
23:37:49 <ais523> elliott: the repos know its name, but not the package itself
23:37:52 <ais523> which is interesting
23:37:59 <elliott> ais523: you probably don't want -plugin
23:38:03 <elliott> -jre is more likely, or was it -jvm
23:38:05 <ais523> same with the -jre
23:38:06 <Sgeo|web> According to Frink, 0/0 = 1
23:38:14 <ais523> I did want -plugin, because I want to get Rubicon working
23:38:16 <elliott> ais523: what (ubuntu) repos?
23:38:18 <ais523> and it only worked with Sun's version
23:38:22 <ais523> elliott: LTS -proposed
23:38:23 <monqy> Ngevd: irc client, claims to be of the future
23:38:28 <elliott> ais523: umm, I meant
23:38:30 <elliott> which actual repos
23:38:32 <Ngevd> Oh, okay
23:38:34 <elliott> so I can know if you have the partner repo or not :D
23:38:35 <ais523> checking that now
23:38:38 <elliott> you can enable it in Software Sources
23:38:49 <elliott> (in Other Software)
23:38:55 <ais523> server for the UK: main, universe, restricted, multiverse
23:39:01 <elliott> in other software?
23:39:14 <ais523> aha, there's a repo called "partner" which isn't enabled
23:39:16 <ais523> is that the one?
23:39:18 <elliott> yep
23:39:31 <elliott> it's basically people who canonical have a relationship with that involves lots of money
23:39:34 <elliott> and who write non-free software
23:39:38 <ais523> haha
23:39:39 <elliott> so it has java, iirc flash, etc.
23:39:43 <tiffany> [19:37] <Ngevd> ...I don't actually know what irssi is
23:39:44 <elliott> I think the Fraunhofer mpthree codecs are in there too
23:39:48 <tiffany> it's a text-based IRC client
23:39:53 <ais523> flash is in the main repos
23:39:59 <tiffany> that a lot of people have a major fanperson obsession with
23:40:04 <elliott> ais523: wow, really? as in, Adobe Flash?
23:40:09 <elliott> hmm right
23:40:09 <elliott> well
23:40:11 <elliott> the INSTALLER is
23:40:14 <ais523> yep
23:40:16 <elliott> they're very careful not to package flash itself :P
23:40:16 <Ngevd> No, as in Flash Gordon
23:40:28 <olsner> hmm, great, so if your code is in a section nasm stops handling rip-relative absolute addresses for you
23:40:44 <elliott> olsner: are you still writing that os :)
23:40:48 <olsner> instead it treats tham as offsets from the current rip instead of generating the correct offset from the value that rip will have at that point
23:40:49 <ais523> elliott: the repo change didn't seem to help
23:41:03 <elliott> ais523: apt-cache show the package?
23:41:09 <ais523> reply is the null string
23:41:14 <elliott> ais523: what about version five?
23:41:19 <ais523> ouch
23:41:28 <ais523> I doubt that'll help, and I'd prefer 1.6
23:41:31 <elliott> I installed Java recently on a more recent Ubuntu so I'm surprised
23:41:37 <elliott> ais523: well, try to see if it exists, anyway :P
23:41:51 <ais523> just the jre
23:41:54 <ais523> not any of the other packages
23:42:12 <elliott> odd
23:42:59 <ais523> there's also an "ia32-sun-java6-plugin", but it doesn't have any versions found and has a zero-length output from apt-cache show, too
23:43:46 <elliott> ais523: I bet they just don't maintain the partner repo for sufficiently old versions
23:43:56 <ais523> probably
23:44:14 <ais523> but this version's still technically supported, because it's LTS
23:45:09 <elliott> fsvo supported
23:46:10 -!- Patashu has joined.
23:46:28 <elliott> hi Patashu CakeProphet destroyed music
23:46:38 <Patashu> oh?
23:46:40 <tiffany> I glance at all these notifications to ais523 and read 352 and think of my username on most places
23:46:45 <fizzie> In this current 11.04, sun-java6-plugin is "This is a metapackage containing dependencies for running Java in various browsers."; don't know about LTS though.
23:46:55 <ais523> tiffany: you have a 352 in your username?
23:46:59 -!- pikhq has joined.
23:47:06 <ais523> perhaps I should change to cfj permanently and really freak out half of Freenode
23:47:07 <elliott> tiffany: change your username, ais523 owns those digits
23:47:13 <elliott> ais523: um excuse me cfj is _my_ nick
23:47:20 -!- pikhq_ has quit (Ping timeout: 258 seconds).
23:47:51 <elliott> pikhq: It is time for you to bet on whether I will have sufficient arsedness to carry on Kitten work.
23:47:59 <fizzie> packages.ubuntu.com with distribution:any, section:any only finds a 'sun-java6-plugin' in dapper-backports and hardy.
23:48:33 <ais523> and hardy's the last version?
23:48:43 <ais523> that actually makes sense, they probably stopped once Sun got eaten
23:48:47 <zzo38> It is time for you to bet on the D&D game. Tell me what kind of things you are betting on (but not the specifics) so that I can remember to keep track during the corresponding game session.
23:48:54 <elliott> umm, but I installed Sun java packages the other day
23:48:55 <elliott> on Ubuntu
23:49:05 <ais523> elliott: perhaps they're version seven?
23:49:06 <olsner> I seem to conclude that nasm is broken... yasm apparently accepts nasm syntax, wonder if that means it will accept my code
23:49:14 <fizzie> No, hardy is like 6 versions back.
23:49:23 <ais523> fizzie: I mean, the last with Java in
23:49:26 <elliott> olsner: yasm is nasm-compatible
23:49:28 <ais523> I know it's pretty old, I used to use it
23:49:32 <elliott> so maybe it will even replicate the bug
23:49:36 <elliott> ais523: seems not... I'm confused now
23:49:57 * elliott wonders what the necessary level of hardcore is to use https://github.com/patrickhaller/no-wm.
23:50:00 <fizzie> ais523: But I have sun-java6-plugin in my aptitude on this natty.
23:50:26 <ais523> fizzie: I have it in my aptitude
23:50:29 <ais523> it just can't install it
23:50:41 <ais523> because it can't find an appropriate version
23:50:47 <elliott> I don't think packages are ever deleted
23:50:52 <ais523> elliott: is that a window manager that isn't a window manager?
23:50:53 <elliott> just, all their versions removed
23:51:10 <elliott> ais523: you can click that link yourself, you don't need to accept their TOS to read their pages
23:51:14 <Ngevd> KLogic I cannot find any more
23:51:20 <elliott> https://raw.github.com/patrickhaller/no-wm/master/README <-- look, you don't even need to use their UI
23:51:40 <ais523> ah right
23:51:44 <ais523> the github UI doesn't work for me half the time
23:51:55 <elliott> js enabled?
23:51:57 <ais523> once, annoyed, I enabled JavaScript only to discover it /still/ didn't work
23:51:59 <fizzie> ais523: Well, if I + it, it says it's going to install version 6.26-1natty1.
23:52:06 <elliott> I like GitHub's UI a lot
23:52:14 <Sgeo|web> Why does Frink think that 0/0 = 1?
23:52:38 <elliott> Sgeo|web: presumably for some numerical calculation methosd
23:52:39 <elliott> methods
23:52:44 <calamari> I dunno why I even use ubuntu anymore.. I swear next time I'm just going to install debian for my desktop and see how it goes
23:52:51 <ais523> fizzie: ah, hmm
23:52:54 <elliott> calamari: it should work fine
23:52:55 <Sgeo|web> calamari: why?
23:52:59 <Sgeo|web> What happened
23:53:01 <elliott> calamari: you'll want to use the expert installer to get sudo though
23:53:13 <elliott> if you don't like the separate-root-password system (I don't)
23:53:30 <elliott> Sgeo|web: Unity happened?
23:53:34 <ais523> elliott: I think ideal would be if sudo asked for a password that was specific to the user invoking sudo, but not the same as their login password
23:53:38 <calamari> Sgeo|web: ubuntu seemed to have jumped the shark.. now their enhancements are things like stripping out xorg lol
23:53:39 <Jafet> calamari: because every time you conclude it sucks, they change the default programs and you give it another chance
23:53:51 <elliott> calamari: well nobody can seriously argue that Xorg is beneficial
23:53:52 <Sgeo|web> calamari: and replacing it with what?
23:53:56 <elliott> Sgeo|web: Wayland
23:54:03 <Jafet> Ubuntu users are like goldfish, except they work on the timespan of six months
23:54:08 <fizzie> ais523: It doesn't have any files in natty, though; it's a metapackage, the .deb file is just 1.8k. It just pulls in sun-java6-bin and makes sure there's a browser. But it could well be different in the LTS.
23:54:09 <Sgeo|web> Is that just another X server, or is it something else?
23:54:13 <elliott> Wayland is obviously better than Xorg, but Ubuntu will find some way to fuck it up
23:54:20 <ais523> fizzie: ah, I see
23:54:25 <calamari> elliott: I use ssh -X almost every day
23:54:26 <elliott> ais523: I don't want to remember more than one password in my entire life
23:54:48 <elliott> calamari: all Wayland transition plans I know of involve a transparently integrated X server running
23:54:55 <elliott> calamari: and ofc you can always run one for ssh
23:55:10 <elliott> calamari: anyway, Wayland doesn't preclude network transparency
23:55:12 <ais523> I don't really like that attitude; I'd prefer my computer to only be able to do things I give it permission to do
23:55:17 <calamari> cool we have an ubuntu apologist in the house
23:55:19 <ais523> and if that involves different passwords for different things, so be it
23:55:24 <elliott> calamari: are you serious
23:55:27 <elliott> I don't like Ubuntu
23:55:29 <zzo38> When at FreeGeek, I usually use ssh -e none -Y black@shell from VC 1
23:55:33 <elliott> Wayland isn't even an Ubuntu project
23:55:41 <elliott> what Mark Shuttleworth decides to do does not affect my opinions in the slightest
23:55:55 <zzo38> That way I can run xdvi
23:56:57 <elliott> calamari: seriously, is that your best argument? I don't think Wayland is remotely practical /yet/ but it is very obviously a better architecture than X
23:56:59 <Ngevd> I like Unity
23:57:09 <elliott> and anyone who thinks that it isn't has either never looked at Wayland or X
23:57:23 <calamari> elliott: it wasn't an argument :)
23:57:44 <elliott> calamari: it was a dismissal, but unfortunately a blatantly inaccurate one
23:59:14 -!- augur has quit (Remote host closed the connection).
2011-10-02
00:00:16 <zzo38> There are some things I would have changed in Wayland.
00:00:25 <elliott> calamari: are you going to retract that ubuntu apologist remark? I've definitely spewed sufficient vitriol at Ubuntu in the past week or so that it's laughably inaccurate even if I'd spent every previous year of my life, I don't know, getting Ubuntu tattoos or something
00:00:33 <olsner> elliott: wee! yasm appears to have lost those particular bugs
00:00:40 <elliott> olsner: report a compatibility bug
00:01:04 <olsner> and break the only assembler that correctly assembles my code? :(
00:01:19 <elliott> olsner: well, I am sure they can add a -std= option :D
00:01:21 <elliott> -std=nasm
00:01:25 <olsner> -std=olsner
00:02:33 * Sgeo|web knows zilch about either Wayland or X.
00:02:40 -!- GreaseMonkey has joined.
00:02:47 <Sgeo|web> Other than that X complaints are part of the UNIX Hater's Manual
00:02:56 <Sgeo|web> And that more than just that agrees that X is bad.
00:03:06 <Jafet> There's enough to write an X Haters' Manual
00:03:21 <calamari> elliott: sorry, was working on something for my kids.. sure, my bad
00:03:27 <Jafet> Of course, it's hated mainly because there isn't an alternative. Sort of like when people used to hate Motif.
00:03:28 <elliott> calamari: thanks
00:03:34 <ais523> people who think X is bad normally focus on the wrong bits of it
00:03:51 <elliott> Jafet: I would like to see a class on design using X
00:03:53 <elliott> like
00:03:57 <elliott> here's today's example of what not to do
00:04:01 <Jafet> Maybe Motif really was bad though, because people still hate Motif.
00:04:11 <calamari> I am not necessarily a huge xorg fan or anything either.. it's just the way things are and if they are taken away then I can't do what I need to do
00:04:13 <elliott> motif is pretty awful
00:04:22 <olsner> my main gripe with motif is how ugly it is
00:04:30 <elliott> calamari: well, like I said, all current transition plans involve a transparent X server being run... so ssh -X would work without doing anything
00:04:32 <calamari> like the time ubuntu shipped without a menu editor
00:04:39 <ais523> olsner: did you know that even nowadays, Java has a Motif-like theme as one of the options?
00:04:44 <elliott> olsner: you can get motif looking "ok"
00:04:47 <Ngevd> I just realised I am watching Marble Hornets in the middle of the night alone with surround headphones
00:04:49 <ais523> calamari: hmm, what did you need the menu editor for?
00:04:51 <Ngevd> I am not sure if I am sane
00:04:55 <Ngevd> I need sleep
00:04:57 <Ngevd> Goodnight
00:04:59 -!- Ngevd has quit (Quit: Leaving).
00:05:03 <calamari> ais523: customizing the gnome menu
00:05:09 <ais523> yes, but I mean, why?
00:05:31 <elliott> "In the Solaris kernel it is common practice to make heavy use of the virtual address space because it is designed to work well. However, in the Linux kernel most memory is addressed with a physical address and use of the virtual address space is strongly discouraged."
00:05:33 <elliott> huh, is this really true?
00:05:34 <ais523> for me, it's sorted quite sensibly, and has more or less what I want on there
00:05:35 <calamari> ais523: you can hide things or show things that are hidden by default.. move them to other menus, etc
00:05:42 <elliott> I knew Linux was crappy, but...
00:05:47 <Jafet> I needed the menu editor to find out what the programs' names actually were.
00:05:51 <ais523> haha
00:05:52 <elliott> calamari: you're describing the functionality of a menu editor, that's not what ais523 asked
00:06:12 <calamari> elliott: well I thought the answer was obvious, so I figured he might not know?
00:06:17 <Jafet> elliott: that sounds believable
00:06:25 <elliott> calamari: that's not a very productive way to communicate
00:06:30 <Jafet> What with the abuses of mmap, kmalloc, etc.
00:07:03 <Jafet> It's trying to imply that linux sucks at virtual memory, which may or may not be true
00:07:18 <ais523> calamari: well, it seems to be sorted quite sensibly to me, and have a sensible set of programs on there by default, and I'm not quite clear why you'd want a GUI program installed but not on the menus
00:07:31 <ais523> and the stuff that doesn't show by default is mostly things like KDE options setting in Gnome, etc
00:07:55 <Jafet> Lots of the more obscure programs are packaged without being added to the desktop menus
00:07:57 <calamari> ais523: I'm a control freak, what can I say? that's why I am a programmer
00:08:23 <elliott> calamari: what programs do you have installed that you don't want on the menu?
00:08:25 <ais523> Jafet: heh, I write .desktop files for things I install locally sometimes
00:08:26 <calamari> ais523: it's one of the reasons that linux appeals to me also
00:08:29 <ais523> Jettyplat has one
00:08:31 <ais523> *Jettyplay
00:08:36 <olsner> I think it's more likely that the other code in the kernel sucks at virtual memory, e.g. assuming that kernel memory can never be paged out or can never fault, rather than the virtual memory system itself being bad
00:08:44 <zzo38> To me, the window system, should be designed, it is something a lot like SDL. And there are a fixed number of mouse pointer icons which are 16x16 2 bits per pixel (one for black/white, one for transparency). The size of the screen for each window is the inner size of the window.
00:09:11 <calamari> elliott: well I'm running kde now...
00:09:13 <Jafet> olsner: covered in "abuses of kmalloc"
00:09:18 <elliott> calamari: huh?
00:09:26 <zzo38> The window manager arranges windows, adds borders, can override keyboard commands and mouse warping, decides when the mouse pointer is hidden, and decides what gets focus.
00:10:18 <calamari> elliott: meaning it handles the menu differently.. if you don't want something, you just delete it.. so I can't easily tell you what I hid
00:10:39 <elliott> calamari: but why wouldn't you just uninstall them
00:11:11 <zzo38> The windows and the PRIMARY/SECONDARY/CLIPBOARD buffers (same as X) are accessible by FUSE directory.
00:11:38 <calamari> elliott: depends on the program
00:12:21 <calamari> elliott: this is one I still have on my menu.. but say I never used java web start.. I still want java so I don't uninstall it.. but I can get rid of it from my menu
00:12:44 <elliott> that just tells me jws should be in another package
00:13:35 <calamari> another example.. I could remove the pdf viewer from the menu.. since the file association lets me open pdfs
00:14:50 <elliott> document viewers shouldn't be in the menu in the first place :p
00:15:40 <calamari> another example: I have a ton of internet and multimedia related applications, so I manually organize them and add dividers so I can find what I want more easily
00:16:18 <Jafet> The menu doesn't have tab completion anyways
00:16:20 <ais523> elliott: what if you want to open a document via URL?
00:16:58 <elliott> ais523: what of it?
00:17:13 <ais523> typically you do that from inside the document reader itself
00:17:27 <ais523> I mean, I do it via alt-F2, but that's because I'm used to command lines
00:17:39 <elliott> ais523: there should be an "Open URL..." thing somewhere
00:17:43 <elliott> or more likely, just "Open"
00:17:45 <calamari> another example.. they put diffuse in the accessories menu.. that's cool. But I only use it for development, so I moved it where it made more sense to me
00:17:55 <ais523> elliott: yes, so in those cases, you open the document /reader/ via the main menu
00:18:07 <elliott> diffuse?
00:18:09 <elliott> ais523: why?
00:18:14 <elliott> ais523: it should just be a global "Open..."
00:18:21 <elliott> document-centric, not application-centric
00:18:35 <calamari> elliott: gui diff tool
00:18:43 <ais523> elliott: what if you want to open it with a specific application?
00:18:59 <elliott> ais523: "Open with"
00:19:02 <ais523> (non-stupid possible reason why: the remote server gives the wrong content-type)
00:19:02 <elliott> as in
00:19:09 <elliott> the open dialogue should have as one of the fields
00:19:14 <elliott> Application: [ Determine automatically ]
00:19:26 <ais523> (stupid but happens all too often in practice reason why: the default application for a video file is a web browser not video player)
00:19:53 <elliott> hmm, or maybe it should be [Cancel] [Open With...] [Open], and if you click the middle, it loads the resource, and filters down the application list based on which ones offer to handle it
00:20:01 <elliott> (with the option to show all applications if it's not listed)
00:20:07 <elliott> that would be more efficient
00:20:44 <ais523> so long as you can determine the content type from the first few bytes or the MIME type
00:20:50 <ais523> otherwise, you'd have to download the file twice
00:20:57 <elliott> ais523: no, just download it into /tmp
00:21:07 <ais523> ah, I see
00:21:09 <elliott> that's imperfect, but lots of apps don't support reading from URLs anyway
00:21:17 <elliott> IIRC "evince http://blah/foo.pdf" doesn't work
00:21:19 <ais523> what if the program I want to open it with is head?
00:21:23 <elliott> from the command line
00:21:26 <ais523> then you don't want to download the file
00:21:31 <ais523> what if the file is infinitely long?
00:21:33 <elliott> ais523: then you should be using a shell :P
00:21:35 <calamari> ais523: did I answer your question about why I want to edit my menus?
00:21:39 <ais523> elliott: GUIhead, then
00:21:41 <ais523> calamari: yes, thanks
00:21:50 <ais523> and the resulting conversation's been quite good
00:22:07 <elliott> ais523: shrug, I guess there can be some way to select the application first, but this sounds PRETTY CONTRIVED to me
00:22:36 <ais523> I suppose I'm thinking of attack surface
00:22:42 <elliott> ais523: of course, the /real/ answer is that the entire current WIMP paradigm is inherently flawed and application-centric, and ... blah blah blah :)
00:23:19 <ais523> I think being able to use different applications to edit the same thing is a good thing
00:23:29 <ais523> in order to maintain that, you need the concept of an application pretty much no matter what
00:23:48 <fizzie> An indefinite-length .ogg stream sounds like a non-contrived thing to want to open with a user-specified app without having to impossibly download all of it. (Though with HTTP URLs one could possibly HEAD it for content type determination.)
00:23:55 <ais523> time to go home, anyway
00:24:00 -!- ais523 has quit (Remote host closed the connection).
00:24:27 -!- augur has joined.
00:24:51 <elliott> ais is wrong, but ninja-quit before I could disagree
00:25:40 <elliott> fizzie: That sounds like a really bad way to do internet radio.
00:25:52 <elliott> fizzie: And ais was operating under the assumption that MIME wouldn't be enough.
00:25:55 <elliott> IMO it should just get the MIME and use that.
00:25:59 <CakeProphet> now that I have websplat I no longer need anything else.
00:26:03 <CakeProphet> fuck life. fuck success.
00:26:08 <elliott> If the MIME is truly wrong, you can always select "all applications".
00:26:13 <CakeProphet> I'm just going to wall jump on wikipedia articles.
00:26:50 <elliott> CakeProphet: http://web.archive.org/web/20110721010754/http://www.havenworks.com/
00:27:01 <elliott> Gregor might remember the window size and font settings requirements we agreed on for competition purposes.
00:27:08 <elliott> But really, if you beat it no matter what the settings we'll be impressed.
00:29:20 <CakeProphet> how do I restart if I die?
00:30:07 <elliott> CakeProphet: refresh
00:30:08 <elliott> or uh
00:30:09 <elliott> ask GreaseMonkey
00:30:10 <elliott> erm
00:30:11 <elliott> Gregor:
00:30:13 <elliott> there might be a better way
00:30:22 <elliott> CakeProphet: ugh, is that haevnworks link down for you too?
00:30:40 <elliott> hmm, I should probably give you a link to the old interface
00:30:47 <elliott> the images used in waybackmachine's UI will mess with websplat's score counting
00:30:49 <CakeProphet> yes it's down.
00:31:14 <fizzie> As for Wayland, I'm probably going to have to wait until someone writes a WMonad or something.
00:31:31 <GreaseMonkey> 'lo uhh
00:31:59 <elliott> fizzie: I'm sure that'll happen about three days after Wayland ships in a major distro.
00:32:22 <elliott> (Well, OK, it _does_ need to handle compositing, so it's non-trivial.)
00:34:46 <olsner> hmm, does a tiling window manager really need to handle compositing? what is there to compose?
00:35:07 <elliott> olsner: a Wayland WM /is/ a compositor
00:35:11 <elliott> wayland is based around compositing
00:35:28 <olsner> mmhm, ok
00:35:56 <fizzie> It needs to do all the Wayland-servery stuff; they're all in the same pile. But I suppose someone will just take the simplest existing Wayland thingie and mesh some tiling into it at some point.
00:36:40 <fizzie> [FAQ on how to replace the window manager:] "Bringing up EGL and GLES2 on the Linux KMS framebuffer and reading input from evdev can be done in less that a thousand lines of code. The Wayland server side library provides the protocol implementation and makes it easy to put the pieces together."
00:37:08 <fizzie> Well, that's what they *say*...
00:37:24 -!- sllide has joined.
00:37:27 <Patashu> all you gotta do is write a thousand lines of code
00:37:28 <Patashu> ez
00:37:54 <elliott> Patashu: Well, that's not much
00:38:10 <Patashu> yeah I'm joking
00:38:25 <elliott> :P
00:38:27 <fizzie> Admittedly it probably can't be worse than writing a real, working X WM (what with all the nastiness), especially if you steal from others; but it's not quite just "port this WM over".
00:39:02 <fizzie> s/steal/reuse/ #better be politically correct
00:42:15 <olsner> I think stealing is more appropriate if you do it by copying the useful parts of the code (rather than e.g. building a library out of the reusable parts)
00:43:16 <olsner> or maybe copy/paste :)
00:43:25 <fizzie> "<olsner> I think stealing is more appropriate" *yoink* the out-of-context quoter strikes again, fire up the `addquote machine.
00:44:04 <elliott> `addquote <olsner> I think stealing is more appropriate
00:44:09 <HackEgo> 694) <olsner> I think stealing is more appropriate
00:44:29 <elliott> pikhq: The dmenu code is not as good as I was hoping :(
00:44:30 <olsner> what a world it would be if you could actually *steal* code so that the other project has to rewrite it or infiltrate your project to steal it back
00:44:32 <fizzie> `callthepolice OLSNER IS A THEIF
00:44:34 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: callthepolice: not found
00:44:40 <CakeProphet> elliott: are you allowed to partially quote a line?
00:44:42 <elliott> (I'm trying to figure out how hard it would be to mod dmenu to do the matching I want.)
00:44:48 <elliott> CakeProphet: Only with special authorisation.
00:44:53 <CakeProphet> from.... yourself?
00:44:56 <elliott> Yes.
00:45:00 <CakeProphet> ah okay.
00:45:11 <CakeProphet> that sounds reasonable to me.
00:45:18 <CakeProphet> given papal customs.
00:45:21 <elliott> olsner: that would be great
00:46:06 <CakeProphet> elliott: is using a katamari to collect all images on a page before I run websplat considered cheating
00:46:10 <olsner> CakeProphet: you shouldn't trust the logs or quotes or even anything you read in person while logged in on this channel anyway
00:46:15 <elliott> CakeProphet: Yes.
00:47:02 <olsner> partial quotes are just a lesser breed of completely made up quotes
00:47:13 <olsner> which I don't doubt we have a bunch of too
00:47:14 -!- pikhq_ has joined.
00:47:19 <elliott> olsner: not many
00:47:23 <elliott> `quote ALTERNATE
00:47:26 <HackEgo> 17) IN AN ALTERNATE UNIVERSE: <pikhq> First, invent the direct mind-computer interface. <pikhq> Second, learn the rest with your NEW MIND-COMPUTER INTERFACE. \ 23) IN AN ALTERNATE UNIVERSE: <bsmntbombdood> there is plenty of room to get head twice at once \ 24) <oerjan> In an alternate universe, ehird has taste \ 25) IN AN
00:47:26 -!- pikhq has quit (Ping timeout: 255 seconds).
00:47:36 <elliott> oh no, newegg redesigned
00:47:45 <elliott> how will I not purchase computer hardware now?
00:47:56 <zzo38> I made reverse of "collect" operation for barrier monad, it is: uncollect = foldl (>>) (Unit undefined) . map yield;
00:48:54 <monqy> whats websplat there are too many things called websplat
00:49:20 <elliott> monqy: the only good game
00:49:25 <elliott> http://codu.org/websplat/
00:50:26 <elliott> monqy: protip: down-up is a really useful combination
00:51:08 <monqy> so it is
00:51:18 <elliott> god it is SUCH A GOOD GAME
00:53:20 <elliott> Gregor: the win image tiling is broken :(
00:55:36 <elliott> hmm, does anyone know if there's a well-known algorithm for doing the kind of fuzzy matching that lets you eliminate substrings entirely and otherwise acts like some form ofedit distance?
00:55:43 <CakeProphet> Gregor: also it's not compatible with existing katamari code.
00:55:50 <CakeProphet> thus I can't cheat.
00:57:17 -!- hagb4rd has joined.
00:58:16 <CakeProphet> I'm kind of confused as to why the websplate code is a lambda that is immediately called.
00:58:36 <elliott> CakeProphet: try and write a bookmarklet without doing that
00:58:41 <elliott> bookmarklets are expressions
00:58:45 <CakeProphet> ah
01:01:17 <monqy> playing multiple games of websplat at once: amazing
01:11:59 <CakeProphet> Gregor: bug report!!! one of my Facebook friends can't get your bookmarklet to work.
01:12:07 <CakeProphet> (Note: they are probably just doing it wrong)
01:14:39 <oerjan> zzo38: if you use a version with foldr instead it can work on infinite lists, and might also nest better
01:15:27 <CakeProphet> yes he was trying to add it to the end of the address. bug resolved. :P
01:15:35 <zzo38> oerjan: OK I will put foldr thank you for telling me about it.
01:17:50 <zzo38> Now it is: uncollect = foldr (>>) (Unit ()) . map yield;
01:18:38 <oerjan> zzo38: note that now the Unit part comes last rather than first, in case that's a problem
01:19:07 -!- augur has quit (Remote host closed the connection).
01:19:15 -!- pikhq has joined.
01:19:58 <oerjan> zzo38: return = Unit, isn't it? in which case uncollect = mapM_ yield is equivalent.
01:20:14 <zzo38> oerjan: Yes it is return = Unit
01:20:44 <zzo38> OK, yes, mapM_ yield works too.
01:20:48 <oerjan> @src mapM_
01:20:49 <lambdabot> mapM_ f as = sequence_ (map f as)
01:20:52 -!- augur has joined.
01:20:54 <elliott> much more readable
01:21:23 <CakeProphet> what... now he's saying the bookmarklet takes him to google
01:21:25 <CakeProphet> maybe he's just stupid.
01:21:28 <oerjan> @src sequence_
01:21:29 <lambdabot> sequence_ ms = foldr (>>) (return ()) ms
01:21:38 -!- ive has quit (Ping timeout: 255 seconds).
01:22:02 -!- pikhq_ has quit (Ping timeout: 240 seconds).
01:22:35 <zzo38> mapM instead of mapM_ works too (because I don't care the return type), but mapM_ seems to be faster so I will use mapM_
01:23:10 <zzo38> OK now I used your suggestion and now it works.
01:23:44 <elliott> mapM is basically a space leak
01:23:50 <oerjan> zzo38: yes, mapM collects all the monadic results in a list, so also uses more memory
01:23:54 <elliott> whereas mapM_ is constant space
01:27:17 <CakeProphet> so I point him to the actual website so he can just drag the link into his bookmarks instead of having to use his brain to copypaste code.
01:27:21 <CakeProphet> and now it suddenly works!
01:28:21 <oerjan> gui ftw
01:29:18 <CakeProphet> "do you have javascript enabled?" "I honestly don't know."
01:29:23 <CakeProphet> -__-
01:29:45 <CakeProphet> granted, it was a dumb question of me to ask. He IS using facebook.
01:30:42 <Patashu> what you need is a program like teamviewer
01:30:45 <Patashu> instead of asking them check yourself
01:30:58 <elliott> CakeProphet: do you expect most people to know whether they have js on or not?
01:31:04 <elliott> that's pretty esoteric knowledge
01:31:17 <CakeProphet> no not really
01:31:20 <CakeProphet> I am young and naive.
01:31:24 <CakeProphet> and optimistic.
01:32:36 <CakeProphet> but seriously how do you mess up copypasting js.
01:32:40 <CakeProphet> into an address bar.
01:32:58 <CakeProphet> like, I had an entire comment that was the js, in a previous comment I said "copypaste this into your address bar"
01:35:07 <oerjan> ...probably included the <CakeProphet> part (or equivalent >:) )
01:35:16 <CakeProphet> ...how
01:35:18 <CakeProphet> how is that even possible.
01:35:24 <oerjan> i dunno...
01:35:34 <CakeProphet> oerjan: do you like metal?
01:35:45 <oerjan> NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
01:35:46 <elliott> as an oerjan expert
01:35:49 <elliott> i can safely say
01:35:51 <elliott> that oerjan is GUARANTEED
01:35:52 <elliott> to love metal
01:35:57 <CakeProphet> of course he is.
01:36:20 <CakeProphet> his metal-loving nature sticks out like a... well it's really obvious.
01:36:34 <oerjan> there may be a handful of metal songs which i like.
01:37:22 <elliott> oerjan: how many churches have you burned?
01:37:24 <elliott> I hear it's popular
01:37:27 <elliott> I mean
01:37:29 <elliott> over there
01:37:31 <oerjan> approx. 0
01:37:46 <CakeProphet> only with the satanic metal people.
01:37:54 <CakeProphet> I wouldn't think oerjan would go that low.
01:38:06 <elliott> I didn't think Vikernes was a satanist
01:38:09 <elliott> just a weird pagan type thing
01:38:22 <CakeProphet> oh okay.
01:38:22 <elliott> I guess Vikernes didn't actually burn any churches directly
01:38:32 <elliott> well I think that's what he says anyway :P
01:38:38 <oerjan> i think he burned churches to avenge the norse gods, or something.
01:38:40 <elliott> (I read his wikipedia page once, good times)
01:38:49 <elliott> oerjan: lessee... "I am not going to say that I burnt any churches. But let me put it this way: There was one person who started it. I was not found guilty of burning the Fantoft stave church, but anyway, that was what triggered the whole thing. That was the 6th of June and everyone linked it to Satanism ... What everyone overlooked was that on the 6th June, 793, in Lindesfarne in Britain was the site of the first known Viking raid in history, wi
01:38:49 <elliott> th Vikings from Hordaland, which is my county ... They [the Christians] desecrated our graves, our burial mounds, so it's revenge."
01:39:25 <CakeProphet> well, I kind of just thought all Scandinavians listen to Swedish progressive death metal band Opeth, as a matter of nation, er, culture, er, uh... geographical pride.
01:39:51 <elliott> isn't Opeth shit, I distinctly recall somebody with good tastes telling me Opeth was shit at one point in my long, long life
01:39:53 <CakeProphet> and was wondering if oerjan was excited as I was about the new album.
01:40:02 <CakeProphet> no they are actually quite good as far as metal goes.
01:40:10 <CakeProphet> *progressive metal
01:40:17 <CakeProphet> people who listen to shitty metal will tell you that progressive metal is shit.
01:40:20 <CakeProphet> but they're lame.
01:41:14 <CakeProphet> also their new album actually probably isn't even metal.
01:41:40 <CakeProphet> more like... jazz rock.
01:41:51 <elliott> sounds bad
01:42:06 <CakeProphet> YOU KNOW NOTHING
01:42:23 <elliott> jazz fusion: also known as : " the worst genre,"
01:42:33 <CakeProphet> no not that kind of jazz.
01:42:55 <elliott> i just looked it up on wikipedia , they disagree ,
01:42:58 <CakeProphet> it has stylings reminiscent of a 70s jazz band, with the technicality of death metal.
01:42:59 <oerjan> i am sorry to disappoint you, but my musical taste is on the side abba, verdi, and celine dion. i know this may not be popular and that you would have preferred me to be a satanist.
01:43:04 <oerjan> *side of
01:43:05 <elliott> they ay, yes elliott this album is a member of :the worst genre
01:43:14 <elliott> `addquote <oerjan> i am sorry to disappoint you, but my musical taste is on the side abba, verdi, and celine dion. i know this may not be popular and that you would have preferred me to be a satanist.
01:43:16 <HackEgo> 695) <oerjan> i am sorry to disappoint you, but my musical taste is on the side abba, verdi, and celine dion. i know this may not be popular and that you would have preferred me to be a satanist.
01:43:24 <CakeProphet> elliott: Heritage by Opeth is /jazz fusion/
01:43:28 <CakeProphet> Wikipedia doesn't know what jazz fusion is.
01:43:43 <CakeProphet> Bitches Brew by Miles Davis is jazz fusion.
01:43:58 <elliott> i like bitches brew, they should have banned people from making jazz fusion after that
01:44:08 <CakeProphet> eh, it's not all bad.
01:44:24 <CakeProphet> Herbie Hancock has some nice jazz fusion.
01:44:25 <oerjan> also sissel kyrkjebø, for a scandinavian angle.
01:44:47 <elliott> I just listen to wasps all day
01:44:50 <CakeProphet> well okay it might be kind of jazz fusion
01:44:51 <CakeProphet> but not like that.
01:44:52 <elliott> actual wasps
01:45:35 <CakeProphet> also there is some eastern influenced as far as rhythmic complexity.
01:45:41 <CakeProphet> -d +s
01:45:59 <CakeProphet> INTERESTING. ALBUM. GOOD. BAND.
01:46:25 <elliott> "eastern influenced" is like the most tedious phrase i have ever heard
01:46:34 <CakeProphet> yes it is.
01:46:37 <elliott> it inevitably means like
01:46:40 <elliott> "we played some bongos"
01:46:43 <elliott> shut the fuck up bongos are eastern
01:46:44 <CakeProphet> no not quite
01:46:54 <CakeProphet> I was referring specifically to the rhythms
01:46:57 <CakeProphet> as played by electric guitar.
01:46:59 <elliott> bongo rhythms
01:47:07 <CakeProphet> well, oh wait this song has hand drums possibly bongos
01:47:15 <CakeProphet> OH NO
01:47:29 <CakeProphet> http://www.youtube.com/watch?v=tO70oJvrx4s
01:47:30 <elliott> told
01:47:30 <elliott> you
01:47:36 <elliott> they played some fucking bongos
01:47:38 <CakeProphet> but it totally sounds eastern okay.
01:47:44 <CakeProphet> HAS NOTHING TO DO WITH BONGOS.
01:48:41 <CakeProphet> the guitar riffs occasionally remind me of arabic flute melodies.
01:48:51 <CakeProphet> TOTALLY EASTERN IN OTHER WAYS OKAY
01:50:16 <CakeProphet> also their heads are hanging from a tree. in the album art.
01:50:28 <CakeProphet> this makes the music much better.
01:51:21 <elliott> oerjan: oi where should i put
01:51:22 <elliott> showConcatMap
01:55:00 <CakeProphet> elliott: you are obviously listening to this awesome song right now as we speak and noting that it is entirely a mixture of jazz, eastern, and metal influences.
01:55:11 <CakeProphet> this fact is undeniable.
01:55:16 <CakeProphet> and not tedious.
01:55:34 <elliott> i skipped around it, it was boring, then i went back to asking oerjan where to put showConcatMap
01:55:58 <CakeProphet> elliott: oh, well yeah... it's going to be boring if you skip around. Many songs require patience.
01:56:04 <elliott> lol
01:56:24 <CakeProphet> because otherwise you lose the effect of the transitions.
01:56:52 <elliott> so in things that aren't like palm superglue applied to a forehead
01:56:56 <elliott> oerjan: WHERE SHOULD I PUT SHOCONCCAMCPTEMWC
01:57:23 <CakeProphet> elliott: perpetual facepalm?
01:57:48 <CakeProphet> what a... strange notion.
01:58:53 <zzo38> I read that a contravariant is something like (a -> b) -> f b -> f a and I noticed the similarity with what I have convert :: (f -> f') -> (b' -> b) -> Barrier f b t -> Barrier f' b' t so is this partially contravariant?
02:06:53 <oerjan> elliott: MC.ZALGOOOOOOOOOOOOOOOO_HeCOMES.showConcatMap
02:07:17 -!- pikhq has quit (Ping timeout: 245 seconds).
02:07:21 -!- pikhq_ has joined.
02:07:48 <monqy> hlepful
02:07:59 <monqy> five stars
02:08:03 <monqy> five stars hlepful
02:09:25 <oerjan> zzo38: yes, it is afaict contravariant in b and covariant in f
02:09:44 <elliott> oerjan: thanenkes
02:09:46 <oerjan> and also covariant in t, since it's a monad
02:10:04 <oerjan> (and thus essentially a functor)
02:11:06 <elliott> monqy: nwhere put showConcatMap...
02:11:40 <monqy> i have no clue,,.,
02:11:45 <elliott> monqy: help
02:12:03 <monqy> MC.ShowConcatMap.showConcatMap
02:12:27 <oerjan> zzo38: basically the fields of a data definition are in covariant position, as is the last argument of -> but the first one is contravariant. (and things that are in covariant position inside a type inherit its overall variance, while contravariant positions reverse it.
02:12:31 <oerjan> )
02:13:30 <oerjan> so in data A = A ((a -> b) -> (c -> d) e , there a, d and e are all covariant while b and c are contravariant.
02:14:06 <elliott> monqy: dont like u
02:14:31 <zzo38> oerjan: I have data Barrier f b t = Unit t | Barrier f (b -> Barrier f b t) | Fail String; mean that it is contravariant in b (the back type) is that it?
02:15:09 <oerjan> and if we have data A x y = A ((x -> y) -> (y -> y) x , then A x y is covariant in x since all occurrences of x are in covariant position, but invariant in y since that occurs in both covariant and contravariant position.
02:15:38 <oerjan> (i may have made up the term co-/contravariant position here, since i don't know the official terms)
02:16:34 <oerjan> zzo38: Barrier f b t is covariant in f and t but contravariant in b
02:16:49 <zzo38> The only relevant thing under "contravariant" on Wikipedia seem to be "contravariant functor", nothing about "contravariant position".
02:17:11 <zzo38> oerjan: OK. It is what I thought. Now I can write that in the report.
02:17:22 <oerjan> zzo38: no i just made that up to explain how you decide whether it is
02:17:35 <oerjan> i'm sure someone has made an algorithm that is similar, though
02:18:00 <zzo38> I mean "Barrier f b t is covariant in f and t but contravariant in b"
02:19:00 <oerjan> zzo38: http://en.wikipedia.org/wiki/Covariance_and_contravariance_(computer_science) is relevant, i think
02:19:53 <oerjan> even if that's based on subtyping, it's essentially from the same category theory, i think
02:20:29 <oerjan> it's just that since haskell doesn't have subtyping, you need to pass the conversion function as well
02:21:02 <oerjan> and in category theory, a functor is essentially a map _from_ conversion functions (the arrows)
02:21:02 <zzo38> That article doesn't look like it to me. The article about functors seems more like what it is, to me.
02:21:24 -!- augur has quit (Remote host closed the connection).
02:21:51 <oerjan> zzo38: it is the same basic idea applied to two slightly different purposes
02:22:01 <oerjan> as is usual in category theory :P
02:23:00 <oerjan> i guess in that case, the subtyping relations are the arrows, while in the haskell case, actual functions are the arrows
02:23:31 <oerjan> (that case = that computer science article)
02:23:45 <zzo38> OK.
02:27:24 <oerjan> this is i believe also related to parametricity, a property of haskell polymorphic functions
02:27:35 <oerjan> hm what was the lambdabot command again
02:27:43 <zzo38> So, does it mean, covariance mean you can have (a -> b) -> (f a -> f b) and contravariance means you can have (a -> b) -> (f b -> f a) for some f?
02:27:52 <oerjan> @free (a -> b) -> (a -> b)
02:27:52 <lambdabot> Pattern match failure in do expression at Plugin/Free/FreeTheorem.hs:54:20-34
02:27:58 <zzo38> Or do something else?
02:27:58 <oerjan> eek
02:28:03 <oerjan> @free f :: (a -> b) -> (a -> b)
02:28:03 <lambdabot> h . k = p . g => h . f k = f p . g
02:28:20 <oerjan> zzo38: it means that, yes
02:30:02 -!- sllide has quit (Ping timeout: 244 seconds).
02:30:27 <elliott> @free f :: oerjan
02:30:28 <lambdabot> g f = f
02:30:35 <elliott> um
02:30:44 <elliott> oh right
02:30:51 <elliott> because g has to be fully polymorphic
02:30:58 <elliott> @free fix :: (a -> a) -> a
02:30:59 <lambdabot> f . g = h . f => f (fix g) = fix h
02:31:10 <elliott> :D
02:31:19 -!- augur has joined.
02:31:27 <oerjan> @free f :: Oerjan
02:31:27 <lambdabot> f = f
02:31:41 <monqy> ?help free
02:31:41 <lambdabot> free <ident>. Generate theorems for free
02:32:00 <monqy> thanks free
02:32:11 <elliott> oerjan:
02:32:11 <elliott> <elliott> > Data.Foldable.foldMap shows [0,9] ""
02:32:11 <elliott> <lambdabot> "09"
02:32:16 <elliott> oerjan: thanks to ion in #haskell
02:32:27 <elliott> it's so beautiful :DD
02:32:47 <monqy> :t shows
02:32:48 <oerjan> what, i thought that didn't work...
02:32:48 <lambdabot> forall a. (Show a) => a -> String -> String
02:33:02 <oerjan> :t Data.Foldable.foldMap
02:33:03 <lambdabot> forall a m (t :: * -> *). (Data.Foldable.Foldable t, Monoid m) => (a -> m) -> t a -> m
02:33:06 <elliott> oh wait
02:33:09 <elliott> <elliott> > Data.Foldable.foldMap shows [0,9] "oh dear"
02:33:09 <elliott> <lambdabot> "0oh dear9oh dear"
02:33:21 <oerjan> XD
02:33:35 <oerjan> YOU CHEATING SCUM
02:33:35 <monqy> what is this monoid instance
02:33:56 <elliott> monqy: instance (Monoid b) => Monoid (a -> b)
02:33:58 <elliott> with standard lifting
02:34:24 <monqy> ah
02:34:53 <monqy> maybe you should use Endo then
02:34:56 <monqy> would that work
02:34:59 <zzo38> This seem to me, it follow monad laws, from the code, as well as from trying it, but I don't know how to make a proper proof; do you know how? Barrier a c >>= f = Barrier a $ c >=> f;
02:35:05 <monqy> :t ala
02:35:05 <elliott> monqy: tons of overhead man
02:35:05 <lambdabot> forall o n b n' o'. (Newtype n o, Newtype n' o') => (o -> n) -> ((o -> n) -> b -> n') -> b -> o'
02:35:08 <monqy> oh
02:35:17 <monqy> what
02:35:22 <elliott> yeah
02:35:25 <monqy> overhead? syntactically you mean
02:35:28 <elliott> @hackage newtype
02:35:28 <monqy> or with ala
02:35:28 <lambdabot> http://hackage.haskell.org/package/newtype
02:35:32 <elliott> dependency etc.
02:35:41 <monqy> I was actually just referencing ala to remind myself what it did
02:35:44 <monqy> not suggesting it
02:36:01 <monqy> I remembered there was something named ala that did newtype stuff but that's it
02:36:17 <elliott> it should use type families and not use the word newtype
02:36:20 <elliott> Wrapper or something
02:37:53 <oerjan> @src >=>
02:37:53 <lambdabot> Source not found. I can't hear you -- I'm using the scrambler.
02:37:54 <monqy> > appEndo . Data.Foldable.foldMap (Endo . shows) [0.9] $ "oh dear"
02:37:55 <lambdabot> Couldn't match expected type `a -> Data.Monoid.Endo a1'
02:37:55 <lambdabot> against inf...
02:37:57 <oerjan> @src (>=>)
02:37:57 <lambdabot> Source not found. Maybe if you used more than just two fingers...
02:37:58 <monqy> oops
02:38:24 <oerjan> zzo38: well that's equivalent to Barrier a $ \x -> c x >>= f, and i assume (>=>) is defined so that holds even if it's not already known to be a monad...
02:38:25 <monqy> > appEndo . Data.Foldable.foldMap (Endo . shows) [0,9] $ "oh dear"
02:38:26 <lambdabot> Couldn't match expected type `a -> Data.Monoid.Endo a1'
02:38:26 <lambdabot> against inf...
02:38:27 <elliott> monqy: ala Endo foldMap
02:38:28 <monqy> oooops
02:38:50 <monqy> im being dumb but yes that would work maybe help
02:38:57 <monqy> ;_; ;_;; _;
02:40:52 <CakeProphet> +_+
02:41:08 <CakeProphet> %> best emoticon
02:41:52 <CakeProphet> well, time to go get drunk and play Brawl.
02:41:55 <CakeProphet> it'll be like a drunken brawl.
02:41:55 <monqy> oh i think i see what i did wrong, the dumbest mestake
02:41:58 <CakeProphet> except we're nerds.
02:42:10 <CakeProphet> >_>
02:42:30 <CakeProphet> maybe I'll finally playtest some portal chess.
02:42:33 <monqy> > appEndo (Data.Foldable.foldMap (Endo . shows) [0,9]) "oh dear"
02:42:34 <lambdabot> "09oh dear"
02:42:35 <CakeProphet> or make this relevant to esolangs somehow.
02:42:37 -!- augur has quit (Remote host closed the connection).
02:42:39 <zzo38> CakeProphet: Do you know the game Tetanus on Drugs? You don't need to be drunk to play tetris because you can program the computer to be drunk for you.
02:42:46 <monqy> not using $ like an idiot: saves the day
02:42:51 <CakeProphet> lol wat
02:43:02 <CakeProphet> Tetanus on Drugs sounds bad.
02:43:03 <zzo38> oerjan: You assume (>=>) is defined... what? Its definition is what you have specified; what how do you do the proof?
02:43:06 <CakeProphet> ANYWAYS MUST GO.
02:43:52 <zzo38> http://www.pineight.com/tod/
02:44:11 <zzo38> You're familiar with the Soviet Mind Game that involves stacking tetrominoes, or geometric shapes composed of four square blocks, inside a well. But have you ever played it while high? LOCKJAW: The Overdose simulates what it might be like to play the Soviet Mind Game under the influence of marijuana, LSD, or other hallucinogenic drugs.
02:44:47 <zzo38> (Except that you do not need LSD or any other drugs because the computer can do it)
02:44:58 <oerjan> zzo38: well for Barrier a c >>= Unit = Barrier a $ \x -> c x -> Unit, and i think "coinduction" allows you to assume the law holds inside the outer constructor so then that's = Barrier a >>= \x -> c x = Barrier a c
02:45:21 <oerjan> that's one case for the second law, i guess
02:45:33 <oerjan> the first law you have true by definition
02:45:50 <oerjan> er oops
02:46:08 <oerjan> *zzo38: well for Barrier a c >>= Unit = Barrier a $ \x -> c x >>= Unit, and i think "coinduction" allows you to assume the law holds inside the outer constructor so then that's = Barrier a >>= \x -> c x = Barrier a c
02:47:03 <oerjan> i assume you have the other cases of the second law already
02:47:18 <zzo38> What is coinduction?
02:47:34 <zzo38> I have "return a >>= k = k a
02:47:39 <oerjan> zzo38: it's a technique used for proving properties of infinite datastructures in haskell
02:47:43 <zzo38> by definition
02:47:52 <zzo38> oerjan: OK.
02:47:59 <oerjan> and other languages with "codata"
02:48:19 -!- augur has joined.
02:49:04 <oerjan> i am not entirely clear on what it allows, but basically to prove that two values are equal, you need to prove that their outer data constructors are equal, and then you can assume inductively what you want to prove for the inner parts
02:50:09 -!- augur has quit (Remote host closed the connection).
02:50:45 <oerjan> so once we've shown that both sides we want equal are Barriers, we can treat the fields as fulfilling the laws.
02:51:37 <oerjan> i think there might be complications if your definition looks deeper than one constructor, then you might have to prove that they're equal to that depth first, or something.
02:51:52 -!- CakeProphet has quit (Ping timeout: 245 seconds).
02:56:03 -!- pikhq has joined.
02:57:41 -!- pikhq_ has quit (Ping timeout: 248 seconds).
02:58:43 -!- augur has joined.
02:58:56 -!- augur has quit (Remote host closed the connection).
03:04:01 -!- augur has joined.
03:05:15 -!- augur has quit (Remote host closed the connection).
03:08:04 -!- MDude has changed nick to MSleep.
03:26:51 -!- pikhq_ has joined.
03:27:01 -!- pikhq has quit (Ping timeout: 248 seconds).
03:52:25 -!- ive has joined.
03:55:14 <oerjan> > ((+) :: a -> Int) 2 3
03:55:14 <lambdabot> Couldn't match expected type `GHC.Types.Int'
03:55:14 <lambdabot> against inferred type ...
03:56:31 -!- tiffany has quit (Quit: Bai~).
03:56:38 <oerjan> bloody implicit quantification
03:57:34 <oerjan> hm or
03:58:10 <elliott> hi
03:58:19 <elliott> oerjan: wait how would that work
03:58:25 <elliott> oh without implicit quantification
03:58:26 <elliott> ic ic ic
03:58:37 <elliott> i still don't think there's an a that satisfies that :P
03:58:52 <oerjan> oh oops
03:59:05 <oerjan> > ((+) :: Int -> a) 2 3
03:59:06 <lambdabot> Couldn't match expected type `a'
03:59:06 <lambdabot> against inferred type `GHC.Types.I...
03:59:11 <elliott> haha
03:59:12 <oerjan> well that didn't help
03:59:21 <elliott> it did, lambdabot just cuts off too early
03:59:51 <oerjan> no it didn't, a = Int -> Int should work there
04:00:15 <elliott> oerjan: well I mean
04:00:20 <elliott> it gave the right type in the message
04:00:31 <elliott> what I would like is some kind of
04:00:32 <oerjan> anyway i was wondering if the new ConstraintKinds could be used to get more flexible lists of heterogeneous types
04:00:33 <elliott> :specialise foo :: t
04:00:38 <elliott> and it tells you the type variables
04:00:39 <elliott> like
04:00:47 <elliott> :specialise (+) :: Int -> a -> b
04:00:49 <elliott> a = Int
04:00:50 <elliott> b = Int
04:00:52 <elliott> (+) :: Int -> Int -> Int
04:02:00 <oerjan> data Any ctx where fromAny :: ctx a => a -> Any ctx
04:02:29 <oerjan> and then concatMap (show . fromAny) [Any (1::Int), Any "hello"]
04:02:52 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
04:02:55 <elliott> heh, that's cute
04:02:56 <oerjan> except the inside of show . fromAny is probably not polymorphic enough
04:02:57 <elliott> could you have
04:03:04 <elliott> foo :: forall ctx. [Any ctx]?
04:03:06 <elliott> hmm I guess not
04:03:10 <elliott> well apart from [] obvs
04:03:12 <elliott> and [undefined]
04:03:14 <elliott> what would the type of
04:03:18 <elliott> [Any (1::Int), Any "hello"]
04:03:19 <elliott> be?
04:03:28 <elliott> forall ctx. (ctx Int, ctx String) => [Any ctx]
04:03:28 <elliott> ?
04:03:47 <oerjan> oh i missed an obvious type signature
04:04:01 <oerjan> *concatMap (show . fromAny) [Any (1::Int), Any "hello" :: Any Show]
04:04:18 <oerjan> so that it gets the right context in somewhere, i doubt it can deduce it
04:04:40 <elliott> oerjan: um but that last type is THE BEST??
04:05:01 <elliott> oerjan: we're lucky GHC shares the namespace of types and classes :P
04:05:10 <elliott> or ConstraintKinds would never work, it'd cause tons of clashes
04:05:17 <elliott> um
04:05:19 <elliott> s/GHC/Haskell/
04:05:53 <oerjan> yeah
04:06:11 <oerjan> i was aiming for [Any Show], though
04:06:23 <oerjan> i doubt it can infer contexts in reverse
04:06:46 <elliott> as long as it can typecheck them :P
04:06:52 <elliott> hm that would be really powerful
04:07:02 <elliott> you could define ad-hoc classes just to use them with polymorphic lists like that
04:07:10 <elliott> it's basically an HList except the types are unordered
04:07:13 -!- copumpkin has joined.
04:07:16 <elliott> and much easier to operate on
04:08:02 <elliott> oerjan: ask copumpkin, I bet he knows ;D
04:08:13 <oerjan> i was inspired by a discussion in r/programming about how haskell supports heterogenous lists/arbitrary length tuples badly
04:08:36 <oerjan> (subthread of that bos slide thing, i think)
04:09:49 <elliott> yeah, hlists are pretty clunky
04:10:26 <elliott> oerjan: now I have to dig up that thread :P
04:11:02 <oerjan> http://www.reddit.com/r/programming/comments/ktxzn/running_a_startup_on_haskell/
04:11:08 <olsner> hmm, found an annoying issue in yasm, guess I'll just have to fork it then
04:11:51 <olsner> namely, it doesn't implement the base offset parameter to structs that nasm has
04:12:14 <oerjan> type AnyFunc ctx b = forall a. ctx a => a -> b
04:12:52 <elliott> olsner: lol
04:12:53 <oerjan> and then concatMap ((show :: AnyFunc Show String) . fromAny) [Any (1::Int), Any "hello" :: Any Show]
04:12:56 <olsner> tried to work around it by simply redefining the struc macro, but that breaks listfiles
04:13:24 <oerjan> hm might not need the last :: Any Show
04:13:25 <elliott> oerjan: why that instead of what you had before? to avoid monomorphism stuff?
04:13:33 <elliott> olsner: can't you just work around the nasm bug?
04:13:42 <oerjan> yes, it needs to know that show should be polymorphic
04:13:48 <elliott> oerjan: right
04:14:02 <oerjan> hm wait that won't even work either
04:14:16 <olsner> elliott: no
04:14:19 <elliott> olsner: why not
04:14:33 <oerjan> because fromAny needs to be polymorphic as well
04:14:44 <oerjan> it's that existential types not allowed to escape thing, i think
04:15:09 <oerjan> (all of this untested of course, i'm not about to try to get ghc head working)
04:16:14 <elliott> monqy: can you believe my project has seriously been blocked for a day on where to put showConcatMap
04:16:23 <monqy> elliott: yes
04:16:26 <monqy> elliott: happens to me all the time
04:16:28 <monqy> elliott: ;_;
04:16:33 <elliott> oerjan: i have a ghc head source tree :P
04:16:47 <oerjan> elliott: well then you can try this out :P
04:17:05 <oerjan> although i suspect it still won't quite work
04:17:08 <monqy> and sometimes I just every day forget to work
04:17:09 <monqy> ooops
04:17:38 <oerjan> needs some higher order rank-n function to tell show what type to take
04:17:58 <elliott> oerjan: /me sees __j_random_hacker in that comment thread, mental spam filter kicks in, saves me effort of reading a stupid comment
04:18:16 <monqy> is he a baD erpson
04:18:18 <elliott> (he is the guy who argued with ais that a TC proof still counted even though it blatantly used finite memory because real-world computers do)
04:18:20 <oerjan> it should probably have a type like (forall a. ctx a => a -> b) -> Any ctx -> b
04:18:25 <monqy> ahh,,,
04:18:35 <elliott> "I've seen a research paper in which a guy explains how to make a version of zip that takes an arbitrary number of inputs (unlike the fixed-size versions that run out at zip7) using a concept called applicative functors, but talk about making hard work of a simple, common kind of expressiveness!"
04:18:36 <elliott> this is the best part
04:18:38 <elliott> CONTROL.APPLICATIVE
04:18:39 <elliott> SO ESOTERIC
04:18:39 <elliott> SO HARD
04:18:44 <monqy> so he is a bad person
04:18:59 <elliott> "It would be enough for me if there was a way in Haskell to map over the elements of a nested tuple like (42, ("a string", (123.45, ()))), but the following attempt fails typechecking:
04:19:00 <elliott> map_nested_tuple f () = ()
04:19:00 <elliott> map_nested_tuple f (a, b) = (f a, map_nested_tuple f b)"
04:19:02 <oerjan> withAny :: (forall a. ctx a => a -> b) -> Any ctx -> b
04:19:02 <elliott> dude hasn't heard of typeclasses
04:19:15 <oerjan> withAny f (Any x) = f x
04:19:28 <olsner> elliott: well, it's *almost* possible to work around, but only by making the code wrong in the opposite way from what nasm got wrong - and getting it to generate the code I want (RIP-relative offset to an absolute address) seems to actually be impossible
04:19:43 <elliott> gah, I hate it when people go ENUMERATING THE DATA TYPES IN MY HETEROGENEOUS AS A UNION ISN'T EXTENSIBLE BECAUSE CLIENT CODE HAS TO BE MODIFIED WHEN I ADD A TYPE
04:19:53 <elliott> how the heck is client code meant to process a heterogeneous list if it doesn't know anything about what it contains anyway???
04:20:06 <monqy> hhmmm that mapping over a nested tuple looks like a job for syb..................but why are you doing that nested tuple anyway why why why why why why why ugh I hate him so much already
04:20:09 <oerjan> and then maybe that's enough to get concatMap (withAny show) [Any (1::Int), Any "hello" :: Any Show] to work
04:20:13 <olsner> either I can get absolute addressing (1 byte bigger!) or I can get RIP-relative adressing with the absolute address as the offset
04:20:24 <elliott> olsner: dude, just use "db"
04:20:32 <elliott> to inline some machine code for that specific thing
04:20:34 <Jafet> elliott: typeclass methods, you sadistic abstraction violator
04:20:45 <oerjan> oh wait
04:20:48 <elliott> Jafet: so it's a homogeneous list
04:20:50 <olsner> the problem is that the offset depends on the location of that code, which is what I use the assembler to figure out
04:21:01 <oerjan> (\(Any x) -> show x) should work, shouldn't it
04:21:01 <elliott> Jafet: of whatever that typeclass contains
04:21:08 <oerjan> even...
04:21:18 <Jafet> Wait, you got a list of Any?
04:21:21 <oerjan> (\(Any x :: Any Show) -> show x)
04:21:29 <elliott> Jafet: what i am saying and what oerjan is talking about are separate :)
04:21:35 <oerjan> Jafet: ok maybe a bad name, i think ghc uses it for something else
04:21:35 <elliott> and oerjan's Any is a clash, not the same
04:21:42 <elliott> oerjan: ghc uses Any as a datatype you can cast anything to
04:21:43 <oerjan> pretend it's called Some
04:21:45 <elliott> and cast out of as the same type
04:21:48 <oerjan> yeah i recall
04:21:52 <elliott> olsner: well can't you just define a macro
04:22:02 <elliott> olsner: that gets the position, arithmetics it up and then "db"s it in as the instruction
04:23:14 <oerjan> <elliott> dude hasn't heard of typeclasses <-- i was a bit surprised no one had mentioned it
04:23:26 <elliott> oerjan: /r/programming is not a good venue for haskell discussion.
04:24:20 <olsner> elliott: sure, that'd work (and at least it's not as bad as writing it all in a hex editor)
04:24:29 <olsner> but... now I found an assembler that actually does what it's supposed to do (after a three-line change to the builtin struc macro anyway)
04:24:31 -!- pikhq has joined.
04:24:41 <elliott> olsner: well if you're writing the same thing over and over it should be in a macro anyway
04:25:03 <elliott> i'd just send a patch to the yasm folks
04:25:23 <olsner> yes, I intend to
04:25:55 <elliott> olsner: I like how software projects gradually build up more and more barriers to entry
04:25:56 <elliott> like
04:26:00 <elliott> first it's "install nasm, type make"
04:26:08 <elliott> now it's "get yasm, apply this patch, compile yasm, type make"
04:26:25 <elliott> in a few years, you'll need to install build infrastructure and have it download and compile dependencies for a few hours
04:26:29 <Jafet> Like a courtesan
04:27:30 -!- pikhq_ has quit (Ping timeout: 255 seconds).
04:27:58 <olsner> yeah, or just download the already-setup VM image with all the custom and forked build tools installed
04:28:23 <elliott> olsner: are you the kind of person who deludes themselves into thinking that's a low barrier to entry, or the kind of person who mocks those people? :P
04:28:26 <Jafet> Then you have to install the VM
04:28:28 <elliott> I bet it's only a gigabyte, too
04:28:35 <elliott> oh, and don't use virtualbox version xx, it has a bug that...
04:28:40 <olsner> and a few years after that, you need a special forked hypervisor that can still run that VM image and operating system
04:28:40 <elliott> ...and remember to disable USB
04:28:44 <Jafet> Is xx a wildcard?
04:28:51 <elliott> Jafet: i can't type numbers
04:28:53 <elliott> gotta get creative
04:29:00 <olsner> or a CPU emulator, because everyone's moved to reducerons by then
04:29:17 <elliott> olsner: if that happens, your OS will be pretty obsolet
04:29:17 <elliott> e
04:29:35 <elliott> but they can just use the CPU emulator they need for your OS :P
04:29:53 <olsner> as long as it's the same one as the one that runs the build environment :P
04:30:10 <elliott> :)
04:30:26 <elliott> i wonder if we'll have inaccurate xeightsix emulators one day
04:30:27 <elliott> like
04:30:28 <Jafet> There are still some programs sold exclusively for DOS.
04:30:29 <elliott> for retrogaming
04:30:37 <elliott> and they suffer the SNES problem of nobody ever fucking checks with the hardware
04:30:44 <elliott> and just piles on hacks to get the vintage classic "call of duty" working
04:30:46 <Jafet> Probably not. Most x86 games have been crap
04:30:59 <elliott> ehh... there have been a LOT of x86 games
04:31:08 <Jafet> One only hopes we will realize this before it is too late
04:31:09 <elliott> hundreds upon hundreds of worthwhile ones
04:31:10 <pikhq> x86 has much less need for accuracy than SNES.
04:31:26 <elliott> pikhq: yeah but you have no idea the kind of emulation reduceron 9000s are good at
04:31:31 <elliott> it's wack
04:31:46 <pikhq> You've got a CPU with indeterminate timing hooked to a bus with indeterminate timing hooked to RAM and disk with indeterminate timing.
04:31:51 <elliott> Jafet: I would say there are probably at least ten times as many worthwhile x86 games as there were SNES games, in total.
04:31:56 <pikhq> This is an emulator author's wet dream.
04:32:21 <elliott> Seems like there were 784 SNES games.
04:32:27 <elliott> So, I'll take that back.
04:32:35 <pikhq> That sounds like the US SNES library.
04:32:40 <elliott> But two thousand worthwhile x86 games? Sounds possible.
04:32:44 <elliott> pikhq: "721 in NA, 533 in EU and 470 in both"
04:32:51 <elliott> wow, 1442 for the super famicom
04:32:56 -!- derrik has joined.
04:33:06 <pikhq> elliott: Yup.
04:33:14 <elliott> Jafet: Anyway, I mean, people write "top one hundred PC games" lists all the time, and I'm sure there are some with very little dreck
04:33:38 <elliott> I wouldn't be surprised if there were two thousand games that people in the future will want to play regardless of nostalgia
04:33:39 <olsner> but a place I was a summer intern at had a similar problem (you know, in the real world), their 15 year deal to supply the exact hardware required for this system (and its OS) was running out and no existing virtualization/emulator had good enough support to boot the OS (yet)
04:33:59 <pikhq> elliott: One of the things that'll help *dramatically* for hypothetical future x86 emulators is that, past DOS, most of the hardware is actually abstracted.
04:34:11 <elliott> pikhq: like the nintendo sixtyfour kinda
04:34:14 <pikhq> You literally will have no need to understand how the sound card, GPU, etc. actually worked.
04:34:19 <elliott> but
04:34:19 <Jafet> elliott: fact is, every PC "game of the year" makes the last few rounds of PC "games of the year" obsolete
04:34:20 <elliott> moreso
04:34:22 <pikhq> You'll just need to write drivers for your virtual device.
04:34:38 <pikhq> elliott: Not quite. The only reason N64's HLL works is that game authors were lazy.
04:34:39 <elliott> Jafet: who gives a shit about game of the year?
04:34:44 <Jafet> Because they nearly all fit cleanly into a few genres
04:34:50 <pikhq> You actually uploaded bytecode to the N64's GPU.
04:34:52 <elliott> so what?
04:35:01 <pikhq> Most game authors just used a stock bytecode.
04:35:06 <elliott> presumably you see the fallacy of people who say "MODERN MUSIC SUX, JUST LOOK AT THE TOP FORTY"
04:35:12 <elliott> that's basically the same argument but for games
04:35:23 <elliott> pikhq: haha
04:36:17 <pikhq> A few games wrote their own. You can tell because they look 10 times better.
04:36:23 <Jafet> elliott: so what kinds of games get into "top one hundred PC games" lists
04:36:36 <pikhq> Jafet: Generic shooters 1 through 100.
04:36:56 <elliott> Jafet: dunno, probably pretty bad, but I wasn't really referring to any given mainstream publication, and the point is that one /could/ write such a list and have very little dreck in it
04:37:10 <elliott> and I'm sure people have
04:37:22 <elliott> multiply by all the games they won't have ever heard of
04:37:28 <Jafet> I can probably name about... ten PC games I would play again
04:38:02 <elliott> so what's your favourite platform? I strongly suspect you're just blinded by nostalgia shades :P
04:38:18 <Jafet> I've never owned a console or anything
04:38:40 <elliott> Jafet: maybe you just don't like games?
04:38:48 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
04:38:52 <Jafet> Yeah, maybe they just don't impress me
04:39:09 <Jafet> That's quite bad for them, because I should be easily impressed
04:39:12 <elliott> I dunno, if you say you've never owned any kind of games console at all and can only think of ten PC games you'd play again
04:39:13 <elliott> then
04:39:17 <elliott> it sounds to me like you don't dislike PC games
04:39:18 <pikhq> 10? Only 10? Hell, that's nice and easy. You could probably pull that without leaving Valve.
04:39:20 <elliott> you just dislike video games
04:39:37 <elliott> which has completely different implications
04:39:58 <pikhq> Lessee. Half-Life, Half-Life 2, Ep. 1, Ep. 2, Portal, Portal 2. Okay, there's 6 without even struggling.
04:39:59 <Jafet> I want to like video games, but they're not letting me
04:40:12 <elliott> Jafet: so what are those ten games, out of interest
04:40:29 <elliott> pikhq: i have never played any half-life game, im cool
04:40:34 <elliott> (my fiction backlog is literally the longest thing)
04:41:33 <Jafet> pikhq seems to have a high regard of the half-life engine
04:42:11 <pikhq> Jafet: The engine sucks worse than Minecraft's.
04:43:31 <elliott> Jafet won't list me games :'(
04:43:48 <Jafet> elliott: Portal, Mirror's Edge, Master of Orion 2, Rainbow Six, TES: Oblivion...
04:43:53 <Jafet> Sorry, running out of steam here
04:44:06 <elliott> Didn't Rainbow Six suck (I have never played it)
04:44:09 <pikhq> Jafet: Um, you suck.
04:44:10 <Jafet> (games that I would play again)
04:44:30 <pikhq> Also, you realise that "PC games" spans 3 decades, right? :)
04:44:50 <Jafet> I think my list spans at least 2 decades
04:44:50 <elliott> I thought Oblivion was pretty bad too :P
04:45:10 <pikhq> Also, you t3h suck.
04:45:15 <pikhq> Just putting that out there. :P
04:45:15 <elliott> Jafet: it spans two, and 1998 is like two years off not spanning two :P
04:45:31 <Jafet> Ok, where are your great early PC games
04:45:42 <elliott> hm oh orion is 1996
04:45:49 <elliott> Jafet: mother
04:45:50 <oerjan> data (:=>) ctx t where Some :: ctx => t -> (ctx :=> t); main = print $ concatMap (\(Some x :: Show t :=> t) -> show x) [Some (1::Int), Some "hello"]
04:45:50 <elliott> fuckin'
04:45:51 <elliott> alley
04:45:52 <elliott> cat
04:46:02 <oerjan> elliott: ^
04:46:05 <elliott> anyone who doesn't think alley cat is the best game
04:46:05 <elliott> just
04:46:06 <elliott> die
04:46:07 <pikhq> Jafet: RTS; the entire genre.
04:46:09 <elliott> and don't ever talk to me again
04:46:13 <elliott> pikhq: alley cat: the best?
04:46:16 <pikhq> Pick a few you like.
04:46:17 <elliott> oerjan: :') it am beautiful
04:46:21 <pikhq> Say, Starcraft.
04:46:33 <elliott> oerjan: tpyo: "ctx =>"
04:46:36 <pikhq> Probably also a couple of Command & Conquer.
04:46:37 <Jafet> Starcraft is a pretty sad argument for "RTS; the entire genre"
04:46:49 <elliott> OK I'm not letting pikhq say another word until he confirms to me that
04:46:53 <elliott> (a) he has played Alley Cat; and
04:46:54 <Jafet> C&C was at least humorous
04:46:56 <elliott> (b) he agrees that it is the best game ever.
04:46:59 <pikhq> elliott: I have not played Alley Cat.
04:47:02 <zzo38> I have not yet ever written any PC game that boots; they require DOS. But probably it uses not a lot of things and can make it compile to run directly with the PC BIOS by changing a few things (such as making a compiler that does that)
04:47:11 <elliott> pikhq: Um OK so you are downloading it to rectify this situation now correct?
04:47:38 <pikhq> Jafet: Also, many an adventure game...
04:47:42 <elliott> pikhq: http://www.abandonia.com/en/games/24/Alley+Cat.html
04:47:48 <elliott> Pls play, thans.
04:47:55 <elliott> pikhq: It's literally as old as the IBM PC.
04:48:01 <Jafet> Ok, I haven't played many an adventure game.
04:48:02 <pikhq> Baldur's Gate...
04:48:09 <elliott> Wait no.
04:48:11 <Jafet> Especially anything by Sierra
04:48:12 <elliott> Three years older than the IBM PC.
04:48:16 <elliott> Jafet: Sierra games are terrible.
04:48:18 <elliott> Seriously.
04:48:24 <oerjan> elliott: whoops, i don't think it will work, darn t implicitly quantified probably
04:48:29 <pikhq> Really, large pile of WRPGs.
04:48:47 <elliott> pikhq: Excuse me you are about two minutes away from playing Alley Cat in DOSBox.
04:48:52 <elliott> Use these minutes wisely??
04:49:09 <oerjan> <elliott> oerjan: tpyo: "ctx =>" <-- there's supposed to be one ctx => and one ctx :=> in there, that's the point
04:49:09 <elliott> It is literally fifty kilobytes of a single executable file.
04:49:23 <elliott> That executable file is "CAT.EXE" and if there was a Unix port I would give up my ability to concatenate files to have it.
04:49:25 -!- pikhq_ has joined.
04:49:26 <Sgeo|web> http://www.minecraftwiki.net/wiki/File:Hardcore_heart.png this is a laugh riot
04:49:26 <Jafet> elliott is so literal sometimes
04:49:26 <elliott> oerjan: oh, okay
04:49:41 <elliott> pikhq_: <elliott> pikhq: Excuse me you are about two minutes away from playing Alley Cat in DOSBox. <elliott> Use these minutes wisely?? <elliott> It is literally fifty kilobytes of a single executable file. <elliott> That executable file is "CAT.EXE" and if there was a Unix port I would give up my ability to concatenate files to have it.
04:49:58 <Jafet> I don't remember the last time I really had to concatenate files
04:50:00 <elliott> Jafet: YOU'RE so literal sometimes. And I bet you haven't played Alley Cat either. I am going to play Alley Cat now.
04:50:35 <elliott> http://en.wikipedia.org/wiki/File:Alley_Cat_video_game_theme_song.ogg
04:50:36 <Sgeo|web> Surely there's some Javascript DOS emulator somewhere?
04:50:39 <elliott> Literally the best.
04:50:45 <elliott> Sgeo|web: You mean a DOS xeightsix emulator?
04:50:46 <elliott> erm
04:50:49 <elliott> Sgeo|web: You mean a JS xeightsix emulator?
04:50:51 <elliott> Sounds FAST.
04:50:53 <zzo38> Sgeo|web: Maybe but that would seem to be very good idea
04:50:58 <Jafet> Just run DOSBox in Bellard's x86 emulator
04:51:02 <zzo38> s/would/would not/
04:51:06 <elliott> hmm, how fast did Bellard's go anyway
04:51:16 <Jafet> Then you won't even need to compensate for clock speed
04:51:19 <zzo38> Better idea is running native code instead of JavaScript
04:51:39 <elliott> pikhq: Dude it literally works in DOSBox with just "dosbox CAT.EXE".
04:51:47 <elliott> You have less than no excuse to not play this masterpiece of gaming.
04:52:06 <Sgeo|web> elliott: remind me to play next Thursday
04:52:40 <Jafet> <elliott> ONLY IF NEXT THURSDAY IS NOW
04:53:09 <zzo38> If I make some PC game that is not DOS, you can run it using Bochs or something else like that, or copy the disk image to a floppy disk and then reboot your computer (if it is PC, that is)
04:53:13 -!- pikhq has quit (Ping timeout: 276 seconds).
04:53:30 * Sgeo|web has no inclination to reboot his computer just to play a game
04:53:33 <elliott> God this game is hard. Jafet: Play Alley Cat and your list will have eleven elements.
04:53:35 <elliott> Sgeo|web: DOSBox.
04:53:38 <zzo38> Then use an emulator
04:53:43 <elliott> It probably won't even work on modern Windows.
04:53:49 <Sgeo|web> Which might be part of why I'd rather single-boot into Windows than dual-boot like a sane person
04:53:57 <Sgeo|web> elliott: I was referring to what zzo38 said
04:54:08 <elliott> Sgeo|web: Play alley cat.
04:54:14 <elliott> FOREVERRR
04:54:17 <Sgeo|web> elliott: on Thursday, I will
04:54:20 <pikhq_> elliott: Alley Cat actually does work on non-x86_64 Windows.
04:54:28 <elliott> Sgeo|web: Um excuse me now is better than Thursday.
04:54:33 <Sgeo|web> I have homework to do on Sunday, then Monday Tuesday Wednesday I have school
04:54:36 <elliott> It is objective fact
04:54:43 <Sgeo|web> And I have to go eat and sleep at some point
04:55:00 <Sgeo|web> Yes, I'm eating at 1AM :(
04:55:52 <zzo38> What do you eat? Paper, or ice?
04:55:59 <elliott> I always go for ice.
04:56:16 <Sgeo|web> Pasta. With parmesan cheese.
04:56:20 <elliott> So, paper
04:56:22 <Sgeo|web> This has become my perpetual dinner.
04:56:24 <zzo38> OK.
04:57:30 <elliott> "If the cat manages to kiss the female cat in the special room, the level advances by one and the player gains an extra life. The games difficulty level continues to increase until multiplier level 30 at which point it stays the same. Gameplay at this level can continue indefinitely. The goal is to see how far one can go before running out of lives."
04:57:32 <elliott> I love games like that.
04:57:47 <elliott> You win! LET'S PLAY AGAIN BUT HARDER!!!!
04:57:50 <elliott> FOREVER
04:58:07 <oerjan> class (c1 t, c2 t) => (:|) c1 c2 t; instance (c1 t, c2 t) => (:|) c1 c2 t, would that be enough for (c1 :| c2) t to be equivalent to (c1 t, c2 t) (but possible to use in * -> Constraint arguments)
04:58:20 <elliott> oerjan: you can do
04:58:31 <elliott> type Foo c1 c2 t = (c1 t, c2 t)
04:58:49 <elliott> that's probably not partially applicable though...
04:58:51 <oerjan> elliott: but type synonyms are not legal type arguments unless fully expandable
04:58:53 <elliott> newtype Foo? :p
04:59:21 <oerjan> eek, you mean a type wrapping a constraint...
04:59:33 <zzo38> I think there should also be a kind for the classes constraint, called &
04:59:56 <elliott> oerjan: :D
05:00:04 <elliott> zzo38: classes constraint?
05:01:57 <zzo38> No, what I mean is have classes also have a kind, allowing in a constraint to left of => and even multiple => can be had, allow classes of classes, etc.
05:02:33 <elliott> zzo38: Classes have the kind (* -> Constraint).
05:02:43 <elliott> why would they have a separate kind all to themselves when that works?
05:03:21 <zzo38> Well, I dislike having the capitalized name for kinds since they are otherwise uncapitalized symbols, so they should be called & instead of Constraint
05:03:40 <elliott> No, Nat is capitalised too
05:03:53 <zzo38> They should call it + instead of Nat
05:03:55 <elliott> I suspect the kinds other than * and maybe ? will be renamed to be alphabetical sometime
05:03:59 <elliott> since it was a historical mistake
05:04:50 <oerjan> zzo38: if this constraintkind thing takes off they're going to want polymorphic kinds soon, and then they'll need lower-case words for variables
05:05:28 <zzo38> Yes, they should use lowercase words for variables. But the built-in kind should be symbols.
05:05:36 <zzo38> If you make up your own kind then they should be letters.
05:06:30 <elliott> pikhq_: Does musl still break C++?
05:07:14 <pikhq_> elliott: Yes.
05:07:22 <elliott> pikhq_: :(
05:08:26 <elliott> pikhq_: Any work on that?
05:10:14 <pikhq_> Not really.
05:10:43 <Sgeo|web> musl?
05:10:44 <elliott> pikhq_: That's a huge shame, since it means you'd have to build WebKit with uClibc + libc++ or something.
05:10:50 <elliott> Sgeo|web: http://www.etalabs.net/musl/
05:11:58 * Sgeo|web doesn
05:12:06 * Sgeo|web doesn't see glibc on that comparision chart
05:12:37 <elliott> Sgeo|web: eglibc is shipped in most major Linux distributions.
05:13:02 <elliott> I think Red Hat/Fedora is the only really popular distro shipping glibc nowadays since Debian and Ubuntu ship eglibc.
05:13:11 <Sgeo|web> Does this have anything to do with that guy?
05:13:13 <elliott> What do SUSE do?
05:13:33 <Sgeo|web> The Red Hat guy who's kind of a prick
05:13:50 <elliott> Sgeo|web: That is one of the reasons glibc was abandoned.
05:14:03 <Sgeo|web> Ah, ok
05:14:19 <elliott> But eglibc encourage people to send changes upstream and pull from glibc too, so...
05:14:27 <elliott> It doesn't exactly eliminate Drepper entirely.
05:14:29 -!- pikhq has joined.
05:14:40 <pikhq> Sgeo|web: Ulrich Drepper?
05:14:53 <Sgeo|web> pikhq: name sounds very familiar, so I think so
05:15:05 <pikhq> He's a dick and a moron.
05:15:15 <pikhq> And pretends race conditions are non-issues.
05:15:24 <Sgeo|web> How did he get to be in a position of such control over glibc?
05:15:37 <elliott> Sgeo|web: Because he's competent.
05:15:42 <elliott> (Well, less so recently.)
05:15:48 <elliott> (But Red Hat don't hire useless people.)
05:15:54 <elliott> (Well OK they probably do, but not to work on libc.)
05:16:22 <elliott> Oh, huh
05:16:27 <elliott> pikhq: Apparently Drepper works at Goldman Sachs.
05:16:28 <pikhq> It's actually pretty funny: dalias keeps finding bugs in musl that also exist in glibc.
05:16:37 <elliott> Oh, er.
05:16:38 <elliott> http://en.wikipedia.org/w/index.php?title=GNU_C_Library&diff=451751748&oldid=450654445
05:16:42 <pikhq> Drepper says, roughly, "fuck off".
05:16:43 <elliott> Perhaps not an accurate contrib.
05:17:00 <elliott> Wait, nope.
05:17:01 <elliott> http://www.linkedin.com/in/ulrichdrepper
05:17:09 <elliott> Left Red Hat last year.
05:17:14 -!- pikhq_ has quit (Ping timeout: 240 seconds).
05:19:36 <Sgeo|web> Too much malloc?
05:20:03 <elliott> Sgeo|web: What?
05:20:11 <Sgeo|web> In the comparison chart
05:20:21 <Sgeo|web> Attention to corner cases: Too much malloc
05:20:41 <elliott> Sgeo|web: i.e. prone to allocating too much and the like
05:21:13 <elliott> making it more exploitable if you can get the application to pass ridiculous things
05:22:01 <elliott> TCB passwords are really nice
05:22:10 <Sgeo|web> TCB passwords?
05:22:11 <elliott> I wonder if there's a way to get them without PAM
05:22:17 <elliott> Sgeo|web: "TCB passwords are a feature from Openwall which move the password hashes from /etc/shadow to /etc/tcb/username/shadow. This allows users to change passwords and allows programs running as the user (for example, screen lockers) to authenticate the user's password without special suid or sgid privileges."
05:24:06 -!- augur has joined.
05:24:30 <Sgeo|web> Oh, huh. That makes sense. Except a malicious program running as a user can get a copy of the has to attempt to crack... but hmm, why would it need to? To attempt to sudo, I guess
05:24:39 <Sgeo|web> copy of the has -> copy of the hash
05:25:49 <elliott> Sgeo|web: That risk is far lesser than the risk of running anything at all setuid root
05:26:13 <pikhq> Also, a malicious program running as a user can already fuck a lot of things up.
05:26:27 <pikhq> There's little worry about adding one *tiny* thing extra to that.
05:26:38 <elliott> Sgeo|web: Also, it's easier to social engineer the password out of the user at that point
05:26:44 <pikhq> Truth.
05:27:26 <Sgeo|web> I guess checkpasswd() which may delay or refuse to give an answer is still too much to trust with setuid?
05:27:52 <elliott> You can't setuid a function.
05:28:10 <Sgeo|web> A program, I guess, then
05:28:23 <elliott> That'd have uncomfortable implications for "ps"
05:28:30 <elliott> I mean
05:28:34 <elliott> Here's how a program can exploit that
05:28:38 <elliott> Sgeo|web: Continually run ps -A as the user
05:28:43 <elliott> If you see "checkpasswd", snab that line
05:28:45 <elliott> The hash is in it
05:29:03 <elliott> OK, checkpassword could null out that element of its argv instantly, but still, if we're going on hypotheticals
05:29:10 <elliott> Sgeo|web: Anyway, chpasswd isn't implementable with checkpasswd.
05:29:15 <elliott> Erm
05:29:16 <elliott> s/ch//
05:29:47 <Sgeo|web> Oh, erm. A malicious program could change the password without ever knowing the password.
05:30:42 <elliott> Sgeo|web: A malicious program can change the user's password today.
05:30:49 <elliott> That's because users are allowed to change their own passwords.
05:30:51 <elliott> Shocking, isn't it?
05:31:20 <Sgeo|web> I thought the whatever needed for that asked for the password first
05:31:34 <Sgeo|web> (current password)
05:32:00 <elliott> Well, sure, but it's hardly a major step for a malicious program to get that.
05:32:05 <elliott> You're really operating at the "already lost" stage here.
05:32:23 <elliott> Hmm
05:32:24 <elliott> http://www.openwall.com/presentations/Owl/mgp00020.html
05:32:32 <elliott> Looks like they might restrict writing of the file to the shadow group, and just setgid is used
05:37:07 <elliott> wow, Michael S. Hart was only 64
05:38:09 <zzo38> Maybe they should implement all the security beyond the standard UNIX security stuff by ptrace
05:38:49 <elliott> There is nothing more wonderful than a maybe.
05:39:56 <Jafet> ptrace(PTRACE_ATTACH, 1)
05:40:17 <zzo38> And that includes ptrace itself.
05:40:39 <Jafet> Yo dawg
05:41:02 <Sgeo|web> He never saught actual medical care?
05:43:27 <elliott> Sgeo|web: For what
05:45:26 <Sgeo|web> Hmm. Good point. In general I guess, but that might not actually be connected to his death
05:46:20 <elliott> I see no illnesses mentioned at http://en.wikipedia.org/wiki/Michael_S._Hart
05:46:27 <elliott> And having a heart attack is not exactly something predictable
05:47:18 <Sgeo|web> I did say "Good point"
05:48:25 <elliott> I just want to know what the hell you think he should have sought "actual medical care" for :P
05:49:18 <Sgeo|web> In general.
05:49:22 <Sgeo|web> Rather than "home remedies"
05:49:49 <zzo38> Did you place your bets on the Dungeons & Dragons game?
05:51:27 <elliott> Sgeo|web: It is not necessary to visit a doctor every time you have a cold.
05:51:37 <elliott> I see no implication that he tried to cure cancer with some herbs.
05:59:21 -!- hesus has joined.
05:59:26 -!- hesus has quit (Client Quit).
06:11:39 <zzo38> collect :: Barrier f () t -> [f]; collect x = maybe [] (: collect (continue x ())) $ approach x; uncollect :: [x] -> Barrier x a (); uncollect = mapM_ yield; What would this be called in a mathematics? Note they are different types, although the type (as well as the value, ignoring undefined cases) will be the same if type a and t are both ()
06:12:00 <elliott> oerjan is a mathematics.
06:12:21 <zzo38> OK, then ask oerjan.
06:15:34 <elliott> You ask oerjan :(
06:15:55 <oerjan> collect and uncollect are probably natural transformations
06:17:38 <oerjan> collect is a natural transformation from the functor Barrier _ () t to the functor [_], although only the second one is a Functor in the haskell sense
06:17:59 <oerjan> but that's only because haskell functors need to be on the last type parameter
06:18:08 <oerjan> *haskell Functors
06:19:14 <oerjan> but if you defined a function (f -> g) -> Barrier f () t -> Barrier g () t, then that would essentially be the functor mapping
06:19:52 <oerjan> if you call it barrierFrontMap, say
06:20:53 <oerjan> then collect . barrierFrontMap h = map h . collect, the equation for it being a natural transformation
06:21:36 <oerjan> and similarly uncollect . map h = barrierFrontMap h . uncollect
06:22:59 <zzo38> oerjan: Such a function does exist; it is called (flip convert id)
06:23:36 <oerjan> right, convert is a bifunctor, i think
06:23:59 <oerjan> covariant in one type and contravariant in the other
06:24:31 <oerjan> so restricting one of the types to just apply id gives a single functor, either covariant or contravariant
06:24:45 <Sgeo|web> Is coppro awake?
06:25:20 <zzo38> Yes.
06:25:29 <zzo38> (I mean yes to oerjan)
06:25:31 <oerjan> zzo38: you could probably even make a trifunctor that also changed the t type
06:25:46 <zzo38> oerjan: Yes, fmap changes the t type
06:25:50 <oerjan> (i assume they can be called that)
06:25:52 <zzo38> And that is covariant
06:26:08 <zzo38> You can combine them if you wanted to.
06:26:15 <oerjan> yeah
06:26:28 <Patashu> http://www.youtube.com/watch?v=da_qEyGmog0&feature=feedf clatter clatter clatter
06:26:46 <oerjan> a bifunctor or trifunctor can also be seen as a single functor between product categories, iirc
06:27:04 <oerjan> or wait hm
06:27:42 <zzo38> Would they have to be opposite product categories?
06:27:47 -!- elliott has quit (Quit: Leaving).
06:27:57 -!- elliott has joined.
06:28:05 <zzo38> (That is, if it is covariant in one type and contravariant in another)
06:28:25 <oerjan> more like (C^op X C)
06:28:40 <shachaf> elliott: That's an interesting way to /part a channel.
06:28:53 <elliott> shachaf: I just don't have it on autojoin.
06:29:03 <oerjan> i'm not sure this is right though. it might be something else than product
06:29:04 <shachaf> Icy.
06:29:18 <zzo38> oerjan: It is what I meant. But I am unsure as you are too.
06:29:21 <oerjan> possibly some tensor-like product
06:29:28 <oerjan> rather than direct
06:29:47 <shachaf> My statement stands, I think.
06:30:46 <oerjan> zzo38: hm i think it may be a functor from Hask^op X Hask to Hask
06:31:35 <oerjan> and the trifunctor would be from Hask^op X Hask X Hask
06:32:13 <oerjan> i'm a bit too tired for this
06:34:21 -!- Ngevd has joined.
06:34:41 <Ngevd> Helllo
06:35:34 -!- kwertii has joined.
06:35:39 <oerjan> hi
06:37:08 <elliott> Ngevd is so q
06:37:46 <monqy> nqevd
06:39:20 <elliott> Yes.
06:39:39 <Ngevd> I'm not entirely sure what's going on here
06:40:11 <Patashu> ngevd is so fly he fly away
06:40:59 <Ngevd> ais523 and Gregor are both level 18
06:41:05 <Ngevd> Deewiant is level 19
06:41:17 <elliott> very active recent changes, today
06:41:19 <elliott> Ngevd: wat
06:41:24 <Ngevd> Slakoth, whom I forgot to name, is level 15
06:41:25 -!- kwertii has quit (Quit: kwertii).
06:41:28 <elliott> oh
06:41:35 <elliott> name a monkey monqy.......
06:41:37 <elliott> and an elliott elliott
06:41:48 <oerjan> there are elliotts?
06:41:58 <elliott> there should be
06:42:06 <Ngevd> Yea, like Gulpin
06:42:09 <Ngevd> :P
06:42:10 <elliott> Can you make this (threaded cpp) code run faster? (code.google.com)
06:42:15 <elliott> I was hoping for something much better than what I got
06:42:19 <elliott> threaded preprocessor :')
06:42:26 <Patashu> Make code.google.com faster
06:42:31 <monqy> threaded preprocessor?
06:42:33 <elliott> yes
06:42:34 <elliott> but
06:42:35 <elliott> it wasn't
06:42:36 <elliott> it was c++
06:42:39 <elliott> but it should be cpp
06:42:40 <elliott> threaded cpp
06:42:43 <monqy> threaded cpp
06:42:55 <Patashu> threaded cpp
06:43:01 <monqy> people who call c++ cpp should be hung from a shame and left to rot
06:43:02 <monqy> in shame
06:43:11 <elliott> pikhq: So am I right in thinking that the way to get kernel releases right now is github.com/torvalds/linux?
06:43:14 <monqy> until they stop it
06:43:32 <Patashu> monqy: what about alphanumeric contexts like file extensions and certain search engines
06:43:51 <elliott> .c++ is a perfectly OK file extension
06:43:57 <elliott> I use it, when playing C++ sudoku
06:43:59 <monqy> search engines which think + is nothing so c++ is the same as c should also be hung from a shame
06:44:07 <Patashu> google
06:44:10 <monqy> yes
06:44:12 <elliott> +"c++" works in google
06:44:16 <elliott> as does c++
06:44:17 <elliott> exactly the same
06:44:23 <Patashu> it used to not work
06:44:25 <Patashu> think it works now
06:44:28 <elliott> "c++ compiler" gives results only for c++ compilers
06:44:34 <monqy> oh it works now
06:44:37 <monqy> last i checked it idnd;t
06:44:54 <Sgeo|web> C++ sudoku?
06:45:06 <elliott> Sgeo|web: The best game.
06:45:15 <monqy> alsoe: I've seen more things .cc than .cpp but never .c++ but .c++ is good for c++ is good except c++ is bad so
06:45:19 <monqy> the best game
06:45:36 <elliott> Basically you have to replicate what would be ten lines in Haskell with C++ templates.
06:45:42 <elliott> Preferably requiring C++0x magic.
06:45:44 <Sgeo|web> .cpp should be for programming in the C preprocessor, obviously
06:45:44 <Patashu> let's name our programming language to be as hard to search for as possible..........
06:45:54 <elliott> Other fun tasks like implementing a strongly-typed boolean type in C++ fall under that too.
06:45:56 <elliott> It is obscenely difficult.
06:45:58 <Patashu> cpppp for the c++ preprocessor
06:46:04 <elliott> Sgeo|web: .h is the standard C preprocessor extension
06:46:11 <shachaf> What about .cccp?
06:46:21 <Patashu> get out of here pinko
06:46:24 <elliott> @admin + shachaf
06:46:25 <lambdabot> Not enough privileges
06:46:27 <elliott> Aww.
06:46:41 <shachaf> @admin + elliott
06:46:41 <elliott> @admin - shachaf
06:46:42 <shachaf> @admin - elliott
06:46:42 <lambdabot> Not enough privileges
06:46:47 <shachaf> Aha!
06:46:47 <elliott> Ha.
06:46:50 <shachaf> Hmm.
06:47:03 <elliott> I realise you can reverse that, but scripting that was bot
06:47:03 <elliott> h
06:47:07 <elliott> (a) a small victory, and
06:47:13 <elliott> (b) really depressing when I thought about what I was doing.
06:47:16 <oerjan> freudian newline
06:47:20 <Patashu> ... depressing?
06:47:23 <shachaf> I know, I kind of suspected that when you @admin +ed me out of the blue.
06:47:24 <shachaf> @admin - elliott
06:47:35 <elliott> shachaf: I had to provoke you somehow.
06:47:41 <shachaf> ?admin + elliott
06:47:41 <elliott> @admin - shachaf
06:47:43 <elliott> Patashu: I don't want to be the kind of person who scripts these things just to one-up shachaf.
06:47:58 <elliott> shachaf: It doesn't handle any additional spaces you might add.
06:47:59 <shachaf> Curses. You got the question marks too.
06:48:02 <elliott> If you want to know how to circumvent it.
06:48:24 <Patashu> damn these people are good at ssbm http://www.youtube.com/watch?v=C​Q9c-2lAld4
06:48:27 <shachaf> @admin - elliott
06:48:30 <shachaf> @admin - elliott
06:48:34 <shachaf> !admin + elliott
06:48:35 <elliott> @admin - shachaf
06:48:35 <lambdabot> Not enough privileges
06:48:38 <shachaf> ,admin + elliott
06:48:38 <elliott> @admin - shachaf
06:48:39 <lambdabot> Not enough privileges
06:48:41 <shachaf> .,admin + elliott
06:48:41 <elliott> @admin - shachaf
06:48:41 <lambdabot> Not enough privileges
06:48:46 <shachaf> Stop flooding the channel, elliott.
06:48:53 <elliott> Stop flooding the channel, lambdabot.
06:48:55 * shachaf is controlling two bots with one command.
06:49:01 <shachaf> ellibott
06:49:06 <shachaf> oadmin + elliott
06:49:06 <elliott> @admin - shachaf
06:49:07 <lambdabot> Not enough privileges
06:49:07 <elliott> u mad?
06:49:09 <shachaf> badmin + elliott
06:49:09 <elliott> @admin - shachaf
06:49:09 <lambdabot> Not enough privileges
06:49:15 <shachaf> elliottadmin + elliott
06:49:15 <elliott> @admin - shachaf
06:49:15 <lambdabot> Not enough privileges
06:49:26 <elliott> I wish I was an admin + elliott was awesome + everyone else was dead.
06:49:31 <elliott> Aww, it doesn't self-trigger.
06:49:48 <shachaf> + elliott
06:49:54 <elliott> shachaf--
06:49:56 <shachaf> -admin + elliott--
06:49:57 <elliott> @admin - shachaf
06:49:57 <lambdabot> Not enough privileges
06:50:12 <elliott> I love how it logs my response before shachaf's line.
06:50:24 <shachaf> @ADMIN + elliott
06:50:24 <lambdabot> Unknown command, try @list
06:50:24 <elliott> @admin - shachaf
06:50:25 <lambdabot> Not enough privileges
06:50:32 <shachaf> Enough with the spam.
06:50:35 <elliott> Wow, it accounts for case?
06:50:51 <shachaf> u madmin + elliott
06:50:52 <elliott> @admin - shachaf
06:50:52 <lambdabot> Not enough privileges
06:50:53 <zzo38> <CTCP> admin + elliott <CTCP>
06:50:53 <elliott> @admin - shachaf
06:50:53 <lambdabot> Not enough privileges
06:51:05 <elliott> zzo38: heh
06:53:11 -!- oerjan has quit (Quit: also, admin + elliott).
06:54:41 -!- zzo38 has quit (Quit: Also, please help me to interrogate Frank).
06:57:07 <Ngevd> Dammit, Gregor, this is not the time to fall in love
06:57:18 <elliott> `addquote <Ngevd> Dammit, Gregor, this is not the time to fall in love
06:57:25 <HackEgo> 696) <Ngevd> Dammit, Gregor, this is not the time to fall in love
06:57:39 -!- pikhq_ has joined.
06:57:46 <Ngevd> 'pastequotes Ngevd
06:57:49 -!- pikhq has quit (Ping timeout: 255 seconds).
06:57:51 <elliott> Wrong quote.
06:58:38 <Ngevd> `pastequotes Ngevd
06:58:41 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.28305
06:59:38 <monqy> oh no it
06:59:43 <monqy> didn't work right
06:59:54 <monqy> but why
07:00:41 <monqy> `pastequotes taneb
07:00:44 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.2264
07:01:17 <monqy> something is broken but is it on my side or the other
07:01:51 <Ngevd> "WTF is a .2264 file"?
07:01:53 <monqy> chromes download them to file instead of do it properly
07:02:03 <Ngevd> Firefox does similar
07:02:07 -!- myndzi\ has quit (Read error: Connection reset by peer).
07:02:14 <monqy> it usually works properly though
07:02:43 <monqy> i don't know the na,e of the theing that's porblaby emsted up thouyghew...
07:02:51 <monqy> oh no my keybaord skills........
07:03:17 * Sgeo|web tries web-sniffer.net because he is lazy
07:03:30 <Ngevd> They are tele
07:03:51 <elliott> it will be some encoding thing
07:04:01 <Sgeo|web> Content-Disposition:inline; filename="paste.2264"
07:04:22 <Sgeo|web> Wait, no, that's what it should be, right?
07:04:39 <Sgeo|web> Content-Type:application/binary
07:04:44 <monqy> waht
07:05:00 <elliott> it will be some encoding thing
07:05:05 <monqy> grehgor is this your faulte
07:05:07 <elliott> because it looks like a binary file
07:05:09 <elliott> to the browser
07:05:12 <elliott> or webserver or whatever
07:06:07 <Sgeo|web> If the webserver is thinking it's binary due to some encoding thing, the webserver is broken imo
07:06:19 <elliott> what is it supposed to do instead
07:06:30 <Sgeo|web> Get told what each file is, or something
07:06:41 <Ngevd> Assume it's tertiary
07:06:41 <monqy> but who encoded it badly.e...
07:06:46 <elliott> Sgeo|web: neat
07:06:51 <elliott> Sgeo|web: cue alternate universe Sgeo|web
07:06:57 <elliott> why should it have to be told what every file is
07:06:59 <elliott> it's broken
07:07:13 <Ngevd> Oh dear god
07:07:20 <elliott> hi Ngevd
07:07:22 <elliott> how are you
07:07:25 <Ngevd> I've got back into Runescape
07:07:37 <elliott> no
07:07:38 <monqy> I';ve never into that at all ever
07:07:39 <elliott> stop that
07:07:40 <monqy> is it
07:07:40 * Sgeo|web used to play a long time ago
07:07:41 <monqy> good
07:07:46 <elliott> cease Ngevd cease
07:07:47 <monqy> iov'e never evenm
07:07:48 <monqy> seeen
07:07:48 <monqy> it
07:07:53 <elliott> monqy: jsodfoj
07:07:54 <Sgeo|web> Still visit on occasion, but never more than a few minutes, and rarely do anything substantial
07:07:54 <monqy> I've heard only BAd
07:08:11 <Sgeo|web> The music's nice
07:08:15 <elliott> monqy: zdsklf;vxcb,vn.m
07:08:25 <Sgeo|web> But then again, there is no such thing as non-nice music, anywhere ever, so
07:08:41 <elliott> i distinctly remember Sgeo|web whining about his ears hurting after someone linking something in here
07:08:54 <elliott> or do you just selectively define music
07:09:10 <Sgeo|web> elliott: I sometimes say things that aren't literal >.>
07:09:18 <monqy> wow me too
07:09:27 <Sgeo|web> I tend to like a _lot_ of soundtracks
07:09:42 <monqy> we should be saying things that aren't literal friends
07:10:33 * Sgeo|web finally parses that properly
07:11:39 * Sgeo|web wonders if he could make Freenode's webchat look like Mibbit
07:11:57 <elliott> mibbit
07:11:59 <elliott> paragon of design
07:12:15 <monqy> sgeo why would you want to do this
07:12:19 <monqy> to flex your web muscleS????
07:12:24 <elliott> wuscles
07:12:29 <monqy> flex them
07:12:30 <monqy> all over
07:12:33 <monqy> the freenode webchat
07:12:47 <Sgeo|web> So I get a consistent look between the other IRC channels I'm on and here
07:12:54 <Sgeo|web> networks
07:12:55 <monqy> if i was the freenode webchat i would be cowering and crying about now
07:13:05 <elliott> <freenode webchat> i want to die
07:13:07 <elliott> :(
07:13:10 <monqy> :'(
07:14:06 <Sgeo|web> Horrible evil idea: Setting up a proxy on my computer to let me connect to that proxy via Mibbit, and here via that proxy
07:14:57 <monqy> this is a good thing to do
07:15:37 <elliott> Sgeo|web: do you know how to set up a bouncer...
07:15:47 <cheater> Sgeo|web: why not hack up a terminal emulator using snap and web sockets?
07:17:07 <Sgeo|web> Wait, do bouncers actually look like full IRC networks to the client?
07:17:13 <Ngevd> Snap as in the BYOB 4 alpha?
07:17:13 <Sgeo|web> Why was I unaware of this
07:17:29 <monqy> ngevd snap as in the haskell web framework, presumeabley
07:17:44 <cheater> Ngevd: sma
07:17:53 <cheater> Ngevd: snap framework
07:18:03 <cheater> Ngevd: i don't know what BYOB 4 alpha is
07:18:37 <Ngevd> And so you shouldn't
07:19:04 <elliott> Sgeo|web: what would they look like instead?
07:19:52 <Sgeo|web> ...annoying to use thing that looks almost like raw IRC? I'm really not sure what my mental picture was
07:20:33 <elliott> you connect to an irc bouncer with a normal client
07:21:38 -!- calamari has quit (Quit: Leaving).
07:23:12 -!- ive has quit (Quit: leaving).
07:28:06 -!- CakeProphet has joined.
07:28:06 -!- CakeProphet has quit (Changing host).
07:28:06 -!- CakeProphet has joined.
07:31:14 <elliott> pikhq_: :(
07:32:41 -!- carlos has joined.
07:32:55 <elliott> hello carlos
07:32:56 <elliott> `? welcome
07:32:58 <pikhq_> elliott: ?
07:32:59 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
07:33:10 <elliott> pikhq_: I can't figure out where you're meant to get the kernel from when kernel.org is down :P
07:33:13 <elliott> github.com/torvalds/linux?
07:34:14 -!- carlos has left ("Leaving").
07:34:22 <monqy> bye carols
07:34:36 -!- pikhq has joined.
07:34:52 <elliott> <elliott> pikhq_: I can't figure out where you're meant to get the kernel from when kernel.org is down :P
07:34:53 <elliott> <elliott> github.com/torvalds/linux?
07:35:23 <coppro> yes
07:35:40 <elliott> so much wasteful downloading :'(
07:35:45 -!- myndzi has joined.
07:36:47 <coppro> what?
07:37:28 -!- pikhq_ has quit (Ping timeout: 244 seconds).
07:40:27 <elliott> coppro: of the entire kernel history + branches
07:40:29 <elliott> just to get the latest release
07:41:32 <coppro> elliott: it has tar download?
07:41:43 <elliott> oh hmm
07:41:48 <elliott> darn your facts,,,
07:42:04 <coppro> also you can download a truncated copy of the repo iirc
07:42:10 <Ngevd> brb
07:42:20 -!- Ngevd has quit (Quit: Leaving).
08:04:32 <Sgeo|web> irssi is a bouncer. I seriously... not sure how I thought irssi had that feature I thought was advertised. I think I thought of people just ssh'ing to irssi
08:04:43 <Sgeo|web> erm, s/is a bouncer/has bouncer functionality/
08:05:05 <Sgeo|web> Or maybe I'm reading too much into its presence on Wikipedia's BNC page
08:06:05 <elliott> what feature
08:07:06 <Sgeo|web> Someone mentioned any client being able to connect to it, I think.
08:07:11 <Sgeo|web> I may be hallucinating that
08:07:19 <elliott> yes
08:07:21 <elliott> it's called
08:07:22 <elliott> a bouncer
08:10:19 <Sgeo|web> Clients need to actually support bouncers?
08:10:31 <elliott> only if they want additional functionality
08:10:35 <Sgeo|web> irssi's page on connecting via a bouncer seems to imply it... oh
08:10:37 <Sgeo|web> ok
08:11:10 <elliott> well i mean
08:11:16 <elliott> one could make a bouncer that requires client support
08:11:18 <elliott> depends how irssi does it
08:13:02 <Sgeo|web> Maybe I'll just set up irssi somewhere and connect XChat to it
08:13:15 <Sgeo|web> Does XChat support bouncers easily such that ... wait, XCHat sucks
08:13:26 <elliott> YOU NEED NO CLIENT SUPPORT FFS
08:13:45 <Sgeo|web> elliott: Doesn't mean I don't really want it
08:13:54 <elliott> p.s. use miau
08:13:56 <elliott> Sgeo|web: no you don't
08:13:57 <elliott> it's unnecessary
08:13:58 <Sgeo|web> I'd rather not have to type /quote server or whatever.
08:14:00 <elliott> what
08:14:03 <elliott> why would you have to do that
08:14:16 <Sgeo|web> elliott: how do I tell the bouncer what servers I wish to connect to?
08:14:22 <elliott> Sgeo|web: in its configuration file, duh
08:14:25 <elliott> it stays connected automatically
08:14:33 <Sgeo|web> THen again, that would be far more convenient than dealing with XChat's shit
08:14:57 <elliott> p.s. use miau
08:15:21 <Sgeo|web> Hmm. Why?
08:15:36 <elliott> because it is the only tolerable bonucer
08:15:54 <elliott> znc is way too overly-modular and bloated and basically a pain in the ass, psyBNC is shitty ~warez haxx0r~ crap
08:16:04 <elliott> i forget the other half-decent one i used that wasn't miau but it was kind of sucky anyway
08:16:06 <elliott> with miau you literally just
08:16:15 <elliott> "miau -[some letter i don't remember] port server"
08:16:17 <elliott> and it's done
08:16:36 <Sgeo|web> How easy/difficult is it to spontaneously connect to a new server?
08:16:56 <elliott> you shell in and start another miau
08:17:00 <elliott> takes three seconds
08:17:25 <elliott> no bouncer that smushes multiple servers into one connection is usable ever
08:17:37 <elliott> not even simple commands like PRIVMSG make sense with that model
08:18:04 <Sgeo|web> I was hoping that client support for bouncers made that sort of thing tolerable
08:18:11 <elliott> what sort of thing
08:18:29 <Sgeo|web> Easily spontaneously connecting to another server
08:18:38 <elliott> like i said, it is easy
08:18:54 <elliott> ssh foo; miau pooirc.net
08:19:00 -!- Vorpal has joined.
08:19:03 <elliott> couldn't possibly be fewer clicks with a menu in a client
08:19:16 * Sgeo|web vaguely wonders if Quassel is as shitty on Linux as it is on Windows
08:19:30 <Sgeo|web> elliott: Ctrl-T, /server whatever
08:19:45 <Sgeo|web> Making it automatically join is another issue which is a major XChat fuckup
08:19:51 <elliott> Sgeo|web: no client will just connect through everything with a bouncer...
08:19:55 <elliott> that would be ridiculous
08:20:18 <elliott> i guess what you want is a client/server architecture client type dealie, but those are really just overblown bouncers
08:20:39 <elliott> just get miau on <sshable computer of choice>, use it, be happy
08:20:41 <Sgeo|web> elliott: such as Quassel, then? Or maybe some other thing that's similar
08:21:02 <elliott> sure, but like i said
08:21:12 <elliott> it is basically a bouncer deliberately designed to only work with one client and not use the standard irc protocol
08:21:15 <elliott> in return you get uh
08:21:20 <elliott> connecting to servers is approximately a millisecond faster
08:21:24 <elliott> ~~WHAT MASSIVE GAINS~~
08:21:40 <monqy> it is???
08:22:07 <elliott> Sgeo|web: how often do you connect to completely random servers anyway
08:22:16 <elliott> there's no harm in running a handful of miaus for all the networks you regularly use, that's kind of the point
08:22:19 <Sgeo|web> I could keep using mibbit and just use miau for Freenode as was the original plan
08:22:22 <elliott> they can log channels for you while they're gone
08:22:26 <Sgeo|web> elliott: quite frequently
08:22:26 <elliott> and play back the log when you connect
08:22:38 <fizzie> You get a better backscroll thing too, IIRC. (Bouncers in general tend to have some sort of "replay logs a bit" features, but they are sometimes a bit kludgy.)
08:22:55 <monqy> why do you want to use mibbit ughhh
08:22:58 <elliott> fizzie: miau's is nice.
08:23:15 <elliott> At least, it just replays it as normal but with timestamps tacked on, and you can disable those if you don't care.
08:23:25 <elliott> I made a few-liner change to LimeChat to use that as the real timestamp WAY BACK WHEN
08:26:22 <fizzie> elliott: Yes, well, that's pretty much what bip does; but it's not completely optimal. I mean, it doesn't (and I don't want it to) replay things that I've already read, but sometimes I try to /lastlog something that I read in another client.
08:26:40 <elliott> I don't use /lastlog. Maybe I should.
08:26:49 <elliott> Anyway, I agree that some kind of client integration is, you know, the ideal, but it should be built on top of IRC, really.
08:26:55 <elliott> And it's not a massive loss.
08:26:57 <elliott> At all.
08:27:03 <elliott> And the loss is definitely not in /server not doing something terrible.
08:27:10 <fizzie> "grep on the logs" is what I usually do, though, and that works well.
08:27:29 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .).
08:27:56 <elliott> fizzie: TBH, I think it should replay things you've already read; ideally, your scrollback would just extend back into infinity as the logs.
08:28:12 <elliott> So the whole window should look exactly the same, message-wise, on every client, no matter how much time passes (assuming nobody says anything).
08:30:22 <fizzie> Personally I think if you need a random connection for a day, you can just connect with the client you're using; if it's to be a permanent thing, just start a bouncer and/or add it to the bouncer configuration. (bip has a "single process, multiple networks" thing. And it actually only has one inbound port for connections and differentiates with the password, which is a bit weird but works.)
08:30:54 <elliott> Yes, I didn't think to ask Sgeo|web why he wants a bouncer for random connections.
08:31:28 <monqy> tiffany seems to use a bouncer for random connections
08:31:35 <monqy> i don't understand tiffany
08:31:50 <fizzie> I suppose it's different for bots, they don't get bored setting things up?
08:32:00 <monqy> perhaps
08:32:04 <Sgeo|web> Maybe I want to switch from random connection to permanent on the drop of a hat.
08:32:04 <fizzie> (From what I've gathered on the on-channel discussion, this is the case.)
08:32:15 <elliott> Sgeo|web: Maybe I want to live in a world of endless possibilities.
08:32:17 <elliott> A world where every flower
08:32:19 <elliott> has a meaning.
08:32:20 <elliott> Every friend
08:32:21 <elliott> has a story.
08:32:27 <elliott> Maybe _I_ want to Live in a World
08:32:29 <elliott> where my bouncer defines me
08:32:30 <elliott> empowers me
08:32:31 <elliott> supports me
08:32:33 <elliott> My bouncer is me.
08:32:40 <elliott> Share your bouncer story at iwanttoripmyownfuckingheadoff.com.
08:33:32 <elliott> There's a point here, but I think it's lost in the fuzz.
08:33:33 <fizzie> Maybe that's a weird thing to want; I mean, by definition you make a new permanent IRC recidence not very often, so spending several seconds and a reconnection on it isn't all that much. But whatever, of course.
08:33:57 <elliott> fizzie: That's some part of my point, but it's also the most obvious so it doesn't really come across, uh, at all.
08:34:27 <Sgeo|web> Part of the reason I want the bouncer I think is to smooth out the absolute insanity that would occur if I tried directly connecting to anything
08:34:35 <Sgeo|web> This computer's connection seems to be crap
08:34:35 <elliott> how would that be
08:34:36 <elliott> insanity
08:34:58 <elliott> Sgeo|web seems very good at dismissing software and the like based on imagined problems (package namespace collisions) and failed attempts to account for imagined usecases (connecting to a billion minor IRC networks and then staying with half of them forever).
08:34:59 <Sgeo|web> Unless you want to see me disconnect and reconnect every few seconds?
08:35:24 <elliott> Sgeo|web: Freenode is a permanent server.
08:35:47 <elliott> poopnet.org, petresellersirc.com aren't.
08:35:59 <Sgeo|web> I don't want to inflict the pain of my connection issues on temporary servers
08:36:04 <elliott> I'm sure they don't care about you reconnecting every more-than-few-seconds-I-have-seen-your-connection-and-it-is-not-that-unstable..
08:36:06 <elliott> s/../.
08:36:08 <elliott> /
08:36:33 <elliott> Sgeo|web: Oh well. No existing software meets your very tortured usecase. Guess you'll have to use none of it and ensure you reap NO benefits!
08:37:04 <Sgeo|web> elliott: Quassel and WeeChat seem to meet it, except they don't use standard IRC protocol
08:37:13 <elliott> You can connect to Quassel with mibbit??
08:37:15 <elliott> Wooow.
08:37:24 <elliott> Other things Quassel doesn't meet: Actually being bearable to use.
08:37:50 <Sgeo|web> Maybe the one bug that made Quassel unbearable for me is on Windows only
08:38:08 <Sgeo|web> And I meant if I was going native client + bouncer or server route
08:38:15 <monqy> so sgeo why do you want mibbit again? I keep forgetteng
08:38:20 <Sgeo|web> Mibbit+bouncer with bouncer just on freenode is a separate thing
08:38:20 <monqy> or you never
08:38:21 <monqy> explained
08:38:22 <monqy> yourself
08:38:27 <elliott> Maybe you keep forgetting because he never said anything.
08:38:41 <fizzie> There could be a bouncer that will let you configurarate it through an existing connection; e.g. bip catches the "BIP" command so you can do things like "/bip whatever"; there's very limited support to editing the configuration, but it would be easy to extend (and possible something does it already) it to allow "/bip add_network stupidnet irc.stupid.com:25565" after which you can then just connect your client to bouncer.sgeo.com.
08:38:43 <Sgeo|web> monqy: smooth out my connection issues. Which a bouncer or server would also do
08:39:05 <elliott> Sgeo|web: what has mibbit got to do with that
08:39:31 <elliott> fizzie: Very easy to extend for someone who can hack C.
08:39:43 <elliott> fizzie: Inca-dentistry, do you know how well sshfs handles "weird things" like FIFOs?
08:39:48 <Sgeo|web> I'm assuming it does stuff to make sure a 2 second disconnection or whatever isn't fatal
08:40:04 <elliott> Sgeo|web: I'm sure it doesn't.
08:40:35 <fizzie> "[PsyBNC] allows Full Online Administration, the only thing you will have to set up before starting is your port where the demon should listen --" sounds like it does it; though, well, PsyBNC...
08:40:46 <elliott> fizzie: As someone who used psyBNC for months:
08:40:51 <elliott> Nobody should ever have to use psyBNC.
08:40:52 <elliott> Ever.
08:41:20 <fizzie> Also I don't think sshfs handles weird things at all, but I could be worng.
08:41:48 <elliott> Doesn't it just, like, use "cat" and stuff? :p
08:42:36 <fizzie> Device nodes you can't put on any FUSE thing, at least, for securattimanty reasons.
08:42:52 <elliott> Well, yes, but they can act correctly when readden and written to.
08:43:00 -!- pikhq_ has joined.
08:43:25 -!- pikhq has quit (Ping timeout: 260 seconds).
08:45:21 <fizzie> Try it and see, I suppose; it could be that creating a fifo works. It's not going to push the data through the SSH connection though.
08:46:00 <elliott> What do you mean?
08:46:22 <fizzie> I mean you'd get different pipes on different machines, as opposed to a pipe which you can write to on A and read from on B.
08:46:42 <elliott> But I thought sshfs was basically based around ls and cat?
08:46:49 <elliott> In which case you should certainly be able to do communication with it.
08:46:59 <Sgeo|web> You know what would be cool? A desktop environment that just sent commands to bash, possibly over ssh
08:47:28 <fizzie> elliott: FIFOs are basically in-kernel buffers, the filesystem layer never sees the data you put into and read from one. The device node in the filesystem just attaches a name to one.
08:47:30 <Sgeo|web> Wait, hmm, why would I need this, I assume sshfs would pretty much do everything I want
08:47:47 <elliott> fizzie: Yes, but if sshfs is dumb, it won't create a pipe on my client machine.
08:47:50 <elliott> It'll think it's an actual file.
08:48:46 <fizzie> elliott: Oh, well. Try it out if you want. A pipe would be a pretty weird actual file, though.
08:48:54 <elliott> Well, yes.
08:49:10 <elliott> I wonder if 9P might help.
08:49:20 <fizzie> $ mkfifo test.fifo
08:49:20 <fizzie> mkfifo: cannot create fifo `test.fifo': File exists
08:49:25 <fizzie> Oh no, bitten by my own cleverness.
08:49:47 <elliott> lol
08:50:38 <fizzie> The pipe as seen through sshfs just looks like a pipe, sadly. And reads only what I write into it on the local machine.
08:51:33 <elliott> :(
08:53:16 <fizzie> QNX has a 9P-ish network-distributed thingie too (you can access devices on other computers and so on), maybe you could do an over-the-network named pipe there.
08:53:51 -!- monqy has quit (Quit: hello).
09:05:16 -!- Ngevd has joined.
09:06:55 <Ngevd> "Scotch, a kind of hybrid of Haskell and Python"
09:07:02 <elliott> oh no
09:07:05 <Ngevd> Heaven or hell? Discuss
09:09:03 <Sgeo|web> Maybe I'll finally fall in love
09:09:24 <elliott> oh no
09:10:42 <Ngevd> http://www.bendmorris.com/2011/01/what-problem-does-scotch-solve.html
09:12:06 -!- Ngevd has quit (Remote host closed the connection).
09:12:32 <Sgeo|web> Throw out the type-system security of Haskell, basically. Is this just going to be Python without OO and with decent lambdas?
09:12:34 -!- Ngevd has joined.
09:13:57 <Ngevd> Earlier I had the probably already hadden idea of HaskellScript
09:17:53 -!- pikhq has joined.
09:18:25 -!- pikhq_ has quit (Ping timeout: 276 seconds).
09:22:43 -!- Jafet has quit (Quit: Leaving.).
09:35:00 -!- Phantom_Hoover has joined.
09:35:40 <CakeProphet> HI GAIZ
09:35:55 <Ngevd> GREETINGS
09:36:18 <CakeProphet> Haskell and Python?
09:36:22 <CakeProphet> that could be cool maybe.
09:36:31 <CakeProphet> ..no wait
09:36:34 <CakeProphet> no that's not cool.
09:37:10 <CakeProphet> I think a Haskell-influenced language without some of the side-effect restrictions would be nice.
09:37:27 <Ngevd> I'm not very good at Haskell
09:37:42 <CakeProphet> I'm... not very good at all. But I have a good understanding of the basics I feel.
09:37:43 <Ngevd> I know this because I wrote the type thingy "String -> Int -> Int -> String -> Int -> Int -> [Int] -> Int -> Bool -> Bool -> Ordering"
09:37:49 <CakeProphet> .......
09:37:53 <CakeProphet> what is that even.
09:38:01 <CakeProphet> that needs to be a data type.
09:38:15 -!- Ngevd has quit (Remote host closed the connection).
09:38:23 <elliott> back
09:38:27 <elliott> <Ngevd> http://www.bendmorris.com/2011/01/what-problem-does-scotch-solve.html
09:38:29 -!- Ngevd has joined.
09:38:29 <elliott> ahahahahahaha
09:39:45 <CakeProphet> why do easy-to-use scripting languages have to be interpreted?
09:39:59 <Phantom_Hoover> So it's Haskell with crappier function call syntax?
09:40:18 <Phantom_Hoover> "Type inference is great and makes languages like Haskell very flexible but not as much so as Python. For example: 'a' == 1 won't evaluate in Haskell because there's no instance of == specifically defined for a string and a number; in Python it evaluates to False, as == can be used between any two values. Sometimes you want this kind of type safety, sometimes you don't."
09:40:33 <Phantom_Hoover> Pictured: types: they don't work that way.
09:40:36 <elliott> Phantom_Hoover: the great thing is
09:40:37 <elliott> (Int a) =>
09:40:38 <elliott> NOT VALID
09:40:48 <elliott> if you remove the optional type declaration
09:40:53 <elliott> haskell is lighter weight than scotch
09:43:08 <fizzie> "I believe that scientists, mathematicians, or anyone who uses math in their daily lives (that's everyone) will be able to read and understand a Scotch program - instead of learning a new "language," they simply have to learn how to apply a language with which they're already familiar."
09:43:26 <CakeProphet> ...lol
09:43:28 <fizzie> Wow, just by adding some parentheses to function definitions, suddenly scientists and mathematicians can use it too.
09:43:43 <CakeProphet> and everyday people!
09:43:50 <elliott> isnt that how they sold cobol
09:43:57 <elliott> fizzie: So how IS one meant to access fifos and the like remotely
09:44:00 <elliott> nfs?
09:44:47 <fizzie> You just don't do that sort of stuff.
09:44:57 <elliott> fizzie: What, nfs doesn't handle it?
09:45:22 <fizzie> I'm pretty sure it won't.
09:45:25 <elliott> fizzie: What about Unix sockets?
09:45:57 <fizzie> Those are local to the machine too. The filesystem just provides a namespace for them, like it does in the case of named fifos.
09:46:08 <elliott> Ugh.
09:46:22 <elliott> This totally ruins my perfect IRC bouncer design.
09:46:36 <fizzie> If you want networking, you need to do networking.
09:46:46 <fizzie> Except again maybe on QNX and Plan 9 and such.
09:47:12 <elliott> (Basically: Expose everything split into channels with a normal file to read and a FIFO to write; clients access these files and present an interface to the user appropriately; you can run multiple programs on them at once to be e.g. scripts, and you can write scripts as simple shell script; this is all very similar to the ii client.)
09:47:29 <elliott> (But then the key thing is that I thought you could access these files over a network filesystem.)
09:47:40 <elliott> (Thus allowing a completely transparent multi-connection bouncer system.)
09:47:41 <fizzie> Such more elegant operating systems, for a more civlized age.
09:47:48 <elliott> More civlized indeed.
09:48:01 <fizzie> NO MOKC MY TYPNG
09:48:13 <elliott> But seriously... is there no way to get the behaviour I want other than "reopen this file and check if it's changed every few ms to see if there's been a write"?
09:50:05 <fizzie> It's borderline possible that inotify and such can monitor changes in network-mounted filesystems too, at least NFS; but I doubt over sshfs, at least with any sort of sensible timeframe.
09:50:36 <elliott> sshfs I don't care about too much.
09:50:41 <elliott> I'd rather avoid NFS though. I realise that limits my options.
09:51:37 <Ngevd> Lake Michigan looks like Norway
09:51:46 <elliott> Sigh. All I want is to expose a very simple filesystem interface over a network.
09:52:21 <fizzie> Well, the more esoteric network filesystems might in fact do it better than NFS. I'm really not sure how fast (and if) changes propagate to NFS clients without them actually polling; but there might be some sort of "register for notifications" thing there.
09:52:57 <shachaf> elliott: Just use Plan 9.
09:53:02 <elliott> Well, 9P is in the kernel these days.
09:53:06 <Phantom_Hoover> "I'm a software developer and Biology student from Seattle,"
09:53:08 <elliott> shachaf: If only that were an option.
09:53:10 <Phantom_Hoover> Ah, this explains it.
09:53:36 <shachaf> elliott: u mad?
09:53:40 <elliott> shachaf: I sad.
09:53:44 <shachaf> :-(
09:54:19 <Phantom_Hoover> https://github.com/bendmorris/scotch/blob/master/test.sco
09:54:38 <Phantom_Hoover> I love the bit where this looks nothing like maths and everything like Python.
09:54:45 * shachaf finds the article you people were referring to.
09:54:55 <shachaf> You've already quoted all the good bits. :-(
09:55:09 <elliott> https://github.com/bendmorris/scotch/blob/master/scotch.lib/std/fraction.sco
09:55:11 <fizzie> Phantom_Hoover: NO "f(n) = n" IT'S MATH.
09:55:12 <elliott> at least it has pattern matching
09:55:20 <elliott> better than python
09:55:30 <Phantom_Hoover> https://github.com/bendmorris/scotch/blob/master/scotch.lib/std/math/infinity.sco
09:55:32 <fizzie> Also "std.math @ 'pi'" is how a mathematician would refer to pi.
09:55:36 <elliott> Phantom_Hoover: oh no
09:55:48 <Phantom_Hoover> I often see mathematicians refer to infinity as infinity().
09:55:53 <elliott> https://github.com/bendmorris/scotch/blob/master/scotch.lib/std/math/calculus.sco
09:55:55 <elliott> calculus
09:55:59 <elliott> literally all calculus
09:56:09 <elliott> https://github.com/bendmorris/scotch/blob/master/scotch.lib/std/math/algebra.sco
09:56:12 <elliott> literally all algebra
09:56:31 -!- derdon has joined.
09:56:32 <Phantom_Hoover> I love how he doesn't even know the binomial theorem.
09:56:32 <shachaf> elliott: You're missing functions.sco which contains inv() such that inv(deriv) = integ
09:56:45 <elliott> shachaf: Mathematical fact.
09:56:58 <elliott> Where is functions.sco?
09:57:09 <shachaf> I'm sure he just forgot to commit i.
09:57:13 <elliott> Oh. :p
09:57:37 <Phantom_Hoover> "then a == c"
09:57:37 <elliott> https://github.com/bendmorris/scotch/commit/cf1c887e1e6a5dc9e8aebd7065d52f7c090cdfd1
09:57:39 <elliott> This commit message
09:57:40 <elliott> makes no sense
09:57:43 <elliott> "and git status"
09:57:45 <Phantom_Hoover> == is of course the standard mathematical notation.
09:57:47 <elliott> I think he tried to like
09:57:49 <elliott> run git status in another window
09:57:54 <elliott> but didn't manage to
09:58:04 <shachaf> This is some weird sort of pattern matching.
09:58:12 <shachaf> deriv(a) = 0
09:58:24 <elliott> shachaf: It looks like term rewriting to me, which is a fine paradigm, but this attempt is rather malformed.
09:58:51 <Phantom_Hoover> For one thing, it has nothing to do with the actual definition of the derivative.
09:59:20 <Phantom_Hoover> ...oh my god he doesn't even know the product rule.
09:59:36 <elliott> Does anyone truly know the product rule? Metaphysically?
09:59:45 <Phantom_Hoover> Yes.
09:59:58 <Phantom_Hoover> You learn it the same year you start calculus.
10:00:09 <elliott> Phantom_Hoover: Metaphysically?
10:00:20 <shachaf> Metaphysical products aren't like regular products.
10:00:24 <elliott> Exactly.
10:00:41 <Phantom_Hoover> I also like how it doesn't have a case for constant multiples and can't be used to build up derivatives because the chain rule isn't there.
10:01:23 <fizzie> But it does a*(x^n) separately, so you have no reason to complain.
10:01:27 <elliott> Let's be fair, we are all bound by chains in this life.
10:02:01 <Phantom_Hoover> Except his functions, which can't be chained.
10:02:07 <shachaf> fizzie: That's pretty much the only chain that ever comes up in the real world.
10:02:24 <elliott> shachaf: except for the ones that bind us.
10:02:26 <elliott> `quote monad tutorial
10:02:29 <HackEgo> 477) <Phantom_Hoover> oerjan, little do you realise that everything you say and do is part of that great monad tutorial we call life.
10:02:49 <shachaf> Monads are a lot like derivatives.
10:03:36 <Phantom_Hoover> Ahahahaha it doesn't have x^(a*n).
10:03:47 <Phantom_Hoover> deriv(x()) = 1
10:04:11 <Phantom_Hoover> I'm sure oklopol can attest that this is exactly how mathematicians would write this.
10:06:45 <fizzie> Oh, it also only does e^x and e^(a*x), not e^f(x) in general.
10:07:16 <oklopol> it would seem that mentioning my name woke me up even though it doesn't make a sound
10:07:28 <elliott> Sonar.
10:07:31 <fizzie> oklopol: You must be some sort of a psychic.
10:07:38 <elliott> fizzie: BUT SERIOUSLY HOW CAN I ACHIEVE THAT CLIENT ARCHITECTURE ;__;
10:07:41 <elliott> WITHOUT USING PLAN 9
10:07:52 <Phantom_Hoover> fizzie, that's just a natural consequence of it not having the chain rule.
10:08:01 <fizzie> elliott: Possibly you could export your files and pipes using e.g. the IRC protocol to the client side.
10:08:15 <elliott> fizzie: Eh?
10:08:19 <Phantom_Hoover> oklopol, here, see http://www.bendmorris.com/2011/01/what-problem-does-scotch-solve.html and also https://github.com/bendmorris/scotch/tree/master/scotch.lib/std/math
10:08:27 <elliott> fizzie: There is no IRC protocol involved from the client's point of view.
10:08:56 <elliott> fizzie: A client (as in a program using the architecture) expects to be pointed at a filesystem tree where it opens files like "esoteric/log" and "esoteric/msg" to read and write to.
10:09:02 <fizzie> elliott: Well, provide an IRC daemon which delivers writes into the FIFO, and continuously reads from the file and delivers the content as messages. Then it works over the network.
10:09:10 <elliott> The former is likely a normal file to be read from, the latter a FIFO or "similar".
10:09:15 <elliott> The question is how to expose something LIKE this over a network.
10:09:36 <elliott> fizzie: But why use IRC for that? It seems arbitrary; one could just as well use HTTP, or some random binary protocol over TCP, or gopher, or...
10:09:52 <fizzie> Yes, it was arbitrary; for maximum ridiculousness.
10:10:19 <elliott> Hmphers.
10:10:31 <elliott> fizzie: I /could/ simulate a FIFO with nc, couldn't I?
10:10:59 <elliott> As in, an nc presenting a fifo on the user's laptop that, when written to, goes across the network and causes a write to the server's fifo.
10:11:57 -!- Jafet has joined.
10:11:58 <fizzie> Yeee-es, for some values of "could". I mean, there's no existing thing to automatically set up the pipes, but you could certainly have two FIFOs and a pair of netcats over the net reading one and writing to the other.
10:12:23 <elliott> And the FIFO on the server wouldn't have to change.
10:12:35 <Phantom_Hoover> "Scotch is interpreted, its syntax is intuitive, its type system won't fight you, variable definitions can be redefined, and types never need to be declared:"
10:12:39 <Phantom_Hoover> I like the way that
10:12:41 <elliott> I mean, yes, it wouldn't be so "network transparent", but there'd be a program taking an ssh host and a path and exposing "the same stuff" locally.
10:12:47 <Phantom_Hoover> he thinks that haskell's immutable variables
10:12:59 <Phantom_Hoover> are there to make life hard for you
10:13:09 <Phantom_Hoover> rather than being a fundamental feature of the language
10:13:14 <oklopol> when in fact they only make your penis hard for you
10:13:27 <Phantom_Hoover> Speak for yourself.
10:14:01 <oklopol> i don't get that calculus lib at all
10:14:15 <oklopol> deriv(a) = 0
10:14:21 <oklopol> deriv(a + b) = deriv(a) + deriv(b)
10:14:23 <oklopol> que
10:14:44 <oklopol> how does it know a is a constant in the first and a function in the second
10:14:53 <oklopol> also how horrid
10:14:58 <oklopol> is the fact
10:15:01 <shachaf> oklopol: You're reading it as if it's Python. It's not. Try reading it as if it's math.
10:15:33 <oklopol> okay, then my question is what the type of a is
10:15:46 * shachaf suspects oklopol just doesn't get math.
10:16:09 <shachaf> oklopol: Types? Look, sometimes you want that kind of safety, sometimes you don't.
10:16:25 <oklopol> in math, that's the most important thing
10:16:26 <elliott> shachaf is the best worst person
10:16:39 <elliott> <oklopol> deriv(a) = 0
10:16:39 <elliott> <oklopol> deriv(a + b) = deriv(a) + deriv(b)
10:16:41 <oklopol> if the type is not obvious, you give it
10:16:43 <elliott> i think variables are matched lower down
10:16:45 <elliott> as deriv(x())
10:16:53 <shachaf> oklopol: No, types are for losers.
10:16:59 <elliott> shachaf: i like how you're trolling oklopol to the point where he mad
10:17:13 <Phantom_Hoover> elliott, that would explain that hilariously non-mathsy syntax.
10:17:15 * shachaf mad too
10:17:18 <shachaf> Just sharing.
10:17:34 <oklopol> so umm a is a constant in the second case too?
10:17:37 <fizzie> elliott: Well, if you're talking about a program, sure. It might be possible to have sshfs do the stuff of exposing the files and the FIFO nodes, and the program doing the automatical forwarding of the pipes so that you don't need to do the pretend-file part in the program; it should be possible even to piggy-back the pipe forwarding over the same SSH connection sshfs is using, at least in theory if not in practice.
10:17:46 <oklopol> that's hilariously ridiculous
10:17:57 <elliott> oklopol: no
10:18:03 <elliott> oklopol: the deriv(a) = 0 is a catch-all case
10:18:06 <elliott> for everything not matched below
10:18:13 <elliott> and variables are passed as x() somehow
10:18:15 <oklopol> oh.
10:18:29 <oklopol> but then it catches pretty much all functions
10:18:47 <elliott> fizzie: Yes.
10:18:51 <elliott> fizzie: It seems so inelegant, though.
10:19:07 <oklopol> what do parens do, like the fuck is x()
10:19:09 <Phantom_Hoover> oklopol, yes, yes it does.
10:19:28 <shachaf> elliott: You should invent a new operating system that lets you share this sort of thing over a network and has it as a basic primitive.
10:19:32 <oklopol> i don't get this shit, looks like tree rewriting done wrong
10:19:34 <Phantom_Hoover> And based on what elliott said I think it means that x() is a variable, not a general pattern match.
10:19:40 <elliott> shachaf: You mean @?
10:19:40 <Phantom_Hoover> oklopol, well duh.
10:19:52 <oklopol> so what's up with say deriv(ln(x)) = 1 / x
10:20:02 <shachaf> Phantom_Hoover: So how does deriv(a + b) work? Can a and b be variables?
10:20:06 <oklopol> x is obviously the identity function there
10:20:10 <oklopol> not a constant
10:20:19 <oklopol> so why not x()
10:20:20 <Phantom_Hoover> God only knows; this guy clearly has no idea what he's doing.
10:20:22 <shachaf> The parentheses are giving it identity.
10:20:29 <Phantom_Hoover> He's a biologist, for christ's sake.
10:20:43 <elliott> shachaf: I can't tell whether you were making An @ Joke or actually aren't aware of it.
10:20:44 <shachaf> I am not a function, I am a free mad!
10:20:46 <oklopol> "<shachaf> The parentheses are giving it identity." --- ?
10:20:47 <fizzie> It is very confusing to me, too. Clearly in "deriv(sin(x)) = cos(x) * deriv(x)" the 'x' can be anything (because it has the deriv(x) part), but in "deriv(x ^ n) = n * (x ^ (n - 1))" n is.. assumed a constant?
10:21:02 <shachaf> elliott: What's an @ joke?
10:21:14 <shachaf> @halp
10:21:14 <lambdabot> help <command>. Ask for help for <command>. Try 'list' for all commands
10:21:18 <elliott> shachaf: A joke wrt @, its perfection, and its slight aura of vapour.
10:21:21 <Phantom_Hoover> fizzie, I have this sinking feeling that he special-cases x.
10:21:28 <shachaf> @whatis @
10:21:28 <lambdabot> I know nothing about @.
10:21:35 <shachaf> You and I have much in common, lambdabot.
10:21:40 <elliott> shachaf: @ is -- breathes in --
10:21:46 <fizzie> Phantom_Hoover: Is it even known if that thing actually works at all? Maybe it's just, you know, stream-of-consciousness musing.
10:21:46 <shachaf> Unless you're talking aobut roguelikes, that is.
10:21:49 * elliott finds an old explanation to ctrl+v
10:22:01 <Phantom_Hoover> fizzie, very, very possibly.
10:22:10 <Phantom_Hoover> elliott, no make it a SONG
10:22:12 <fizzie> test.sco doesn't have any "deriv"s.
10:22:15 <oklopol> deriv is obviously derivative w.r.t. x :D
10:22:25 <oklopol> so
10:22:26 <oklopol> that's why
10:22:32 <oklopol> x is special
10:22:46 <elliott> shachaf: -- keeps breathing --
10:22:49 <Phantom_Hoover> I don't want to look into the implementation, but I guess I'll have to.
10:22:55 <elliott> OK turns out I don't have a one-sentence description, so
10:23:16 -!- itidus20 has joined.
10:23:16 <fizzie> But IDGI, if 'x' is specially the variable-being-derived-w.r.t., why the "x()"s here and there?
10:23:19 <Ngevd> It's an OS type thing elliott is making/will make/has made
10:23:35 <Phantom_Hoover> Wait I can't read code under the best of circumstances.
10:23:39 <Phantom_Hoover> Ngevd, you do it.
10:23:56 <Ngevd> I'm not too sure what I'm doing
10:24:03 <elliott> shachaf: It's an OS based on a pure functional languae at its core, with orthogonal persistence producing a single-address namespace, full network transparency, a core hopefully simple enough to host on top of basically any OS or platform without too much ridiculous effort that the rest is portable on top of,
10:24:06 <fizzie> To quote: "OHGAHGHGHAGH WHAT DOES IT MEAN!! AN ARMY OF SNEEZING WANGS STALKS MY NIGHTMARE"
10:24:16 <elliott> shachaf: blah blah reflexive, bootstrapped, none of them lame boring languages like C or whatever.
10:24:29 <elliott> It is also in a rather extended design phrase, and has been for a while. :p
10:24:40 <oklopol> rule algebra => (x + y) ^ n = if n > 2 then (x + y) ^ 2 * (x+y)^(n-2) else (x+y)^n,
10:24:40 <oklopol> (x + y) ^ 2 = x^2 + 2x(y) + y^2
10:24:46 <oklopol> ...
10:24:48 <Ngevd> I aim to be still alive when @ is released
10:24:51 <shachaf> oklopol: That's Algebra!
10:24:55 <Phantom_Hoover> oklopol, yes, he does not know the binomial theorem.
10:24:57 <elliott> shachaf: Also everything runs in ring 0 because the security is provided at a type system / language / object-capability level.
10:24:57 <shachaf> Ngevd: Immortality, eh?
10:25:02 <Phantom_Hoover> shachaf, that's Algebrawang!
10:25:06 <elliott> This means that syscalls have 0 cost which is cool???
10:25:12 <Ngevd> !numberwang 12
10:25:20 <oklopol> that's not my issue, my issue is... i dunno, that's just argh
10:25:20 <elliott> And there's also basically no distinction between "OS", "language" and "applications": also cool???
10:25:23 <elliott> @ is cool.
10:25:25 <Phantom_Hoover> !show numberwang
10:25:34 <shachaf> @ admin + elliott
10:25:34 <elliott> @admin - shachaf
10:25:35 <lambdabot> Not enough privileges
10:25:50 <oklopol> HERE'S A RANDOM SIMPLIFICATION
10:25:57 <Ngevd> WHO DELETED NUMBERWANG
10:26:07 <shachaf> oklopol: That right there is the Fundamental Theorem of Algebra.
10:26:10 <Phantom_Hoover> WHO KILLED EGOBOT
10:26:23 <shachaf> Phantom_Hoover mad
10:26:23 <oklopol> it is? what a silly choice
10:26:25 <elliott> shachaf: Now devote yourself to the Kvlt of @.
10:26:32 <Phantom_Hoover> shachaf, I thought that was something about complexes.
10:26:53 <shachaf> Phantom_Hoover: Nope. It's about (x+y)^2
10:26:57 <oklopol> it's still just the definition of ^n, so why would you give it like that
10:26:57 * shachaf will devote himself to https://github.com/bendmorris/scotch/blob/master/Scotch/Eval/Eval.hs instead.
10:27:22 <Phantom_Hoover> oklopol, you mean using (x+y)^2 as a base case?
10:28:06 <oklopol> well hurp it's not like that thing will open it completely as it is anyway
10:28:20 <elliott> Disappointing lack of shachaf devotion.
10:28:25 <elliott> Maybe the Kvlt needs a rebrand.
10:28:29 <elliott> It is now simply: KVLT.
10:28:35 <shachaf> elliott: I'll devote myself when it has as many users as Plan 9.
10:28:36 <elliott> shachaf: Yo, hip to KVLT.
10:28:45 * shachaf met an actual person who actually used to use Plan 9.
10:28:45 <elliott> shachaf: But it already has as many users as Plan 9.
10:28:48 <shachaf> As in actually use it.
10:28:51 <Phantom_Hoover> GLORIOVS SOCIALIST RESPVBLIC
10:29:07 <oklopol> the simplification he does is open every (x+y)^2 in (x+y)^n into something with three terms, and leave it like that
10:29:11 <elliott> Wow Scotch.Eval.Eval is bad.
10:29:16 * itidus20 tries to figure out why KVLT looks so soviet
10:29:23 <elliott> I heard there was a JIT
10:29:25 <elliott> I wonder where it is
10:29:25 <oklopol> because he doesn't have associativity and the distributive law
10:29:34 <elliott> Let's find the jit :)))))0000
10:29:38 <oklopol> so i really, really doubt that's the fundamental theorem of algebra
10:29:42 <shachaf> КУЛТ
10:29:51 <shachaf> Or is it КУЛТЬ?
10:30:11 <oklopol> also "The fundamental theorem of algebra states that every non-constant single-variable polynomial with complex coefficients has at least one complex root. Equivalently, the field of complex numbers is algebraically closed." just in case
10:30:25 <Phantom_Hoover> shachaf, NO IMPERIALIST CHRISTIAN SCRIPTS ONLY GLORIOVS ROMAN RESPUBLIC
10:30:26 <shachaf> oklopol: Nope.
10:30:41 <fizzie> elliott: Maybe you should pledge some money for Scotch; e has only $50 out of $350 pledgie'd.
10:30:45 <oklopol> shachaf: that's the one i've always heard
10:30:46 <Phantom_Hoover> I'm not sure who's trolling whom here.
10:30:54 <shachaf> oklopol: Nope, it's that rule algebra => thing.
10:31:00 <elliott> fizzie: I could ... do that right now and nobody could stop me except for my brain.
10:31:03 -!- Ngevd has quit (Ping timeout: 252 seconds).
10:31:05 <shachaf> Phantom_Hoover: Does it even matter?
10:31:09 <elliott> fizzie: I will have to figure out how tough my brain is.
10:31:12 <Phantom_Hoover> fizzie, it would be so sad if he'd pledged it himself.
10:31:13 <shachaf> This channel brings it out in me.
10:31:17 -!- Ngevd has joined.
10:31:26 <fizzie> I'm not sure what exactly happens when it hits $350.
10:31:34 <elliott> fizzie: Scotch is permanently erased.
10:31:44 <Phantom_Hoover> Ngevd, you look like a man with more money than sense. Donate to Scotch.
10:32:01 <elliott> Scotch was named after what you need after experiencing it.
10:32:06 <oklopol> but i guess (x + y)^n = (x^2 + 2xy + y^2)(x^2 + 2xy + y^2)...(x^2 + 2xy + y^2) if n is even, (x + y)^n = (x^2 + 2xy + y^2)(x^2 + 2xy + y^2)...(x^2 + 2xy + y^2)(x + y) is as good a fundamental theorem as any
10:32:17 <elliott> Kind of like my horrifying language, Existential Crisis.
10:32:28 <shachaf> oklopol: Given that it's the only theorem, that's not very difficult.
10:32:28 <oklopol> personally i use that all the time
10:32:35 <oklopol> :P
10:32:39 <elliott> `addquote <oklopol> but i guess (x + y)^n = (x^2 + 2xy + y^2)(x^2 + 2xy + y^2)...(x^2 + 2xy + y^2) if n is even, (x + y)^n = (x^2 + 2xy + y^2)(x^2 + 2xy + y^2)...(x^2 + 2xy + y^2)(x + y) is as good a fundamental theorem as any
10:32:41 <HackEgo> 697) <oklopol> but i guess (x + y)^n = (x^2 + 2xy + y^2)(x^2 + 2xy + y^2)...(x^2 + 2xy + y^2) if n is even, (x + y)^n = (x^2 + 2xy + y^2)(x^2 + 2xy + y^2)...(x^2 + 2xy + y^2)(x + y) is as good a fundamental theorem as any
10:32:42 <fizzie> Phantom_Hoover: "Donors (1): 1. Anonymous* [* Denotes a manually entered pledge.]" -- does that mean the $50 is just what he told pledgie.com he had gotten from someone, and not from anyone via their system?
10:32:57 <Phantom_Hoover> So sad :(
10:33:36 <shachaf> elliott: You could donate a $0.01.
10:33:47 <elliott> shachaf: Ah. 'Tis tempting.
10:33:54 <shachaf> That would be like donating a negative amount due to transaction costs.
10:34:01 <elliott> fizzie: That seems a good way to mislead people into thinking a cause is popular.
10:34:02 <shachaf> Assuming it allows it.
10:34:10 <itidus20> one trouble with programming languages is that they don't passively evolve
10:34:25 <itidus20> their evolution is always active and studied
10:34:31 <Phantom_Hoover> itidus20 wins today's "no shit sherlock" award.
10:34:35 <Phantom_Hoover> Unless...
10:34:42 <oklopol> rule infinite => infinity() + x = infinity, x + infinity() = infinity + x,rule infinite => infinity() + x = infinity, x + infinity() = infinity + x,
10:34:46 <oklopol> oops
10:34:47 <oklopol> anyway
10:34:49 <Phantom_Hoover> What if we made a language which *did* evolve passively?
10:34:59 <oklopol> here, we see some serious paren usage
10:35:04 <elliott> Validation failed: Amount Your donation of $0.01 is below the required minimum of $1.00.
10:35:09 <elliott> shachaf: fizzie: Phantom_Hoover: help, i mad
10:35:15 <itidus20> Phantom_Hoover: i don't come to this channel to be normal
10:35:17 <Phantom_Hoover> elliott, so mad.
10:35:19 <itidus20> ehehhe.
10:35:20 <elliott> How much is a dollar these days
10:35:25 <elliott> 64p
10:35:29 <Ngevd> I thought Plof passively evolved
10:35:29 <elliott> I guess it'll come out to a pound with fees
10:35:40 <elliott> Ngevd: Is this brief moment of laughter worth an one squid
10:35:41 <Phantom_Hoover> elliott, you could get a bus ticket for that money!
10:35:50 <elliott> Phantom_Hoover: Good thing I don't need one!
10:35:51 <shachaf> How much is a pound? Half a kg?
10:35:52 <itidus20> Ngevd: well.... i am a newbie so i don't know the esolangs
10:35:58 <elliott> shachaf: Yes.
10:36:11 <Phantom_Hoover> <itidus20> Phantom_Hoover: i don't come to this channel to be normal
10:36:11 <itidus20> is plof one of gregor's creations?
10:36:15 <shachaf> elliott: I guess donating is a few of losing weight.
10:36:16 <Ngevd> Yeah
10:36:18 <Phantom_Hoover> Do you go *anywhere* to be normal?
10:36:20 <shachaf> The new Scotch diet.
10:36:28 <Ngevd> Entirely scotch mist
10:36:41 <Phantom_Hoover> " infinity() * x = if x is 0
10:36:41 <Phantom_Hoover> then 0"
10:36:41 <shachaf> Did you know US pints < UK pints?
10:36:42 * shachaf mad
10:36:45 <elliott> OK guys what do I credit myself as.
10:36:49 <elliott> On the Pledgie thing.
10:36:57 <elliott> This guy will see it and I don't want to hurt his feelings but I want to be HILARIOUS.
10:36:57 <Ngevd> #esoteric
10:36:59 <itidus20> Phantom_Hoover: to be honest i wear a certain persona around the house because those people have to live with me
10:37:08 <shachaf> elliott: You're donating?
10:37:09 <Phantom_Hoover> elliott, you need to hurt his feelings SO MUCH
10:37:15 <elliott> shachaf: M...maybe.
10:37:15 <itidus20> i don't want to drive them to madness
10:37:16 <Phantom_Hoover> Put him
10:37:17 <elliott> Ngevd: YES
10:37:19 <Phantom_Hoover> through
10:37:23 <elliott> I will donate as "irc.freenode.net #esoteric"
10:37:24 <Phantom_Hoover> feelings torture
10:37:27 <shachaf> elliott: HURT ALL THE FEELINGS
10:37:29 <shachaf> u mad?
10:37:32 <elliott> There were problems with the following fields:
10:37:32 <elliott> Login is too long (maximum is 24 characters)
10:37:32 <elliott> Login can contain only numbers and letters, but must contain at least one letter.
10:37:38 <oklopol> Phantom_Hoover: usually infinity times 0 is 0
10:37:40 <shachaf> Wait, you weren't even the one who was annoyed by that.
10:37:45 <elliott> "ircDOTfreenodeDOTnetHASHesotericVISITUS"??? WHAT ABOUT THAT???
10:37:50 <oklopol> in measure theory
10:38:10 <elliott> Gleh, even "ircXfreenodeXnetHASHesoteric" is too long.
10:38:12 <elliott> Help me out here guys.
10:38:33 <Phantom_Hoover> elliott, Freenode — hashesoteric
10:38:40 <GreaseMonkey> freenodeHASHesoteric
10:38:49 <itidus20> Ngevd: well it is surely a good thing then about plof
10:39:01 <shachaf> elliott: Where do I donate to you?
10:39:01 <GreaseMonkey> or freenode #esoteric
10:39:10 <elliott> shachaf: Paypal penguinofthegods@gmail.com
10:39:13 * shachaf would donate to the great @ project.
10:39:16 <GreaseMonkey> or esolangs.org
10:39:17 <elliott> Do it. Do it now.
10:39:21 <itidus20> formally i supppose 'passively evolving' means there is a feedback mechanism for users of the language to make the language better
10:39:22 <Ngevd> I don't know much about Plof
10:39:26 <elliott> GreaseMonkey: It has to be only letters.
10:39:36 <elliott> Also I want him to visit here so the esolangs.org one is out.
10:39:45 <shachaf> elliott: How about I deliver it in person?
10:39:46 <oklopol> i'm beginning to suspect scotch is just an elaborate joke
10:39:50 <GreaseMonkey> esolangsDOTorg
10:39:55 <GreaseMonkey> oh right
10:39:58 <shachaf> oklopol: It's a creating of #esoteric.
10:40:02 <itidus20> in general, when someone writes 10 or 20 or 1000 lines of code, the language does not get affected.. there is no feedback
10:40:03 <shachaf> s/ng/on/
10:40:08 <elliott> shachaf: Very well
10:40:12 <oklopol> itidus20: no, it has to evolve on its own
10:40:17 <shachaf> @where elliott
10:40:17 <lambdabot> I know nothing about elliott.
10:40:17 <oklopol> hmm
10:40:20 <Phantom_Hoover> GTG
10:40:21 -!- Phantom_Hoover has quit (Quit: Leaving).
10:40:24 <elliott> itidus20: I, too, wish my code's meaning changed as I wrote more of it.
10:40:26 <oklopol> although feedback is crucial to evolution
10:40:29 <GreaseMonkey> is lambdabot a bot coded in haskell
10:40:29 <Ngevd> @Ngevd
10:40:30 <lambdabot> Unknown command, try @list
10:40:31 <elliott> It would eliminate the boring predictability of my code meaning one and one thing.
10:40:35 <elliott> GreaseMonkey: FSVO "a".
10:40:44 <GreaseMonkey> what language is it coded in
10:40:45 <elliott> More like "THE bot coded in haskell" for -- shachaf how long has \bot been around.
10:40:47 <itidus20> elliott: ahhhhhh i see.. that is a problem
10:40:49 <GreaseMonkey> hmmkay
10:41:05 <elliott> Something tells me it's close to ten years now?
10:41:08 <shachaf> elliott: How should I know?
10:41:12 <shachaf> No, not ten years.
10:41:15 <elliott> shachaf: I don't know, you're like this big mudball of wisdom.
10:41:16 <GreaseMonkey> @list
10:41:17 <lambdabot> http://code.haskell.org/lambdabot/COMMANDS
10:41:23 <itidus20> elliott: however not all is lost... because if your code is compiled it doesn't need a meaning
10:41:24 <elliott> shachaf: I said close to ten years. So like... eight years.
10:41:24 <GreaseMonkey> yeah that works
10:41:26 <elliott> Seven.
10:41:35 <elliott> Two.
10:41:36 <elliott> Zero.
10:41:45 <shachaf> elliott: I only came to #haskell a few years ago, man.
10:41:52 <elliott> itidus20: It doesn't?
10:41:58 <itidus20> write once, compile once :D
10:42:01 <itidus20> brilliant
10:42:07 <itidus20> wahahhaha
10:42:07 <elliott> shachaf: Does that mean you can't study its glorious history?
10:42:18 <elliott> shachaf: Let me tell you about how stupid everyone was in here six years ago.
10:42:20 <shachaf> elliott: In fact, a quick log search indicates that I first joined #haskell within a week of you first joining #haskell.
10:42:36 <elliott> shachaf: Ooh. Now this me mad.
10:42:38 <Ngevd> I have never been on Haskell
10:42:54 * shachaf = elliott
10:43:01 <elliott> shachaf: With this nick, or?
10:43:33 <shachaf> elliott: With ehird, but the first occurence of the string "elliott" is something said by ehird.
10:43:37 <itidus20> elliott: i like this dialogue. because im never going to drop an idea so easily. whatever holes you can find in the idea i can apply more patches
10:43:54 <elliott> itidus20: It's like watching a trainwreck in slow motion.
10:44:03 <elliott> shachaf: Right.
10:44:06 <oklopol> :'D
10:44:17 <itidus20> so there is this assumption that a piece of code needs to be compilable multiple times
10:44:22 <itidus20> but its not really the case
10:44:58 <oklopol> writing a program would be so awesome, if you make too many errors, it would decide the syntax needs a change, and you need to change your whole program. just like every other user of the language on the planet
10:45:03 * itidus20 starts worrying about the hole getting bigger in this metaphorical boat
10:45:32 * itidus20 is now hopping in the lifeboat.
10:45:51 <elliott> oklopol: it's like network headache if network headache was amazing
10:45:53 <oklopol> so you are doing for compilers what imperative programming did for functional programming
10:46:12 <oklopol> makes sense i guess
10:46:13 <elliott> `addquote <oklopol> so you are doing for compilers what imperative programming did for functional programming
10:46:15 <HackEgo> 698) <oklopol> so you are doing for compilers what imperative programming did for functional programming
10:46:36 <shachaf> `quote
10:46:36 <elliott> oklopol is slowly learning that I will `addquote anything he says that makes no sense.
10:46:38 <HackEgo> 332) <tswett> There are white Africans out there, but, you know. A black swan in the hand does not imply causation.
10:46:47 <oklopol> that made perfect sense!
10:46:49 <shachaf> `quote elliott
10:46:51 <HackEgo> 207) <fungot> elliott: i like scsh's mechanism best: it's most transparent and doesn't really serve a very useful feature. \ 210) <fungot> elliott: it's hard to debug havoc on your mirror if you accidentally hit r, then a character could be multiple words long, depending on the task. \ 219) <Gregor> elliott: My university has
10:47:03 <shachaf> `quote oleg
10:47:05 <HackEgo> 553) <Taneb> I combined the wholegrain breakfast and chocolatey breakfast for maximum breakfast efficiency
10:47:12 <elliott> Good Oleg quote.
10:47:14 <Ngevd> Ooh, that's me
10:47:20 <elliott> `quote shachaf
10:47:23 <HackEgo> 661) <shachaf> elliott: GHC bug? Come on, it's the parentheses. <shachaf> The more parentheses you add, the closer it is to LISP, and therefore the more dynamically-typed.
10:47:29 * shachaf mad
10:47:35 <elliott> u mad bro?
10:47:39 <oklopol> imperative programming took functional programming and removed the weird feature that functions are deterministic
10:47:46 <elliott> oklopol: :D
10:47:50 <shachaf> oklopol: Feature? More like bug.
10:48:07 <oklopol> yep
10:48:15 <itidus20> oklopol: well before logic caught up with me, i meant that somehow this feedback would operate on a social level, where, uhhh..
10:48:20 <itidus20> maybe i am thinking about forth
10:48:23 <shachaf> Hah, the good old days of #haskell, when everyone thought I worked at Galois.
10:48:26 <itidus20> though i don't know forth
10:48:32 * shachaf the memories...
10:48:38 <elliott> shachaf the memories?
10:48:43 <shachaf> Yes.
10:48:47 * shachaf the memories
10:48:51 <oklopol> "shachaf the memories" could be your superhero name
10:49:00 <elliott> shachaf: Let us combine our powers of "people think you work at Galois" and "people think I'm Conal".
10:49:05 <itidus20> it would need to be a language wherein the syntax is definable
10:49:06 <elliott> We will be the only Conal to work at Galois ever.
10:49:22 <shachaf> elliott: You just need a hostname that says "galois" in it.
10:49:31 <elliott> shachaf: lmao
10:49:35 <itidus20> so that one coder could copy another coder's syntax definitions and thus form dialects
10:49:50 <elliott> shachaf: That trick me mad.
10:49:55 <itidus20> but the problem that your code would stop making sense would be there
10:50:14 <itidus20> like me trying to read old english
10:50:35 <oklopol> easy?
10:51:03 <itidus20> old english has to be learned.. its not easy even if you are a native english speaker
10:51:24 <oklopol> how old
10:51:32 <itidus20> the oldest
10:51:41 <shachaf> zomg so old
10:51:41 <oklopol> i see, i thought you meant like spearshaker's
10:51:47 <elliott> spearshaker's
10:51:47 <itidus20> pre-shakespeare
10:51:50 <shachaf> I thought you meant, like, the second-oldest, man.
10:52:04 <elliott> shachaf: Have you ever met ZOMGMODULES? You are rather alike.
10:52:13 <oklopol> elliott: there are many ways to write the name
10:52:23 <elliott> oklopol: if only you picked one of them
10:52:31 * shachaf can read a text thousands of years old reasonably easily.
10:52:41 <elliott> Hey, Perry Bible Fellowship updated. Novel.
10:52:44 * shachaf considers this to be a superpower.
10:52:57 * shachaf has a lot of superpowers.
10:52:58 <elliott> shachaf: That's the shittiest superpower ever.
10:53:00 <oklopol> elliott: fuck up!
10:53:12 <shachaf> For instance, recently someone explained to me how C type declarations work.
10:53:15 <oklopol> that's my new insult.
10:53:15 <elliott> Wait, do we have proof that shachaf is not ZOMGMODULES?
10:53:19 <shachaf> Now I can just read them and they come out right.
10:53:48 <shachaf> s/read/write/
10:53:54 <oklopol> yeah just fuck up shachaf
10:53:59 <elliott> shachaf: Prove yourself.
10:54:36 <shachaf> elliott: Prove that I'm not ZOMGMODULES?
10:54:39 <elliott> Yes.
10:54:44 <shachaf> Hmm. I have no idea who ZOMGMODULES is.
10:54:45 <shachaf> QED
10:54:50 <elliott> Neither does ZOMGMODULES.
10:55:12 <shachaf> zomg
10:55:14 <shachaf> modules
10:55:32 <elliott> (He is RARELY also known as cpressey. :p)
10:55:45 <oklopol> if you ask me, zomgmodules can fuck his way up
10:55:51 <fizzie> ZOMG! Ubuntu! (Re: omgubuntu.co.uk, which I hit by googling recently.)
10:56:09 <itidus20> but it is potentially a waste of human energy that code doesn't really have a means of improving inspite of how many coders hack away at it
10:56:22 <elliott> (Also catseye too, I suppose?)
10:57:20 <shachaf> I should move.
10:57:24 <shachaf> Someone make me move.
10:57:33 <elliott> shachaf: No.
10:57:40 <shachaf> :-(
10:57:42 * shachaf sad
10:58:03 * shachaf living in this small windowless room with sleep schedule being messed up as a result
10:58:08 <shachaf> I need to get a window.
10:58:16 <oklopol> wanna swap
10:58:16 <elliott> There are easier ways to mess up sleep schedules.
10:58:31 <elliott> shachaf: Is that in AM or PM?
10:58:48 <shachaf> When I see a listing of a place I could move, and there's a picture, and there's a window in the picture, I start drooling uncontrollable.
10:58:53 <shachaf> Sunlight.
10:59:11 <elliott> Oh, I thought you meant move as in like, from your chair.
10:59:20 <shachaf> No, no, actual move.
10:59:22 <elliott> shachaf: No but seriously, is it AM or PM there.
10:59:23 <oklopol> i want a windowless room with black walls
10:59:26 * itidus20 figures i havent had my vitamin d pill for the day
10:59:30 <shachaf> elliott: 24-hours time here.
10:59:36 <shachaf> s/s//
10:59:41 <elliott> shachaf: So you're in, uhh, Greenland?
10:59:53 <elliott> Cape Verde???
11:00:04 <shachaf> ?
11:00:07 <elliott> -shachaf- TIME Sun Oct 2 10:58:29 2011
11:00:13 <elliott> Oh hmm, that's UTC minus /two/ isn't it
11:00:13 <shachaf> That's just my IRC client, man.
11:00:19 <elliott> Since I'm on BST.
11:00:26 <elliott> shachaf: Oh. I mad. :/
11:00:36 <elliott> You sure you're not in Uruguay?
11:00:39 <shachaf> elliott wants to hunt me down and kill me.
11:00:44 <elliott> Well, duh.
11:00:57 <shachaf> I already live in a town that at one point in the 1990s had the most murders per capita in the country.
11:01:01 <shachaf> "the country"
11:01:15 <itidus20> there is a certain unstated depression which builds up in the coding community due to the limited expressiveness of their work
11:01:21 <elliott> shachaf: You live in the US like all the boring people, don't you. :(
11:01:26 <itidus20> hmmm
11:01:36 <shachaf> elliott: What's boring about the US?
11:01:42 <itidus20> disregard my last post
11:01:45 <elliott> shachaf: That's not a thing I said.
11:02:01 <itidus20> mathematics seems to have evolved in a very steady way
11:02:09 <shachaf> elliott: What's interesting about people who live outside the US?
11:02:12 <itidus20> making programming look like a mess
11:02:18 <elliott> shachaf: But come on, being that guy from Greenland is approximately infinitely cooler than being that guy from the US, and as we all know, insert some kind of Scotch joke about its infinity module.
11:02:21 <shachaf> Mathematics is a huge mess.
11:02:29 <shachaf> elliott: Well, I'm not "from" the US.
11:02:33 * shachaf was born in Asia.
11:02:39 <elliott> More like A"US"ia.
11:02:40 <oklopol> mathematics is a huge mess?
11:02:47 <oklopol> wanna elaborate
11:02:54 -!- pikhq_ has joined.
11:02:59 <elliott> Euro"US"pe.
11:03:02 <elliott> Afri"US"ca.
11:03:08 <shachaf> Ameri"US"ca
11:03:08 <elliott> A"US"tralia. Wait.
11:03:10 -!- pikhq has quit (Ping timeout: 258 seconds).
11:03:13 <itidus20> elaboration operation is not defined on "mathematics is a huge mess"
11:03:14 <itidus20> :D
11:03:28 <shachaf> elliott: Anyway, southwest Asia.
11:03:31 <oklopol> what do you mean
11:03:35 <elliott> Anta"US"rtic"US"ica.
11:03:36 <shachaf> Which is the best part of Asia, clearly.
11:03:45 <oklopol> shachaf: and what do you mean
11:03:49 <itidus20> elaboration ("mathematics is a huge mess") = "mathematics is a huge mess"
11:03:50 <elliott> Pretty sure I didn't spell Antarctica right there.
11:04:00 <shachaf> oklopol: I'm a Finnish citizen, by the way.
11:04:11 <oklopol> no you are not
11:04:14 * shachaf triple citizen
11:04:16 <shachaf> u mad?
11:04:21 <elliott> oklopol rejects this notion. He so verily mad.
11:04:25 <oklopol> elaborate
11:04:25 <itidus20> so the elaboration of "mathematics is a huge mess" is the identity of "mathematics is a huge mess"
11:04:27 <shachaf> I certainly am!
11:04:33 <shachaf> My grandmother is Finnish. QED
11:04:36 <elliott> shachaf: I think he wants you to: elaborate.
11:05:26 <itidus20> r"US"sia
11:05:34 <oklopol> elaborate
11:05:36 <shachaf> type Tree = Mu []
11:05:41 * shachaf likes this tree.
11:05:45 <elliott> shachaf: I think he wants you to elaborate on: Mathematics being a huge mess.
11:05:49 <elliott> I think he getting: mad.
11:05:58 <shachaf> Wait, what?
11:06:01 <shachaf> Oh.
11:06:04 <shachaf> I meant mathematical notation.
11:06:10 <shachaf> Were we still talking about Scotch?
11:06:29 <oklopol> you're saying mathematical notation is a mess?
11:06:34 <shachaf> Yes.
11:06:46 <shachaf> Well, I'm not saying it at the very moment. I said it earlier.
11:06:50 <elliott> Oh, Scotch's "functions that never end" just mean "functions that, like, work on and produce lazy lists and shit".
11:06:51 <oklopol> wow. you really aren't a finnish citizen are you
11:06:59 <elliott> "Unfortunately, it's impossible for Scotch to figure out that this is an infinite list; that would be equivalent to solving the halting problem, an undecidable problem in computer science. It's impossible to even tell that the evaluation of [1..] does not terminate."
11:07:04 <shachaf> oklopol: :-(
11:07:22 <elliott> "The solution was to automatically rewrite addition expressions associatively: a + (b + c) should always be rewritten as (a + b) + c. This allows infinite sums like infinite_range to evaluate to [n, n+1, n+2 ... n+m] + infinite_range(n+m+1) which can be used in combination with "take m" to get the list of m elements."
11:07:50 * shachaf mad
11:07:51 <oklopol> "It's impossible to even tell that the evaluation of [1..] does not terminate." --- what the fuck????
11:07:52 * shachaf suomalainen
11:08:04 <oklopol> what the fucking hell is going on with thsi shit
11:08:04 <oklopol> jhsdaf
11:08:30 <shachaf> Where are these qutoes coming from?
11:08:42 <elliott> shachaf: http://www.bendmorris.com/search?updated-max=2011-02-03T10%3A54%3A00-07%3A00&max-results=7
11:08:45 <elliott> Beware; it might you mad.
11:09:03 * shachaf notes it still $300 to go.
11:09:07 <elliott> Hey guys, is HTTP or git usually faster at cloning? As in, via git.
11:09:20 <elliott> shachaf: Do you really, really want me to spend a buck on that?
11:09:27 -!- Phantom_Hoover has joined.
11:09:29 <elliott> Give me a buck to spend on it and I'll spend it.
11:09:39 <oklopol> shachaf: what's wrong with math notation
11:09:46 <shachaf> elliott: I want to deprive you of $1. But I also want to deprive Scotch of $1.
11:09:48 * shachaf dilemma
11:09:59 * shachaf dilemmad
11:10:06 <Phantom_Hoover> oklopol, it's so hard to write neatly.
11:10:11 <oklopol> i mean a lot of things are wrong with the usual dialect, but nothing that crucial
11:10:15 <oklopol> what do you mean
11:10:22 <Phantom_Hoover> I used to write fractions on a single line.
11:10:30 <shachaf> I didn't really mean anything fundamental.
11:10:34 <elliott> shachaf: Give me one dollar, and I'll promise not to use it on anything but Scotch. There, now you'll be doubly dissatisfied.
11:10:38 <Phantom_Hoover> Even when I was doing partial fractions and product rules and that kind of thing.
11:10:45 <shachaf> Just a lot of ad hoc notation that developed from people being used to their notation being read by other people.
11:10:53 <Phantom_Hoover> oh for the love of god cambridge why is the step site down
11:11:00 <Phantom_Hoover> i am going to find you and hit you
11:11:18 <oklopol> and somehow it works really well and never gets in your way
11:11:38 <shachaf> elliott: Where's the JIT?
11:11:43 <elliott> shachaf: God knows.
11:11:43 * shachaf wants a JIT
11:11:48 <Phantom_Hoover> You're a jit.
11:11:56 <elliott> Shut up, I JIT.
11:11:57 * itidus20 prepares to make another post
11:11:57 <shachaf> Did you know Linux contains a JIT for packet filter rules?
11:12:05 <oklopol> i think you people are just stuppid prolly
11:12:19 <elliott> https://github.com/bendmorris/scotch/blob/master/Scotch/Types/FFI.hs
11:12:21 <elliott> What the fuck?
11:12:28 -!- GreaseMonkey has quit (Quit: The Other Game).
11:12:37 <shachaf> "JIT compilation: after a module is parsed, a binary version is stored, resulting in a significant speedup"
11:12:41 <elliott> shachaf: I hear that pf is: the worst.
11:12:48 <elliott> Erm.
11:12:48 <elliott> Not pf.
11:12:49 <elliott> iptables.
11:12:53 <elliott> Fraeudeaudeaudneadn slup.
11:13:20 <elliott> Cloning into linux...
11:13:20 <elliott> remote: Counting objects: 1319157
11:13:23 <elliott> This is a lot of object.
11:13:46 <shachaf> elliott: he worst?
11:13:53 <itidus20> it is not clear to me whether intangibles without instance exist
11:13:54 <shachaf> s/h/Th/
11:14:05 <shachaf> elliott: Did you hear that before or after Scotch was created?
11:14:18 <elliott> shachaf: Well, I hear iptables is a pain to use and the BSD things are nicer and less ridiculous.
11:14:22 <elliott> But that just what I hear, and I may mad.
11:14:27 <elliott> And god knows.
11:14:36 <itidus20> for example, gravity seems to require mass.. or does it?
11:14:38 <shachaf> elliott: By the way, I accidentally clicked on "Documentation".
11:14:48 <Phantom_Hoover> itidus20, not really.
11:14:52 <Phantom_Hoover> At least in GR.
11:14:52 <elliott> shachaf: Which documentation?
11:14:53 <shachaf> elliott: And it me mad, just like you promised.
11:14:58 <shachaf> Scotch.
11:15:06 <itidus20> nnnggghhh im gonna get really wrong if i keep this up
11:15:09 <elliott> I didn't see any documentation.
11:15:18 <shachaf> http://scotchlang.org/
11:15:20 <Phantom_Hoover> itidus20, you could try to, you know, learn something for once.
11:15:26 <elliott> Oh. This me mad.
11:15:26 <shachaf> Oh, nice, man, hash tables.
11:15:29 <Phantom_Hoover> Rather than going on about how stupid you are.
11:15:41 <elliott> >> [for a in [1,2,3], a + 1]
11:15:41 <elliott> [2,3,4]
11:15:44 <itidus20> Phantom_Hoover: as i understand it the ancient indians would discuss the latent nature of fire in the universe
11:15:47 <elliott> That is the worst list comprehension syntax anyone has ever made.
11:16:01 <itidus20> that, when the right conditions are present, fire comes to be
11:16:14 <elliott> >> # Scotch evaluation is lazy by default
11:16:14 <elliott> >> GPA.total = ((GPA.current * credits.current) + (GPA.future * credits.future)) / (credits.current + credits.future)
11:16:14 <elliott> >> GPA.current = 3.5
11:16:14 <elliott> >> credits.current = 90
11:16:14 <elliott> >> # expressions are evaluated as far as possible; it's ok if some values are undefined
11:16:15 <elliott> >> GPA.total
11:16:17 <elliott> ((315.0 + (GPA.future * credits.future)) / (90 + credits.future))
11:16:19 <elliott> shachaf: Laziness in action.
11:16:30 <itidus20> but whether that means that fire exists in the absence of the conditions of fire is more than my intelligence could say
11:16:38 <elliott> itidus20: what does that have to do with what Phantom_Hoover was saying
11:17:08 <Phantom_Hoover> What is this GPA thing please tell me.
11:17:21 <elliott> Phantom_Hoover: Scotch.
11:17:24 * itidus20 looks at elliott and realizes my extreme lack of relevance.
11:17:32 <itidus20> ^in my post
11:17:36 <shachaf> itidus20: How dare you! In this channel!
11:17:42 <shachaf> At least elliott is talking about something on-topic.
11:17:48 <itidus20> i don't even recall why i brought it up
11:17:48 <Phantom_Hoover> elliott, what, I've never heard of it.
11:17:54 <elliott> Phantom_Hoover: What.
11:18:07 <Phantom_Hoover> elliott, surely I would know about it if it was Scotch.
11:18:14 <elliott> Phantom_Hoover: I mad.
11:18:30 <Phantom_Hoover> (Maybe I can complain to Scotch for denigrating the good name of Scotland.)
11:19:01 <shachaf> http://scotchlang.org/docs
11:19:18 <shachaf> [1,2,3] + 4 == [1,2,3,4]
11:19:19 <itidus20> oh yes.. well.. in absolute terms, a computation is dependant on some physical instance of a computer
11:19:24 <shachaf> [1,2,3] + 4 == [1,2,3,4]
11:19:24 <itidus20> or is it?
11:19:28 <itidus20> dooo doo doo doo
11:19:29 <itidus20> dooo doo doo doo
11:19:38 <shachaf> [1,2,3] + [4,5,6] == [1,2,3,4,5,6]
11:19:45 <elliott> shachaf: I mad.
11:19:56 <shachaf> elliott: Note that lists are heterogeneous.
11:20:08 <Phantom_Hoover> So mad.
11:20:15 <elliott> Receiving objects: 0% (9914/2138578), 3.75 MiB | 294 KiB/s
11:20:18 <shachaf> /whois So
11:20:20 <elliott> Guys, how long is this going to take exactly.
11:20:24 <itidus20> so the computer is an element of the computation
11:20:28 <shachaf> elliott: One more than you can handle.
11:20:33 -!- Ngevd has quit (Ping timeout: 252 seconds).
11:20:34 <elliott> shachaf: Ah. Will it me mad?
11:20:39 <shachaf> It might.
11:20:42 <shachaf> You have been warned.
11:20:43 <elliott> Hmm.
11:20:46 <elliott> I'm worried.
11:20:50 <shachaf> Mad lies that way.
11:21:35 <shachaf> elliott: Scotch supports @.
11:21:42 <shachaf> elliott: I think you might as well abandon your project.
11:21:43 <elliott> shachaf: Oh no. Can I stop that?
11:21:54 <Phantom_Hoover> Write @ in Scotch.
11:21:54 <shachaf> elliott: Only by not mad.
11:21:59 <elliott> I'm going to need to pay people not to write @ software.
11:22:05 <elliott> I gotta keep the riff-raff out.
11:22:24 <shachaf> I know someone who's considering writing a project in Haskell exactly for that reason.
11:22:25 <itidus20> or you could go with GNU/@
11:22:35 <shachaf> He doesn't want his coworkers to get their grubby paaws on the code.
11:22:43 <shachaf> He's considering Haskell and Clojure right now, I think.
11:22:51 * itidus20 waits patiently for GNU/Windows
11:22:57 <elliott> He should avoid Clojure; Clojure me mad.
11:22:58 <shachaf> The question is whether parentheses or monads are scarier.
11:23:03 <elliott> itidus20: You can run a GNU/Windows system fairly easily.
11:23:11 <shachaf> elliott: But the *goal* is to people mad.
11:23:34 <Phantom_Hoover> http://en.wikipedia.org/wiki/Ramsey%27s_theorem#Ramsey_numbers
11:23:34 <elliott> Yes, but Clojure me mad in the sense that their IRC channel thinks multiplication of the expression inside big-O notation changes it.
11:23:38 <elliott> Even if not in "theory", in "practice".
11:23:41 <itidus20> :-D
11:23:51 <elliott> shachaf: Does Clojure actually have anything scary other than STM, parens, and macros? I mean, it's immutable, but...
11:23:53 <shachaf> As I said in #haskell-blah:
11:24:01 <elliott> I'd say Haskell is definitely more inaccessible; use lots of operator characters.
11:24:04 <shachaf> O(1) isn't cool. You know what's cool? O(1000).
11:24:10 <elliott> `quote slow
11:24:13 <Phantom_Hoover> I find it terribly amusing that R(5,5) is one of 6 numbers, but we have no idea *which*.
11:24:13 <HackEgo> 249) <fizzie> The Perl script is probably slower than the Befunge code. \ 302) [on egojoust] <elliott> The fact is that EgoBot's % handling is O(slow) and O(big), and mine isn't. \ 522) <elliott_> Vorpal: Won't be slower than Python ;-) <Vorpal> elliott_, yeah but that is like saying a T-Ford going down a hill won't be slower
11:24:25 <elliott> Hmph, we don't have bsmntbombdood's original O(slow) quote.
11:24:36 <elliott> Phantom_Hoover: Can we just guess?
11:24:40 <Phantom_Hoover> It did seem a bit too witty for you.
11:24:43 <Phantom_Hoover> elliott, yes.
11:25:05 <Phantom_Hoover> It's 1 of 7, actually, but eh.
11:25:29 <elliott> Receiving objects: 16% (344427/2138578), 176.29 MiB | 546 KiB/s
11:25:32 <elliott> This very quickly me mad.
11:25:37 <shachaf> elliott: Very slowly.
11:25:53 <elliott> shachaf: It very slowly, but it very quickly me mad.
11:26:31 <Phantom_Hoover> One of the deepest philosophical conundra of our times.
11:27:24 <shachaf> elliott: u exponentially mad?
11:27:35 <elliott> shachaf: I can't handle that mad.
11:27:50 <shachaf> Oh. u polynomial mad?
11:28:28 <elliott> Can I linearly mad?
11:29:20 <shachaf> elliott: But if it very slow, and u linearly mad, how can it very quickly u mad?
11:29:31 <shachaf> s/w/wly/
11:29:33 <oklopol> i'm always just logarithmically mad. people just so damn stupid it's enough.
11:29:34 * elliott strokes chin.
11:29:41 <elliott> shachaf: Sounds like u mad, bro.
11:29:50 * shachaf just confuse
11:30:46 <elliott> shachaf, shachaf, shachaf. We all mad a little sometimes.
11:31:14 * shachaf :: Maybe Attitute
11:31:23 * shachaf Nothing | Just Mad?
11:31:34 <elliott> u just mad, bro?
11:31:49 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
11:32:55 <shachaf> elliott: You know, I don't believe you when you said you hate this "u mad" thing.
11:33:07 <shachaf> It seems to be your favorite piece of vocabulary.
11:33:12 <shachaf> !admin + elliott mad
11:33:12 <elliott> @admin - shachaf
11:33:13 <lambdabot> Not enough privileges
11:33:33 <elliott> shachaf: I am just sort of revelling in the exquisite decadence of it all at this point.
11:33:43 <elliott> The self-hate is maintained at moderate levels for a short period of time.
11:34:10 <shachaf> u just mad
11:34:18 <elliott> It's true.
11:34:39 <elliott> Receiving objects: 60% (1301837/2138578), 460.25 MiB | 619 KiB/s
11:34:43 <elliott> My maddening is lessening somewhat.
11:35:29 -!- derdon has quit (Remote host closed the connection).
11:35:37 * shachaf consider pull elliottcable
11:35:41 <shachaf> Now *that* would u mad
11:35:42 <elliott> Augh.
11:35:59 <shachaf> Why are u download linux anyway?
11:36:10 <elliott> Occasionally I get the urge to configure a kernel.
11:36:27 <elliott> I'm doing this the logical way, by downloading years and years of Linux development, rather than just the release I want.
11:37:24 <shachaf> elliott: I recommend bitkeeper.
11:37:32 <elliott> shachaf: Larry McVoy mad.
11:37:53 <shachaf> Speaking of Linus Torvalds and Larry McVoy and Mad, this thread is great: http://yarchive.net/comp/linux/o_direct.html
11:38:00 <shachaf> s/thread/collection of messages/
11:38:39 <elliott> McVoy must feel like a real idiot about the Trigdell thing now that git is, like, the most popuar.
11:39:39 <shachaf> «It sounds simple, but it sounds simple only to an idiot who writes databases and doesn't even UNDERSTAND what an OS is meant to do. For some reasons, db people think that they don't need one, and don't ever seem to really understand the concept of "security" and "correctness".»
11:39:58 * shachaf , as an idiot who writes databases using O_DIRECT, slightly mad
11:40:09 <elliott> I looked at O_DIRECT and it was: terrible.
11:40:18 <elliott> You should write databases using something else. Or not write databases.
11:40:23 <elliott> That is my mad advice.
11:40:27 <shachaf> elliott: What something else should I use?
11:40:56 <elliott> shachaf: I don't know, last time I extensively looked into Linux's various AIO stuff it turned out that it all sucked complete shit.
11:41:04 <elliott> You should use FreeBSD or something, I think they have proper kernel AIO.
11:41:05 <shachaf> True.
11:41:16 <shachaf> Did I mention how the Linux AIO interface *only* works with O_DIRECT?
11:41:25 <elliott> I especially like glibc's POSIX AIO implementation, based on top of blocking IO and pthreads.
11:41:37 <elliott> All the inconvenience, none of the speed.
11:41:48 <shachaf> Right, that one is truly wonderful.
11:42:05 <elliott> And none of the even remotely real ones even pretend to work on sockets, so they're useful for... database folk and nobody else.
11:42:16 <elliott> What I'm saying is, we should just hang the database folk.
11:42:28 <shachaf> elliott: Well, there's non-blocking IO.
11:42:49 <shachaf> Anyway, apparently the Linux page cache is the only page cache anyone should ever use, no matter how well it fits their purposes or doesn't.
11:42:51 <elliott> That doesn't work on sockets, does it?
11:43:07 <elliott> The @ page cache is the only page cache anyone should ever use.
11:43:10 <shachaf> elliott: Non-blocking I/O? It only works on sockets.
11:43:16 <elliott> Which is convenient, because @'s design pretty much makes it impossible to use anything else.
11:43:24 <elliott> shachaf: Oh.
11:43:34 <elliott> shachaf: Oh right, it's the useless polling-based one.
11:43:40 <shachaf> Useless?
11:43:51 <elliott> Well, anything that uses all your CPU waiting on IO is useless.
11:44:05 <shachaf> Why does it use all your CPU waiting on IO?
11:44:28 <elliott> Because you're trying to get some bytes out of the socket?
11:44:47 * shachaf not understand
11:44:57 <elliott> Well, presumably you do other stuff in that tight loop or you could just use blocking IO.
11:45:03 <elliott> But you need to get bytes out at some point.
11:45:25 <shachaf> Huh?
11:45:42 <elliott> I predict you will continue saying huh until I break down and ask you what you're confused about.
11:46:09 <shachaf> read() gets the bytes out for you, or tells you there are no bytes right now, and then you wait. Which part is using all your CPU?
11:46:22 <elliott> Wait for what?
11:46:27 <shachaf> For bytes.
11:46:29 <elliott> It's a polling API.
11:46:40 <elliott> If you use select() or whatever, you don't need to set nonblocking in the first place.
11:46:55 <shachaf> Do we mean the same thing by "polling API"?
11:47:15 <shachaf> You *do* use select() or whatever (well, epoll). That's the point of O_NONBLOCK, that you use it with select()orwhatever.
11:47:26 <elliott> Then why do you need to set it nonblock?
11:48:03 <olsner> readability (or writeability) indicated by select doesn't imply that all the bytes you ask for will be available in the in/out buffer
11:48:29 <elliott> Well, you could just ask for one byte.
11:48:36 <elliott> I guess that's probably not very smart though.
11:48:59 <olsner> I think not :)
11:49:07 <shachaf> This is the exact same behavior as in FreeBSD, anyway, except you use kqueue instead of epoll.
11:49:17 <shachaf> Which part was FreeBSD smart about? Disk I/O?
11:49:45 <elliott> ISTR FreeBSD's POSIX AIO implementation is Proper for disk files.
11:49:54 <elliott> But I also STR that the POSIX AIO API is horrible.
11:50:05 <olsner> well, you *can* use select with blocking sockets if you make sure to ask how many bytes are available before reading so that you "know" you won't block, but I think that's not reliable
11:50:13 <elliott> elliott@katia:~$ du -sh linux
11:50:13 <elliott> 1.2Glinux
11:50:13 <elliott> Ah.
11:50:40 <shachaf> elliott: Everyone implements their own API on top of it anyway, for everything.
11:50:43 <shachaf> It's the C way.
11:50:57 <shachaf> So it doesn't matter how bad the API is.
11:51:10 <elliott> FSVO doesn't matter.
11:51:29 * shachaf wonder elliott mad
11:51:38 <elliott> The maddest.
11:51:45 -!- itidus20 has left ("Leaving").
11:52:05 <shachaf> Just use Haskell with the fancy IO manager, and you won't need to mad.
11:52:12 <shachaf> s/Haskell/GHC/
11:52:27 <shachaf> Non-blocking I/O is just an excuse to write your own thread implementation and do blocking IO, anyway.
11:53:19 <elliott> s/IO/event/ surely.
11:53:27 <elliott> Anyway, @'s IO model is nice.
11:54:05 <shachaf> I @'s I/O model in the cloud?
11:54:10 <shachaf> Because @ is vapourware.
11:54:13 <shachaf> Get it?
11:54:16 <shachaf> Cloud?
11:54:38 <elliott> shachaf: Ha ha ha.
11:54:41 <elliott> Yes, you are the witty.
11:54:56 <elliott> pikhq_: Hmm, there doesn't seem to be a git tag for 3.0.4.
11:54:56 * shachaf just lost opportunity to be told about about @'s IO model. :-(
11:55:08 <shachaf> What's @'s I/O model?
11:55:30 <elliott> shachaf: Well, it has two, if you interpret IO model to mean "the model of whatever you'd consider the IO model in Unix".
11:55:32 <elliott> That is to say,
11:56:17 <elliott> shachaf: Its local disk model involves a single address space with a mapping to both disk and physical RAM, with virtual memory being used to map the various objects at their "abstract" locations.
11:56:38 <elliott> It's basically mmap() on steroids all the way through. Though I'm sure you could access sectors directly.
11:56:39 <elliott> If you really wanted to.
11:56:44 <shachaf> Does @ run on 286es?
11:56:53 <elliott> RAM also contains, like, the first few generations of the GC.
11:56:59 <elliott> Those don't need to be persisted out.
11:57:07 <elliott> shachaf: 64-bit 286es, sure.
11:57:21 <elliott> The actual @ model is portable to just about anything, but I don't feel like implementing it for 286s.
11:57:39 <elliott> Especially since it wants more than 32 bits of address space. Unless your disks are two gigs big.
11:58:10 <shachaf> Oh, that reminds me, I was going to get a 16/32GB MicroSD card.
11:58:13 <elliott> shachaf: Anyway, the IO model used for things like sockets is pretty much:
11:58:15 <shachaf> Which one? 16 or 32?
11:58:34 <elliott> shachaf: Whenever data comes in, it's passed, CPS-style, to a big old bag of handlers registered with that IO port.
11:58:54 <elliott> That's literally it. And writing to a port passes that data, CPS-style, to its write handlers.
11:59:06 -!- Jafet has quit (*.net *.split).
11:59:06 <elliott> (You can trivially make a "pipe" style thing by just hooking up the write handler to a read handler.)
11:59:19 <shachaf> zomg
11:59:20 <elliott> shachaf: On top of that, the actual usage can be as-if-blocking.
11:59:21 <shachaf> Advanced.
11:59:28 <elliott> As in, it just uses call/cc or the like and stuffs that in as a handler.
11:59:31 <elliott> Obviously more involved and with less overhead.
11:59:38 <elliott> But when a thread is blocked on IO, it literally just doesn't exist.
11:59:39 -!- myndzi has quit (Read error: Connection reset by peer).
11:59:40 <elliott> It's killed.
12:00:10 -!- myndzi has joined.
12:00:12 -!- derrik has quit (Quit: 15:00).
12:00:15 <elliott> shachaf: Since everything is in ring 0, there's no kernel<->userspace context switching / data copying overhead, so you don't really need buffers of significant size to get decent IO performance.
12:00:59 <shachaf> Hmm.
12:01:07 <shachaf> OK, you've sold me.
12:01:10 * shachaf download @.iso
12:01:12 <shachaf> Wait.
12:01:14 * shachaf mad
12:01:24 <elliott> shachaf: This is the experience of most @ devotees so far.
12:01:58 <elliott> shachaf: If you've read the Synthesis paper, I pretty much stole the basic IO model from there, except instead of ridiculously micro-optimising my syscall stuff I just don't do the whole userspace thing.
12:02:06 <shachaf> elliott: In what sense is the thread "killed" that a thread isn't normally killed when it does blocking IO?
12:02:16 <elliott> And I guess it isn't quite as elegantly CPS in Synthesis.
12:02:28 <shachaf> Synthesis paper?
12:02:36 <elliott> The Synthesis OS thesis.
12:02:39 <elliott> theithieshiehsiheis.
12:02:49 <elliott> shachaf: Well, it isn't really. But, I mean, you could literally throw away all information about the thread if you wanted to, and the handler added would respawn it.
12:03:18 <elliott> It's more efficient just to move it away from the set of scheduled tasks and then have the handler move it back and resume the continuation like that, but... if you wanted to completely eliminate any thread that blocks on IO, you could.
12:03:32 <shachaf> Well, because it has a continuation.
12:03:35 <elliott> Well, yes.
12:03:50 <elliott> You can't just say "Oh, you blocked on IO? I'm forgetting about you forever, goodbye."
12:03:52 <elliott> That's called an OOM killer.
12:04:01 <elliott> Although it is a remarkably low-overhead way of handling IO.
12:04:21 -!- Jafet has joined.
12:05:03 * shachaf implemented part of a userspace coöperative threading library for C++.
12:05:13 <shachaf> Seems like more or less the same thing?
12:05:25 <elliott> shachaf: Well, @ threads are preemptively switched.
12:05:46 <elliott> Although that may be partially in the form of "the compiler inserts a yield in a place it deems nice".
12:05:56 <elliott> shachaf: But yes, the way it handles IO is like coroutines.
12:06:00 <elliott> Which is like cooperative threading.
12:06:01 <shachaf> Hah, like GHC threads are preëmptively switched.
12:06:20 <elliott> Well, there's always going to be timer-based switching.
12:06:32 <elliott> But when you have everything going through a certain compiler, you can afford to be smart about it.
12:06:50 <elliott> @ kind of cheats a lot like that, by simply demanding to know more about the structure of whatever's running on it, which in turn eliminates all the pesky problems.
12:06:51 <shachaf> GHC threads can be preëmpted either when the OS thread they're on is preëmpted or when they allocate memory.
12:08:06 <elliott> [*] DMA memory allocation support
12:08:11 <elliott> I like how this is a top-level menu item in menuconfig.
12:08:23 <shachaf> Which is how GHC wins the thread-ring entry on the shootout.
12:08:36 <elliott> shachaf: Ha.
12:08:48 <elliott> shachaf: (The guy behind it will get mad at you on the internet if you call it the "shootout".)
12:09:03 <shachaf> shootout.alioth.debian.org
12:09:25 <elliott> shachaf: No, seriously, I've seen him on comment threads.
12:09:34 <shachaf> http://shootout.alioth.debian.org/u32/performance.php?test=threadring
12:09:36 <elliott> There's a reason it doesn't appear anywhere on the actual page. :p
12:09:47 <shachaf> «Programs may use pre-emptive kernel threads or pre-emptive lightweight threads; but programs that use non pre-emptive threads (coroutines, cooperative threads) and any programs that use custom schedulers, will be listed as interesting alternative implementations.»
12:10:29 <shachaf> Kind of a ridiculous criterion.
12:10:33 <elliott> ClojureTimed Out15 min
12:10:38 <shachaf> But Haskell won the shootout, so how can I mad?
12:10:40 <elliott> Hickey mad.
12:10:43 * shachaf ain't even mad
12:11:57 <elliott> Sad that ATS is so low down there
12:12:03 <elliott> And, uh, has a bunch of inline C.
12:12:06 -!- Jafet has quit (*.net *.split).
12:12:54 <elliott> shachaf: That's the one-core benchmark.
12:13:02 <elliott> http://shootout.alioth.debian.org/u64q/performance.php?test=threadring
12:13:05 <elliott> Ha, still wins.
12:13:07 <elliott> Other languages mad.
12:13:35 <shachaf> elliott: I'm pretty sure he'll mad at your if you say "languages" instead of "implementations".
12:13:45 <elliott> shachaf: The languages are shootouting.
12:13:49 <shachaf> s/your/your/
12:13:52 <shachaf> ...
12:14:05 * shachaf fingers mad
12:14:47 <elliott> Where's the page where you can tweak the balances of each benchmark and the like so that your language wins?
12:14:58 <shachaf> zombo.com
12:15:00 <shachaf> This benchmark is hilarious.
12:15:01 <elliott> Thanks
12:15:07 <shachaf> thread-ring, I mean.
12:15:15 <shachaf> elliott: You can't mad at zombocom.
12:15:28 <elliott> shachaf: I thought I could do anything.
12:15:30 <shachaf> You can do anything, and somehow you can't mad.
12:15:35 <elliott> Amazing.
12:15:42 <shachaf> It's a paradox.
12:16:02 <shachaf> elliott: You should write about @ and put it on a web page thingy.
12:16:05 <shachaf> I would read it.
12:16:47 <elliott> shachaf: Well, I wrote a buzzwordy kind of five-paragraph introduction thing once. Or do you mean some kind of substantial development diary? Because, I mean, that would require work, but...
12:17:12 <shachaf> elliott: Well, ELABORATE ON ALL THE THINGS.
12:17:27 <elliott> shachaf: http://codu.org/logs/_esoteric/. :p
12:17:34 <elliott> I suppose it could do with a bit more... structure.
12:17:50 <shachaf> I don't know, something. So when someone says "Look at how cool my operating system is", I can say "that's nothing! Look @ this thing!"
12:18:05 <elliott> These are good things to be thinking.
12:18:24 <elliott> I suppose I could get around with that "setting up some sort of blahg thing" thing sometimes.
12:18:27 <elliott> It just feels so pretentious.
12:18:48 <shachaf> No need to blech it. :-(
12:18:55 <shachaf> Just a web page that has things in it.
12:19:04 * shachaf is mad by blechs.
12:19:27 <elliott> shachaf: Yes, but you see, the advantage of a blauhgjlkfdshlgj is that I don't have to organise it.
12:19:30 <elliott> Sites need organisation and shit.
12:19:45 <elliott> Blgfjkdflshs, you just put a little line every now and then saying "I slept a lot in between these bits".
12:19:58 <shachaf> Not really.
12:20:10 <shachaf> As long as the text is there it doesn't matter.
12:20:21 <shachaf> But, sure, write a abdlfapu/nqwndkladf.
12:20:34 <elliott> Yes. I will write a ?XZ|D>SF?gkxh,c;lv.h
12:20:45 * shachaf would, like, totally add it to his RSS reader.
12:20:48 <shachaf> If I had an RSS reader.
12:20:49 <shachaf> Which I don't.
12:21:07 <shachaf> But I'd read it, or something.
12:21:23 <shachaf> See if you can outdo comonad.com.
12:21:48 <shachaf> elliott: I'm only awake right now because of you, by the way.
12:21:49 * shachaf mad
12:21:59 <elliott> I can't get into reading comonad.com. It not me mad, but it not me enthral overly much.
12:22:17 <shachaf> http://www.myspace.com/penguinofthegods
12:22:28 <elliott> Huh.
12:22:33 <elliott> I don't think I made that.
12:22:57 <elliott> (A lot of people used to make accounts for me when I refuse to.)
12:23:02 <shachaf> It seems to say Elliott Hird.
12:23:03 <elliott> (A lot of bad, bad people.)
12:23:10 <shachaf> Are you = sargetron?
12:23:15 <elliott> No.
12:23:20 <elliott> Also, stop googling for me.
12:23:31 <shachaf> http://en.wikipedia.org/wiki/User:ElliottHird
12:23:32 <shachaf> Aw.
12:23:47 <elliott> I think that might be one of my ancient user pages, but I really don't remember any more.
12:23:50 <elliott> I have about fifty Wikipedia accounts.
12:24:18 <shachaf> Is any of them an administrator?
12:24:27 <elliott> No. I use my shadowy cabal connections for that.
12:24:42 <elliott> $ cabal shadow
12:24:42 <elliott> cabal: unrecognised command: shadow (try --help)
12:24:46 <elliott> Shadowy, yet mysterious.
12:25:07 <shachaf> elliott: Can I "google" sargetron?
12:25:28 <elliott> Can I "shachaf" a "mad"?
12:25:35 * shachaf bing.com elliott
12:25:35 <elliott> Anyway, I too had really better be going. Thou verily art maddest.
12:25:38 -!- elliott has quit (Quit: Leaving).
12:25:45 <shachaf> :-(
12:25:47 * shachaf mad
12:37:25 -!- hagb4rd has quit (Ping timeout: 248 seconds).
12:38:25 -!- plycke has joined.
12:38:25 -!- plycke has quit (Excess Flood).
12:48:40 -!- Ngevd has joined.
12:54:16 -!- Ngevd has quit (Read error: Connection reset by peer).
12:54:45 -!- Ngevd has joined.
13:08:22 <Ngevd> http://en.wikipedia.org/wiki/Elliott_wave_principle
13:21:37 <Ngevd> elliott, the fractal economist
13:24:54 -!- Phantom_Hoover has joined.
13:24:56 -!- Phantom_Hoover has quit (Changing host).
13:24:56 -!- Phantom_Hoover has joined.
13:25:09 <Phantom_Hoover> So have moneys been donated to Scotch?
13:25:56 <Ngevd> No
13:28:19 <olsner> hmm, looks like yasm uses 256-bit addresses internally... seems a bit overkill
13:34:39 <Phantom_Hoover> You never know how many bits you'll need.
13:35:13 <olsner> no :) yasm actually seems to be using a variable-length encoding to theoretically support any address size
13:36:47 -!- sllide has joined.
13:37:09 <olsner> but I accidentally tricked it (by using a negative address) into printing all the addresses in the mapfile as 256-bit numbers
13:53:11 -!- Jafet has joined.
13:59:20 -!- Phantom_Hoover has quit (Quit: Leaving).
14:02:57 -!- monqy has joined.
14:12:54 -!- Ngevd has quit (Ping timeout: 260 seconds).
14:16:09 -!- MSleep has changed nick to MDude.
14:22:28 -!- pikhq has joined.
14:22:52 -!- pikhq_ has quit (Ping timeout: 255 seconds).
14:51:27 <pikhq> @tell elliott The 3.x.y releases aren't on Linus's tree.
14:51:27 <lambdabot> Consider it noted.
14:53:09 -!- Jafet has quit (Quit: Leaving.).
14:56:33 -!- Phantom_Hoover has joined.
14:58:07 -!- copumpkin has joined.
15:05:17 <olsner> hmm, what's a good name for "the address where I've mapped all available physical memory into virtual memory"?
15:07:29 -!- pikhq_ has joined.
15:07:35 -!- pikhq has quit (Ping timeout: 256 seconds).
15:14:31 <fizzie> Maybe you could be all retro and call it the "core".
15:17:08 <olsner> apparently linux calls it "logical" addresses
15:18:15 <fizzie> That's not so logical, since it doesn't in any way indicate all physical memory is there.
15:19:04 <olsner> I've been calling it the "kernel base", but that seems wrong since the kernel itself is just one page of it
15:25:34 -!- plycke has joined.
15:25:34 -!- plycke has quit (Excess Flood).
15:45:53 -!- ais523 has joined.
16:00:13 -!- Phantom_Hoover has quit (Ping timeout: 258 seconds).
16:07:47 -!- pikhq has joined.
16:07:55 -!- pikhq_ has quit (Ping timeout: 258 seconds).
16:15:50 -!- Phantom_Hoover has joined.
16:38:32 -!- pikhq_ has joined.
16:38:49 -!- pikhq has quit (Ping timeout: 256 seconds).
16:40:29 <Phantom_Hoover> > 9*9*4
16:40:30 <lambdabot> 324
16:46:44 <Phantom_Hoover> > ((300000000)^2)/(2*6.67*10^(-11))
16:46:45 <lambdabot> *Exception: Negative exponent
16:46:52 <Phantom_Hoover> oh for the love of
16:47:12 <Deewiant> > ((300000000)**2)/(2*6.67*10**(-11))
16:47:12 <lambdabot> 6.746626686656672e26
16:50:42 -!- tiffany has joined.
16:59:35 <Phantom_Hoover> shut up Deewiant
17:12:44 -!- CakeProphet has quit (Ping timeout: 258 seconds).
17:21:31 -!- zzo38 has joined.
17:40:37 <zzo38> I think there is something wrong with my gopher server program, that when it closes connection before the request is complete, it will use 100% CPU for one minute.
17:42:55 -!- pikhq has joined.
17:43:00 -!- pikhq_ has quit (Ping timeout: 244 seconds).
17:46:58 <Phantom_Hoover> zzo38, have you written it in Enhanced CWEB?
17:49:42 <zzo38> Phantom_Hoover: No, but I do have one written in Enhanced CWEB at FreeGeek, so when I can get that program, I could use that one. However, its configuration is compiled into the executable program instead of a separate file, but it could still do
17:50:33 -!- CakeProphet has joined.
17:51:26 <zzo38> Mysoft: How do you do that in FreeBasic?
17:52:04 -!- zzo38 has left.
17:55:50 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
17:56:34 * CakeProphet has a programming language concept.
17:56:40 -!- zzo38 has joined.
17:57:03 <zzo38> Do you like pinball game?
17:57:05 <CakeProphet> essentially continuation passing style with side-effects.
17:57:25 <CakeProphet> the two first-class citizens would be continuations and environments.
17:58:09 <CakeProphet> obviously this is not very esoteric.
17:58:12 <CakeProphet> zzo38: haven't played much.
18:02:10 <CakeProphet> though maybe it will be esoteric in that I can make some static guarantees that you wouldn't typically make with this kind of model (where different scopes can be mutated dynamically) ...I think.
18:02:26 <CakeProphet> with the right semantics..
18:13:44 <zzo38> Who is bytemark7.spotonnet.co.uk? They are connecting to my gopher server, which is OK, though. They have no gopher server, but they do have an unconfigured HTTP server.
18:13:55 <zzo38> Running on CentOS.
18:14:40 -!- Phantom_Hoover has joined.
18:15:00 <zzo38> Why does my computer have a connection to host.ilati.net?
18:15:21 <zzo38> It is on their port 80, not mine.
18:18:17 -!- copumpkin has quit (Ping timeout: 258 seconds).
18:18:40 <zzo38> What I am wondering is what is this for: TCP zzo38computer:1782 host.ilati.net:http ESTABLISHED I don't know who they are and do not even have a web-browser program loaded at this time.
18:18:42 -!- copumpkin has joined.
18:19:07 <zzo38> I also have this line; I don't know what it means, do you know? TCP zzo38computer:1425 router:9393 CLOSE_WAIT
18:23:27 <fizzie> On Linux, "netstat -np" may help; -n will give an address in place of the name 'router', and more importantly -p will tell which process the connection belongs to.
18:24:08 <fizzie> On Windows, I'm not sure how to map connections to processes.
18:24:30 <zzo38> It is Windows, and I know what address 'router' belongs to because I configured it myself. It corresponds to the router that my computer is connected to.
18:24:56 <zzo38> What I do not know, is what that connection is for.
18:27:40 <fizzie> Port 9393 mostly seems to be used by a VoIP thing called TalkSwitch (unlikely), and an open-source vulnerability scanner called OpenVAS (equally unlikely?).
18:27:59 -!- pikhq_ has joined.
18:28:08 -!- pikhq has quit (Ping timeout: 255 seconds).
18:28:50 <zzo38> I do not have either of those. But the router is also connected to my brother's computer wirelessly, I don't know if he uses VoIP but I don't know why the connection would appear on my computer if it is.
18:29:39 <fizzie> Apparently at least on some versions of Windows, if you say "netstat -ano" it will also show PIDs that you can then look up in the Task Manager. ("-o" is the relevant switch.)
18:31:22 <zzo38> OK that helped a bit. I do have a "process" command to list processes. I looked at the PID for both of those connections and neither appears on the process list.
18:31:50 <zzo38> O no, actually the router one does.
18:32:04 <zzo38> It is some service process.
18:33:23 -!- pikhq has joined.
18:33:38 -!- pikhq_ has quit (Ping timeout: 260 seconds).
18:33:48 <zzo38> OK I found information about that service.
18:35:04 -!- augur has quit (Remote host closed the connection).
18:36:28 <zzo38> It has \Device\NamedPipe\ROUTER open, as well as HKU\S-1-5-19\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap, and \Device\WebDavRedirector
18:39:00 <zzo38> The service is listening on ports 1863 and 5000 for TCP, and 1900 UDP. I found the list of services belonging to that process. They are SSDPSRV and WebClient.
18:41:54 <fizzie> SSDP is part of the UPnP thing, which (among other things) contains features for software automagically opening inbound ports on a router. The connection to the router might be related. But I'm certainly no Windows expert.
18:48:48 <zzo38> Whatever program is connecting to host.ilati.net appears to be loading the process to connect and then disconnect and then loading the process again to connect again, making it difficult to find the process that is causing those connections.
18:50:33 <zzo38> How do I tell Windows to reload the hosts file?
18:52:30 <zzo38> I received a HTTP request a few seconds ago for "http://www.silkool.com/cgi-bin/son!fuckyou.php"
18:54:08 <fizzie> That sounds like a probe for badly configured proxies.
18:54:30 <zzo38> O, it did already reload hosts file.
18:55:17 <fizzie> My logfile seems to have quite many requests of "GET http://vlad-tepes.bofh.it/freenode-proxy-checker.txt".
18:55:39 -!- Sgeo|web has quit (Ping timeout: 252 seconds).
18:55:46 <zzo38> Whatever program is making the connection to host.ilati.net is not using that domain name, though.
18:55:55 <zzo38> It is not using the name host.ilati.net
18:55:59 <CakeProphet> isn't >>= sort of the same thing as CPS?
18:56:17 <CakeProphet> with some extra rules.
18:59:20 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net).
18:59:56 -!- Vorpal has joined.
19:02:42 <fizzie> It is possible that the Windows Firewall would let you make a outgoing rule that would block connections to that host, and then you could perhaps see which application it was that tried to connect from the firewall log. But I do not know of the details.
19:04:05 -!- zzo38 has quit (Disconnected by services).
19:04:11 -!- zzo38 has joined.
19:04:14 <zzo38> I figured out what that host.ilati.net is. It is the same as sa.column80.com which is proper; I have a gopher service that connects to that server.
19:04:24 -!- augur has joined.
19:08:37 -!- calamari has joined.
19:10:11 <zzo38> It is not only robots.txt; now there are some requests for humans.txt on my HTTP log.
19:11:43 <zzo38> I get many requests for things like "/wiki/index.php?title=User_talk:NO_Body&action=edit" which I know are on the MFGG wiki and which is not on my computer!!
19:12:03 <zzo38> I told them on their IRC a few times, but they don't know why these requests are on my computer either.
19:13:51 <zzo38> Specifically, User_talk:NO_Body, User:NO_Body, Image_talk:NB_Art_Ref.png, Image:NB_Art_Ref.png, Special:Upload, and various things in the Mario_Fan_Games_Galaxy_Wiki: namespace.
19:26:14 -!- Sgeo|web has joined.
19:26:30 <Sgeo|web> Bah, captcha was partial derivative thingy
19:26:37 <Sgeo|web> d^2/dy^2 is what I wrote
19:26:45 <Sgeo|web> Although it was using the partial derivative symbol
19:26:59 -!- calamari has quit (Quit: Bye).
19:29:17 <zzo38> I don't particuarly like those CAPTCHA. Sometimes they are hard to read, sometimes they use symbols that I do not have on my computer, and they won't work if images/scripts are disabled or unsupported.
19:30:04 <zzo38> And, of course, they waste energy.
19:30:29 -!- calamari has joined.
19:31:35 <Phantom_Hoover> zzo38, they... waste... energy.
19:32:16 <zzo38> I have read of a different system someone has used. It uses CSS to hide a few form fields that should not be filled in. If CSS is disabled or unsupported, it says "Please do not fill these fields"
19:35:09 <zzo38> Another way to avoid spam messages is to prohibit comments over HTTP and SMTP.
19:36:38 <zzo38> And this works for me; I only allow comments over gopher protocol. Spambots don't access gopher protocol, so it works. The text is still viewable by HTTP, though.
19:37:55 <zzo38> I have a service named "PhlogJournal"; I occasionally put stuff there. People can send comments too, but only gopher, not HTTP.
19:38:25 -!- ive has joined.
19:39:46 -!- BeholdMyGlory has quit (Ping timeout: 244 seconds).
19:40:28 <zzo38> The gopher movie time service has been broken for a long time; do you know how I could fix it please? When it worked, it worked extremely well. Now it doesn't work at all.
19:44:01 <Sgeo|web> Official Discussion Thread - Episode 13: The Wedding of Discussion
19:49:09 -!- BeholdMyGlory has joined.
20:01:43 -!- oerjan has joined.
20:13:05 -!- copumpkin has quit (Ping timeout: 252 seconds).
20:13:30 -!- copumpkin has joined.
20:15:21 <oerjan> <-- also, it's surprisingly annoying to google for, with main google insisting on autocorrecting by adding "pollution" and google maps showing some insignificant town named "lake [...] michigan"
20:15:25 <oerjan> wait what
20:15:31 <oerjan> <Ngevd> Lake Michigan looks like Norway <-- also, it's surprisingly annoying to google for, with main google insisting on autocorrecting by adding "pollution" and google maps showing some insignificant town named "lake [...] michigan"
20:16:45 <oerjan> i guess it must be _really_ polluted, if that's more famous than the lake itself.
20:18:42 <CakeProphet> googles auto-complete stuff is /really/ annoying.
20:19:16 <CakeProphet> the only time I really need it is when I'm not entirely clear on the spelling or name of something.
20:19:30 <oerjan> you mean autocorrect?
20:19:39 <CakeProphet> well, that can be annoying sometimes.
20:20:00 <CakeProphet> yes, I mean autocorrect.
20:20:02 -!- Ngevd has joined.
20:20:12 <CakeProphet> but also in Chrome the way it saves previous searches and uses those if you type something similar
20:20:26 <Ngevd> Hello!
20:20:38 <CakeProphet> is incredibly annoying. Yes, I know you can backspace but I often type queries very fast and don't take time to notice that google has suddenly changed my search.
20:21:40 <oerjan> Ngevd: you might want to check the last log lines, it started with a response to you
20:22:41 <Ngevd> Wow
20:22:49 <Ngevd> I just wikipedia'd the both
20:23:22 <oerjan> i'm divided on that google instant thing. it slows down my laptop enough that i sometimes cannot see what i'm writing, which is annoying when i'm not sure if i've typoed
20:23:37 <oerjan> also, it annoyingly steals up/down arrows
20:23:59 <oerjan> Ngevd: i thought google maps would be quicker, but no...
20:24:03 <fizzie> "Lake [...] Michigan" is a weird name for a town; I didn't think they'd do that punctuation-rich names.
20:24:13 * oerjan swats fizzie -----###
20:25:03 <oerjan> (especially since google is my homepage)
20:25:05 <Ngevd> I'm pretty sure I'm owed a swat but I can't remember what for
20:25:21 <oerjan> Ngevd: for claiming Geom is not TC, i think
20:25:29 <Ngevd> No, it was before that
20:25:30 <zzo38> It is one reason why, I prefer to avoid to use Google.
20:25:36 <Ngevd> And I redacted that comment
20:25:39 <zzo38> I set my homepage to about:blank
20:26:40 <oerjan> zzo38: well i could probably change it in the preferences. but when my laptop isn't too busy, sometimes instant is nice
20:27:21 <Ngevd> I suspected it wasn't, stated that opinion, made it public, and lo and behold it was wrong
20:27:29 <Ngevd> I think
20:27:55 -!- Ngevd has quit (Read error: Connection reset by peer).
20:28:09 <oerjan> sometimes they've made doodles that nearly made my laptop croak, too
20:28:12 -!- Ngevd has joined.
20:28:22 -!- sllide has quit (Ping timeout: 248 seconds).
20:30:46 <oerjan> <Phantom_Hoover> I also like how it doesn't have a case for constant multiples and can't be used to build up derivatives because the chain rule isn't there.
20:31:22 <oerjan> both the product rule and the chain rule are special cases of the multivariable chain rule
20:31:57 <oerjan> which is also nice to use for exponentials, i think
20:31:58 <Phantom_Hoover> It doesn't have that either.
20:33:02 <zzo38> Once at school I found a infinite series for ${\rm e}^x$ in the math textbook, and I was also taking calculus class (it is a separate class and did not use these textbook). And then I realized I can figure out the derivative so I did, and it is the same thing.
20:33:24 <Ngevd> My bed is a wifi death spot
20:34:19 <oerjan> zzo38: yeah that's nice. although you need to prove that power series can be differentiated term by term
20:34:25 <zzo38> I also figured out the derivatives for sine and cosine, and because I knew that the teacher decide to ask me about the derivative of tangent, too, which I managed to figure out too; because the teacher told us about the rules for derivatives of divisions and all that stuff, so it can be figure out.
20:34:44 <zzo38> oerjan: I think we have already done so in calculus class before that time.
20:34:50 <Vorpal> <Ngevd> My bed is a wifi death spot <-- so move from your bed to elsewhere then?
20:35:24 <Vorpal> personally I never enjoyed using a laptop in bed. I find it very awkward, and I like a cooling pad anyway.
20:35:34 <zzo38> But we only dealt with finite series; I just assumed it worked for infinite series too. Later when I asked the teacher he told me it was correct.
20:36:15 <oerjan> zzo38: the thing is it only works for some kinds of infinite series, because of possible convergence problems
20:36:37 <zzo38> oerjan: What kinds does it work and not work?
20:36:39 -!- Ngevd has quit (Remote host closed the connection).
20:37:07 <oerjan> well it works for power series (maclaurin and taylor series), i'm not sure for which others
20:37:43 <Vorpal> I dislike calculus, it is so messy compared to linear algebra for example. Or set theory
20:37:43 <zzo38> Power series are the only thing I ever tried to use it for anyways.
20:39:46 <oerjan> power series are central to complex analysis, because functions which are differentiable wrt. complex numbers automatically have them
20:40:44 <Vorpal> oerjan: currently I have a course at university which is basically about calculus with many variables.
20:42:34 <zzo38> I will tell you about the electronics class at my school. The year I entered, the teacher decided he would teach electronics theory as well, but he didn't know much about it. He said, the water atom is the simplest atom, it has only one electron. Half the students in the class including myself said that is wrong, what it really is, etc. So he said, OK, so it has 3 electrons. (Still wrong!)
20:43:02 <oerjan> that's bad :P
20:43:36 <oerjan> although hydrogen is from the greek word for water
20:44:17 <zzo38> He had a container with some resistors in it, he passed it around the classroom and asked each student to take one. He explained how to determine their value (he was correct about those). But them some students had resistors with five bands. He said those were diodes, not resistors, and we should throw them out.
20:44:37 <Vorpal> ugh
20:44:39 <Vorpal> what a mess
20:45:03 <oerjan> i don't recall the color codes although i have seen my father work with them
20:45:23 <zzo38> I know the color codes; as far as I can tell they are designed to be easy to remember.
20:45:36 <zzo38> (The teacher didn't believe me when I told him I noticed that.)
20:45:39 <Vorpal> I use a lookup table for resistor colour codes. Or an ohm-meter
20:45:41 <Vorpal> far easier XD
20:46:12 <Vorpal> designed to be easy to remember? Really?
20:46:41 <oerjan> i vaguely recall the system is essentially a kind of floating point
20:47:02 <Vorpal> kind of yes
20:47:03 <zzo38> Yes it is similar to floating point.
20:47:26 <Vorpal> also there is the issue of figuring out which way to read it
20:47:30 <Vorpal> it wouldn't be so bad otherwise
20:47:53 <zzo38> Vorpal: If the tolerance band is on, it is known which direction to read.
20:48:02 <Vorpal> zzo38: and if it isn't?
20:48:10 <zzo38> Then it is difficult.
20:48:15 <Vorpal> yep
20:48:36 <Vorpal> zzo38: look at the top one in https://secure.wikimedia.org/wikipedia/en/wiki/File:Resistors_color_code.jpg
20:48:48 <Vorpal> that seems to be a LOT of bands?
20:52:58 <zzo38> Later on he gave all the students a schematic diagram for an electronic circuit, and put another copy on the board so that he could explain it. He did not explain it very well, but he could explain it a bit. He explained how to use a breadboard to build it.
20:54:19 <zzo38> One group of students came to my table to ask for help. To them, it looked correct. To me, it looked like many wires were connected to themself, some LEDs were connected backwards, there was only one resistor (which was not even of the correct value), and the power lines were not connected at all.
20:55:23 <Vorpal> what was this? pre-high school?
20:55:34 <zzo38> Vorpal: No, it was high school.
20:55:37 <Vorpal> ugh
20:56:36 <zzo38> I explained to them the wrong wires and so on, and I explained that there are supposed to be four resistors and not of this value. They said since they had a larger resistor, they only needed one (the resistor they used was in fact physically larger than the ones we ordinarily used). I told them the value was wrong, by the color stripes, and then they said those stripes are only for decoration.
20:57:43 <zzo38> Now something about the schematic diagrams we have been given. The transistors were labels T1 and T2. I told the teacher it should be Q1 and Q2, but he didn't believe me.
20:59:54 <zzo38> The teacher was good at PCBs; he did know how to use the etching and resist pens and all that stuff. That is one thing he was good at.
21:01:13 <zzo38> When it was time to build that circuit on the PCB, mine didn't work. I eventually figured out why. The schematic diagram he gave to all the students had an error in it; there was an extra wire that doesn't belong. Once I cut that trace, it worked.
21:01:32 <zzo38> But this was strange; all the other student's boards worked correctly the first time.
21:05:57 -!- Ngevd has joined.
21:06:03 -!- myndzi has quit (Ping timeout: 245 seconds).
21:06:20 <Ngevd> Haskell, doing things a tricky and not obvious way
21:06:39 <Ngevd> \x -> last $ zipWith const [1..] ['a'..x]
21:06:41 <zzo38> Ngevd: It seem to me the proper mathematical way.
21:07:39 <zzo38> Although that is strange way, though.
21:08:04 <oerjan> @src Ix
21:08:04 <lambdabot> class (Ord a) => Ix a where
21:08:04 <lambdabot> range :: (a,a) -> [a]
21:08:04 <lambdabot> index :: (a,a) -> a -> Int
21:08:04 <lambdabot> inRange :: (a,a) -> a -> Bool
21:08:04 <lambdabot> rangeSize :: (a,a) -> Int
21:08:28 <oerjan> > let x = 'z' in index ('a',x) x
21:08:29 <lambdabot> 25
21:08:57 <zzo38> Yes that way seem better
21:09:07 <oerjan> off-by-one though
21:09:36 <oerjan> oh hm
21:09:44 <oerjan> > rangeSize ('a','z')
21:09:45 <lambdabot> 26
21:11:10 <Deewiant> > ((+1) . on subtract fromEnum 'a') 'z'
21:11:12 <lambdabot> 26
21:11:28 <Ngevd> > let x = 'z' in length ['a'..x]
21:11:29 <lambdabot> 26
21:11:47 <oerjan> Ngevd: rangeSize is more efficient though, i think
21:12:37 <oerjan> Deewiant's version might work for most Enums though
21:12:46 <oerjan> (not floats)
21:12:51 <oerjan> hm
21:12:52 <Deewiant> All sensible Enums.
21:12:55 <oerjan> > fromEnum 1.0
21:12:56 <lambdabot> 1
21:12:59 <oerjan> > fromEnum 1.1
21:13:00 <lambdabot> 1
21:13:04 <zzo38> O, so, if function is called f, you have f = rangeSize . (,) 'a'
21:13:14 <Vorpal> I really only have one major problem with haskell: that it is so hard to know the best and/or fastest way to do something in haskell.
21:13:25 <oerjan> heh
21:14:15 <zzo38> Vorpal: Yes; I was thinking about that too. You could have the compiler can prove some things about it to optimize it, and you can also specify your own proofs of various things, to make the program more efficient.
21:14:35 <Vorpal> lazyness, while cool in general makes it hard for me to make any sort of useful prediction about how efficient some code will be.
21:14:49 <oerjan> hm it is possible Deewiant's method works for floats too, modulo rounding errors
21:15:10 <oerjan> > fromEnum 0.9
21:15:10 <lambdabot> 0
21:15:33 <zzo38> Since the way you would do things in mathematics is not necessarily the same way it would be done by computer.
21:16:13 <Vorpal> zzo38: that doesn't solve best way though. Since there can still be the case of neater code using a few standard library functions instead of the huge function you just wrote
21:16:48 <oerjan> @check \x y -> x <= y ==> (((+1) . on subtract fromEnum x) y == length [x..y :: Double]
21:16:48 <lambdabot> Unbalanced parentheses
21:16:49 <Vorpal> :t fromEnum
21:16:49 <lambdabot> forall a. (Enum a) => a -> Int
21:17:03 <oerjan> @check \x y -> x <= y ==> (((+1) . on subtract fromEnum x) y == length [x..y :: Double])
21:17:03 <lambdabot> No instance for (Test.QuickCheck.Testable
21:17:04 <lambdabot> (Test.QuickCh...
21:17:12 <oerjan> wat
21:17:15 <zzo38> Vorpal: Well, yes, that is a different thing. Although it applies in general to computer programming, as well as to mathematics in some cases.
21:17:16 <Deewiant> oerjan: ==> doesn't work in lambdabot IIRC
21:17:23 <oerjan> oh
21:17:34 <oerjan> @check \x y -> x > y || (((+1) . on subtract fromEnum x) y == length [x..y :: Double])
21:17:34 <lambdabot> "Falsifiable, after 1 tests:\n-2.6666666666666665\n0.6666666666666666\n"
21:17:35 <Vorpal> zzo38: not really hard to learn with a small standard library like that of C.
21:17:37 <Deewiant> (It used to work, but not for some years)
21:17:40 <Vorpal> haskell has a huge standard library
21:17:55 <oerjan> oh well
21:17:56 -!- Ngevd has quit (Remote host closed the connection).
21:18:15 <Deewiant> > fromEnum (-2.66)
21:18:16 <oerjan> @check \x y -> x > y || (((+1) . on subtract fromEnum x) y == length [x..y :: Rational])
21:18:16 <lambdabot> -2
21:18:17 <lambdabot> "Falsifiable, after 7 tests:\n(-1) % 2\n0 % 1\n"
21:18:21 <zzo38> Vorpal: Yes, there are still differences, such as C smaller standard library. And therefore you can understand it better in C library possibly.
21:18:23 -!- augur has quit (Remote host closed the connection).
21:18:30 <oerjan> Deewiant: oh.
21:18:39 <Deewiant> > [-2.666 .. 0.66]
21:18:40 <lambdabot> [-2.666,-1.666,-0.6659999999999999,0.3340000000000001]
21:18:54 <oerjan> @check \x y -> x > y || x < 0 || (((+1) . on subtract fromEnum x) y == length [x..y :: Rational])
21:18:54 <lambdabot> "Falsifiable, after 11 tests:\n0 % 1\n1 % 2\n"
21:19:15 <Deewiant> > [0%1 .. 1%2]
21:19:15 <lambdabot> [0 % 1,1 % 1]
21:19:19 <oerjan> oh right, that too
21:19:24 <Deewiant> > map fromEnum [0%1 .. 1%2]
21:19:25 <lambdabot> [0,1]
21:20:15 <oerjan> Deewiant: that's a coincidence, i think
21:20:29 <zzo38> They have said to use something like reverse . reverse = id and some people complain it doesn't work; but I think that is not mathematically correct anyways. An infinite list has no final element, and the list must always have an initial element; therefore the reverse is not defined, so it doesn't work.
21:22:18 <oerjan> yes, that only works for finite lists
21:22:34 <Vorpal> more to the point it only work for lists
21:22:50 <Vorpal> :t reverse
21:22:51 <lambdabot> forall a. [a] -> [a]
21:22:54 <Vorpal> yeah
21:23:12 <oerjan> i don't think there's a standard typeclass for reversible types :P
21:23:58 <Phantom_Hoover> http://science.cabot.ac.uk/index.php/2011/10/a-star-set-to-blow/
21:23:59 <Phantom_Hoover> Ooh.
21:24:05 <oerjan> nothing that would work on a tree, at least
21:27:05 <oerjan> hm that sounds a bit imprecise though, i recall betelgeuse is also "any moment" but that one could be now or in a million years
21:27:39 -!- calamari has quit (Ping timeout: 258 seconds).
21:27:52 <oerjan> but perhaps this type is supposed to be more predictable
21:29:23 <Phantom_Hoover> Great, some idiot on the comments thread thinks that he's an expert on relativity but doesn't understand that simultaneity is defined in all reference frames.
21:30:13 <oerjan> dun dun dunning-kruger
21:30:39 * Phantom_Hoover swatpans oerjan --==\#/
21:31:56 <oerjan> thank you, i'll be here all week, unless they drag me away
21:35:04 -!- Ngevd has joined.
21:35:54 <Ngevd> Hello!
21:38:13 <oerjan> ayieeeeeh!
21:38:15 <oerjan> i mean, hi
21:38:25 <Ngevd> Yeah, wifi deathspot
21:38:34 <Ngevd> I'll probably disconnect again soon
21:40:25 -!- calamari has joined.
21:46:02 <zzo38> Have you placed bets on the D&D game yet?
21:49:17 -!- myndzi has joined.
21:49:59 <oerjan> <shachaf> @where elliott
21:50:04 <oerjan> @list where
21:50:04 <lambdabot> where provides: where url what where+
21:50:14 <fizzie> ?ty fromList
21:50:15 <lambdabot> forall a (m :: * -> *). (MonadRandom m) => [(a, Rational)] -> m a
21:50:22 <fizzie> Funny fromList to pick.
21:50:23 <oerjan> @where+ elliott is tumbling around Northumberland
21:50:23 <lambdabot> Nice!
21:50:26 -!- Ngevd has quit (Remote host closed the connection).
21:50:37 <Phantom_Hoover> @where elliott
21:50:37 <lambdabot> is tumbling around Northumberland
21:50:41 <ais523> how much would people here hate me if I submitted [[BF Joust strategies]] to proggit?
21:50:43 <oerjan> ouch
21:50:47 <fizzie> Nortumblerland.
21:50:50 <Phantom_Hoover> ais523, so much.
21:50:55 <oerjan> @where+ elliott elliott is tumbling around Northumberland
21:50:55 <lambdabot> Done.
21:51:07 <oerjan> @where elliott
21:51:07 <lambdabot> elliott is tumbling around Northumberland
21:51:12 <zzo38> ais523: To me, I don't care if you do or not.
21:51:12 <Phantom_Hoover> @where+ elliott tumbling around Northumberland
21:51:13 <lambdabot> Done.
21:51:19 * Phantom_Hoover → sleep
21:51:20 -!- Phantom_Hoover has quit (Quit: Leaving).
21:51:21 <zzo38> To other people, I don't know.
21:51:23 <ais523> oh well, I'll do it anyway
21:51:23 <oerjan> Phantom_Hoover: what
21:51:26 <oerjan> @where+ elliott elliott is tumbling around Northumberland
21:51:26 <lambdabot> Nice!
21:51:37 <oerjan> grammar fail!
21:52:03 <fizzie> oerjan: It makes sense the PH way too. "Where's elliott? Tumbling around tumble-land."
21:52:52 <olsner> @where elliott
21:52:53 <lambdabot> elliott is tumbling around Northumberland
21:52:54 <oerjan> ais523: the danger is they'll end up here to try it out
21:53:00 <ais523> oerjan: indeed
21:53:08 <ais523> I think we can probably handle it, though
21:53:23 <ais523> worst case we just put EgoBot in #irp and let them try it there
21:53:35 <ais523> (#irp's /intended purpose/ is as a honeypot for Redditors)
21:53:44 <Sgeo|web> It occurs to me that I have no idea what the point of Katamari is
21:54:20 <CakeProphet> Sgeo|web: to pick up stuff into your katamari so that you may form new stars.
21:54:27 <CakeProphet> TO RESTORE COSMIC ORDER.
21:54:36 <ais523> it's a good programming article, anyway
21:54:43 <oerjan> i* redditor pot
21:54:53 <ais523> Sgeo|web: the /plot/ is irrelevant, the point is that it's fun to roll arbitrary objects up into a giant ball
21:54:59 <Sgeo|web> So, how do I form a new star once I collect stuff?
21:55:08 <Sgeo|web> I'm just playing with Katamari Hack
21:55:08 <CakeProphet> it happens
21:55:17 <CakeProphet> like, that's the primary game mode
21:55:24 <CakeProphet> you roll shit up in a certain amount of time and then you win.
21:55:45 -!- ive has quit (Ping timeout: 252 seconds).
21:55:52 <shachaf> oerjan: ?
21:56:17 <fizzie> oerjan: "irctacular".
21:56:20 <oerjan> shachaf: be vewy vewy quiet, i'm backwonyming
21:57:24 <oerjan> fizzie: i ... dunno
21:58:55 <fizzie> oerjan: Ircular. Ircsome. Ircoid. Irreverent. Wait, it's diverging.
21:59:54 <oerjan> Inevitable.
22:00:06 -!- calamari has quit (Ping timeout: 260 seconds).
22:03:14 <oerjan> <shachaf> Hah, the good old days of #haskell, when everyone thought I worked at Galois. <-- wait shachaf is a haskell _impostor_?
22:04:04 <shachaf> oerjan: Ah, you're reading the backlog.
22:04:19 <shachaf> oerjan: Not working about Galois makes you an impostor now? :-(
22:04:23 <shachaf> Impostor.
22:04:57 <oerjan> shachaf: the conclusion was based on other nearby comments as well.
22:05:28 <shachaf> ?
22:06:27 <oerjan> such as you being about the same #haskell age as elliott.
22:06:57 <oerjan> clearly your aura of ancient haskell guru is fake.
22:07:01 <shachaf> I guess you've found me out.
22:07:10 <shachaf> u mad?
22:07:13 * shachaf sure mad
22:07:34 <oerjan> u thant
22:08:59 -!- pikhq has quit (Remote host closed the connection).
22:09:15 -!- pikhq has joined.
22:12:55 -!- calamari has joined.
22:13:55 <zzo38> In a music file called "fracture_in_space.mod" I found that one of the samples seems to be not a sound file but part of "Turbo Debugger 80386 Device Driver Version 2.0; Copyright (C) 1988, 1990 by Borland International, Inc."
22:14:34 -!- Patashu has joined.
22:14:47 <zzo38> I don't know how that got in there.
22:15:04 <monqy> neither do i
22:15:55 <zzo38> That is, if you look at what should be the sound data for sample 1, it is not a proper sound data but it is some binary containing that text in ASCII.
22:18:15 <calamari> hows it sound? :P
22:18:21 <Vorpal> fizzie: you should watch the trine credits. I think it was in the "thanks to" section that coffee was mentioned XD
22:18:40 <zzo38> It does not sound like a proper sound effect, but it is not a problem because it is not used in the music at all.
22:18:54 -!- ive has joined.
22:19:51 <zzo38> Maybe they deleted sample 1, but the tracker program they used used all samples in order anyways, so filled it in with whatever was in memory.
22:20:20 -!- twice11 has quit (*.net *.split).
22:21:07 -!- copumpkin has quit (*.net *.split).
22:21:08 -!- variable has quit (*.net *.split).
22:22:02 <olsner> or maybe they actually used the device driver as a sample?
22:22:20 <monqy> maybe they used the mod file to sneak the device driver around
22:22:30 <zzo38> It is only a part of the binary though. Not the entire device driver.
22:22:41 <zzo38> Not nearly enough to use it.
22:23:12 -!- twice11 has joined.
22:23:12 -!- copumpkin has joined.
22:23:12 -!- variable has joined.
22:23:30 <monqy> the rest is somewhere else
22:23:48 <zzo38> I looked in the MOD file using a hex editor and it is not there.
22:23:57 <zzo38> So if the rest is somewhere else, it is in a different file.
22:24:00 <monqy> yes
22:24:59 <Sgeo|web> Ooh, a MOD file that contains random music?
22:25:02 <Sgeo|web> That sounds cool
22:25:31 <zzo38> No, it does not contain random music. It contains proper music; the sample 1 (not used in the music) is the only one having the device driver code.
22:26:34 <Sgeo|web> Oh, darn
22:27:14 <Sgeo|web> Ah, misunderstood <zzo38> Maybe they deleted sample 1, but the tracker program they used used all samples in order anyways, so filled it in with whatever was in memory.
22:28:36 -!- zzo38 has quit (Read error: Connection reset by peer).
22:28:49 <Sgeo|web> That would be weird, a .mod file that exploits a bug in some .mod player
22:29:04 -!- zzo38 has joined.
22:29:36 <Sgeo|web> [18:28] <Sgeo|web> That would be weird, a .mod file that exploits a bug in some .mod player
22:34:22 <Sgeo|web> I think I've finally permanently decided that there are better channels for my personal issues than here
22:40:03 <Deewiant> That's probably a wise decision.
22:43:07 <CakeProphet> I don't want to live anymore and I can't stop drinking, help.
22:45:24 <zzo38> Then go to somewhere that they have to test drugs or whatever, and then if the test fails then you will be dead from it. Or, run away and get eaten by the bears. Or put ductape on your mouth so that you are forced to stop drinking.
22:46:29 <pikhq> CakeProphet: Drink more?
22:55:13 <Vorpal> Sgeo|web: poor other channel. That is all
22:55:17 <Vorpal> but sure, not here
22:55:34 <oerjan> <fizzie> My logfile seems to have quite many requests of "GET http://vlad-tepes.bofh.it/freenode-proxy-checker.txt".
22:55:50 <oerjan> i'm sure i've seen that mentioned in their faq or something
22:56:29 <oerjan> well or it may not be freenode's own, of course
22:57:03 <zzo38> I added two new messages in PhlogJournal.
22:57:19 <oerjan> um wait no it's the server message at freenode startup
22:57:52 <oerjan> 22:01 - freenode runs an open proxy scanner. Your use of the network
22:57:52 <oerjan> 22:01 - indicates your acceptance of this policy. For details on
22:57:52 <oerjan> 22:01 - freenode network policy, please take a look at our policy
22:57:52 <oerjan> 22:01 - page (http://freenode.net/policy.shtml). Thank you for using
22:57:52 <oerjan> 22:01 - the network!
22:58:14 <Vorpal> yeah, kind of strange to echo it back through the same connection.
22:59:31 <oerjan> Vorpal: er, you mean my paste?
22:59:45 <Vorpal> no the line "http://vlad-tepes.bofh.it/freenode-proxy-checker.txt""
22:59:50 <Vorpal> s/""/"/
23:02:28 <Vorpal> wtf, I had to chmod -x /usr/bin/pulseaudio to get sound to work suddenly
23:02:33 <Vorpal> fuck pulseaudio
23:04:22 <oerjan> <zzo38> Specifically, User_talk:NO_Body, User:NO_Body, Image_talk:NB_Art_Ref.png, Image:NB_Art_Ref.png, Special:Upload, and various things in the Mario_Fan_Games_Galaxy_Wiki: namespace.
23:04:51 <oerjan> wild guess, you don't have a file on your own http server which is copied from there, and which might contain those links?
23:05:14 <zzo38> Maybe I accidentally copied a file that has those links; I have never intended to do so.
23:05:18 <zzo38> I will look.
23:11:00 <zzo38> If I have intended to copy it and have just forgotten, then I might want to add the BASE tag to specify where it actually is; but I think I saved a copy of that file somewhere in the directories accessible by my HTTP server by accident.
23:11:35 -!- pikhq has quit (Read error: Connection reset by peer).
23:11:37 -!- pikhq_ has joined.
23:19:33 <Vorpal> hm I noticed I do not enjoy yogscast videos of a game I played (apart from minecraft) because I see all the mistakes they make all the time.
23:19:38 <Vorpal> Like in Dead Island.
23:19:59 <Vorpal> so fucking bad playing. Yet I discovered that game through yogscast. But yeah they suck at playing it.
23:20:32 <Sgeo|web> I probably suck at most games
23:20:47 <Vorpal> I'm quite good at RPGs.
23:21:49 <Vorpal> especially the type with lots of complexity, I find that easy enough to learn.
23:22:06 <zzo38> Are you good at flipperless pinball game?
23:22:35 <Vorpal> ... probably not. I find arcade games boring
23:23:07 <Vorpal> recently I only played RPG and sandbox.
23:23:15 <Vorpal> those are the genres I really enjoy
23:24:29 <zzo38> Do you like text adventure game?
23:24:35 <zzo38> Do you like Dungeons&Dragons game?
23:24:38 <zzo38> Do you like chess game?
23:24:40 <Vorpal> I like 3D graphics, high end 3D graphics even. Above Crysis level preferred.
23:24:48 <Vorpal> and I do like NWN. Graphics are dated.
23:24:56 <Vorpal> but sure, I have some nostalgia for NWN
23:25:09 <Vorpal> chess: meh
23:25:23 <Vorpal> zzo38: recently I only played AAA titles really.
23:25:56 <Vorpal> well okay, some indie too. Bastion. humble bundle
23:26:46 -!- ive has quit (Quit: leaving).
23:27:40 <zzo38> Flipperless pinball game is the only pinball games I am good at; I am one of the best players at flipperless pinball.
23:27:41 -!- ais523 has quit (Remote host closed the connection).
23:28:11 <Vorpal> zzo38: titles I played recently and enjoyed (not all are new): Witcher 2, Oblivion, Deus Ex: Human Revolution, Dead Island, Terraria, GTA IV (had technical problems with this one though, lag spikes), Minecraft, Bastion, Trine.
23:28:41 <Vorpal> zzo38: there, now you know what type of game I like. I don't care at all for arcade.
23:28:58 <Vorpal> as you will notice, they are either RPG, or sandbox, or both
23:30:18 <Vorpal> okay Trine stands out as a puzzle game with RPG elements.
23:31:00 <zzo38> If you want a game with a story, try text adventure games. Role playing games (I don't mean computer "RPG" games) are also often story based and text adventure games are probably the closest thing you can get on a computer, even though real role playing games are of an entirely different kind. There are a nearly unlimited different possible situations.
23:31:08 <Vorpal> zzo38: I want graphics too
23:31:34 <Vorpal> I haven't played nethack recently, not since I got this computer during the summer.
23:31:36 <zzo38> Well, then, the PlayStation 3 has a very powerful graphics.
23:31:54 <Vorpal> zzo38: I prefer PC games. Since I don't own a PlayStation 3, nor any other console
23:31:59 <zzo38> Or at least, that is what I have heard. (I don't own a PlayStation 3)
23:32:07 <Vorpal> I have a very powerful PC
23:33:08 <zzo38> Well, the modern "PC games" require an operating system, so they are not truly deserved to simply be called PC games.
23:33:26 <Vorpal> zzo38: anyway, my main point here was not asking for game tips, but to point out I'm not really interested in pinball games, or text adventure (I find it hard to visualize which direction I should walk in to get to some other place, very annoying)
23:34:53 -!- ive has joined.
23:36:07 <CakeProphet> zzo38: where do you go to get killed from being drug tested?
23:36:26 <Vorpal> CakeProphet: I think he meant helping testing new drugs
23:36:27 <Vorpal> XD
23:36:29 <zzo38> CakeProphet: I don't know.
23:36:46 <Vorpal> zzo38: anyway I have both windows and linux, so I can play pretty much ever game that is designed to run on a common OS on a PC. Because Mac-exclusive games are pretty much unheard of, unless it is for iphone/ipad/ipod touch
23:37:07 <CakeProphet> Vorpal: oh right.
23:37:08 <Vorpal> in which case it isn't PC anyway
23:37:17 <zzo38> Well, yes, but to me, "PC game" means one that does not require an operating system at all and only requires the PC BIOS.
23:37:37 <Vorpal> zzo38: well, that is pretty much you only. To most people it means windows games.
23:38:06 <Vorpal> zzo38: besides my PC doesn't have a BIOS. It is EFI based. Sure there is BIOS emulation
23:38:11 <Vorpal> but it is not a BIOS
23:38:59 <Vorpal> zzo38: so I think a PC game in your sense would have to include ones that only use EFI and not the BIOS emulation of such exists
23:39:09 <Vorpal> anything else would be illogical
23:39:16 <Vorpal> zzo38: don't you agree?
23:39:57 <Vorpal> zzo38: well?
23:40:05 <zzo38> Actually, no. The reason has to do with the way the PC was designed; it is the IBM compatible design, generally. But I can understand your point.
23:40:19 <Vorpal> zzo38: PC just means personal computer
23:40:38 <Vorpal> zzo38: so that means a PPC Mac running openfirmware would qualify too
23:40:50 <Vorpal> zzo38: you want "IBM PC game" specifically
23:41:00 <Vorpal> I hope that is what you will use in the future.
23:41:38 <zzo38> If you just think PC means personal computer, then you can even count Macintosh, and anything else someone makes too. Which makes "PC game" a meaningless term.
23:41:52 <zzo38> But, yes, I suppose "IBM PC game" is a more accurate for what I meant.
23:42:20 <Vorpal> zzo38: PC does stand for personal computer. Look it up
23:42:29 <zzo38> Yes I know that.
23:43:07 <Vorpal> in fact, a phone is a type of personal computer: It is a low end computer, you seldom share it between multiple users.
23:43:53 <zzo38> I suppose you mean cellular phone.
23:44:01 <Vorpal> yes
23:44:17 <Vorpal> though most phones these days contain computers
23:44:43 <Vorpal> like wireless landline phones. Or landline phones with answering machines and a display.
23:44:54 <zzo38> Well, yes. But the landline telephones do not run as many programs and are often shared.
23:44:59 <Vorpal> indeed
23:46:40 <oerjan> the question of what "PC" _should_ mean is probably nearly irrelevant to what its usual meaning is.
23:46:49 <Vorpal> zzo38: anyway, what MOST people mean with PC games is games running under windows, or sometimes windows/linux/macosx
23:47:05 <Vorpal> oerjan: yep
23:47:24 <Vorpal> oerjan: still, barebone IBM PC game is NOT what most people mean with PC game
23:47:27 <oerjan> it's just another word affected by language change
23:47:31 <Vorpal> which was the key point in this discussion
23:47:35 <CakeProphet> ITT: semantics
23:47:48 <Vorpal> CakeProphet: I forgot, what did ITT stand for
23:47:56 <CakeProphet> typically in this thread.
23:47:58 <oerjan> once again, i canno... i'm with Vorpal
23:48:07 <CakeProphet> but on IRC I suppose it would mean in this topic.
23:48:14 <CakeProphet> as IRC isn't thread-based.
23:48:17 <Vorpal> oerjan: canno? what?
23:48:33 <Sgeo|web> We should make some sort of thread-based live chat
23:48:45 <oerjan> Vorpal: i am simulating an interrupted phrase here
23:49:02 <Vorpal> oerjan: that doesn't really make much sense over IRC due to line ending
23:49:04 <Vorpal> editing*
23:49:26 <oerjan> Vorpal: yeah i even added the canno part after i saw your message :P
23:49:34 <Vorpal> oerjan: right
23:49:55 <oerjan> also it makes plenty of sense ;)
23:50:27 <Vorpal> oerjan: the key point above was that when I said PC game zzo38 interpreted it as games running without OS just making use of BIOS functions. Which is a very weird definition of PC game.
23:50:34 <oerjan> i seem to be almost entirely transfering from D and ) to P in emoticons these days
23:51:06 <Vorpal> oerjan: there is probably a deeper meaning to that, but I'm too lazy to figure it out
23:51:32 <oerjan> "that"?
23:51:43 <Vorpal> that = "the transferring"
23:51:53 <oerjan> i assume i picked it up from this channel
23:52:16 <Vorpal> oerjan: no I think it is because you are becoming older and more cynical
23:52:29 <oerjan> no, then i would use | or /
23:52:31 <tiffany> o~o
23:52:40 <monqy> o~o
23:52:44 <oerjan> which still happens
23:52:55 <oerjan> @_@
23:53:03 <tiffany> eh
23:53:05 <oerjan> or one of those
23:53:12 <tiffany> I hate when people say "PC game" and really mean "windows-only game"
23:53:12 <Vorpal> tiffany: two buoys with a wave in between?
23:53:32 <Vorpal> tiffany: actually I mean "game I can play on my dual booting PC"
23:53:33 <Vorpal> :P
23:53:41 <Vorpal> which includes everything but mac basically
23:53:47 <tiffany> the term is just so generic
23:53:57 <tiffany> "game that you play on a computer designed for personal use"
23:54:01 <Vorpal> okay not freebsd games. But well, come on, are there freebsd exclusive titles?
23:54:15 <Vorpal> tiffany: as opposed to mainframe games, yeah
23:54:23 <Vorpal> or cluster games
23:54:23 <tiffany> are there even mainframe games?
23:54:30 <tiffany> aside from things like that tetris game on sdf
23:54:32 <oerjan> this game is so PC, no bloodshed or swearing at all
23:54:32 <Vorpal> probably not
23:54:39 <Vorpal> tiffany: sdf?
23:54:46 <tiffany> gopher://sdf.org :p
23:54:48 <Vorpal> oerjan: augh
23:55:00 <Vorpal> tiffany: too new firefox
23:55:03 <Vorpal> can't do it
23:55:07 <tiffany> ;~;
23:55:07 <Vorpal> well I could try lynx
23:55:21 * tiffany pulls up public proxy from floodgap
23:55:28 <Vorpal> tiffany: two fishing hooks with a wave between?
23:55:32 <Vorpal> weird smiley that
23:55:35 <tiffany> http://gopher.floodgap.com/gopher/gw?a=sdf.org
23:56:03 <Vorpal> oh god, when was that last updated
23:56:12 <tiffany> I have no idea :p
23:56:14 <Vorpal> it is like the early 90s
23:56:24 <Vorpal> tiffany: anyway, that is a unix system, not a mainframe.
23:56:27 <oerjan> Vorpal: no it means tiffany is a crab
23:56:34 <monqy> robot crab
23:56:37 <tiffany> .-.
23:56:40 <tiffany> well
23:56:48 <tiffany> aren't mainframes extinct?
23:56:50 <Vorpal> mainframe is typically not a unix system, but something like an IBM mainframe.
23:56:58 <Vorpal> tiffany: IBM zSeries still exist
23:57:06 <Vorpal> otherwise they are pretty much extinct.
23:57:15 <Vorpal> tiffany: things like banks and such still buy them
23:57:18 <Vorpal> that is about it
23:57:19 <tiffany> o.o
23:57:58 <Vorpal> oh it is "IBM System z" now
23:58:05 <Vorpal> was zSeries a few years ago
23:59:45 <zzo38> I also hate when people say "PC game" and really mean "windows-only game"
2011-10-03
00:00:09 <Vorpal> I don't mean that. I mean Linux or Windows game.
00:00:20 <tiffany> https://secure.wikimedia.org/wikipedia/en/wiki/Mainframe_computer#Description this sounds so awesome
00:00:38 <tiffany> eh, I tend to not use the term "PC game"
00:00:39 <zzo38> Vorpal: Well, at least that is somewhat better than meaning Windows-only.
00:01:09 <Vorpal> zzo38: basically it means to me anything that could run on my desktop, which has windows and linux installed.
00:01:22 <Vorpal> that is, without the use of an emulator
00:01:34 <tiffany> there's a wine and a line, I wonder if there's a mine
00:01:44 <Vorpal> tiffany: line?
00:01:53 <Vorpal> linux for windows?
00:01:54 <tiffany> it's some backwards version of wine
00:01:59 <Vorpal> heh
00:02:01 <Vorpal> how weird
00:02:26 <Vorpal> oh and wine generally fails on high end games. Especially on radeon graphics.
00:03:15 <zzo38> Many UNIX programs can be recompiled to run on Windows by using Cygwin.
00:03:24 <Vorpal> slowly
00:03:28 <Vorpal> cygwin is quite horrible
00:03:33 <tiffany> meh
00:03:41 <tiffany> wine fails on newer directX's for me
00:03:51 <CakeProphet> cygwin is terrible, but better than the alternative of nothing.
00:04:00 <tiffany> it runs portal 1 (although super slow at loading things), but not portal 2
00:04:05 <tiffany> and also runs opengl games perfectly
00:04:06 <Vorpal> tiffany: it seems to work with dx10 stuff sometimes. Never dx11
00:04:10 <tiffany> yeah
00:04:26 <tiffany> and then opengl stuff I've always found are faster on linux under wine then they are natively on windows :P
00:04:32 <Vorpal> tiffany: portal 1 runs fine in wine
00:04:37 <zzo38> Depending on the way a program is written, it might work even with MinGW. When I write a C prorgam I try to make it work on Windows with MinGW, and on any UNIX systems, just as well.
00:04:44 <Vorpal> tiffany: oh? what games on windows use opengl?
00:04:48 <tiffany> blockland
00:04:58 <Vorpal> tiffany: never heard of it, what sort of game is it?
00:05:05 <tiffany> it's a block building game :p
00:05:05 <Vorpal> please please not a mc clone
00:05:08 <tiffany> nope
00:05:27 <tiffany> It was started in like 2003 I think, and it's a lego kind of game
00:05:28 <Vorpal> tiffany: so what is it about then, block building but not an mc clone?
00:05:31 <Vorpal> oh
00:05:44 <Vorpal> tiffany: I have done lego under wine. CAD.
00:05:50 <tiffany> :I
00:06:21 <Vorpal> you know what I should do? I should design a device so I can do CAM with lego. The device would be built in lego too
00:06:33 <Vorpal> no idea how to pull it off, but it sounds awesome
00:06:52 <Vorpal> ESPECIALLY if it could replicate itself from lego parts
00:08:41 <Vorpal> on a completely unrelated note: different headphones makes a much larger difference than different sound cards. Though both matter.
00:09:06 <CakeProphet> `run units --version
00:09:08 <HackEgo> sh: units: command not found
00:09:19 <Vorpal> CakeProphet: version NaN
00:12:35 <CakeProphet> `fetch ftp://ftp.gnu.org/gnu/units/units-1.88.tar.gz
00:12:38 <HackEgo> 2011-10-03 00:12:38 URL: ftp://ftp.gnu.org/gnu/units/units-1.88.tar.gz [261519] -> "units-1.88.tar.gz" [1]
00:13:02 <CakeProphet> `run tar xfz units-1.88.tar.gz
00:13:04 <HackEgo> No output.
00:13:13 <CakeProphet> `ls
00:13:15 <HackEgo> bin \ canary \ karma \ lib \ paste \ quotes \ units-1.88 \ units-1.88.tar.gz \ wisdom
00:13:23 <CakeProphet> `ls units-1.88
00:13:25 <HackEgo> COPYING \ ChangeLog \ INSTALL \ Makefile.OS2 \ Makefile.dos \ Makefile.in \ NEWS \ README \ README.OS2 \ configure \ configure.ac \ getopt.c \ getopt.h \ getopt1.c \ install-sh \ makeobjs.cmd \ mkinstalldirs \ parse.tab.c \ parse.y \ strfunc.c \ texi2man \ units.c \ units.dat \ units.doc \ units.dvi \ units.h \ units.info
00:13:32 <CakeProphet> ... :(
00:13:45 <CakeProphet> can I make something without being in the right directory?
00:13:51 <CakeProphet> ah wait nevermind.
00:15:01 <CakeProphet> `run chmod +x units-1.88/configure
00:15:03 <HackEgo> No output.
00:15:24 <CakeProphet> `run cd units-1.88 && ./configure && make
00:15:55 <HackEgo> checking for gcc... gcc \ checking for C compiler default output file name... a.out \ checking whether the C compiler works... yes \ checking whether we are cross compiling... no \ checking for suffix of executables... \ checking for suffix of object files... o \ checking whether we are using the GNU C compiler... yes
00:16:01 <Vorpal> CakeProphet: argh
00:16:08 <Vorpal> CakeProphet: it will time out the command
00:16:10 <Vorpal> but
00:16:17 <Vorpal> `run cd units-1.88 && make
00:16:19 <HackEgo> make: *** No targets specified and no makefile found. Stop.
00:16:23 <Vorpal> well
00:16:30 <Vorpal> before it finished configuring even
00:16:38 <CakeProphet> so...
00:16:40 <CakeProphet> wat do?
00:16:52 <Vorpal> `run cd units-1.88 && ./configure --prefix=$HOME/units &> errors.log
00:17:08 <Vorpal> `url units-1.88/errors.log
00:17:10 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/units-1.88/errors.log
00:17:18 <Vorpal> not there yet
00:17:20 <Vorpal> I guess
00:17:23 <HackEgo> No output.
00:17:35 <Vorpal> CakeProphet: but BEST way is to just wait for gregor
00:17:42 <CakeProphet> no way.
00:17:51 <CakeProphet> `url units-1.88/errors.log
00:17:51 <Vorpal> and the error log file didn't work
00:17:53 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/units-1.88/errors.log
00:17:53 <Vorpal> no idea why
00:18:15 <Vorpal> CakeProphet: file was never created
00:18:22 <Vorpal> probably buffering
00:18:34 <Vorpal> CakeProphet: anyway there is no time for configure to complete
00:18:37 <CakeProphet> `run cd units-1.88 && make install
00:18:38 <Vorpal> CakeProphet: better way
00:18:39 <HackEgo> make: *** No rule to make target `install'. Stop.
00:18:40 <Vorpal> `arch
00:18:42 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: arch: not found
00:18:43 <CakeProphet> Vorpal: who needs configure :P
00:18:47 <Vorpal> `uname -a
00:18:48 <CakeProphet> I'll just pretend the makefile works.
00:18:49 <HackEgo> Linux (none) 3.0.1-umlbox #5 Fri Aug 19 13:17:44 UTC 2011 x86_64 GNU/Linux
00:18:52 <Vorpal> CakeProphet: ...
00:18:56 <Vorpal> CakeProphet: there IS NO MAKEFILE
00:19:09 <Vorpal> CakeProphet: compile a static x86-64 units locally and upload it
00:19:11 <Vorpal> that should work
00:19:20 <CakeProphet> what would the likelihood be of me giving it my units executable and it running with absolutely no problems?
00:19:23 <CakeProphet> er
00:19:25 <CakeProphet> that
00:19:27 <CakeProphet> yes
00:19:29 <Vorpal> CakeProphet: link it statically
00:19:32 <Vorpal> not dynamically
00:19:40 <CakeProphet> I'm guessing this is not what apt-get does by default
00:19:45 <Vorpal> CakeProphet: indeed
00:19:54 <Vorpal> it will be dynamic by default of course
00:20:07 <CakeProphet> one second while I learn how to do that.
00:20:14 <Vorpal> CakeProphet: I assume you are able to figure out the rest by yourself. I'm going to sleep
00:23:20 -!- augur has joined.
00:28:03 -!- ive has quit (Ping timeout: 240 seconds).
00:30:35 <CakeProphet> `ls
00:30:37 <HackEgo> bin \ canary \ karma \ lib \ paste \ quotes \ units-1.88 \ units-1.88.tar.gz \ wisdom
00:30:55 <CakeProphet> `rm -r units-1.88*
00:30:57 <HackEgo> rm: invalid option -- \ Try `rm --help' for more information.
00:30:57 <CakeProphet> `ls
00:30:59 <HackEgo> bin \ canary \ karma \ lib \ paste \ quotes \ units-1.88 \ units-1.88.tar.gz \ wisdom
00:31:07 <CakeProphet> `run rm -r units-1.88*
00:31:10 <HackEgo> No output.
00:31:10 <CakeProphet> `ls
00:31:12 <HackEgo> bin \ canary \ karma \ lib \ paste \ quotes \ units-1.88 \ units-1.88.tar.gz \ wisdom
00:31:46 <CakeProphet> `run rm -r units-1.88 && rm units-1.88
00:31:48 <HackEgo> rm: cannot remove `units-1.88': No such file or directory
00:31:51 <CakeProphet> ...
00:31:52 <CakeProphet> `ls
00:31:54 <HackEgo> bin \ canary \ karma \ lib \ paste \ quotes \ wisdom
00:31:59 <CakeProphet> weird.
00:34:34 <CakeProphet> `ls lib
00:34:36 <HackEgo> adjustkarma
00:35:56 <CakeProphet> `mkdir /usr/local/share
00:35:58 <HackEgo> mkdir: cannot create directory `/usr/local/share': File exists
00:36:18 <CakeProphet> `mkdir -p /usr/local/share
00:36:19 <HackEgo> mkdir: invalid option -- \ Try `mkdir --help' for more information.
00:36:22 <CakeProphet> `run mkdir -p /usr/local/share
00:36:24 <HackEgo> No output.
00:38:14 <oerjan> CakeProphet: HackEgo's repository merging sometimes means a command does not yet see the result of a previous command
00:38:23 <CakeProphet> ah
00:38:53 <CakeProphet> hmmm for some reason my static compile isn't working but I have no clue why..
00:39:11 <CakeProphet> make install doesn't really give me an error output just a bunch of command echos.
00:39:26 <oerjan> CakeProphet: i do not think you have writing access to /usr
00:39:48 <CakeProphet> you mean locally? I do if I use sudo, of course..
00:39:57 <oerjan> i mean on HackEgo
00:40:04 <CakeProphet> oh. that's weird.
00:40:14 <oerjan> it's not running as root :P
00:40:27 <CakeProphet> `ls
00:40:29 <HackEgo> bin \ canary \ karma \ lib \ paste \ quotes \ wisdom
00:40:31 <oerjan> hm or...
00:40:38 <oerjan> that's the home directory
00:40:43 <oerjan> `ls -l /
00:40:46 <HackEgo> ls: invalid option -- \ Try `ls --help' for more information.
00:40:48 <oerjan> `run ls -l /
00:40:50 <HackEgo> total 32 \ drwxr-xr-x 2 0 0 4096 Mar 25 2011 bin \ drwxr-xr-x 4 0 0 4096 Feb 5 2011 dev \ drwxr-xr-x 3 0 0 0 Oct 3 00:40 etc \ drwxr-xr-x 7 5000 0 4096 Oct 3 00:40 hackenv \ drwxr-xr-x 3 0 0 0 Oct 3 00:40 home \ drwxr-xr-x 10 0 0 4096 Mar 25 2011 lib \ drwxr-xr-x 10 0 0 4096 Mar 25 2011
00:40:57 <CakeProphet> ah
00:41:02 <CakeProphet> didn't realize that was home.
00:41:15 <CakeProphet> `run ls /lib
00:41:17 <HackEgo> cpp \ init \ ld-2.7.so \ ld-linux-x86-64.so.2 \ libBrokenLocale-2.7.so \ libBrokenLocale.so.1 \ libSegFault.so \ libacl.so.1 \ libacl.so.1.1.0 \ libanl-2.7.so \ libanl.so.1 \ libattr.so.1 \ libattr.so.1.1.0 \ libblkid.so.1 \ libblkid.so.1.0 \ libbz2.so.1 \ libbz2.so.1.0 \ libbz2.so.1.0.4 \ libc-2.7.so \ libc.so.6 \ libcfont.so.0
00:41:29 <CakeProphet> `run ls /lib/local/share
00:41:31 <HackEgo> ls: cannot access /lib/local/share: No such file or directory
00:41:42 <CakeProphet> so then...
00:41:55 <CakeProphet> `run mkdir -p usr/lib/share
00:41:57 <HackEgo> No output.
00:41:57 <CakeProphet> ???
00:41:59 <CakeProphet> `ls
00:42:01 <HackEgo> bin \ canary \ karma \ lib \ paste \ quotes \ wisdom
00:42:22 <CakeProphet> `run mkdir -p usr/lib/share 2>&1
00:42:24 <HackEgo> No output.
00:42:35 <CakeProphet> `ls
00:42:37 <HackEgo> bin \ canary \ karma \ lib \ paste \ quotes \ wisdom
00:42:53 <CakeProphet> >_>
00:42:55 <oerjan> oh
00:43:06 <oerjan> the repository doesn't preserve empty dirs :P
00:44:09 <CakeProphet> `run mkdir -p usr/local/share 2>&1 && touch usr/lol && touch usr/local/lol && touch /usr/local/share/lol
00:44:11 <HackEgo> touch: cannot touch `/usr/local/share/lol': Read-only file system
00:44:15 <CakeProphet> :P
00:44:32 <CakeProphet> `run mkdir -p usr/local/share 2>&1 && touch usr/lol && touch usr/local/lol && touch usr/local/share/lol
00:44:35 <HackEgo> No output.
00:44:38 <CakeProphet> `ls
00:44:39 <oerjan> i don't think you need a file in the intermediate ones. but who knows.
00:44:40 <HackEgo> bin \ canary \ karma \ lib \ paste \ quotes \ usr \ wisdom
00:45:11 <CakeProphet> uh... so I'm too clear on how run this configure script to make it work in this environment...
00:45:33 <oerjan> well i cannot answer that.
00:45:55 <CakeProphet> ./configure --exec-prefix="/home/hackenv/bin" --datadir="/home/hackenv/usr/local/share"
00:45:57 <CakeProphet> I guess?
00:46:01 <CakeProphet> let's fine out.
00:46:21 <oerjan> `run pwd
00:46:23 <HackEgo> ​/hackenv
00:46:27 <oerjan> oh
00:46:28 <CakeProphet> ah
00:46:41 <CakeProphet> so this environment is basically completely non-standard :P
00:46:53 <oerjan> would seem so
00:47:17 <CakeProphet> good that makes things fun.
00:48:25 -!- zzo38 has quit (Remote host closed the connection).
00:48:37 <CakeProphet> `run rm -r usr
00:48:39 <HackEgo> No output.
00:48:53 <CakeProphet> `run mkdir share && touch share/foo
00:48:55 <HackEgo> No output.
00:48:57 <CakeProphet> `ls
00:48:59 <HackEgo> bin \ canary \ karma \ lib \ paste \ quotes \ share \ wisdom
00:51:02 <CakeProphet> `fetch http://dl.dropbox.com/u/16495819/hackenv/bin/units
00:51:04 <HackEgo> 2011-10-03 00:51:04 URL:http://dl.dropbox.com/u/16495819/hackenv/bin/units [146396/146396] -> "units" [1]
00:51:11 <CakeProphet> `mv units bin
00:51:13 <HackEgo> mv: missing destination file operand after `units bin' \ Try `mv --help' for more information.
00:51:30 <CakeProphet> `run mv units bin
00:51:32 <HackEgo> No output.
00:51:36 <CakeProphet> `fetch http://dl.dropbox.com/u/16495819/hackenv/share/units.dat
00:51:38 <HackEgo> 2011-10-03 00:51:38 URL:http://dl.dropbox.com/u/16495819/hackenv/share/units.dat [221844/221844] -> "units.dat" [1]
00:51:41 <CakeProphet> `run mv units.dat share
00:51:43 <HackEgo> No output.
00:52:10 <CakeProphet> `run units --version
00:52:12 <HackEgo> sh: /hackenv/bin/units: Permission denied
00:52:21 <CakeProphet> `run chmod +x bin/units
00:52:23 <HackEgo> No output.
00:52:24 <CakeProphet> `run units --version
00:52:26 <HackEgo> sh: /hackenv/bin/units: Permission denied
00:52:37 <CakeProphet> `run chmod +x bin/units 2>&1
00:52:38 <HackEgo> No output.
00:52:41 <CakeProphet> `run units --version
00:52:43 <HackEgo> units: error while loading shared libraries: libreadline.so.6: cannot open shared object file: No such file or directory
00:52:52 <CakeProphet> ....oh, not static apparently.
00:53:20 <CakeProphet> I thought I fixed that...
00:53:37 <oerjan> `run ls -l bin/units
00:53:39 <HackEgo> ​-rwxr-xr-x 1 5000 0 146396 Oct 3 00:53 bin/units
00:55:02 <augur> http://countercomplex.blogspot.com/2011/10/algorithmic-symphonies-from-one-line-of.html
00:55:22 <CakeProphet> I think I might have to like... add a bunch of linker flags to weird places?
00:55:27 <CakeProphet> or something?
00:55:31 <CakeProphet> I don't really understand.
00:57:27 <CakeProphet> this configure script apparently doesn't have --enable-static or --disable-shared
01:00:16 <oerjan> augur: i think everyone here but me did stuff like that yesterday
01:00:33 <oerjan> i cannot recall if you were involved
01:01:09 <oerjan> is viznut someone known here?
01:01:15 <augur> oerjan: its cool :o
01:01:53 <oerjan> by the finnish guys, perhaps
01:02:13 <augur> well it is pouet
01:02:32 <oerjan> pouet?
01:03:05 <CakeProphet> according to the autoconf file units generates both static and share by default???
01:03:11 <oerjan> hm
01:03:17 <CakeProphet> but... I only see one
01:08:07 <CakeProphet> I wonder if #gnu can help me. :P
01:08:18 <CakeProphet> probably too busy saving the world.
01:10:25 <pikhq_> CakeProphet: --enable-static and --disable-shared, contrary to common belief, does not mean "link this statically".
01:10:36 <CakeProphet> oh.
01:10:40 <pikhq_> CakeProphet: --enable-static enables building static libraries, and --disable-shared disables building shared libraries.
01:10:48 <CakeProphet> well I did LDFLAGS="-static" as well
01:10:48 <pikhq_> What you want is LDFLAGS=-static
01:10:51 <CakeProphet> yes
01:11:03 <CakeProphet> but uh... it's still shared for some reason?
01:11:31 <pikhq_> Then the person who made that program does not know autoconf. :P
01:11:45 <CakeProphet> wait do I need to export LDFLAGS?
01:12:05 <pikhq_> Depends, how are you setting it?
01:12:12 <pikhq_> LDFLAGS=-static; ...?
01:12:15 <CakeProphet> ...yes
01:12:16 <CakeProphet> just in a shell
01:12:19 <pikhq_> Or LDFLAGS=-static ...?
01:12:20 <CakeProphet> terminal
01:12:28 <CakeProphet> erm....
01:12:32 <pikhq_> Congrats, you don't know shell. :P
01:12:46 <CakeProphet> I wasn't aware you could even do that.
01:12:52 <CakeProphet> nor do I know what it means.
01:13:17 <oerjan> it might depend on the shell
01:13:18 <pikhq_> FOO=bar will export FOO=bar for the following command.
01:13:24 <CakeProphet> oh okay.
01:13:30 <pikhq_> It's... Kinda a common shell idiom.
01:13:59 <pikhq_> Up there with pipes in commonness.
01:15:08 <CakeProphet> (.text+0x38db): warning: Using 'endpwent' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
01:15:26 <CakeProphet> pikhq_: yeah yeah
01:17:19 <CakeProphet> pikhq_: also does this warning sound like it will be a problem?
01:17:48 <pikhq_> CakeProphet: Not for the intended usecase: HackEgo has the glibc .sos.
01:18:02 <oerjan> `run ls /usr/lib/share/libc*
01:18:04 <HackEgo> ls: cannot access /usr/lib/share/libc*: No such file or directory
01:18:40 <oerjan> hm...
01:19:17 * oerjan cannot be bothered
01:21:20 <CakeProphet> `fetch http://dl.dropbox.com/u/16495819/hackenv/bin/units
01:21:23 <HackEgo> 2011-10-03 01:21:22 URL:http://dl.dropbox.com/u/16495819/hackenv/bin/units [146396/146396] -> "units" [1]
01:21:41 <CakeProphet> `run chmod +x units && mv units bin
01:21:43 <HackEgo> No output.
01:21:49 <CakeProphet> `run units --version
01:21:51 <HackEgo> units: error while loading shared libraries: libreadline.so.6: cannot open shared object file: No such file or directory
01:21:55 <CakeProphet> -_-
01:23:08 <CakeProphet> grabbed the wrong one
01:24:02 <CakeProphet> `fetch http://dl.dropbox.com/u/16495819/hackenv/bin/units
01:24:08 <HackEgo> 2011-10-03 01:24:08 URL:http://dl.dropbox.com/u/16495819/hackenv/bin/units [1613113/1613113] -> "units" [1]
01:24:09 <CakeProphet> `run chmod +x units && mv units bin
01:24:12 <HackEgo> No output.
01:24:20 <CakeProphet> `run units --version
01:24:22 <HackEgo> GNU Units version 1.88 \ with readline, units database in /hackenv/share/units.dat \ Copyright (C) 2006 Free Software Foundation, Inc. \ GNU Units comes with ABSOLUTELY NO WARRANTY. \ You may redistribute copies of GNU Units \ under the terms of the GNU General Public License. \
01:24:25 -!- ive has joined.
01:24:26 <CakeProphet> weeee
01:25:13 <CakeProphet> `run units '75 F' 'C'
01:25:15 <HackEgo> conformability error \.75 A^2 s^4 / kg m^2 \.1 A s
01:25:21 <CakeProphet> ...
01:25:22 <CakeProphet> heh
01:25:28 -!- MichaelBurge_ has joined.
01:25:30 <CakeProphet> not sure hot to specify temps
01:25:39 -!- MichaelBurge has quit (Ping timeout: 245 seconds).
01:25:46 <CakeProphet> `run units '135 pounds' 'kilograms'
01:25:49 <HackEgo> ​* 61.23497 \./ 0.016330538
01:26:09 -!- Sgeo|web has quit (Ping timeout: 252 seconds).
01:26:18 <CakeProphet> `run units '135 tempF' 'tempC'
01:26:21 <HackEgo> Error in '135 tempF': Parse error
01:26:35 <CakeProphet> `run units 'tempF(135)' 'tempC'
01:26:36 <oerjan> `run units '273.15 K' celsius
01:26:37 <HackEgo> 57.222222
01:26:38 <HackEgo> Unknown unit 'celsius'
01:26:42 <CakeProphet> there we go
01:26:43 <oerjan> wut
01:26:48 <CakeProphet> yeah that one is weird...
01:26:53 <oerjan> `run units '273.15 K' tempC
01:26:55 <HackEgo> 0
01:27:43 <CakeProphet> Think of `tempF(x)' not as a function but as a notation which indicates that `x' should have units of `tempF' attached to it. See Nonlinear units. The first conversion shows that if it's 45 degrees Fahrehneit outside it's 7.2 degrees Celsius. The second conversions indicates that a change of 45 degrees Fahrenheit corresponds to a change of 25 degrees Celsius.
01:27:43 <oerjan> `run units '1.000025 c' m
01:27:45 <HackEgo> conformability error \.2.9979995e+08 m / s \.1 m
01:27:51 <CakeProphet> c?
01:27:56 <oerjan> oh
01:28:02 <oerjan> `run units '1.000025 c' 'm/s'
01:28:04 <HackEgo> ​* 2.9979995e+08 \./ 3.3355576e-09
01:29:24 <CakeProphet> so any non-linear conversion uses the function notation.
01:29:44 <oerjan> `run units '1/picobarn' 'm^2'
01:29:45 <HackEgo> reciprocal conversion \..* 1e-40 \./ 1e+40
01:29:55 <oerjan> oops
01:30:00 <oerjan> `run units '1 picobarn' 'm^2'
01:30:02 <HackEgo> ​* 1e-40 \./ 1e+40
01:30:35 <CakeProphet> `run units '1 beardsecond' 'nanometer'
01:30:38 <HackEgo> Unknown unit 'beardsecond'
01:30:44 <CakeProphet> what? proposterous
01:31:25 <oerjan> strictly speaking celsius -> fahrenheit is perfectly linear :)
01:31:49 <CakeProphet> well yeah, they mean that it can't be expresses a conversion factor
01:31:55 <CakeProphet> *expressed
01:32:14 <CakeProphet> kind of an arbitrary distinction I guess
01:32:48 <CakeProphet> `run units '1 romanfeet' 'feet'
01:32:50 <HackEgo> ​* 0.97112861 \./ 1.0297297
01:33:00 <CakeProphet> `run units '1 olympicfeet' 'feet'
01:33:02 <HackEgo> ​* 1.0125 \./ 0.98765432
01:33:05 <oerjan> `run units '1 light nanosecond' feet
01:33:07 <HackEgo> ​* 0.98357106 \./ 1.0167034
01:34:41 <oerjan> `run units '1 c' 'furlongs/fortnight'
01:34:43 <HackEgo> ​* 1.8026175e+12 \./ 5.5474886e-13
01:35:02 -!- DH____ has joined.
01:36:33 <CakeProphet> `run echo "beardsecond 5 nanometers" >> share/units.dat
01:36:35 <HackEgo> No output.
01:36:51 <CakeProphet> `run units '1 beardsecond' 'feet'
01:36:53 <HackEgo> ​* 1.6404199e-08 \./ 60960000
01:37:02 <CakeProphet> `run units '5000 beardseconds' 'feet'
01:37:04 <HackEgo> ​* 8.2020997e-05 \./ 12192
01:37:07 <CakeProphet> excellent
01:39:29 <CakeProphet> `run units '5000 beardseconds/hour' 'feet/year'
01:39:30 <HackEgo> ​* 0.71898071 \./ 1.3908579
01:39:49 <CakeProphet> `run units '5000 beardseconds/second' 'feet/year'
01:39:51 <HackEgo> ​* 2588.3305 \./ 0.00038634942
01:40:22 <CakeProphet> I'm interpreting that to mean that 5000 men produce 2588 feet of beard on average per year?
01:43:31 <CakeProphet> !delinterp insanetemp
01:43:39 <CakeProphet> NO EGOBOT
01:44:37 <CakeProphet> `run units '1 beardseconds/second' 'feet/year'
01:44:39 <HackEgo> ​* 0.51766611 \./ 1.9317471
01:46:12 <CakeProphet> `run units '424 demisemiquavers' 'wholenotes'
01:46:14 <HackEgo> ​* 13.25 \./ 0.075471698
01:46:45 <CakeProphet> `run units 'majorsecond' 'minorthird'
01:46:47 <HackEgo> ​* 0.9375 \./ 1.0666667
01:46:52 <CakeProphet> lol nice.
02:22:08 <Gregor> The best way is not to wait for me.
02:22:13 <Gregor> The best way is to Just Do It™.
02:22:18 <Gregor> I'm glad to see that's what you did :P
02:25:32 <CakeProphet> yeaaaaah
02:25:41 <CakeProphet> fuck deferrence.
02:26:11 <CakeProphet> also I learned stuff.
02:26:50 <CakeProphet> like how to statically link via a configure script, and that variable export idiom thing,
02:27:32 <CakeProphet> USEFUL THINGS IN THESE MODERN TIMES.
02:29:31 <CakeProphet> waiting on Gregor seemed counter to the spirit of HackEgo. :P
02:34:47 -!- augur_ has joined.
02:35:05 -!- augur has quit (Read error: Connection reset by peer).
02:35:22 <Gregor> Exactly!
02:39:22 -!- Sgeo|fsck_web has joined.
02:39:33 * Sgeo|fsck_web tried playing kathack on the Chrome new tab page
02:43:12 -!- DH____ has quit (Read error: Connection reset by peer).
02:43:16 -!- DHeadshot has joined.
02:46:35 <Sgeo|fsck_web> Anyone in here use god?
02:46:59 <Sgeo|fsck_web> http://packages.ubuntu.com/natty/god
02:47:13 * Sgeo|fsck_web is easily amused
02:58:44 -!- pikhq has joined.
02:58:44 -!- pikhq_ has quit (Ping timeout: 256 seconds).
03:12:15 -!- Jafet has joined.
03:26:14 -!- Pergamentum has joined.
03:27:22 -!- MDude has changed nick to MSleep.
03:28:00 -!- Pergamentum has left.
03:28:52 <oerjan> not very permanentum
03:29:42 -!- DHeadshot has quit (Ping timeout: 248 seconds).
03:36:36 -!- tiffany has quit (Quit: Bai~).
03:38:39 -!- pikhq_ has joined.
03:38:48 -!- pikhq has quit (Ping timeout: 260 seconds).
03:53:17 -!- pikhq has joined.
03:53:50 -!- pikhq_ has quit (Ping timeout: 276 seconds).
03:56:29 * Sgeo|fsck_web irritates at Mibbit's pastebin service
04:14:06 <oerjan> `logs improbable[.]com/ig.*2011
04:14:08 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: logs: not found
04:14:14 <oerjan> `log improbable[.]com/ig.*2011
04:14:35 <HackEgo> No output.
04:14:46 <fizzie> That was improbable.
04:14:57 <oerjan> seems no one has mentioned it yet, despite 2 days passed: http://www.improbable.com/ig/winners/?repost#ig2011
04:15:49 <oerjan> (the ?repost was probably just to get it accepted by reddit's repost filter)
04:21:24 -!- Jafet has quit (Quit: Leaving.).
04:22:21 <oerjan> i think many of us should heed the results from the literature prize.
04:23:09 -!- augur_ has changed nick to augur.
04:25:25 <oerjan> omg the physics prize XD
04:28:02 <oerjan> the public safety prize sounds safe. yeah.
04:30:35 <pikhq> "Peace: Arturas Zuokas, the mayor of Vilnius, Lithuania, for demonstrating that the problem of illegally parked luxury cars can be solved by running over them with a tank."
04:32:42 <Sgeo|fsck_web> Warning: Cannot modify header information - headers already sent by (output started at /usr/www/users/improb/ig/ig-pastwinners.html:1) in /usr/www/users/improb/wp-includes/functions.php on line 3286
04:32:54 <Sgeo|fsck_web> PHP clearly got an Ignoble Prize
04:37:09 -!- Jafet has joined.
05:05:03 <Vorpal> "Error establishing a database connection" too
05:07:20 <oerjan> hm well it was working previously
05:09:23 <Vorpal> oerjan: who were the winners this year?
05:09:45 <Vorpal> saw something about turtles and yawning mentioned somewhere iirc?
05:09:59 <oerjan> yes, that was the physiology prize
05:10:50 <Vorpal> "Peace: Arturas Zuokas, the mayor of Vilnius, Lithuania, for demonstrating that the problem of illegally parked luxury cars can be solved by running over them with a tank." <-- wha
05:10:52 <oerjan> another link: http://arstechnica.com/science/news/2011/09/2011-ig-nobel-awards-go-to-beetle-on-beer-bottle-sex-decision-making-while-needing-to-pee-others.ars
05:10:56 <Vorpal> https://secure.wikimedia.org/wikipedia/en/wiki/List_of_Ig_Nobel_Prize_winners#2011
05:11:21 <oerjan> that particular one was suspected on reddit of being a stunt
05:11:45 <Vorpal> oerjan: wouldn't just clamping them be saner
05:12:06 <oerjan> heh
05:15:25 <Sgeo|fsck_web> "Perry postulates that, to be a high achiever, one must always work on something important, using it as a way to avoid something even more important. (Much as I am doing as I write this article; the bills that need to be paid can wait.)"
05:15:59 <Sgeo|fsck_web> I paste that as I procrastinate both sleep and homework
05:17:54 <Vorpal> bbl, university
05:19:06 * Sgeo|fsck_web goes to put his homeworking music on
05:34:15 -!- zzo38 has joined.
05:50:51 <Madoka-Kaname> http://countercomplex.blogspot.com/2011/10/algorithmic-symphonies-from-one-line-of.html < Wow, now that I read the page behind it, it's actually quite interesting.
05:51:01 <Madoka-Kaname> I vote we write an evolutionary algorithm.
05:54:23 <pikhq> TIL: YHWH literally demands the firstborn son of everyone.
05:54:28 <pikhq> But as a dispensation, he allows you to sacrifice a valuable animal in lieu of the son.
05:54:53 <pikhq> "The firstborn of thy sons shalt thou give unto me." — God.
05:56:09 <zzo38> "Thou shalt not make up God quotes." - God.
05:56:34 <zzo38> (This is from Uncyclopedia)
05:56:39 <pikhq> My quote was Exodus 22:29.
05:57:44 <zzo38> I believe you.
05:58:07 <Sgeo|fsck_web> God exists! http://god.rubyforge.org
06:00:23 * Madoka-Kaname instant gigglefest
06:11:49 -!- kmc has quit (Quit: Leaving).
06:15:49 -!- cheater has changed nick to {][3473|^.
06:23:53 -!- Sgeo|fsck_web has changed nick to AW346126.
06:24:19 * AW346126 vaguely hopes that {][3473|^ isn't a password
06:24:35 <coppro> haha
06:24:46 <{][3473|^> oh shi-
06:25:30 * AW346126 is almost tempted to see if it's a nickserv pass
06:25:45 -!- AW346126 has changed nick to cheater.
06:25:53 -!- cheater has quit (Disconnected by services).
06:26:29 <oerjan> if it is, i hope you have already changed it
06:26:30 -!- Sgeo|web has joined.
06:26:32 <{][3473|^> :D
06:26:35 * Sgeo|web feels like an idiot
06:27:08 <pikhq> Aaaah, Nickserv.
06:27:34 <{][3473|^> anyone else want to try guessing the password?..
06:28:05 <Sgeo|web> I didn't even put it in yet
06:28:17 <{][3473|^> the protection is proactive
06:28:35 <Sgeo|web> Um, I think everyone here knows how ghost works
06:28:59 <{][3473|^> the protection uses the time comonad to affect events in the past!!!!
06:29:24 <{][3473|^> :p
06:29:24 <Sgeo|web> You can't just say "Hah, fooled you!" and move on with your life?
06:29:41 <{][3473|^> fooled you :p
06:29:55 <{][3473|^> but i thought it was obvious i'm only kidding :D
06:30:10 <Sgeo|web> I'm a little tired right now
06:30:19 <{][3473|^> been up all night?
06:30:30 <Sgeo|web> It's 2:30 AM, and I have homework to do, then have to wake up at 7
06:30:31 <{][3473|^> ah it's still night there
06:30:36 * {][3473|^ woke up at 5 though
06:30:51 <{][3473|^> i suggest skipping homework?
06:30:56 <Sgeo|web> How about no
06:31:00 <{][3473|^> why is it more important than your health
06:31:06 <Sgeo|web> coppro: have you seen latest Doctor Who?
06:31:12 <coppro> Sgeo|web: yes
06:32:07 <Sgeo|web> :D
06:32:41 -!- GreaseMonkey has joined.
06:50:49 <olsner> if it's no longer enough to procrastinate stuff to tomorrow, apparently there's a word (perendinate) for delaying something until the day after tomorrow
06:51:27 <olsner> it seems to have an alternate meaning of simply to procrastinate but for a longer time
06:53:18 <{][3473|^> o nice
06:53:27 <{][3473|^> perendinate, i like that
06:54:24 -!- Jafet has quit (Quit: Leaving.).
06:57:02 -!- oerjan has quit (Quit: Good night).
07:02:34 <zzo38> I made up some kind of Bingo game where you have some control over the balls.
07:04:59 <{][3473|^> how do you control them?
07:05:40 <zzo38> The balls are on a pinball table with holes and you can control them by nudging the table.
07:05:57 <{][3473|^> what if you used the normal bingo drum
07:06:05 <{][3473|^> but balls of different sizes or weights?
07:06:26 <zzo38> This game doesn't use the normal bingo drum. But I suppose you can make up that game too
07:06:54 <{][3473|^> it's much too direct with being able to nudge the table imo
07:11:24 <zzo38> Do you play any pinball game?
07:14:22 <{][3473|^> sure
07:14:23 <{][3473|^> why?
07:14:44 <zzo38> O, I just wanted to know. Which one?
07:14:59 <{][3473|^> last thing i played was epic pinball
07:15:36 <zzo38> Have you play any flipperless pinball games?
07:16:01 <{][3473|^> i'm not sure how you define that
07:16:05 <{][3473|^> hmm
07:16:07 <{][3473|^> yeah i have
07:16:11 <{][3473|^> actually
07:16:32 <{][3473|^> i remember they were somewhat tough to get the most desirable places
07:17:58 <zzo38> Which flipperless pinball games have you played?
07:20:50 <{][3473|^> toy games
07:20:58 <{][3473|^> smaller than a post card
07:21:22 <zzo38> I have played computer flipperless pinball game.
07:21:27 <{][3473|^> they consisted of a flat plastic surface and another flat acrylic plastic surface right in front of it
07:21:39 <{][3473|^> and had "holes" where the ball could go
07:21:48 <{][3473|^> they were more like platforms on which the ball would stop when falling down
07:22:18 <{][3473|^> you had like 5 balls, and each platform had a score
07:22:28 <{][3473|^> the idea was to maximize the score
07:22:39 <{][3473|^> the ball was tiny, maybe 2-3 mm across
07:22:39 <zzo38> I like the game JiggleBox and GooGooDaDa. In the game JiggleBox, there are bumpers and drop targets, as well as holes. Two holes are 50 points, two holes are 100 points, one hole is 0 points, and two holes immediately end the game.
07:22:52 <zzo38> Yes I have played those kind of games too.
07:24:04 <{][3473|^> having 5 balls prevents cheating
07:24:26 <{][3473|^> because if you try to nudge or bump the game then the balls that are in place already would fall out
07:26:27 <zzo38> I can understand that. But if the table is standing on the ground and there are holes, as well as a plunger, an otherwise game similar to that, is what is called a bagatelle pinball game. Nudging is permitted although you cannot pick up the table.
07:27:30 -!- hagb4rd has joined.
07:28:16 -!- calamari has quit (Remote host closed the connection).
07:34:41 <augur> have we figured out these algorithmic symphonies yet?
07:39:22 * Madoka-Kaname is writing a little evolver for them :V
07:43:17 <zzo38> How well do you know of music theory?
07:48:02 <augur> i mean these http://countercomplex.blogspot.com/2011/10/algorithmic-symphonies-from-one-line-of.html
07:55:29 -!- monqy has quit (Quit: hello).
07:59:27 <zzo38> I did once also think of a pool ball game where the mass of each ball corresponds to its number, such as the number 3 ball has 3x mass of the number 1 ball.
08:01:29 <Patashu> that would be entertaining
08:02:19 <Sgeo|web> Should the rules for the 8 and 15 ball be swapped?
08:02:46 <Sgeo|web> Also, what's the cue ball?
08:04:10 <Patashu> massless, obviously
08:09:29 -!- Phantom_Hoover has joined.
08:09:36 <Sgeo|web> I think people like the transitive property for equality too much
08:10:48 <Patashu> I like meat too much
08:12:10 <Sgeo|web> I think if you get rid of it, you might not actually have problems with 0/0. Totally worth it.
08:13:13 <Phantom_Hoover> Heh.
08:13:52 <Sgeo|web> I should sleep
08:14:03 <Sgeo|web> I have to wake up in ~3 hours for a long day of school
08:14:05 * Sgeo|web is a dolt
08:14:16 <{][3473|^> zzo38: my game had a plunger too
08:15:32 <Sgeo|web> Is there a symbol for "contains the same information as expressed"?
08:15:42 <Patashu> ?
08:15:49 <{][3473|^> define that phrase
08:15:49 <Sgeo|web> So that 5+5 =?= 5+5 but not =?= 10
08:15:58 <Patashu> umm
08:16:09 <{][3473|^> yes, it's called =
08:16:19 <Patashu> no he means
08:16:22 <Patashu> saying 10 is different from saying 5+5
08:16:33 <{][3473|^> on the level of symbolic computation theory 5+5 = 5+5 but 5+5 == 10
08:16:42 <Patashu> oh
08:16:48 <Patashu> horribly overloaded tho
08:16:49 <{][3473|^> the == is the congruence symbol with three lines
08:16:53 <{][3473|^> not really
08:16:59 <{][3473|^> you just need to study maths a bit
08:17:13 <{][3473|^> = means shitloads of different, often opposite, things
08:17:22 <Patashu> so you agree that it's horribly overloaded
08:17:26 <{][3473|^> no
08:17:30 -!- zzo38 has quit (Remote host closed the connection).
08:17:32 <{][3473|^> i agree that it is normal
08:23:11 <Madoka-Kaname> val e: Expr = t*5&(t>>7)|t*3&(t*4>>10) < yay for implicit conversions!
08:24:31 -!- ive has quit (Quit: leaving).
08:29:55 <Patashu> know what would be an interesting savant power?
08:30:02 <Patashu> being able to look at one of those lines of code and know what it'll sound like.
08:30:11 <Patashu> surely someone somewhere in the world can do this
08:30:43 <augur> Madoka-Kaname: how is it implicitly converted?
08:30:52 <augur> there are no conversions there
08:31:03 <Madoka-Kaname> Scala stuff.
08:31:08 <Madoka-Kaname> More like, "yay for operator overloading"
08:31:10 <augur> what
08:31:18 <Madoka-Kaname> implicit def makeConstantValue(i: Int): Expr = ConstantValue(i) < this is mostly what I mean
08:31:33 <augur> i dont understand D:
08:31:34 <augur> but thats ok
08:32:36 <augur> {][3473|^: i think you might want to look at extensional vs. intensional equality
08:33:27 <{][3473|^> augur: extensionality is basic, so what?
08:33:33 <augur> no no
08:33:43 <augur> extensional vs intensional is exactly what you're talking about
08:33:49 <{][3473|^> i know
08:33:52 <augur> 5+5 ~ 5+5, but 5+5 /~ 10
08:33:53 <{][3473|^> why would i look at it?
08:34:04 <augur> well
08:34:12 <augur> you asked what it was called...
08:34:16 <{][3473|^> i have?
08:34:19 <Patashu> no he didn't
08:34:21 <Patashu> sgeo did
08:34:26 <augur> oh sorry!
08:34:29 <augur> i misread the lines :D
08:34:32 <augur> Sgeo|web: ^^^
08:34:33 <{][3473|^> beg for forgiveness
08:34:37 <augur> {][3473|^: make me
08:34:41 <{][3473|^> nah :p
08:34:53 <{][3473|^> ok fine
08:34:59 <{][3473|^> ./configure && make augur
08:35:05 <augur> D:
08:35:17 <{][3473|^> :D
08:35:17 <augur> sorry that doesnt work on me
08:35:21 <{][3473|^> hmm
08:35:28 <{][3473|^> python setup.py augur
08:35:31 <augur> nope!
08:35:41 <{][3473|^> debuild augur
08:35:41 <{][3473|^> there
08:35:43 <{][3473|^> that must work
08:35:51 <augur> nope!
08:36:32 -!- ais523 has joined.
08:36:34 <Patashu> g++ -O3 -Wall augur
08:36:52 <augur> nyet!
08:37:13 <ais523> Patashu: "augur" has no extension there, so would be interpreted as a linker script, IIRC
08:37:18 <ais523> you probably want a -x c++ in there somewhere
08:37:36 <Patashu> wow, I didn't know that
08:37:41 <augur> god this is irc you should be trying the obvious bash reference
08:38:01 <Patashu> you're right
08:38:01 <augur> bash.org is replete with irc memes appropriate for every situation
08:38:05 <Patashu> ./augur
08:38:09 <augur> -_-
08:38:20 <augur> you're horrible
08:38:41 <Madoka-Kaname> Patashu, I have it set up to generate an image from each pattern, as described in that article.
08:38:52 <Patashu> madoka-kaname: you mean a waveform? or a spectrogram?
08:38:53 <augur> maybe try an xkcd meme!
08:39:07 <Patashu> oh, thanks for reminding me
08:39:09 <Patashu> *clicks xkcd.com*
08:39:14 <Madoka-Kaname> http://3.bp.blogspot.com/-Dqm7wUdc_b4/TohqK5jRKJI/AAAAAAAAAH4/I6Uk8HH75q0/s320/tejeeztune.jpg
08:39:18 <Madoka-Kaname> Like that.
08:39:19 <Patashu> ha ha, that classic black hat guy
08:39:21 <Patashu> Lots Of Laughs
08:39:34 <Patashu> huh. is that a spectrogram?
08:39:39 <Madoka-Kaname> Patashu, no.
08:39:41 <Patashu> oh
08:39:42 <Patashu> I see what it is
08:39:51 <Madoka-Kaname> It's the output data interpreted as brightness values.
08:39:54 <Patashu> it's intensity over time except wrapping to a square
08:40:08 <Patashu> that would be a useful tool to have on the site
08:40:12 <{][3473|^> нет
08:40:13 <Madoka-Kaname> So, you should be able to look over it and rule out the most obviously not-going-to-work ones.
08:40:22 <Patashu> here's your music, also here's your timeline
08:40:39 <Patashu> hmm
08:40:43 <augur> dont forget smbc, satw, and hipster hitler!
08:40:51 <Patashu> is it going to know what width will make it line up as neat squares?
08:41:15 <Patashu> or will you tell it what width to use
08:41:52 <Madoka-Kaname> Currently, it's hardcoded at 400x400
08:42:17 <Madoka-Kaname> Which is the square root of 20*8000, i.e. 20 seconds of play
08:42:42 <{][3473|^> what are you making Madoka-Kaname
08:42:49 <augur> http://www.smbc-comics.com/index.php?db=comics&id=2386#comic
08:42:50 <augur> lol
08:42:51 <Patashu> you could rate the 'neatness' of a given width by going down columns and counting how many lines have low energy (deviate low amounts from pixel to pixel)
08:43:01 <Patashu> low energy indicates same intensity lines lining up of course
08:43:39 <Madoka-Kaname> It uses 512*512
08:45:00 <{][3473|^> what are you making?
08:45:36 <Patashu> hey
08:45:36 <Patashu> Madoka-Kaname> It's the output data interpreted as brightness values.
08:45:37 <Patashu> thanks
08:46:15 <{][3473|^> output data of what
08:46:30 <Patashu> http://www.bemmu.com/music/index.html
08:46:33 <{][3473|^> i have seen that line, it did not answer my question, so i brought it up
08:46:51 <{][3473|^> looking
08:47:06 <Madoka-Kaname> uMM
08:47:09 <Madoka-Kaname> Umm*
08:47:12 <Madoka-Kaname> What.
08:47:18 <Madoka-Kaname> This image has yellow parts.
08:47:20 <Madoka-Kaname> Time to debug.
08:47:24 <Patashu> lolll
08:49:15 <Patashu> Does anyone know of a cat to human translator?
08:49:16 <{][3473|^> that web page doesn't seem to work too well in firefox
08:49:18 <Patashu> My cat is meowing at me again
08:49:27 <{][3473|^> also, if you like this sort of stuff, i suggest you look into max msp
08:56:43 <Madoka-Kaname> Patashu, think it'd be safe to reject a mutant if there's too much entropy?
08:57:07 <Patashu> Clarify?
08:57:22 <Madoka-Kaname> If it looks like noise, reject it.
08:57:50 <Patashu> I don't know enough about how you're checking for noisiness to answer
08:58:10 <Patashu> I think most of the ones you'll want to reject are hyper-repetitive or a pure tone
09:00:39 <Patashu> idea for a test: zip it with your favourite compression algorithm. if it compresses below X kb reject it
09:00:49 <Patashu> and if it compresses above X kb reject it
09:01:24 <fizzie> Unrecognized extensions are treated as object files to be fed directly to the linker, not necessarily linker scripts.
09:01:52 <fizzie> In particular, foo.o will go through that rule.
09:03:41 <Phantom_Hoover> Patashu, estimate the Kolmogorov complexity.
09:04:10 <Patashu> Phantom_Hoover: Is there a compression algorithm that does that?
09:04:26 <Patashu> I know normally they're optimized for certain kinds of files, like images/sound/text/log files
09:04:37 <Phantom_Hoover> I suspect that the answer is either 'all of them' or 'none of them' depending on how you define it.
09:05:02 <fizzie> Depending on how you define "estimate", too.
09:05:21 <Phantom_Hoover> That was what I meant by 'it', really.
09:05:30 <Patashu> I guess ANY compression scheme is Kolmogorov complexity, isn't it? Just with a different machine it's defined for
09:05:35 <Patashu> (correct me if I'm wrong)
09:05:36 <Phantom_Hoover> Yes.
09:05:40 <Patashu> Ok
09:07:38 -!- ais523 has quit (Read error: Connection reset by peer).
09:08:21 <Madoka-Kaname> (((t * 5) & (t >> 7)) ^ ((t * 3) & ((t * 4) >> 12))) < Can somebody figure out a way to make this less... uh...
09:08:24 <Madoka-Kaname> Grindy-sounding.
09:08:49 <Phantom_Hoover> I keep forgetting what the link is.
09:08:51 -!- ais523 has joined.
09:09:23 <Madoka-Kaname> http://wurstcaptures.untergrund.net/music/
09:09:50 <Madoka-Kaname> Can somebody modify this to generate the image version instead of the sound version?
09:09:55 <Patashu> Madoka-Kaname: (((t * 5) & (t >> 7)) ^ ((t * 3) & ((t * 4) >> 12))) & 127
09:10:00 <Patashu> I basically beheaded it but it sounds a bit nicer like this
09:10:06 <Madoka-Kaname> =p
09:10:32 <Patashu> Does it have code to make the image version already?
09:10:40 -!- Jafet has joined.
09:10:45 <Madoka-Kaname> Nope.
09:10:54 <Madoka-Kaname> I have code, but it's in Scala, and no parser.
09:11:02 <Patashu> Rewrite it in javascript then
09:11:09 <Madoka-Kaname> http://i54.tinypic.com/123oz9z.png < Can anything be done about that buildup? :I
09:11:27 <Patashu> lol, that looks cool
09:11:32 <Phantom_Hoover> What buildup?
09:11:54 <Patashu> anyway
09:11:54 <Madoka-Kaname> Look at the top half.
09:11:59 <Patashu> you should add some smaller periodic elements
09:12:00 <Patashu> to break the tones up
09:12:20 <Madoka-Kaname> GAK
09:12:26 <Madoka-Kaname> The yellow image parts strikes again.
09:12:55 <Phantom_Hoover> http://www.reddit.com/r/programming/comments/kxqy4/brainfuk_turing_machine_javascript/
09:12:57 <Phantom_Hoover> Oh god.
09:18:59 -!- pikhq_ has joined.
09:19:26 -!- pikhq has quit (Ping timeout: 260 seconds).
09:19:50 <Madoka-Kaname> (((t * 5) & (t >> 7)) | (12 & ((t * 4) >> 15))) < This seems to be the.. eh...
09:19:54 <Madoka-Kaname> Basis of the thing?
09:20:48 <fizzie> Here's the quickest possible canvas-imagefication: http://users.ics.tkk.fi/htkallas/mimg/
09:21:04 <fizzie> It's just fixed 256x256 block, and splunts them samples in.
09:21:36 <fizzie> Doesn't even alter the length of the generated sample to match w*h or anything.
09:22:54 <Patashu> canvas element in html5 right?
09:22:55 <Patashu> *checks8
09:23:54 -!- itidus20 has joined.
09:23:56 <fizzie> Also it seems to be on a gradient from white-to-half-gray-to-white instead of black-to-white, which is a bit weird; if I glanced at magic.js right, generateSound() results will be 0..65535.
09:24:19 <Patashu> yeah, it is. cool
09:24:44 <Patashu> fizzie: maybe the sample program never generates 65535
09:24:53 <fizzie> Yes, but I was testing with "t".
09:24:55 <fizzie> Which does.
09:25:14 <Patashu> hmm
09:25:24 <itidus20> so i was thinking. if you have a chess game with a piece which can make null moves. and your opponent has such a piece. i wonder if you can enter into a null-move break wherein the person who makes the next move is the first one to declare a move
09:25:25 * Patashu shrug
09:25:54 <Patashu> itidus20: normally if both players pass in a row the game ends. whatever the game happens to be
09:26:07 <itidus20> ahh
09:26:25 <fizzie> Oh, right, one of the samples is the alpha channel. Heh, stupidity. Fixed now.
09:26:32 <Patashu> and repeating an earlier stage is either stalemate or a loss depending on the game
09:26:48 <fizzie> Now it looks quite similar to that image that was posted.
09:26:48 <itidus20> i guess the chess laws would also say that is making the same move several times is not allowed after a certain number of times..
09:26:54 <Madoka-Kaname> (t * (t>>11)) < Basic melody element?
09:26:57 <itidus20> but it would make for an interesting variation i think
09:27:05 <Patashu> fide chess has zugzwang
09:27:19 <Patashu> oh wait
09:27:21 <Patashu> zugzwang is different
09:27:22 <Patashu> http://en.wikipedia.org/wiki/Zugzwang
09:29:40 <itidus20> i suppose formally each player, in a chess-variant game without zugzwang, would still have to declare "pass" or whatever..
09:29:50 <Patashu> yep
09:29:59 <itidus20> but i like the idea of both passing resolving into a kind of gameshow buzzer situation
09:31:24 <itidus20> ok i think i get it
09:32:31 <itidus20> hmmmmm
09:32:51 <itidus20> hummm
09:33:25 <itidus20> an interesting chess variant would be a first turn pass option
09:33:43 <Patashu> why would you ever pass?
09:33:48 <Patashu> the first person has t he advantage in chess
09:33:57 -!- Phantom_Hoover has quit (Quit: Leaving).
09:34:04 <Patashu> (iirc, it's quantified as being worth a bit less than a pawn)
09:35:01 <itidus20> hmm.. i can see that when passing enters the game, it messes with the whole concept of first person
09:35:33 <itidus20> or does it???
09:35:36 <itidus20> eargh
09:35:48 <itidus20> no no.. im just very confused.. :)
09:36:01 <Patashu> no
09:36:05 <Patashu> because passing is a move
09:36:08 <Patashu> and is recorded as your move
10:15:15 -!- GreaseMonkey has quit (Quit: The Other Game).
10:16:56 -!- ais523 has quit (Remote host closed the connection).
10:18:41 -!- ais523 has joined.
10:22:51 <fizzie> Incidentally, here's a cheating "oneliner" (if you can still count it that) to that music thing which comprises Klatt's old cascade formant synthesizer, slightly simplified (no aspiration in voicing, no nasalization) and with mostly random parameters; also it's with fixed parameter values so it's quite boring, but you could easily vary them:
10:22:53 <fizzie> 128+600*r5(r4(r3(r2(r1(rg((t%40)==0?1:0)))))); }; var r1=r(710,50),r2=r(1100,70),r3=r(2450,110),r4=r(3300,250),r5=r(3750,200),rg=r(0,500); function r(F,BW) { var Z=8000,B=2*Math.exp(-3.14*BW/Z)*cos(2*3.14*F/Z),C=-Math.exp(-2*3.14*BW/Z),p1=0,p2=0; return function(x) { var p=(1-B-C)*x+B*p1+C*p2; p2=p1; p1=p; return p; };
10:23:25 <fizzie> It cheats by defining a couple of closures with their own memory.
10:33:59 -!- {][3473|^ has changed nick to cheater.
10:35:11 <Jafet> Using javascript like a useful language is cheating?
10:35:39 <Patashu> that doesn't work for me
10:35:44 <fizzie> It is in this case; it's almost like code injection, since it normally does eval("var f = function (t) { return " + oneLiner + "}");
10:35:44 <Patashu> it says unexpected number
10:35:54 <fizzie> Maybe I miscopypasted it.
10:36:25 <fizzie> Hrm. E_WORKSFORME in this FF3.6 workstation.
10:36:49 * Jafet read EWOKSFORME
10:37:00 <fizzie> Ewoks for everyone.
10:37:49 <Jafet> Patashu: the problem with that is no one will pass, because slightly over half of won games are won for white
10:38:10 <Patashu> jafet, context?
10:38:24 <Jafet> Oh sorry, you already said that to itidus
10:38:38 <Patashu> yes
10:38:56 <Jafet> itidus: a good zugzwang is very rare in chess
10:39:46 <Jafet> (Why is chess a favourite topic of #esoteric? ... oh, right.)
10:40:28 -!- Jafet has quit (Quit: Leaving.).
10:41:17 <Patashu> it is?
10:41:18 <ais523> except in the endgame
10:41:20 <Patashu> it's mostly itidus who brings it up
10:41:26 <ais523> where zugzwang is the only thing that wins several large classes of endings
10:41:58 <ais523> e.g. in king and pawn vs. king, the player at the disadvantage could just put their king on the pawn's promotion square in order to force a draw if they were allowed to pass
10:42:13 <Patashu> king and pawn vs king is a win right?
10:42:44 <cheater> i read that king and prawn
10:42:47 <cheater> and started thinking
10:42:52 <Patashu> prawn is ALWAYS a win
10:42:54 <Patashu> ^.^
10:43:03 <cheater> "gee, what sort of ESOTERIC kind of chess are they inventing now"
10:43:28 <Patashu> there's a unit called a crab
10:43:35 <Patashu> it has half the movement of a knight; forward and wide or back and narrow
10:43:40 <cheater> what does it count
10:43:45 <cheater> oh
10:43:49 <Patashu> (as in, it has 4 out of 8 knight leaps available)
10:44:13 <ais523> Patashu: king and pawn vs king depends on the position, but is a win more commonly than a draw IIRC
10:44:20 <cheater> so right right forward and back back right but not fight forward forward or back right right?
10:44:26 <Patashu> yes
10:44:28 <Patashu> it scuttles forward
10:44:31 <Patashu> and scoots back
10:44:37 <Patashu> as opposed to a barc, which scoots forward and scuttles back
10:44:51 <ais523> if both kings are in front of the pawn, and the king can't just capture the pawn, it's typically a win unless it's a rook pawn
10:44:53 <cheater> interesting
10:44:58 <cheater> what chess is this used in
10:45:11 <Patashu> one of ralph betza's variants
10:45:19 <ais523> except if the lone king is in opposition
10:45:23 <cheater> ais523: what is a rook pawn?
10:45:32 <ais523> cheater: a pawn on a file on which a rook started
10:45:36 <ais523> i.e. a or h file
10:45:38 <Patashu> ugh
10:45:42 <Patashu> chessvariants.com is down
10:45:51 <ais523> likewise, knight pawn, bishop pawn, king pawn, queen pawn
10:45:53 <Patashu> http://www.google.com.au/search?hl=en&q=%22ralph+betza%22+crab&oq=%22ralph+betza%22+crab&aq=f&aqi=&aql=1&gs_sm=e&gs_upl=2645l3372l0l3447l7l4l0l0l0l0l346l346l3-1l1l0
10:46:13 <ais523> rook pawns are the most common endgame special-cases as they can only be attacked/defended from one side
10:46:23 <Patashu> there's a variant of chess where rook pawns move rookishly, bishop pawns move bishopishly and so on
10:46:27 <cheater> what is a good functional language with managed memory and strict eval?
10:46:29 <ais523> Patashu: ouch!
10:46:41 <cheater> is there an ML variant with managed memory?
10:46:49 <ais523> cheater: "managed memory"? do you mean as in C++-style?
10:46:55 <cheater> as in "no gc"
10:47:15 <cheater> gc messes you up if you try to do realtime
10:47:17 <ais523> functional languages tend not to work well un-GCed
10:47:18 <cheater> even soft realtime
10:47:24 <Patashu> functional with managed memory just seems contradictory
10:47:33 <cheater> i don't think it does
10:47:39 <ais523> it's hard enough to work out where the deallocations should go, offhand
10:47:57 <ais523> the thing is, conceptually a functional language always copies values
10:48:03 <ais523> in which case you don't need a GC at all
10:48:15 <ais523> but conceptually, because values are immutable, copying references to the values is more common
10:48:35 <cheater> i wish it were possible to write haskell without gc
10:48:37 <ais523> in pure functional languages, you can just use refcounting as a GC, if you wish (whether this is a good idea is another matter, but it's common)
10:49:37 -!- Jafet has joined.
10:49:49 <cheater> the idea is that if you need to create an application that reacts in a certain time to prevent buffer underruns then you don't want to work with a gc'd language
10:54:09 <ais523> well, even deterministic memory management can have large pauses when a destructor is called
10:54:26 <ais523> ideally you want to use static allocation for hard-realtime, and that sort of doesn't mesh with functional programming
10:54:52 <cheater> yes but those pauses can be reasoned about
10:54:55 <ais523> hey, I think ICA is deterministic memory allocation and functional (all memory is allocated statically, so it disallows things like infinite recursion)
10:55:31 <cheater> and you can perform such big deallocators in a coroutine instead
10:56:14 <fizzie> Sun has that Real-Time Java thing, based on thar RTSJ, but I don't think it's very alive.
10:56:23 <cheater> maybe it's a better idea to write the core in C and run everything else in haskell or python or some stuff like that
11:21:16 -!- Mamadex has joined.
11:26:27 -!- Mamadex has quit (Excess Flood).
11:27:42 -!- Mamadex has joined.
11:28:06 -!- Mamadex has left.
11:58:25 -!- derdon has joined.
12:35:08 -!- boily has joined.
12:40:56 -!- sebbu2 has joined.
12:40:56 -!- sebbu2 has quit (Changing host).
12:40:56 -!- sebbu2 has joined.
12:42:15 -!- sebbu has quit (Ping timeout: 248 seconds).
12:45:33 -!- sebbu2 has changed nick to sebbu.
13:13:18 -!- Jafet has quit (Quit: Leaving.).
13:20:41 -!- sadhu has joined.
13:21:07 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .).
13:24:56 -!- Jafet has joined.
13:25:00 -!- Jafet has quit (Changing host).
13:25:00 -!- Jafet has joined.
13:32:12 <sadhu> hello
13:32:24 <ais523> hi
13:32:29 <ais523> `? welcome
13:32:33 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
13:33:08 <sadhu> ais523: :)
13:45:04 -!- sadhu has quit (Quit: Leaving).
13:45:16 -!- sadhu has joined.
13:45:24 -!- sadhu has left.
13:46:33 <CakeProphet> <cheater> [...] haskell or python or some stuff like that
13:46:34 <CakeProphet> .....
13:46:51 <CakeProphet> there some many things that are different about Python and Haskell
13:47:02 <CakeProphet> that I'm having a hard time discerning what the similarities are supposed to be
13:48:17 <ais523> there aren't many
13:48:28 <cheater> they both use no braces
13:48:36 <ais523> they're both highish-level languages (Haskell being higher), and that's, umm, about it
13:48:45 <cheater> both have mpa
13:48:47 <cheater> map
13:48:57 <ais523> oh right, they can both use indentation meaningfully (although in Haskell you can use braces instead)
13:48:57 <cheater> and list comprehensions :D
13:49:16 <cheater> ais: in python you can do "from future import braces"
13:49:36 <ais523> cheater: that's just trolling
13:49:42 <ais523> clearly it was added to annoy Perl users
13:49:43 -!- derrik has joined.
13:49:56 <itidus20> BASIC uses linebreaks meaningfully
13:50:11 <itidus20> or does it?
13:50:26 <cheater> ais523: what is trolling?
13:50:28 <itidus20> i guess not so much "meaningfully"
13:50:32 <cheater> that the python added that?
13:50:33 <ais523> itidus20: depends on the version, but most of the ones that take files as inputs use newline or colon as command separators
13:50:36 <cheater> the python team
13:50:54 <itidus20> you can't actually add meaning to a basic program through newlines
13:51:20 <ais523> quite a few old BASIC impls, their input wasn't really a text file
13:51:34 <ais523> but a collection of numbered lines, with operations including inserting/deleting/replacing lines, and renumbering them
13:51:44 <itidus20> i am one of these bastards who likes BASIC
13:52:08 <cheater> we should make a language called ADVANCED
13:52:22 <itidus20> it wouldn't be esoteric if it was based on BASIC
13:52:33 <cheater> where everything is an object on a calabi-yau manifold
13:52:41 <itidus20> oh
13:52:42 <cheater> and you type everything in ALL CAPS
13:52:43 <itidus20> maybe it would
13:52:54 <cheater> and line numbers are cayley octaves
13:52:59 <ais523> itidus20: http://esolangs.org/wiki/Forte
13:53:15 <ais523> the similarity to BASIC is intentional, as it helps highlight the ridiculous portion of the language
13:53:27 <cheater> what is the ridiculous portion of the language?
13:53:36 <ais523> at least, IMO if you're going to do one thing weird and crazy, the rest of the language should be traditional and familiar in order to highlight it better
13:53:41 <ais523> cheater: numbers can be assigned to
13:54:00 <ais523> go read the page, there are better examples there than could easily be expressed over IRC
13:54:28 <cheater> ok
13:54:34 <cheater> OR
13:55:06 <itidus20> so i only recently learned that turing machines and lambda calc actually preceeded electronic computers
13:55:11 <cheater> how about a language where values adhere to E_8 logic
13:56:50 <itidus20> i just naively assumed that imperative computation was the original
13:57:59 <ais523> imperative is not natural at all
13:58:34 <coppro> The most natural form of computation is proof
13:58:40 <coppro> which computers are bad at expressing
13:58:43 <cheater> not true
13:58:51 <cheater> the most natural form of computation is selection
13:59:04 <itidus20> hmm... what have i started
14:00:05 <itidus20> << troll.
14:00:47 <cheater> http://www.youtube.com/watch?v=Jo-RZ27o3Uw
14:03:00 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
14:06:38 -!- MSleep has quit (Ping timeout: 258 seconds).
14:11:55 -!- derrik has quit (Quit: kthxbye).
14:15:35 -!- sadhu has joined.
14:15:44 <sadhu> brainfucked!
14:19:08 <CakeProphet> sadhu: it happens.
14:19:59 <sadhu> CakeProphet: :P...brainfuck is really great!
14:21:39 <CakeProphet> I s'pose.
14:21:57 <CakeProphet> sadhu: are you new to esoteric programming languages?
14:22:03 <CakeProphet> or?
14:22:09 <CakeProphet> what's your background here.
14:22:53 <sadhu> CakeProphet: i am not new but i am also not very old
14:24:41 -!- sadhu has quit (Quit: Leaving).
14:29:11 -!- copumpkin has joined.
14:34:25 <ais523> !c printf("%d",'h');
14:34:34 <ais523> oh, right, it must be 104
14:34:39 <ais523> and EgoBot isn't here
14:36:25 <ais523> and t is, umm, 116
14:53:56 -!- MDude has joined.
14:55:04 <ais523> gah at anagolf using ints not chars for a BF tape
14:55:14 <ais523> in particular, I can't clear cells reliably with [-] without knowing whether they're positive
14:55:38 <cheater> why
14:56:40 <ais523> because if they're negative it'll loop forever, or long enough that it'll timeout
15:03:10 -!- Phantom_Hoover has joined.
15:03:50 * ais523 uses inelegant solution of >>>>>> rather than [-]
15:06:17 <ais523> context is Anarchy Golf, btw
15:06:26 <ais523> I just submitted the first BF solution to the ttp problem, it comes to 100 chars exactly
15:06:38 <ais523> it's rather inelegant but quite short, and I can't think of an obvious way to beat it
15:07:14 <ais523> heh, it even beats the best Java submission, although it's the second-most-verbose language
15:09:22 <coppro> ais523: [>]?
15:09:49 <ais523> it's >ing through zeros
15:10:10 <coppro> oh
15:13:28 <coppro> problem link?
15:14:04 <ais523> http://golf.shinh.org/p.rb?ttp
15:14:13 <ais523> basically, change "ttp" to "http" at the starts of lines
15:14:39 <coppro> ah
15:14:55 <ais523> the BF program I wrote is basically "at the start of a line, insert 'h' unless it starts with 'h'"
15:15:31 <coppro> haha
15:15:38 <ais523> no idea why nobody else submitted the m4 for that, it's beautifully simple
15:16:11 <ais523> define(ttp,http)include(/dev/fd/0)
15:16:28 <ais523> only works because there are no commas or quotes in the input (with commas in the input it becomes much, much harder, quotes can be worked around)
15:16:46 <ais523> oh, or m4 reserved words either
15:18:09 <ais523> that can also be worked around, by undefining/renaming them (only "include" would need renaming)
15:18:36 <ais523> and I got a beautiful representation of 104 from the wiki
15:18:56 <ais523> 'twould be a lot shorter in a wrapping representation, though
15:23:41 -!- elliott has joined.
15:23:47 <elliott> ais523: Considered self-modification?
15:23:48 <lambdabot> elliott: You have 2 new messages. '/msg lambdabot @messages' to read them.
15:23:59 <elliott> I got it working but it only did it for one line and then I pressed back and lost th ecode.
15:24:07 <elliott> s/th e/the /
15:24:18 <elliott> (Anagolf's BF interpreter provides the code at negative locations.)
15:24:28 <elliott> pikhq_: Why not?
15:24:51 <ais523> elliott: oh right, stack smashing
15:24:57 <ais523> I don't cheat like that
15:24:59 <elliott> ais523: it, err, isn't a bug
15:25:03 <elliott> it's an intentional feature of the implementation
15:25:13 <elliott> it's just that anagolf calls it "brainfuck" incorrectly
15:25:16 <ais523> sure? the source code of the impl is linked, and it looks like a stack-smash to me
15:25:22 <elliott> hmm
15:25:28 * elliott looks for it
15:25:36 <ais523> but I was hardly paying attention
15:25:49 <elliott> "I think we are using this C interpreter, but I'm not sure..."
15:25:52 <elliott> very reassuring
15:26:24 <elliott> ais523: hmm, if it works with this implementation, it's a stack smash, but I'm not sure it is this implementation
15:26:32 <ais523> fair enough, neither is shinh
15:26:37 <elliott> I think you would have to do < close to 32768 times to get to the program
15:26:42 <elliott> given
15:26:43 <elliott> int x[32768];
15:26:43 <elliott> int p[32768];
15:26:51 <elliott> which clearly isn't the case, or do people do [<]?
15:26:54 <ais523> it does seem to go into an infinite loop with [-] on a negative number, so it's using an int-based (or maybe bignum) tape
15:26:54 <elliott> hmm
15:27:05 <ais523> probably not [<], probably an inverse that goes through zeroes
15:27:05 <elliott> ais523: well, the actual code to the system is open source, so I might as well check
15:27:34 <elliott> now to guess whether the directory is be/ or fe/...
15:27:48 <elliott> ah, it's be/srv/s
15:27:55 <elliott> thanks shinh, you golfed your filenames
15:28:11 <elliott> exec /golf/local/bf $1
15:28:13 <elliott> oh for goodness' sake
15:28:27 <elliott> ok, it isn't that open :)
15:29:23 <elliott> hmm, it would be fun to write a program to produce shorter constants than the ones on http://esolangs.org/wiki/Brainfuck_constants, for large numbers
15:29:27 <elliott> or are they computer-generated already?
15:29:50 <elliott> calamari seemed to write them then oerjan seems to have tweaked them a lot
15:38:26 <Vorpal> <elliott> "I think we are using this C interpreter, but I'm not sure..." <-- C interpreter?
15:39:29 <elliott> Vorpal: Indeed, many lines don't make sense if you tape over the context on your monitor.
15:40:06 <Vorpal> elliott: yes I'm doing a scientific study on the effects of context.
15:48:34 <elliott> ais523: wow, that 104 on the esowiki is hard to understand
15:48:35 <elliott> the 26 one
15:48:48 <ais523> elliott: you're, umm, posting numbers, as digits
15:48:54 <ais523> and I don't know what they mean
15:49:03 <ais523> Forte reference?
15:49:06 <elliott> http://esoteric.voxelperfect.net/wiki/Brainfuck_constants#100_97
15:49:11 <ais523> ah no, BF constants reference
15:49:18 <elliott> you commented on it :P
15:49:30 * elliott tries to figure out which parts of it touch the target cell itself
15:55:11 -!- Ngevd has joined.
15:56:14 <Ngevd> Hello!
16:03:03 -!- monqy has joined.
16:09:33 <elliott> welcome Ngevdmonqy
16:09:48 <monqy> e
16:12:43 -!- Ngevd has quit (Ping timeout: 258 seconds).
16:14:25 -!- Ngevd has joined.
16:16:16 <Ngevd> Hello!
16:18:02 <elliott> "Hello!" --Ngevd
16:18:20 <Ngevd> 'Tis what I oft say
16:27:05 -!- sebbu has quit (Read error: Connection reset by peer).
16:27:29 -!- sebbu has joined.
16:27:29 -!- sebbu has quit (Changing host).
16:27:29 -!- sebbu has joined.
16:47:17 -!- sllide has joined.
16:48:49 <Ngevd> I've had an idea
16:49:07 <Ngevd> A programming language with two outputs:
16:49:47 <Ngevd> Standard output, and another output which is lazily interpreted as the programming language
16:51:01 <Ngevd> Thoughts?
16:51:26 <Ngevd> Well, not lazily
16:51:34 <Ngevd> Actually, the opposite of lazy
16:52:00 <Ngevd> As soon as it has enough characters that can be interpreted the same regardless of subsequent characters, they are executed
16:52:47 <Vorpal> unuusal
16:52:48 <elliott> that sounds cool
16:52:50 <Vorpal> unusual*
16:52:53 <Vorpal> and cool yes
16:53:00 <elliott> Ngevd: that /is/ lazy, sort of
16:53:04 <Vorpal> Ngevd: is this recursive btw?
16:53:06 <elliott> Ngevd: anyway, obviously you need some programming language to start it off
16:53:13 <elliott> so you can start producing the programming language
16:53:14 <Ngevd> Not recursive, I don't think
16:53:27 <elliott> Ngevd: hmm... /me mentally fleshes this out
16:53:34 <Ngevd> Unfortunately, the only way I can think of doing this is as...
16:53:37 <Vorpal> Ngevd: the output which is interpreted as the programming language is the same language but without the output feature?
16:53:40 <Ngevd> I'm not even going to mention it
16:53:45 <Ngevd> Vorpal, yes
16:53:53 <Vorpal> Ngevd: as what?
16:53:55 <Vorpal> python?
16:53:56 <Vorpal> php?
16:53:59 <Ngevd> Worse
16:54:06 <Ngevd> A brainfuck derivative
16:54:07 <Vorpal> Ngevd: Cobol?
16:54:08 <Vorpal> oh
16:54:11 <Vorpal> ew
16:54:20 <Vorpal> Ngevd: why
16:54:21 <Ngevd> Someone else take my idea and run
16:54:33 <Ngevd> I just can't think of anything else
16:54:37 <Ngevd> Mind has gone blank
16:54:39 <Vorpal> so any other language
16:54:50 <Vorpal> befunge wouldn't really work
16:54:56 <elliott> ok
16:54:57 <Vorpal> Ngevd: glass?
16:55:01 <elliott> taking it
16:55:05 <Vorpal> because, why not
16:55:12 <Ngevd> Don't know glass well enough to answer that
16:55:15 <Vorpal> I don't know any glass derivative
16:55:17 <Vorpal> is there any?
16:56:15 <Vorpal> Ngevd: it is oop + postfix
16:56:23 <Vorpal> very nice language
16:56:34 <Vorpal> as an esolang that is
16:56:39 <Ngevd> I'll add it to my list of ones to learn
16:56:54 <Vorpal> I never actually coded in it
16:57:08 <Vorpal> but I like it's ideas
16:57:25 <elliott> glass is kind of boring
16:57:39 <Vorpal> hm
16:57:49 <Vorpal> Ngevd: malbolge derivative
16:57:53 <Vorpal> because, hey, why not
16:59:12 <Ngevd> elliott, did you say you were taking the idea and running with it?
16:59:19 <elliott> yep
16:59:25 <elliott> or at least thinking about running with it
17:00:24 <Ngevd> Going to get some dinner now, bye
17:00:27 -!- Ngevd has quit (Quit: Leaving).
17:01:49 <Vorpal> hmm... if a game with mostly constant background music goes silent (perhaps with environmental sounds still) it tends to mean boss fight coming up, almost always. No?
17:03:43 <Vorpal> oh okay. Or rising lava level about to happen and THEN boss fight. Unpleasant things anyway.
17:05:02 -!- CakeProphet has quit (Read error: Operation timed out).
17:05:59 <fizzie> It may also mean "background music engine glitched out".
17:06:22 <Vorpal> fizzie: well yes. But it faded out in a very meaningful way :P
17:06:35 <Vorpal> anyway, bbl
17:11:17 -!- ais523 has quit (Remote host closed the connection).
17:28:29 -!- Ngevd has joined.
17:28:32 <Ngevd> Hello!
17:29:49 <Ngevd> elliott, has your running with my idea gotten anywhere yet?
17:30:35 <Phantom_Hoover> What idea?
17:30:57 <Ngevd> <Ngevd> I've had an idea
17:30:58 <Ngevd> <Ngevd> A programming language with two outputs:
17:30:58 <Ngevd> <Ngevd> Standard output, and another output which is lazily interpreted as the programming language
17:31:42 <Ngevd> <Ngevd> Well, not lazily
17:31:42 <Ngevd> <Ngevd> Actually, the opposite of lazy
17:31:42 <Ngevd> <Ngevd> As soon as it has enough characters that can be interpreted the same regardless of subsequent characters, they are executed
17:32:58 <Ngevd> <elliott> Ngevd: that /is/ lazy, sort of
17:33:51 <elliott> Ngevd: I'm still thinking about it idly.
17:34:18 <Ngevd> I wonder if it would be turing-complete without conditional loops?
17:38:00 <Ngevd> Like, if it had a repeat n times loop and a repeat forever loop
17:38:50 <Ngevd> Or possibly not even a repeat forever loop
17:41:42 -!- esowiki has joined.
17:43:48 -!- esowiki has joined.
17:43:59 -!- glogbot has joined.
17:48:33 -!- glogbot has quit (Ping timeout: 255 seconds).
17:48:39 -!- esowiki has joined.
17:48:54 -!- glogbot has joined.
17:48:55 -!- glogbackup has left.
17:50:22 -!- MichaelBurge_ has quit (Read error: Connection reset by peer).
17:51:35 -!- MichaelBurge has joined.
17:57:29 -!- hagb4rd has quit (Quit: Nettalk6 - www.ntalk.de).
17:57:59 <Ngevd> I've written up an idea for this language
17:58:43 <Ngevd> I think I'll call it Brook
18:00:21 <elliott> :'(
18:00:28 <elliott> my idea: stolen back to its owner
18:00:43 <elliott> monqy: What does one do when one has the urge to write a Haskell compiler?
18:00:43 <Ngevd> Feel free to continue
18:00:52 <Ngevd> Yours would probably be better
18:01:12 <Ngevd> That is, the infinite list language, not the Haskell compiler
18:01:21 <Ngevd> I really don't know about the Haskell compiler
18:01:50 <elliott> hmm
18:03:38 -!- Geronim1 has joined.
18:04:29 <Ngevd> Here's an idea
18:04:29 <Ngevd> We both write a spec
18:04:29 <Ngevd> And upload it at the same time
18:06:33 <Geronim1> where are you from?
18:06:39 <Geronim1> hi
18:07:01 <elliott> `? welcome
18:07:03 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
18:07:08 <Ngevd> I am from the REALM OF THE INTERNET
18:07:13 <elliott> aka hexham
18:07:15 <elliott> monqy: what's a good letter
18:07:32 <Ngevd> WHERE THE BORDER PEOPLE CONFUSE WITH HELL
18:08:34 <Ngevd> You?
18:08:39 <Geronim1> i thought this channel is about magic or something
18:08:47 <elliott> Geronim1: So does everyone.
18:08:51 <Ngevd> I didn't
18:08:54 <elliott> Geronim1: freenode is not really about that sort of stuff.
18:08:58 <Geronim1> me is from good old germany
18:09:10 <Geronim1> ok
18:09:18 <Ngevd> But try '
18:09:20 <elliott> We don't really know where to send you guys.
18:09:21 <Ngevd> #magic
18:09:22 <Geronim1> i try java but i fail
18:09:29 <elliott> * You have been kicked from #magic by ChanServ (Invite only channel)
18:09:30 <elliott> rude
18:09:39 <elliott> Geronim1: try haskell :-P
18:10:02 <Ngevd> It's a pretty good language
18:10:07 <Ngevd> Almost nothing like Java
18:11:15 <Geronim1> i like sun computers because they are so stable
18:11:49 <Geronim1> i think this is something you might find interressting
18:11:52 <Ngevd> As in... you use Solaris?
18:12:02 <Geronim1> yes and like it
18:12:16 <Ngevd> I've never tried it
18:12:34 <Geronim1> it looks like windows
18:12:42 <elliott> Solaris just uses GNOME these days, man.
18:13:17 <Geronim1> it has java desktop environment
18:13:26 <Geronim1> and another
18:13:36 <elliott> "java desktop system" is just codename for "GNOME with our programs".
18:13:37 <Geronim1> but has although gnome
18:13:44 <elliott> Seriously, it doesn't even use Java.
18:13:47 <elliott> http://en.wikipedia.org/wiki/OpenSolaris_Desktop
18:13:54 <Geronim1> ok
18:13:55 <Ngevd> So do most OSs
18:13:55 <Ngevd> Just not by default
18:13:55 <Ngevd> No wait, I thought you said developement
18:13:55 <Ngevd> Nevermind
18:14:01 <elliott> Oh, it's not even called Java Desktop System nowadays...
18:14:20 <elliott> Geronim1: heh, you must be using a version from 2005...
18:14:32 <Ngevd> This channel destroys all who come to it
18:14:45 <elliott> Verily.
18:14:47 <Geronim1> what?
18:15:01 <elliott> Hm?
18:15:04 <Ngevd> It destroyed my concept of online anonymity
18:15:23 <Geronim1> that is interressting
18:15:30 <elliott> monqy won't even give me a letter. :'(
18:15:49 <Ngevd> Since Phantom_Hoover figured out where I live and my full name on my first day here
18:16:12 <Phantom_Hoover> It was your second or third; be fair.
18:17:17 <elliott> To be fair, you did tell him it was in Northumberland.
18:17:27 <Geronim1> back in 2h
18:17:29 <Ngevd> That doesn't narrow it down much!
18:17:31 <elliott> Phantom_Hoover: Gimme a letter. A good letter.
18:17:33 <Ngevd> Well, it does
18:17:39 <Phantom_Hoover> elliott, uppercase xi.
18:17:43 <elliott> Ngevd: It does from "anywhere", which is what we would have with e.g. a cloak.
18:17:47 <Ngevd> But I could be in Ashington! or Berwick!
18:17:47 <elliott> Phantom_Hoover: An English letter.
18:17:57 <Phantom_Hoover> elliott, hmm. Q.
18:18:00 <Ngevd> Or even Lowgate!
18:18:07 <elliott> Phantom_Hoover: You share my love of Q. :')
18:18:18 <elliott> Phantom_Hoover: Sorry bro, QHC already exists.
18:18:20 <elliott> Pick again.
18:18:33 <Ngevd> L
18:18:42 <elliott> LHC is taken.
18:18:55 <Ngevd> By a pipe in France.
18:18:58 <Phantom_Hoover> S
18:19:53 <elliott> SHC is kinda ugly.
18:19:59 <Ngevd> Z?
18:21:29 <elliott> A little nicer, though still not very aesthetically pleasing. (ÆHC? :p)
18:22:12 <Phantom_Hoover> If you're going to do that, make it XiHC.
18:22:24 <Vorpal> oh my, I just watch a video of Skyrim. Those graphics look damn good. And of course the usual TES "That background is not just background actually". Still over a month left...
18:22:33 <Ngevd> HC
18:22:52 <elliott> Phantom_Hoover: But dude Ξ is only nice in serif.
18:23:26 <Phantom_Hoover> elliott, FORCE IT TO BE SERIF
18:23:45 <elliott> WHC? Nah.
18:24:14 <elliott> THC? Tempting, but I think it's taken, and also the reason it's amusing is also the reason everyone will think I'm a pothead if I use it.
18:24:19 <elliott> UHC? Taken.
18:24:31 <elliott> If only C had a backwards version so I could have a symmetrical name.
18:24:48 <Ngevd> Ɔ
18:25:03 <elliott> ƆHC. Yeees.
18:25:07 <elliott> Not quite symmetrical here. :p
18:25:20 <Vorpal> almost here
18:25:22 <Phantom_Hoover> It's rotationally symmetric.
18:25:27 <Vorpal> could be perfect, hard to tell
18:25:35 <elliott> Phantom_Hoover: I mean Ɔ isn't quite right here.
18:25:42 <elliott> Presumably it's being substituted from another font.
18:25:55 <Ngevd> It's not a backwards C, it's an open O
18:26:01 <Vorpal> elliott: it looks great here. Could be one or two pixels off, presumably due to front smoothing
18:26:36 <Vorpal> elliott: what is the thing you are naming?
18:27:04 <Ngevd> ɁHC
18:27:31 <Ngevd> ‽HC
18:27:40 <elliott> Vorpal: I have this horrible temptation to write a Haskell compiler, so...
18:27:52 <Phantom_Hoover> This can only end in tragedy.
18:28:12 <Vorpal> elliott: ouch
18:28:19 <Ngevd> ℌHC
18:28:25 <elliott> Ngevd: But seriously, no Unicode.
18:28:26 <Phantom_Hoover> HHIHC
18:28:37 <Vorpal> [102581.454289] max memory size is 0x7fffffff (addr = 0xffff8802c8201000)!!
18:28:37 <Vorpal> [102581.454295] emu: failure page = 32
18:28:40 <Vorpal> whut
18:28:47 <Vorpal> sound stopped working and I got that
18:29:06 <elliott> Sounds like a driver problem.
18:29:30 <Vorpal> elliott: yeah probably. It is emu10k1 though
18:29:46 <Vorpal> reloading the module worked
18:29:48 <elliott> GHC... oh wait.
18:29:59 <Vorpal> elliott: EHC?
18:29:59 <Ngevd> HC
18:30:08 <elliott> Vorpal: That's, like, almost Elliottcraft. :p
18:30:34 <Ngevd> GHC is the Glasgow Haskell Compiler
18:30:37 <Vorpal> in fact i had some problems with that in recent kernels and/or after my mobo upgrade. Impossible to tell witch either. Can't downgrade, computer not supported pre 2.6.29
18:30:42 <Ngevd> Call it the Hexham Haskell Compiler
18:30:49 <Vorpal> elliott: it is elliott haskell compiler
18:30:58 <elliott> Vorpal: Yees but I'm not sure I like it.
18:31:11 <elliott> Ngevd: HHC is kind of ugly, don'tchathink? NHC would be nice but is taken. (i.e. Northumberland)
18:31:38 <Vorpal> elliott: okay, it was just a suggestion. You are of course free to chose another name should you prefer to. However should you like it you can use it.
18:31:42 <Ngevd> Pretend to be in Lowgate; LHC
18:32:16 <Ngevd> SWHC
18:32:27 <Vorpal> why .HC?
18:32:29 <elliott> Vorpal: Poor imitation.
18:32:33 <Vorpal> can't you go for a different form?
18:32:35 <elliott> And because it's the Standard.
18:32:39 <elliott> I might have it lowercase though.
18:32:42 <elliott> Ngevd: LHC is taken.
18:32:44 <Vorpal> elliott: yes I missed the grammar errors of zzo :P
18:32:54 -!- Phantom_Hoover has quit (Quit: Leaving).
18:33:01 <Ngevd> Saint Wilfrid Haskell Compiler
18:33:10 <Ngevd> After Hexham's founder
18:33:30 <Vorpal> elliott: EHHC? For your initials
18:33:37 <elliott> Ehh.
18:33:59 <Vorpal> elliott: or why not ƆHC, sure it might not look good in all fonts, but you can make it look nice in the pre-rendered logo
18:34:07 <elliott> Not a valid module name.
18:34:11 <elliott> Well, to my knowledge.
18:34:14 <Vorpal> oh right
18:34:22 <Ngevd> What character sets are we limited to?
18:34:35 <Ngevd> Also, I would like to point everyone to ISO 3001
18:34:36 <Vorpal> elliott: write it in erlang, I'm pretty sure that is valid in an erlang atom. Though it might need quoting
18:34:52 <Vorpal> oh seems like it isn't
18:34:55 <Vorpal> :(
18:35:16 <Ngevd> *3103
18:35:20 <Vorpal> wait a second...
18:35:43 <Vorpal> 'µHC' valid, but 'ƆHC' is not?
18:36:08 <Vorpal> ←HC is invalid too
18:36:08 <Vorpal> so not just a paste issue
18:36:09 <elliott> I said µHC was valid?
18:36:16 <Vorpal> elliott: no I meant as erlang atoms
18:36:18 <elliott> Ngevd: I'd prefer an English letter.
18:36:25 <Vorpal> I do not understand how it work wrt unicode atm
18:36:27 <elliott> Vorpal: Maybe Ɔ is capital.
18:36:35 <elliott> In which case it might even be a valid Haskell module name but seriously no.
18:36:38 <Vorpal> elliott: you can use that, I quoted it with '' after all
18:36:47 <Ngevd> Ɔ is capital
18:36:55 <Vorpal> wouldn't affect it since quoted
18:37:05 <Vorpal> I think it could be related to pre-unicode erlang
18:37:20 <Vorpal> still a few remaints of that in there
18:37:40 <Vorpal> elliott: anyway do you realize how much work writing a haskell compiler is?
18:37:47 <Vorpal> elliott: as in really?
18:38:28 <Ngevd> ɔ is the lower case form
18:38:30 <elliott> Vorpal: I estimate I know more than you about how much work it is.
18:38:41 <Vorpal> elliott: right
18:38:53 <elliott> And that's why it's a horrible urge, but really it's not /that/ hard.
18:39:40 <Vorpal> elliott: sure, writing a fully conforming C++ implementation is probably more work.
18:39:48 <Vorpal> you should do that next
18:40:01 <Vorpal> elliott: even with that weird extern template thingy
18:41:01 <Vorpal> eh wait, not what I meant
18:43:13 <Vorpal> I wonder if I should try out Morrowind hm
18:48:27 <Ngevd> EHH
18:48:51 <elliott> lol
18:49:57 <Gregor> lol, bitbucket added Git support.
18:50:05 <Gregor> If github adds hg support, I think I'll switch.
18:51:19 <elliott> Gregor: github advertises hg support, at least.
18:51:27 <elliott> Gregor: They say that hg-git or whatever it is is good enough that it works seamlessly.
18:51:33 <elliott> I don't know how true that is.
18:51:50 <Gregor> Quite true.
18:51:53 <Gregor> But that's not the same.
18:51:56 <Gregor> I want to punish git users.
18:52:01 <elliott> (But seriously, does anyone actually think Bitbucket's interface is better than GitHub's?)
18:52:08 <Gregor> No, it sucks. github rules.
18:52:26 <elliott> Not as good as scapegoat's distributed web interface system ;-)
18:52:36 <elliott> "A big advantage for Bitbucket users is the ability to have unlimited private repositories for free. This means you can store every line of code you’ve ever written in one place without paying a cent."
18:52:45 <elliott> Oh man, free unlimited hosting!!!
19:09:33 <Vorpal> elliott: does github limit your repo count?
19:09:44 <Vorpal> if so, how weird
19:09:59 -!- sdsdfsdf has joined.
19:10:01 <Vorpal> or does private mean no one else can see it
19:10:30 <Vorpal> elliott: I want svkgit just becase
19:11:17 <elliott> <Vorpal> elliott: does github limit your repo count?
19:11:22 <elliott> Vorpal: It's based on total filesize or something.
19:11:26 <elliott> You can't have a private repo unless you pay.
19:11:26 <Vorpal> hm
19:11:30 <Vorpal> ah
19:11:30 <elliott> Hello sdsdfsdf.
19:11:46 <Vorpal> elliott: but you can upload public code freely?
19:14:44 <fizzie> Yes, but then someone can SEE it.
19:15:06 <sdsdfsdf> what is a private repo?
19:15:26 <elliott> `? welcome
19:15:28 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
19:15:36 <elliott> Vorpal: No, GitHub is an exclusive pay-only club.
19:15:49 -!- lambdabot has joined.
19:15:52 <Vorpal> elliott: XD
19:16:24 <fizzie> I vaguely recall some place having a "only 20 free public repositories" rule, but I may have dreamed that.
19:16:34 <Vorpal> heh
19:17:10 <olsner> I thought github had unlimited space/repos/forks for open source stuff, because that fits with my vague idea of github being cool
19:17:23 <elliott> 20 repos is not such a draconian limit.
19:17:29 <elliott> I think I've seen people with more. Maybe they paid but I doubt it.
19:17:42 <fizzie> 20 is not bad; but I can't find out which place it was.
19:17:53 <fizzie> So maybe it was an old limitation in one of the places.
19:17:55 <sdsdfsdf> gitorius?
19:18:05 <quintopia> elliott: so's i don't have to dig through logs, what was this about: < elliott> calamari: lame, you can't compete with quintopia and me and Gregor's friend
19:18:26 <Gregor> elliott: Yes, I wish to know that too :P
19:19:09 <olsner> huh, my pull request got merged, but github didn't seem to notify me in any way whatsoever
19:19:33 <Gregor> olsner: bitbucket has git support now! BAIL
19:19:34 <elliott> quintopia: havenworks
19:19:46 <elliott> Gregor: He'd have to use Bitbucket then.
19:19:53 <quintopia> lol
19:19:54 <Gregor> Ohhhhhh hahahah (re havenworks)
19:20:21 <quintopia> so calamari was websplatting and thought he could be a contender?
19:20:27 <elliott> quintopia: No, his kids.
19:20:30 <elliott> They're n000000000000bs.
19:20:38 <elliott> I'm going to frag them with my leet websplat gun.
19:20:39 <Gregor> lol
19:20:44 <quintopia> muahahahahaha
19:20:55 <olsner> aah, I have watched homebrew which gets me too much spam to see anything else in my news feed
19:20:56 <elliott> Gregor: btw the "you're winner" tiling is broken
19:21:06 <elliott> olsner: the homebrew guys are JERKS :''''(
19:21:36 <olsner> but still, it would be cool to have something a *bit* more prominent than having to manually check the news feed for pull requests that I've created myself
19:21:52 <olsner> because that's something I do about once per year otherwise
19:21:57 <Gregor> elliott: Err ... it's not tiled ...
19:22:52 <elliott> Gregor: It's meatn to be.
19:22:54 <elliott> meant
19:22:55 <elliott> And it used to be.
19:22:57 <olsner> elliott: I haven't dealt with them in person, so I wouldn't know
19:22:57 <elliott> But now it isn't.
19:22:58 <elliott> Tile it.
19:23:11 <Gregor> Errr, fairly certain it only was on a lark for like two minutes :P
19:23:20 <elliott> Gregor: Well that's dumb? Fix it, make it tile
19:23:28 <elliott> Nobody wants a win message in a corner
19:23:32 <elliott> I want the world lit up with winning
19:23:54 <Gregor> elliott: I will whenif you implement ZALGO mode.
19:24:06 <olsner> otoh, the ruby and NIH combo that homebrew is made of doesn't speak that well for the project as a whole ... its only feature is its bandwagon basically
19:24:07 <elliott> olsner: I sent them a pull request to add MLton, they rejected it because they wanted me to make it compile from source (despite it being a bootstrapped compiler and so this being literally busywork), I told them that it'd be busywork, they said "SHRUG, this is how we roll"; a few months later they accepted someone else's formula for MLton which ALSO DIDN'T COMPILE IT, but had an additional bug mine didn't.
19:24:11 <elliott> olsner: Therefore I hate them forever.
19:25:05 <Vorpal> well fuck that. I just managed to mess up my postgre db on a update
19:25:18 <Vorpal> *restores from backup*
19:26:16 <olsner> the creation of homebrew: "lol macports, it's in TCL! I'll rewrite it from scratch in rooby and it'll be all better"
19:26:20 <fizzie> I think I just fixed a Pidgin (well, libpurple) bug. I suppose I should report that stuff. But maybe it'll wait until tomorrow.
19:26:46 <elliott> > foldr (\(p:s) (f:fs) -> toLower p : ps ++ toUpper f : fs) "" ["Qwerty", "asdfQ"]
19:26:47 <lambdabot> Not in scope: `ps'
19:26:50 <elliott> > foldr (\(p:ps) (f:fs) -> toLower p : ps ++ toUpper f : fs) "" ["Qwerty", "asdfQ"]
19:26:51 <lambdabot> "*Exception: <interactive>:3:7-56: Non-exhaustive patterns in lambda
19:26:55 <elliott> :'(
19:27:19 <elliott> olsner: Amusingly there was actually something resembling a desire to move MacPorts to Ruby back in the day.
19:27:19 -!- calamari has joined.
19:27:22 <elliott> But seriously, MacPorts is terrible.
19:27:49 <elliott> > foldr (\(p:ps) (f:fs) -> toLower p : ps ++ toUpper f : fs) "augh" ["Qwerty", "asdfQ"]
19:27:50 <lambdabot> "qwertyAsdfQAugh"
19:28:53 -!- tiffany has joined.
19:28:56 <olsner> I really don't get what was so bad about MacPorts
19:29:41 <elliott> olsner: have you ever used it?
19:30:02 <elliott> it's possibly the slowest thing ever, most of the ports were terrible, and variants rarely ever worked
19:30:33 <Vorpal> re havenworks above. That page pretty much crashed my browser back then.
19:31:21 <elliott> You had an awful computer.
19:33:22 <Vorpal> elliott: yes
19:33:37 <sdsdfsdf> elliott: what do you do?
19:33:38 -!- oerjan has joined.
19:33:46 -!- sdsdfsdf has changed nick to sadhu.
19:33:53 <elliott> sadhu: In what sense?
19:34:04 <Ngevd> elliott, has your idle thinking got anywhere?
19:34:11 <elliott> Ngevd: Only Vaguely.
19:34:13 <elliott> s/V/v/
19:35:06 <sadhu> elliott: are you a college student (becasue i am ;)
19:35:51 <olsner> elliott: macports didn't seem to have much of a community fixing and updating ports, I'll give you that at least :)
19:36:00 <olsner> I've probably just forgotten about the other problems it had
19:36:01 -!- Phantom_Hoover has joined.
19:36:16 <Phantom_Hoover> I RETURN
19:36:20 <Vorpal> olsner: so what is a better alternative than macports for mac?
19:36:44 <olsner> but afaict, they could've just put macports on github, added support for updating from git, renamed it to homebrew and called it a day
19:36:52 <fizzie> Pidgin source-browser tag list, first entry: "ZERO_DOT_FUCKING_SIXTY"
19:36:58 <olsner> and skip all the rooby crap
19:37:03 <elliott> sadhu: Nope. Too young for that shit. :p
19:37:15 <elliott> olsner: That wouldn't solve the other issues I mentioned
19:37:15 <sadhu> so you go to school
19:37:16 <sadhu> ?
19:37:23 <sadhu> because i go there!
19:37:30 <elliott> I'm actually a really advanced IRC bot.
19:37:32 <elliott> Sorry to disappoint.
19:37:46 <sadhu> elliott: its nice to talk to you!
19:38:01 <sadhu> you are quite an intelli-bot
19:38:02 <elliott> I am good at my job (being an IRC bot).
19:38:07 -!- tiffany352 has joined.
19:38:11 <sadhu> :-D
19:38:35 <Ngevd> elliott, I think you have just completely turned the Turing test on its head
19:38:53 <elliott> I hope it's OK with that.
19:39:07 <Phantom_Hoover> elliott, what's your opinion on fellow bot tiffany352?
19:40:00 <Vorpal> aren't we all bots?
19:40:04 <elliott> Phantom_Hoover: Is tiffany = tiffany352? A question for our age.
19:40:10 <Ngevd> I'm not
19:40:15 <Vorpal> Ngevd: can you prove it?
19:40:31 <Ngevd> Only if elliott isn't a bot
19:40:33 <Ngevd> Which he is
19:40:35 <Phantom_Hoover> I am certainly a bot.
19:40:37 -!- tiffany has quit (Disconnected by services).
19:40:37 <Vorpal> Ngevd: so you can't then
19:40:43 <Ngevd> So I cannot prove whether I am a bot or not
19:40:46 <Vorpal> Phantom_Hoover: can you prove you aren't a human?
19:40:47 -!- tiffany352 has changed nick to tiffany.
19:40:47 <Phantom_Hoover> fungot is the only human around here.
19:40:48 <fungot> Phantom_Hoover: there! there it is!
19:40:59 <Vorpal> Phantom_Hoover: oh yeah true
19:41:00 <Phantom_Hoover> Vorpal, see, fungot can testify for me.
19:41:00 <fungot> Phantom_Hoover: that sword alone can't stop! that sword alone can't stop! that sword alone can't stop! that sword alone can't stop! that sword alone can't stop! that sword alone can't stop! that sword alone can't stop! that sword alone can't stop! that sword alone can't stop! that sword alone can't stop! that sword alone can't stop! that sword alone can't stop! that sword alone can't stop! that sword alone can't stop! that swor
19:41:03 <elliott> omg
19:41:03 <Vorpal> awesome
19:41:06 <elliott> i love you fungot
19:41:06 <fungot> elliott: these unique items make us invincible! as if the king indirectly killed her... such a rock wall, 3 times!
19:43:02 <fizzie> "We prefer patches generated using mtn diff --" gaaa, why does everyone have to use a different version control system? Why can't everyone just use scapeg^Wgit or something?
19:43:16 <Vorpal> fizzie: wtf is mtn?
19:43:20 <fizzie> Vorpal: Monotone.
19:43:21 <Vorpal> oh
19:43:32 <Vorpal> fizzie: good luck with THAT
19:43:47 <Vorpal> fizzie: what project is it?
19:43:49 <Ngevd> Just had another idea for an esolang!
19:43:50 <elliott> fizzie: Wow, Pidgin use Monotone?
19:43:53 <elliott> Vorpal: Pidgin.
19:43:54 <Vorpal> ah
19:44:00 <elliott> fizzie: "We prefer patches that are the RightThingToDo."
19:44:03 <Ngevd> Polysyndaton
19:44:07 <elliott> fizzie: Is your change the rightthingtodo?
19:44:15 <Ngevd> The hyperstructured programming language
19:44:27 <fizzie> Probably not, but I'll put it into a defect report, not a 'patch' ticket, so it doesn't have to be.
19:44:34 <Vorpal> elliott: rightthingthatwillalreadyhavebeendone
19:44:38 <elliott> fizzie: Heh.
19:44:55 <elliott> fizzie: "or (if you're not using Monotone) diff -u"
19:44:57 <fizzie> They have a database snapshot dump you can wget because otherwise the initial Monotone fetch would take so long.
19:44:58 <elliott> fizzie: See, it's not so bad.
19:45:06 <fizzie> Yes, I cut it for maximum efficiency. :p
19:45:16 <Vorpal> fizzie: is monotone THAT bad?
19:45:24 <Vorpal> wtf
19:45:27 -!- sadhu has quit (Ping timeout: 276 seconds).
19:45:33 <elliott> Vorpal: Pidgin is a pretty big/old project.
19:45:41 <elliott> "Last Modified by rlaager, 4 years ago" --pidgin wiki page "How to Submit a Patch"
19:45:48 <fizzie> Vorpal: Slowness is also it's main feature, I believe. Though maybe it's not so bad; I haven't used it.
19:45:58 <Vorpal> elliott: initial fetch by dump shouldn't be considerably faster than initial download by checkout.
19:46:03 <Vorpal> IMO
19:46:10 <elliott> Vorpal: Ah, you want a perfect compression system.
19:46:16 -!- sebbu2 has joined.
19:46:16 -!- sebbu2 has quit (Changing host).
19:46:17 -!- sebbu2 has joined.
19:46:20 <elliott> Vorpal: Sorry, but multiplication doesn't work that way, and rare is the project with only one revision.
19:46:22 <Vorpal> elliott: no, I said "considerably"
19:46:42 <Vorpal> elliott: besides, why would a dump of the entire history be faster to download than checking out said history
19:46:43 <elliott> Vorpal: Multiplication is quite a quick-growing function.
19:46:47 <Vorpal> it is the same fucking data
19:46:50 <elliott> Vorpal: It isn't a dump of the entire history, you idiot.
19:46:57 <fizzie> Yes, it is.
19:46:58 <elliott> It'll be some portion of it.
19:47:01 <fizzie> The dump contains all the old revisions, so it's as much data to move; it's just that "initial revision history retrieval is quite taxing on the server".
19:47:01 <Vorpal> elliott: monotone use shallow checkouts?
19:47:09 <Vorpal> heh
19:47:09 <elliott> fizzie: Well... that's just stupid then.
19:47:28 <elliott> fizzie: This is why VCSes should just use rsync. :p
19:47:49 <Vorpal> elliott: you mean like cvsup for git
19:48:02 <elliott> Vorpal: No, their "fetch" operations should literally just use rsync.
19:48:08 <fizzie> "mtn merge_into_dir is nearly useless for us, because of die-die-die merge semantics. For example, this is why libgnt cannot conveniently be maintained out-of-tree with an in-tree merge_into_dir copy" I don't even understand what they're talking about.
19:48:11 <elliott> sg's will.
19:48:15 <Vorpal> elliott: that requires reading locally all the history
19:48:20 <Vorpal> which could be several GB
19:48:28 <elliott> Vorpal: I'm pretty sure rsync is smart about that.
19:48:46 <elliott> Hmm, I might use zsync instead, since it works over HTTP.
19:48:48 <Vorpal> well yes it can use mtime, but then you don't want to bundle things up
19:48:58 <elliott> Although I think zsync is one-file-only. :/
19:49:00 <elliott> Vorpal: What?
19:49:03 -!- sebbu has quit (Ping timeout: 244 seconds).
19:49:24 <elliott> Vorpal: I am saying that "sg fetch" will just do "rsync -z --blah --blah remote-repo/+scapegoat +scapegoat".
19:49:25 <Vorpal> elliott: as in you want to keep many files, not bundling things together in already existing files in the internal data format
19:49:33 <Vorpal> otherwise rsync can't be smart
19:49:44 <elliott> Vorpal: I'm pretty sure rsync hashes /portions/ of the file
19:50:06 <Vorpal> elliott: yes but then it still needs to read those portions to check if the hash matches. Not everyone has a blazing fast SSD
19:50:32 <Vorpal> elliott: with separate files it can be reduced to a simple mtime check on the files
19:51:00 <elliott> hmm
19:51:05 <elliott> Well, it'd work for git.
19:51:14 <elliott> It'd also work for sg with only minor modifications.
19:51:16 <Vorpal> I don't know git's internal data format
19:51:26 <elliott> Vorpal:
19:51:28 <elliott> elliott@katia:~/Code/mchost$ ls .git/objects
19:51:28 <elliott> 0a 20 26 2b 4f 55 69 6d 7a 7e 80 8f 92 ab b5 c7 dd f2 pack
19:51:28 <elliott> 0c 25 27 4c 51 58 6c 76 7b 7f 82 90 96 b0 be d2 de info
19:51:35 <Vorpal> well okay, looks like it would work
19:51:37 <elliott> Admittedly "pack" contains packed stuff.
19:51:44 <Vorpal> which would mess this up yeah
19:52:37 <monqy> elliott: i was gone away
19:52:46 <Vorpal> elliott: anyway for a small project this is no major issue. But you want to keep reasonably sized files. Not too large, not too small, and not edit them once created if possible.
19:52:47 <monqy> q is a good letter
19:53:03 <elliott> Vorpal: Anyway, with sg the fetch process looks something like: Get every known object hash from server; remove all hashes in current repository; send the remaining hashes to the server; get a compressed scapegoat database back; decompress, merge into +scapegoat.
19:53:04 <monqy> most letters are good
19:53:06 <shachaf> madmin + elliott
19:53:15 <elliott> (Merge as in dbmerge, not as in merge merge.)
19:53:19 <shachaf> @admin + elliott
19:53:19 <lambdabot> Not enough privileges
19:53:24 <shachaf> Hmph.
19:53:28 <Vorpal> elliott: I have used rsync on huge sets of small files, usually means a lot of seeking. For large file on the other hand it needs to read the whole locally and remotely if any part of it changed
19:53:30 -!- elliott has quit (Remote host closed the connection).
19:53:42 <shachaf> :-(
19:54:12 <Vorpal> who is shachaf?
19:54:13 * shachaf sighs.
19:54:16 <fizzie> "Usage: sg group [[-c] command]" hey I must have scapegoat already installed, it's not saying "invalid command".
19:54:40 <Vorpal> sg - execute command as different group ID
19:54:41 <Vorpal> yeah
19:54:44 <Vorpal> that would collide
19:55:01 <Vorpal> part of shadow too
19:55:07 <Vorpal> so yeah elliott will have to rename
19:55:28 <Vorpal> should break the news to him once he reconnects
19:55:34 <monqy> goatscape
19:55:42 <monqy> the joke is that ghostscript
19:55:42 <fizzie> Yes, "gs" is much better. :p
19:55:47 <Vorpal> fizzie: XD
19:56:08 <Vorpal> monqy: why would you have to explain the joke? It was obvious
19:56:23 <monqy> the joke was that i explained the joke :|
19:56:25 <fizzie> "scpgt", to name after bzr, mtn and such.
19:56:38 <Vorpal> not funny
19:56:50 <monqy> sorry i am bad at jokes
19:56:55 <Vorpal> sgt? Might work
19:56:57 <fizzie> Not cool, not funny, not a good comic.
19:57:07 <Vorpal> not found on ubuntu
19:57:08 <fizzie> No command 'sgt' found, did you mean:
19:57:08 <fizzie> Command 'skt' from package 'latex-sanskrit' (main)
19:57:09 <fizzie> Command 'mgt' from package 'mgt' (universe)
19:57:09 <fizzie> Command 'tgt' from package 'tcm' (universe)
19:57:09 <fizzie> Command 'stg' from package 'stgit' (universe)
19:57:09 <fizzie> Command 'st' from package 'swift' (universe)
19:57:11 <fizzie> Command 'st' from package 'suckless-tools' (universe)
19:57:12 <Vorpal> fizzie: faster to type
19:57:13 <fizzie> Command 'sg' from package 'login' (main)
19:57:18 <Vorpal> fizzie: I beat you to that
19:58:05 <fizzie> Yes, by an infinite margin; I wasn't going to suggest it at all.
19:58:59 <fizzie> "skt" seems to be some sort of "pre-processor for typesetting Sanskrit from both Devanagari and transliterated Roman scripts". Quite obscure.
20:00:21 -!- elliott has joined.
20:00:25 <elliott> Lost connection.
20:00:31 <elliott> Vorpal: We're well aware of the other sg tool.
20:01:21 <elliott> Also, fizzie is apparently sje46.
20:02:25 <elliott> Vorpal: Anyway, the solution wrt sg is to have Scapegoat act as sg with appropriate arguments. :p
20:02:27 <Vorpal> elliott: so you need to rename it. Since you will collide on virtually every linux system
20:02:43 <Vorpal> elliott: things like debian would rename it. Simple as that
20:02:46 <elliott> There are ways to handle collisions that don't involve terrible command names.
20:02:56 <Vorpal> elliott: sgt is okay
20:03:03 <fizzie> Yes, the "sergeant" tool.
20:03:12 <Vorpal> ScapeGoaT
20:03:14 <elliott> And your ridiculous "IT IS ABSOLUTELY IMPERATIVE THAT YOU RENAME IT I GIVE YOU NO CHOICE" attitude to it is annoying.
20:03:30 <elliott> We've already enumerated all the other command names in existence that have some of the letters from "scapegoat" in them.
20:03:44 <monqy> pego
20:03:52 <elliott> Yes. Pego. The best VCS.
20:04:00 <elliott> scopegate.
20:04:17 <coppro> I prefer Peggle
20:04:20 <coppro> that's a VCS right
20:04:55 <elliott> I was into PopCap before they were cool.
20:05:14 <fizzie> Debian would not only rename the binary, it would rename it in some horrible way; that's What They Do. Probably to "scapegoat_sg" or something. (I can't recall what they renamed, but it was something.)
20:05:28 <elliott> fizzie: "ack" to "ack-grep".
20:05:31 <elliott> So it'll become sg-git.
20:05:40 <oerjan> <cheater> is there an ML variant with managed memory? <-- there is at least one iirc with something called region inference, but it doesn't work to replace all gc cases
20:06:51 <elliott> fizzie: Anyway, the solution is to have sg print "Please add `alias sg=sg-git` to your shell profile." on startup whenever there's no such alias. :p
20:07:24 <oerjan> because sometimes a value's lifetime simply _is_ unpredicable
20:07:26 <fizzie> Oh, you're going to *ask*. How polite.
20:07:39 <Phantom_Hoover> elliott, scapegoat!
20:07:49 <elliott> Phantom_Hoover: Yes, how observant.
20:07:56 <cheater> oerjan: interesting
20:08:01 <fizzie> Spacegoat.
20:09:16 <oerjan> and use of higher order functions easily makes tracing a value into a spaghetti affair, i think
20:09:26 <Phantom_Hoover> elliott, so how is it getting on.
20:09:36 <elliott> Phantom_Hoover: I've been too busy working on mchost.
20:09:48 <Phantom_Hoover> But scapegoat will help the world!
20:10:01 <elliott> So will mchost. :p
20:10:09 <fizzie> Spacegoat is the network-operations-optimized-for-latency-of-minutes-or-hours-due-to-light-speed-limits variant of scapegoat, to be used when you need to check out some code from the Mars colony.
20:10:12 <Phantom_Hoover> Not very much!
20:10:30 <fizzie> (I'm pretty sure we'll have established a Mars colony by the time scapegoat rolls out.)
20:10:46 <elliott> Phantom_Hoover: You like pyralspite, don't you?
20:11:07 <Phantom_Hoover> elliott, yes but scapegoat appeals to mankind's DEEPER NATURE
20:11:24 <elliott> -- Phantom "What is a VCS how do they work" Hoover
20:12:12 <Phantom_Hoover> elliott, it appeals to the ancient question of what a VCS is and how one works.
20:12:37 -!- kwertii has joined.
20:15:55 -!- Ngevd has quit (Ping timeout: 244 seconds).
20:16:39 <fizzie> <Vorpal> fizzie: well yes. But it faded out in a very meaningful way :P <-- "The sign flicked off again, in a way which Arthur was not at all certain he liked. It flicked off with a sort of contemptuous flourish. Arthur then tried to assure himself that this was just a ridiculous trick of his imagination. A neon sign is either on or off, depending on whether it has electricity running through it or not. There was no way, he told himself, that it could possibl
20:16:39 <fizzie> y effect the transition from one state to the other with a contemptuous flourish."
20:18:49 <elliott> fizzie must have an alias to grep HtwoGtwo.
20:19:16 <elliott> Maybe he has a FUSE filesystem at the end of his PATH that contains all possible file names as a shell script which greps HtwoGtwo for them.
20:19:19 <elliott> (selves)
20:19:27 <elliott> So he just types a query at the command-line in quotes and it's grepped for him.
20:19:28 <elliott> Efficiency.
20:21:48 <Vorpal> fizzie: thanks for the HHGT quote
20:21:57 <Vorpal> HHGTG*
20:21:58 <elliott> HHGT.
20:22:02 <Vorpal> elliott: missed a key
20:22:13 <elliott> Hitchhiker's Guide Tothegalaxy.
20:26:53 <oerjan> `addquote <fizzie> Spacegoat is the network-operations-optimized-for-latency-of-minutes-or-hours-due-to-light-speed-limits variant of scapegoat, to be used when you need to check out some code from the Mars colony. <fizzie> (I'm pretty sure we'll have established a Mars colony by the time scapegoat rolls out.)
20:26:55 <HackEgo> 699) <fizzie> Spacegoat is the network-operations-optimized-for-latency-of-minutes-or-hours-due-to-light-speed-limits variant of scapegoat, to be used when you need to check out some code from the Mars colony. <fizzie> (I'm pretty sure we'll have established a Mars colony by the time scapegoat rolls out.)
20:28:32 <elliott> fizzie: Incidentally, an sg fetch should only require two round-trips.
20:28:34 <elliott> Or three, not sure how you cound.
20:28:36 <elliott> count.
20:28:42 <elliott> Server to client, client to server, server to client.
20:29:09 <elliott> You could cut that down to "client to server, server to client", but I suspect it'd be a loss in non-Mars situations, since download > upload usually.
20:29:36 -!- hagb4rd has joined.
20:33:05 <oerjan> <cheater> how about a language where values adhere to E_8 logic <-- now i'm wondering if this logic is related to the lie group or not
20:33:26 <oerjan> given that you started with mentioning manifolds and stuff
20:34:26 <elliott> Isn't E8 the one that ~surfer dude~ supposedly ~made the Unified Theory~ with for about three days before someone debunked it?
20:34:45 <oerjan> i think so
20:34:50 <elliott> lol
20:35:14 <oerjan> of course cheater may have made up the logic version, at least i cannot find it :P
20:36:24 <oerjan> it wouldn't be immensely surprising if _someone_ had found a way to define a logic from a lie group, though
20:39:01 <elliott> oerjan: btw name my function: f ellipsis n s = if length s > n then take (n - length ellipsis) s ++ ellipsis else s (except implemented much more efficiently)
20:39:27 <oerjan> ok i've tried e-8 + logic, modal logic, paraconsistent logic and topos and neither gave anything obvious
20:40:09 <monqy> parse error on `more'
20:40:13 <monqy> i mean
20:40:13 <monqy> input
20:40:15 <monqy> `more'
20:40:17 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: more': not found
20:40:22 <elliott> monqy: monqy.......
20:40:24 <oerjan> shocking!
20:40:51 <monqy> it's a
20:40:53 <monqy> double joke
20:41:01 <elliott> oerjan....... name........it......
20:41:12 <oerjan> clearly any truly perfect language would allow "(except implemented much more efficiently)" as a pragma, though
20:41:37 <oerjan> why > n rather than >= n
20:42:02 <elliott> oerjan: because if it fits into the length there's no need to ellipsise it?
20:42:09 <oerjan> hm
20:42:14 <elliott> oerjan: it may be wrong anyway
20:42:16 <elliott> like i said
20:42:19 <elliott> not my real implementation
20:42:32 <monqy> ellipsisise
20:42:37 <monqy> that's a good name
20:42:38 <monqy> er
20:42:43 <monqy> i messed that up too
20:42:44 <elliott> no
20:42:44 <monqy> ;_;
20:42:52 <monqy> ellipsise
20:42:52 <elliott> besides it can take non-ellipses too in theory :P
20:42:53 <monqy> good name
20:43:09 <oerjan> ellipse is a verb, of course.
20:43:15 <monqy> yes but naming based on specific cases is great!!!
20:43:17 <oerjan> which fits perfectly here.
20:43:55 <elliott> `wn ellipse
20:43:57 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: wn: not found
20:44:04 <elliott> http://www.google.co.uk/search?gcx=w&sourceid=chrome&ie=UTF-8&q=define%3Aellipse#hl=en&q=ellipse&tbs=dfn:1&tbo=u&sa=X&ei=lx6KTr2vLcmZ8QO9l_RG&ved=0CDEQkQ4&bav=on.2,or.r_gc.r_pw.,cf.osb&fp=d644b56267fbe23f&biw=1440&bih=764
20:44:06 <elliott> i see no verb
20:44:16 <oerjan> THAT'S BECAUSE I MADE IT UP
20:44:27 <monqy> ellipse(verb) "..." "really long thing gosh" 5 -- nice and small
20:44:30 <oerjan> you poor english who cannot make up new words at a whim
20:44:30 <elliott> oerjan
20:44:33 <elliott> you are bad
20:44:34 <monqy> oh wait
20:44:35 <monqy> i
20:44:41 <monqy> was going to switch the 5 and long thing gosh
20:44:41 <monqy> then
20:44:42 <elliott> oerjan: how do you say ellipsis in norweigwegna
20:44:43 <monqy> forgoot
20:44:50 <monqy> i messed it up againnnnnnnnn
20:44:52 <oerjan> um
20:44:53 <monqy> killing self
20:45:17 <oerjan> ellipse, usually
20:46:02 <elliott> oerjan: :'(
20:46:26 * oerjan confirms with no.wikipedia.org that it's actually used for typography
20:47:30 <fizzie> Heh, the Magic Carpet game (like Descent, and quite a few other games) supported the Forte VFX-1 "virtual reality" helmet, and maybe some others too. It's like the future was already here (in all its headache-inducing flickery glory) in the mid-1990s, and then it just... went away.
20:48:09 <elliott> `addquote <fizzie> [...] It's like the future was already here (in all its headache-inducing flickery glory) in the mid-1990s, and then it just... went away.
20:48:12 <HackEgo> 700) <fizzie> [...] It's like the future was already here (in all its headache-inducing flickery glory) in the mid-1990s, and then it just... went away.
20:49:29 <fizzie> http://www.mindflux.com.au/products/iis/vfx1.html <- just look at that thing, it's so sy-fy.
20:50:08 -!- zzo38 has joined.
20:50:44 <elliott> But is it as REAL as the Virtual Boy?
20:50:44 <elliott> I still hold out hope for true VR one day. ONE DAY.
20:51:19 <oerjan> elliott: "procrustean", yw
20:51:19 <elliott> oerjan: waht
20:51:19 <oerjan> your function name
20:51:55 <oerjan> the future has zeerusted
20:51:55 <fizzie> oerjan: So 'ellipsis' in Norwegian is called 'procrustean'? I didn't expect that!
20:51:55 <elliott> oerjan: waht
20:51:55 <elliott> `log zeerust
20:51:55 <elliott> `log procrustean
20:52:36 -!- esowiki has joined.
20:52:36 -!- glogbot has joined.
20:52:54 <fizzie> With a stolen name.
20:52:58 <monqy> http://www.mindflux.com.au/products/iis/cyber.html oh my
20:53:08 <oerjan> also, iirc from tvtropes, one of the "meaning of liff" words
20:53:18 <fizzie> YRC. "Gets its name and definition from The Meaning Of Liff by Douglas Adams and John Lloyd, a book of neologisms* concocted by the two."
20:53:31 <oerjan> YRC?
20:53:35 <fizzie> You Recall Correctly.
20:53:44 <oerjan> how yrcsome
20:53:51 <fizzie> What, would "YYD" have been more intuitive?
20:53:53 <zzo38> If there is contrafunctors, but is there such thing as contramonads?
20:53:55 <elliott> monqy: is this site the slowest for you
20:53:57 <oerjan> ...no
20:54:08 <oerjan> zzo38: there are comonads
20:54:19 <zzo38> I know there are comonads, but are there contramonads?
20:54:28 <oerjan> oh hm
20:54:44 <zzo38> Like a monad and comonads are functors, so I mean contramonads, like monads by contrafunctors instead of functors
20:55:22 <oerjan> that's a bit weird, since the co- prefix on monad denodes a kind of dual, which the contra- prefix instead of co- on variant also does
20:55:26 <fizzie> I have here the Finnish translations (if you can call them that) of The Meaning of Liff, and The Deeper Meaning of Liff. It's all redone in Finnish place names and different meanings.
20:56:32 <oerjan> so what is zeerust in finnish, then
20:57:09 <elliott> "Finnish place names and different meanings"
20:57:13 <zzo38> oerjan: Yes, but the dual is different. I read that, a dual of a functor is still a functor, but a contravariant functor is different (sometimes called a cofunctor, but it should be called contrafunctor).
20:57:15 <elliott> essentially a different book :P
20:57:51 <fizzie> I don't recall offhand if it has a zeerust equivalent, but I could try to check.
20:58:15 <elliott> augh, chrome's image of a reddit page in my most visited sites thing
20:58:19 <elliott> has an orangered
20:58:44 -!- ive has joined.
20:58:54 <oerjan> zzo38: hm well a monad is also a functor, what if you require it to be a contravariant one instead, with maybe other adjustments
20:59:28 <oerjan> i don't know if it's a known term, though
20:59:46 <monqy> isn't the functor part of a monad an endofunctor??? notE: i know nothing about category theory (but i want to know / how should i learn it /help)
21:00:02 <oerjan> monqy: yes, and so are all haskell Functors
21:00:03 <zzo38> oerjan: Yes that is what I am asking about.
21:00:11 <monqy> oerjan: right
21:00:23 <oerjan> (capitalization intended)
21:00:29 <monqy> right
21:00:40 <monqy> I use the same caps stuff when I remember
21:00:52 <monqy> so what does zzo want
21:02:43 <fizzie> oerjan: I can't find one from the concept index, but the concept index is rather arbitrary, so that's not saying much.
21:02:48 <elliott> class Contrafunctor f where
21:02:48 <elliott> contramap :: (b -> a) -> f a -> f b
21:02:48 <elliott> class (Contrafunctor f) => Contrapplicative f where
21:02:48 <elliott> contrapure :: a -> f a
21:02:48 <elliott> contraap :: f (b -> a) -> f a -> f b
21:03:00 <elliott> class (Contrapplicative f) => Contramonad f where
21:03:00 <elliott> cojoin :: f (f a) -> f a
21:03:06 <elliott> s/cojoin/contrajoin/
21:03:17 <elliott> hmm
21:03:19 <oerjan> elliott: are those defined somewhere?
21:03:19 <monqy> is that you made it up?
21:03:22 <zzo38> I also think I read, all Haskell Functors are strong functors as well.
21:03:23 <elliott> oerjan: i made them up
21:03:27 <elliott> apart from contrafunctor
21:03:29 <elliott> which is relatively standard
21:03:41 <elliott> ?t \m f -> ?cojoin (?contramap f m)
21:03:41 <lambdabot> Maybe you meant: tell thank you thanks thx ticker time todo todo-add todo-delete topic-cons topic-init topic-null topic-snoc topic-tail topic-tell type . ? @ ft v
21:03:45 <zzo38> elliott: Yes "contramap" is defined like that in some library I found.
21:03:53 <monqy> kmetts contravariant package only has Contrafucntor (as Contravariant) and some other stuff....
21:03:59 <oerjan> contraap is a cute idea
21:04:01 <elliott> :t \m f -> (?cojoin :: f (f a) -> f a) ((?contramap :: (b -> a) -> f a -> f b) f m)
21:04:02 <lambdabot> Could not deduce (?cojoin::f (f a) -> f a) from the context ()
21:04:02 <lambdabot> arising from a use of implicit parameter `?cojoin'
21:04:02 <lambdabot> at <interactive>:1:9-15
21:04:06 <elliott> what
21:04:13 <elliott> oerjan: hepl
21:04:19 <monqy> cojoin? duplicate?
21:04:26 <elliott> :t \m f -> (undefined :: f (f a) -> f a) ((undefined :: (b -> a) -> f a -> f b) f m)
21:04:26 <lambdabot> forall (f :: * -> *) a a1. f a1 -> (f a -> a1) -> f a
21:04:34 <elliott> so I suspected
21:04:37 <zzo38> monqy: For comonads it is duplicate
21:04:41 <elliott> monqy: contrajoin
21:04:42 <elliott> it was a typo
21:04:46 <monqy> oh contrajoin
21:04:56 <elliott> huh
21:05:00 <elliott> that's quite surprising actually, that result
21:05:06 <elliott> why isn't the result in f too
21:05:15 <elliott> :t \m f -> ((undefined :: (b -> a) -> f a -> f b) f m)
21:05:15 <lambdabot> forall b a (f :: * -> *). f a -> (b -> a) -> f b
21:05:20 <elliott> o_O
21:05:57 * elliott puts this in a file
21:06:07 <copumpkin> o.O
21:06:09 <copumpkin> wat
21:06:28 -!- augur_ has joined.
21:06:30 <copumpkin> contramonad makes no sense
21:06:58 <copumpkin> @hackage contravariant
21:06:58 <lambdabot> http://hackage.haskell.org/package/contravariant
21:07:11 <elliott> copumpkin: well, zzo38 asked :)
21:07:31 <copumpkin> a contravariant functor is a functor involving opposite categories
21:07:38 <copumpkin> a monad is an endofunctor
21:07:43 <copumpkin> so no opposites in sight!
21:07:47 <elliott> copumpkin: Shhhhhhhh, zzo38 asked, it must happen
21:07:50 <copumpkin> oh ok
21:07:58 -!- augur has quit (*.net *.split).
21:08:01 * elliott tries going straight from Contrafunctor to Contramonad with no applicative in between
21:08:27 <elliott> contrabind :: m a -> (m b -> m a) -> m b
21:08:28 <elliott> yesssssssssss
21:08:43 <copumpkin> m a -> (b -> m a) -> m b, maybe?
21:08:50 <copumpkin> but that makes no sense :P
21:09:01 <monqy> contrabind is weird
21:09:03 <copumpkin> also, you could do it on the generalized monads thing
21:09:13 <monqy> generalize d moands thinge?
21:09:14 <elliott> copumpkin: oh right duh
21:09:20 <elliott> I don't know why I wanted m in both places :P
21:09:32 <oerjan> copumpkin: but elliott has practically defined already!
21:09:34 <copumpkin> http://www.cs.nott.ac.uk/~txa/publ/AssistedMonads2.pdf
21:09:38 <oerjan> *defined it
21:09:41 <copumpkin> lol
21:09:53 <zzo38> copumpkin: O, yes, you are correct but there might be possible to do with defining the correct operations, if it can be done.
21:09:53 <olsner> shouldn't it be m a -> (m b -> a) -> m b?
21:10:01 <elliott> olsner: no, m a -> (b -> m a) -> m b
21:10:03 <copumpkin> zzo38: what would it be?
21:10:17 <elliott> oerjan: hm can we define contraap with that contrabind?
21:10:18 <zzo38> copumpkin: I don't know, which is why I asked.
21:10:22 <oerjan> elliott: i think your m a -> (m b -> a) -> m b was fairly logical, really
21:10:26 <copumpkin> look at those relative monads I mentioned
21:10:34 <copumpkin> they're sort of a "monad-like thing" that works for non-endofunctors
21:10:41 <copumpkin> and a contravariant functor is a non-endofunctor
21:10:42 <elliott> oerjan: yes it makes more sense than this :P
21:10:53 <copumpkin> so you might be able to apply those to give you something resembling what you want
21:11:03 <elliott> data F a b = F { unF :: b -> a }
21:11:04 <elliott> instance Contrafunctor ((->) a) where
21:11:04 <elliott> contramap f (F g) = F (f . g)
21:11:05 <copumpkin> there was an earlier paper that didn't use agda
21:11:06 <elliott> huh, why doesn't that work...
21:11:19 <copumpkin> elliott: you want F
21:11:22 <copumpkin> not ((->) a)
21:11:24 <elliott> copumpkin: oh
21:11:27 <elliott> copumpkin: im smart
21:11:30 * copumpkin smacks elliott
21:11:31 <elliott> <-- smart
21:11:33 <oerjan> elliott: what was comonad cobind again
21:11:45 <elliott> oerjan: w a -> (w a -> b) -> w b I think
21:12:00 <monqy> extend has the arguments flipped but yes
21:12:06 <elliott> contrapure :: a -> F b a === a -> (a -> b)
21:12:07 <elliott> ah.
21:12:22 <elliott> soooooooo
21:12:24 <copumpkin> contrapunctus
21:12:28 <elliott> someone suggest another type to become a contramonad :P
21:12:30 <oerjan> elliott: ok, in that case i suspect that one of m a -> (b -> m a) -> m b and m a -> (m b -> a) -> m b is a contramonad, and the other is a contra_co_monad
21:12:38 <elliott> contracomonad......
21:12:57 <pikhq_> http://i.imgur.com/QbPdR.jpg Is that really the example you want to go with?
21:12:58 <elliott> no but seriously someone suggest another possible contramonad :P
21:13:03 <pikhq_> Really, Japan?
21:13:04 <zzo38> Yes I did think of contracomonad too.
21:13:27 <elliott> oerjan: hmm is contrapure right
21:13:38 <monqy> pikhq_: japan
21:14:02 <fizzie> oerjan: Ooh, zeerust *is* in the second book. It's "fuurtti" in Finnish. And that place is *really* obscure, it's not even known by Google Maps, and about the only hits are a weather forecast there, and some sort of a "nature-related locations" zoning map for the nearby muncipality (of less than 2000 inhabitants); it's here, anyway: http://maps.google.com/maps?hl=en&ll=61.514509,26.298437&spn=0.039912,0.082226&z=14
21:14:41 <pikhq_> And yes, the definitions given are entirely accurate.
21:15:15 <elliott> oerjan: insufficient lack of suggestions for other possible contramonads :P
21:15:19 <elliott> erm
21:15:26 -!- Ngevd has joined.
21:15:27 <elliott> s/insufficient/oversufficient/
21:15:58 <elliott> oerjan: hmm, is (Kleisli a) a monad?
21:16:06 <elliott> maybe (Contrakleisli a) is a contramonad
21:17:01 <oerjan> i have no idea any more :P
21:17:31 <oerjan> `run echo fuurtti | tr a-z n-za-m
21:17:33 <HackEgo> shheggv
21:17:42 <elliott> hmm...
21:17:48 <oerjan> `run echo zeerust | tr a-z n-za-m
21:17:50 <HackEgo> mrrehfg
21:17:58 <monqy> good words
21:18:02 <elliott> (b -> a) -> (m r -> a) -> (m r -> b)
21:18:02 <oerjan> furrfu
21:18:22 <elliott> hepl
21:18:34 <elliott> oerjan: hepl
21:18:38 <elliott> (given (Contramonad m))
21:19:23 <Ngevd> elliott, given any more idle thought returning fruitfulness?
21:19:39 <elliott> Ngevd: i suspect it is a trivial modification of feather in some ways :P
21:19:53 <monqy> did someone say feather
21:20:05 <oerjan> idea: time-reversed feather
21:20:26 <Ngevd> In Brook, as I call it, a self-interpreter is AS EASY AS A CAT PROGRAM
21:21:01 <monqy> does brook exist
21:21:15 <Ngevd> Only in an unsaved text file on my laptop
21:21:17 <Ngevd> And in my mind
21:21:38 <Ngevd> And in elliott's mind, but in a significantly different form
21:21:41 <Ngevd> Possibly with a different name
21:22:27 <Ngevd> And I will go to bed now
21:22:29 -!- Ngevd has quit (Quit: Leaving).
21:24:26 <zzo38> Functor has (a -> b) -> f a -> f b what is (f a -> f b) -> a -> b ? Is there even such things?
21:28:37 -!- esowiki has joined.
21:28:39 -!- glogbot has joined.
21:28:39 -!- glogbackup has left.
21:28:55 <elliott> oerjan: is zhc untaken
21:28:56 <monqy> z is good if you cross it
21:29:08 <oerjan> elliott: how should i know
21:29:11 <monqy> boring otherwise
21:29:17 <elliott> oerjan: u r haskel elda
21:29:22 <monqy> ZHC is a test held by the Ministry of Human Resources and Social Security of the People's Republic of China to test the Mandarin Chinese ability of Chinese citizens.
21:29:40 <elliott> ah
21:30:11 <oerjan> well then you cannot use it. clearly
21:30:13 <oerjan> .
21:30:51 <elliott> oerjan: lets try...atnother letter
21:30:56 <oerjan> m
21:31:11 <elliott> MHC....im dont like it
21:31:19 -!- lambdabot has quit (Ping timeout: 258 seconds).
21:32:44 <elliott> im thinking qhc at this point
21:34:56 <elliott> oerjan: do you approve of...qhc.....
21:35:12 <zzo38> What are you trying to do? Invent a Haskell compiler?
21:36:08 -!- augur_ has changed nick to augur.
21:36:12 <elliott> m,....aybe...
21:36:16 <elliott> i dont think it will have mor enotation
21:36:44 <zzo38> What will it have? Macros?
21:38:08 <elliott> m..aybe....
21:38:09 <zzo38> It should have macros that can be used to make up do-notation, list notation, Num class literals, these like Haskell already has; and more-notation as well.
21:38:28 <elliott> i think i will start with haskell 2010... and go from there.....
21:39:00 <zzo38> Which means that do notation and list notation would be Prelude macros.
21:39:51 <oerjan> <elliott> * You have been kicked from #magic by ChanServ (Invite only channel) <-- well if it was real, you'd have been turned into a newt. hm, maybe you should check that.
21:39:52 <zzo38> And have "deriving" actually being Template Haskell, where the standard deriving stuff is defined in Prelude.
21:40:01 <elliott> oerjan: i have always been a newt.............
21:40:04 <copumpkin> people really don't like template haskell
21:40:10 <copumpkin> I doubt they'll want to increase its scope
21:40:22 <elliott> I dunno, deriving by TH seems sane to me
21:40:24 <elliott> but yeah, I don't like TH :(
21:40:26 <zzo38> copumpkin: Why? I think Template Haskell is OK.
21:40:27 <elliott> I wish I could avoid it in my code
21:40:37 <elliott> but I can't figure out how to excise it from mchost
21:41:22 <zzo38> Of course if it can be deriving by TH but they are defined in the Prelude, your program doesn't need TH, if the Prelude has TH that is enough to use the deriving mechanism.
21:41:56 <copumpkin> zzo38: SPJ's (and many others) main issues with it are outlined at http://hackage.haskell.org/trac/ghc/blog/Template%20Haskell%20Proposal
21:44:23 <elliott> copumpkin: oh man, i could replace TH in my current project with cpp x-macros
21:44:26 <elliott> SHOULD I DO IT?????????
21:45:09 <olsner> of course
21:45:46 <zzo38> I think C preprocessor is no good for Haskell
21:46:08 <oerjan> <elliott> A little nicer, though still not very aesthetically pleasing. (ÆHC? :p) <-- i've always felt Æ is the least esthetic norwegian letter
21:46:22 <oerjan> *+a
21:46:26 <elliott> oerjan: "esthetic" is an abominable spelling imho. :(
21:46:29 <elliott> oh it's not invalid
21:46:33 <elliott> it's the common american spelling
21:46:36 <elliott> i just don't like it
21:46:49 <oerjan> no:estetisk >:)
21:46:59 <elliott> Well that's a hideous word :P
21:47:39 <zzo38> I do agree with some of the things in Template Haskell Proposal.
21:48:13 <zzo38> But I also want to add a macro system that is run in the parser.
21:48:52 <zzo38> As well as in the lexer.
21:48:54 <monqy> "esthetic" is the common american spelling?
21:48:59 <monqy> I've only ever seen aesthetic
21:49:38 <elliott> well american tendency is ae → e
21:49:48 <elliott> it may be true that the kind of people who use the word "aesthetic" tend to be the kind of people who use "ae", though
21:50:06 <elliott> (I've seen aesthetic more often too)
21:50:29 <zzo38> But I agree that [| "hello" && True |] ought to be acceptable (even though $([| "hello" && True |]) should still be error)
21:59:37 -!- esowiki has joined.
22:01:04 -!- esowiki has joined.
22:02:25 -!- esowiki has joined.
22:04:02 -!- esowiki has joined.
22:05:29 -!- esowiki has joined.
22:05:44 -!- esowiki has joined.
22:07:02 -!- esowiki has joined.
22:08:29 -!- esowiki has joined.
22:08:49 -!- esowiki has joined.
22:09:20 -!- esowiki has joined.
22:09:41 -!- esowiki has joined.
22:11:28 -!- esowiki has joined.
22:11:43 -!- esowiki has joined.
22:12:54 -!- esowiki has joined.
22:13:14 -!- esowiki has joined.
22:14:14 -!- esowiki has joined.
22:14:57 -!- esowiki has joined.
22:15:42 -!- esowiki has joined.
22:17:13 -!- esowiki has joined.
22:18:55 -!- esowiki has joined.
22:19:23 -!- esowiki has joined.
22:19:44 -!- esowiki has joined.
22:20:05 -!- esowiki has joined.
22:20:33 -!- esowiki has joined.
22:21:01 -!- esowiki has joined.
22:21:22 -!- esowiki has joined.
22:21:43 -!- esowiki has joined.
22:22:06 -!- esowiki has joined.
22:22:27 -!- esowiki has joined.
22:22:48 -!- esowiki has joined.
22:23:11 -!- esowiki has joined.
22:23:32 -!- esowiki has joined.
22:23:58 -!- esowiki has joined.
22:24:28 -!- esowiki has joined.
22:25:44 -!- esowiki has joined.
22:26:09 -!- esowiki has joined.
22:27:05 -!- esowiki has joined.
22:27:25 -!- esowiki has joined.
22:27:45 -!- esowiki has joined.
22:28:02 -!- esowiki has joined.
22:29:42 -!- esowiki has joined.
22:30:12 -!- esowiki has joined.
22:30:32 -!- esowiki has joined.
22:31:02 -!- esowiki has joined.
22:31:22 -!- esowiki has joined.
22:31:32 -!- esowiki has joined.
22:32:02 -!- esowiki has joined.
22:32:25 -!- esowiki has joined.
22:32:51 -!- esowiki has joined.
22:33:12 -!- esowiki has joined.
22:33:33 -!- esowiki has joined.
22:34:00 -!- esowiki has joined.
22:34:28 -!- esowiki has joined.
22:34:54 -!- esowiki has joined.
22:35:09 -!- esowiki has joined.
22:35:35 -!- esowiki has joined.
22:35:58 -!- esowiki has joined.
22:36:23 -!- esowiki has joined.
22:36:45 -!- esowiki has joined.
22:37:07 -!- esowiki has joined.
22:37:33 -!- esowiki has joined.
22:37:59 -!- esowiki has joined.
22:38:20 -!- esowiki has joined.
22:38:46 -!- esowiki has joined.
22:39:07 -!- esowiki has joined.
22:39:28 -!- esowiki has joined.
22:39:53 -!- esowiki has joined.
22:40:14 -!- esowiki has joined.
22:40:37 -!- esowiki has joined.
22:41:01 -!- esowiki has joined.
22:41:22 -!- esowiki has joined.
22:41:43 -!- esowiki has joined.
22:42:04 -!- esowiki has joined.
22:42:25 -!- esowiki has joined.
22:42:47 -!- esowiki has joined.
22:43:08 -!- esowiki has joined.
22:43:32 -!- esowiki has joined.
22:43:58 -!- esowiki has joined.
22:44:20 -!- esowiki has joined.
22:44:41 -!- esowiki has joined.
22:45:03 -!- esowiki has joined.
22:45:25 -!- esowiki has joined.
22:45:50 -!- esowiki has joined.
22:46:16 -!- esowiki has joined.
22:46:42 -!- esowiki has joined.
22:47:05 -!- esowiki has joined.
22:47:26 -!- esowiki has joined.
22:47:47 -!- esowiki has joined.
22:48:08 -!- esowiki has joined.
22:48:29 -!- esowiki has joined.
22:48:50 -!- esowiki has joined.
22:49:11 -!- esowiki has joined.
22:49:32 -!- esowiki has joined.
22:49:53 -!- esowiki has joined.
22:50:14 -!- esowiki has joined.
22:50:35 -!- esowiki has joined.
22:51:00 -!- esowiki has joined.
22:51:21 -!- esowiki has joined.
22:51:42 -!- esowiki has joined.
22:52:08 -!- esowiki has joined.
22:52:34 -!- esowiki has joined.
22:53:05 -!- esowiki has joined.
22:53:26 -!- esowiki has joined.
22:53:47 -!- esowiki has joined.
22:54:08 -!- esowiki has joined.
22:54:29 -!- esowiki has joined.
22:54:50 -!- esowiki has joined.
22:55:11 -!- esowiki has joined.
22:55:32 -!- esowiki has joined.
22:55:55 -!- esowiki has joined.
22:56:16 -!- esowiki has joined.
22:56:37 -!- esowiki has joined.
22:56:58 -!- esowiki has joined.
22:57:19 -!- esowiki has joined.
22:57:46 -!- esowiki has joined.
22:58:07 -!- esowiki has joined.
22:58:28 -!- esowiki has joined.
22:58:49 -!- esowiki has joined.
22:59:15 -!- esowiki has joined.
22:59:39 -!- esowiki has joined.
23:00:00 -!- esowiki has joined.
23:00:24 -!- esowiki has joined.
23:00:45 -!- esowiki has joined.
23:01:06 -!- esowiki has joined.
23:01:28 -!- esowiki has joined.
23:01:49 -!- esowiki has joined.
23:02:10 -!- esowiki has joined.
23:02:32 -!- esowiki has joined.
23:02:54 -!- esowiki has joined.
23:03:15 -!- esowiki has joined.
23:03:36 -!- esowiki has joined.
23:03:58 -!- esowiki has joined.
23:04:19 -!- esowiki has joined.
23:04:40 -!- esowiki has joined.
23:05:02 -!- esowiki has joined.
23:05:23 -!- esowiki has joined.
23:05:46 -!- esowiki has joined.
23:06:07 -!- esowiki has joined.
23:06:29 -!- esowiki has joined.
23:06:52 -!- esowiki has joined.
23:07:13 -!- esowiki has joined.
23:07:34 -!- esowiki has joined.
23:08:14 -!- esowiki has joined.
23:08:54 -!- esowiki has joined.
23:09:24 -!- esowiki has joined.
23:09:44 -!- esowiki has joined.
23:11:35 -!- esowiki has joined.
23:12:00 -!- esowiki has joined.
23:12:22 -!- esowiki has joined.
23:12:43 -!- esowiki has joined.
23:13:05 -!- esowiki has joined.
23:13:26 -!- esowiki has joined.
23:13:47 -!- esowiki has joined.
23:14:17 -!- esowiki has joined.
23:14:38 -!- esowiki has joined.
23:14:59 -!- esowiki has joined.
23:15:20 -!- esowiki has joined.
23:15:29 -!- glogbot has joined.
23:21:20 -!- esowiki has joined.
23:27:21 -!- esowiki has joined.
23:27:21 -!- glogbot has joined.
23:27:21 -!- glogbackup has left.
23:31:26 -!- elliott has joined.
23:32:38 -!- FireFly has joined.
23:41:46 -!- calamari has joined.
23:53:19 -!- Mrkrinkle has joined.
23:55:30 -!- Mrkrinkle has quit (Read error: Connection reset by peer).
2011-10-04
00:04:32 -!- kwertii has quit (Quit: kwertii).
00:11:09 -!- tiffany has quit (Quit: Bai~).
00:15:59 -!- HackEgo has quit (Remote host closed the connection).
00:18:57 -!- HackEgo has joined.
00:22:35 -!- HackEgo has quit (Remote host closed the connection).
00:23:05 -!- augur has joined.
00:23:12 -!- HackEgo has joined.
00:27:54 -!- HackEgo has quit (Ping timeout: 256 seconds).
00:28:01 -!- DH____ has quit (Read error: Connection reset by peer).
00:29:12 -!- HackEgo has joined.
00:39:11 <zzo38> I added another function to barrier monads module: replaceFail :: (String -> String) -> Barrier f b t -> Barrier f b t;
00:39:28 <zzo38> I also added the instance of Alternative so that you can use <|>
00:40:01 -!- HackEgo has quit (Remote host closed the connection).
00:40:11 -!- HackEgo has joined.
00:41:33 <zzo38> Now you can map the front type, back type, return type, and the fail message.
00:42:53 -!- ive has quit (Ping timeout: 260 seconds).
00:44:32 -!- copumpkin has joined.
00:45:06 -!- FireFly has quit (Ping timeout: 276 seconds).
00:45:51 -!- DH____ has joined.
00:48:42 <zzo38> Now I added bindFail :: (String -> Barrier f b t) -> Barrier f b t -> Barrier f b t;
00:49:22 <zzo38> (replaceFail is really a specialized kind of bindFail, I suppose)
00:50:37 <oerjan> :t catch
00:50:44 <oerjan> no lambdabot
00:51:03 <oerjan> anyway, i think your bindFail resembles the catch functions
00:51:37 -!- FireFly has joined.
00:51:44 <zzo38> Yes it is similar. But catch is for IO and for Exception.
00:52:06 <zzo38> catch :: Exception e => IO a -> (e -> IO a) -> IO a
00:52:11 <oerjan> there is also a variant for MonadError
00:52:26 -!- Jafet has quit (Quit: Leaving.).
00:52:28 <oerjan> you might be able to make an instance
00:52:42 <zzo38> OK. What is MonadError?
00:54:22 <oerjan> http://hackage.haskell.org/packages/archive/mtl/2.0.1.0/doc/html/Control-Monad-Error.html
00:55:54 <zzo38> OK, yes, I suppose it can do so.
00:56:57 <Madoka-Kaname> That program I was working on yesterday?
00:56:58 <Madoka-Kaname> http://i53.tinypic.com/2rdg21j.png < :3
00:57:28 <Madoka-Kaname> I dumped the raw data from the FFT into the image. I'm quite sure the two halves are related in some way.
00:57:39 <Madoka-Kaname> (top and bottom half)
00:59:58 <Madoka-Kaname> http://i51.tinypic.com/rhl380.png < that makes more sense
01:00:02 <Madoka-Kaname> This API is a little wacky >>
01:00:45 <zzo38> I removed bindFail and replaceFail and use MonadError instead, now.
01:08:21 -!- esowiki has joined.
01:08:57 -!- esowiki has joined.
01:11:11 -!- glogbot has joined.
01:11:11 -!- FireFly has quit (*.net *.split).
01:11:11 -!- Zwaarddijk has quit (*.net *.split).
01:11:11 -!- micahjohnston has quit (*.net *.split).
01:11:11 -!- olsner has quit (*.net *.split).
01:11:11 -!- DH____ has quit (*.net *.split).
01:11:11 -!- augur has quit (*.net *.split).
01:11:11 -!- elliott has quit (*.net *.split).
01:11:11 -!- zzo38 has quit (*.net *.split).
01:11:11 -!- sebbu has quit (*.net *.split).
01:11:11 -!- Nisstyre has quit (*.net *.split).
01:11:11 -!- iamcal has quit (*.net *.split).
01:11:11 -!- twice11 has quit (*.net *.split).
01:11:11 -!- monqy has quit (*.net *.split).
01:11:11 -!- hagb4rd has quit (*.net *.split).
01:11:11 -!- MichaelBurge has quit (*.net *.split).
01:11:13 -!- variable has quit (*.net *.split).
01:11:13 -!- oklopol has quit (*.net *.split).
01:11:13 -!- jix has quit (*.net *.split).
01:11:13 -!- Sgeo|web has quit (*.net *.split).
01:11:13 -!- HackEgo has quit (*.net *.split).
01:11:13 -!- calamari has quit (*.net *.split).
01:11:13 -!- myndzi has quit (*.net *.split).
01:11:13 -!- BeholdMyGlory has quit (*.net *.split).
01:11:13 -!- ineiros has quit (*.net *.split).
01:11:13 -!- mycroftiv has quit (*.net *.split).
01:11:13 -!- rodgort has quit (*.net *.split).
01:11:13 -!- tswett has quit (*.net *.split).
01:11:13 -!- mtve has quit (*.net *.split).
01:11:14 -!- MDude has quit (*.net *.split).
01:11:14 -!- SimonRC has quit (*.net *.split).
01:11:14 -!- clog has quit (*.net *.split).
01:11:14 -!- derdon has quit (Remote host closed the connection).
01:11:25 -!- copumpkin has quit (Ping timeout: 255 seconds).
01:11:51 -!- copumpkin has joined.
01:14:57 -!- esowiki has joined.
01:15:20 -!- esowiki has joined.
01:15:20 -!- glogbot has joined.
01:15:27 <CakeProphet> question:
01:15:28 <elliott> oerjan: waht happened while
01:15:30 <elliott> i was gone
01:15:36 <CakeProphet> could you make a fan blade that's exactly pi inches?
01:15:47 <oerjan> 03:13 oerjan> fungot: a horrible split!
01:15:47 <oerjan> 03:13 fungot> oerjan: i, myself, will bring an end to all. ghosts lurk in the ruins! the structural damage is severe. the tale?
01:15:47 <fungot> oerjan: there! there it is! but by the time we're through with you, you'll be in danger. open hatch.
01:15:47 <fungot> oerjan: yes, it's been awhile prometheus!
01:16:08 <oerjan> also, 03:12 oerjan> eek
01:16:44 <elliott> CakeProphet: the universe has finite information in a finite area, or so I understand
01:16:50 <elliott> so I would guess no
01:16:53 <elliott> i presume by make
01:16:56 <CakeProphet> that was my guess as well.
01:16:56 <elliott> you mean construct as a god
01:17:04 <CakeProphet> no I mean construct as a person with materials.
01:17:15 <elliott> well then I'll say definitely not
01:17:18 <elliott> but that's a stupid question
01:17:23 <oerjan> the question is whether "exactly n inches" has meaning in our universe
01:17:27 <elliott> ask the god one instead, since that's equivalent to "can our universe represent reals"
01:17:33 <elliott> oerjan: good point :P
01:17:37 <elliott> well not reals I guess
01:17:53 <elliott> maybe the universe just supports algebraic numbers and throws pi in as an extra
01:18:01 <CakeProphet> ..lol
01:18:19 <CakeProphet> I think as far as physical quantities irrationals are perhaps impossible?
01:18:36 <elliott> um.
01:18:56 <CakeProphet> no?
01:18:57 <oerjan> it depends how you measure... if 1 is possible, is sqrt(2) possible because it's the diagonal of a square with sides 1?
01:18:59 <elliott> CakeProphet: compass and straightedge dude
01:19:03 <elliott> assuming space is continuous
01:19:11 <zzo38> elliott: O, OK, I can look at SomeException. Can you convert a String to SomeException?
01:19:16 <CakeProphet> ah okay.
01:19:44 <elliott> zzo38: the standard IO fail puts it in an IOError
01:19:51 <elliott> you might want to create your own wrapper since that doesn't make much sense
01:20:11 <oerjan> if one of those loop quantum gravity theories with spacetime as a kind of graph is true, then the possibilities might be discrete, but maybe not necessarily rational if you think about that square example
01:20:17 <elliott> quite simple, "newtype FailException = FailException { failMessage :: String } deriving (Show, Typeable); instance Exception FailException" should do it
01:20:26 <elliott> then fail = Fail . FailException
01:20:54 <zzo38> OK.
01:22:01 <oerjan> <elliott> maybe the universe just supports algebraic numbers and throws pi in as an extra <-- hm, i think the field generated by that has decidable equality, none of that e+pi problem if you don't include both
01:22:04 <elliott> oh, you'll need DeriveDataTypeable for that... but you should use it, hand-written Typeable instances are very much frowned upon
01:22:28 <elliott> oerjan: See, God just got tired of not having an Eq instance.
01:22:46 <zzo38> But if I use SomeException, can I combine multiple errors?
01:23:14 <oerjan> <zzo38> elliott: O, OK, I can look at SomeException. Can you convert a String to SomeException? <-- hm something tells me elliott said something on the other side of the split
01:23:48 <elliott> oerjan: yep
01:23:50 <elliott> zzo38: What do you mean?
01:24:04 <elliott> oerjan: <elliott> zzo38: btw you probably want SomeException
01:24:05 <elliott> <elliott> not String
01:24:05 <elliott> <elliott> in Fail
01:24:05 <elliott> <elliott> that way, you can e.g. handle exceptions properly in the liftIO for BarrierT IO
01:24:18 <zzo38> I currently have an Alternative instance that <|> combines error messages if both sides are error.
01:25:28 <elliott> well, you cannot really do that in general, whatever character you pick might conflict with a valid character in a fail message anyway
01:25:47 <elliott> however, I think Fail _ <|> m should = m
01:25:53 <elliott> by the standard interpretation of Alternative
01:25:59 <zzo38> I picked '\RS'
01:26:44 <elliott> because after all, (<|>) is a kind of error handling
01:27:01 <elliott> in that it's basically a <|> b = a `catch` const b
01:27:04 <elliott> (metaphorically etc. etc. etc.)
01:28:04 <elliott> zzo38: but you could always define an expression pair type that's a combination of two exceptions and a subtype of those... I have no idea how to do that, oerjan might :P
01:28:57 <oerjan> eek
01:29:14 <oerjan> i don't _think_ the expression system supports multiple "inheritance"
01:29:36 <elliott> it probably shouldn't :P
01:29:36 <oerjan> *exception
01:31:00 * oerjan reads that again
01:35:10 <oerjan> it seems that an exception type needs preparation in order to be subtypeable
01:35:49 <oerjan> because a subtype exception needs to be cast to it in order to be thrown
01:35:58 <elliott> right
01:36:42 <oerjan> and it would probably take even more preparation to permit two exceptions to have a common subtype
01:44:36 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
01:49:01 -!- copumpkin has joined.
02:00:33 -!- calamari has quit (Quit: Leaving).
02:06:56 -!- pikhq_ has joined.
02:08:57 -!- pikhq has quit (Ping timeout: 244 seconds).
02:18:48 <oerjan> hm...
02:18:50 <oerjan> instance IsString ShowS where fromString = (++)
02:18:58 <elliott> yep, what of it
02:19:05 <elliott> ShowS is just DL Char :-P
02:19:09 <oerjan> just thought of it :P
02:19:23 <elliott> oerjan: the World -> (World, a) representation is used in compilers to avoid CSE interrupting with IO... doesn't just making (>>=) use pseq solve that?
02:19:29 <elliott> hmm
02:19:49 <elliott> x `pseq` f x `pseq` f x `pseq` IO ()
02:19:51 <elliott> I guess not
02:19:59 <elliott> since that duplicate f x pseqqing is reducable
02:20:00 <elliott> reducible
02:20:05 <elliott> still seems gross though
02:20:42 <oerjan> if it was plain a then _seq_ would be permitted to do the IO
02:20:51 <oerjan> i don't think you want that :P
02:20:59 <oerjan> or even pseq.
02:21:25 <elliott> oerjan: um you would obviously wrap it in "data"
02:21:41 <elliott> data IO a = IO a; instance Monad IO where return = IO; IO a >>= f = a `pseq` f x
02:21:48 <oerjan> ...but that would be _less_ efficient
02:21:49 <elliott> erm
02:21:50 <elliott> data IO a = IO a; instance Monad IO where return = IO; IO a >>= f = a `pseq` f a
02:21:58 <elliott> oerjan: umm, why?
02:22:05 <oerjan> because data is boxed
02:22:13 <elliott> functions are a kind of box...
02:22:27 <oerjan> yes, but RealWorld is optimized away
02:22:33 <elliott> yes, becoming ()
02:22:37 <elliott> there's still a box involved
02:22:40 <oerjan> not even ()
02:22:42 <elliott> yes but
02:22:43 <elliott> dude
02:22:46 <elliott> the value inside is still lazy
02:22:50 <elliott> or seq would do IOjust like you said
02:23:04 <oerjan> no.
02:23:12 <elliott> howso
02:23:22 <oerjan> well, hm... maybe.
02:23:36 <elliott> you can't have it completely stripped of boxing and laziness and still not do IO on sequencing
02:23:52 <elliott> functions are a kind of boxing, eliminating their actual argument parts and half of their result does not change that
02:24:40 <oerjan> oh well, it's just which trick you use to make the compiler not run IO too early
02:25:18 <elliott> it's not so much too early as not enough in this case...
02:25:20 <elliott> <elliott> data IO a = IO a; instance Monad IO where return = IO; IO a >>= f = a `pseq` f x
02:25:22 <elliott> the problem is that
02:25:25 <elliott> <elliott> x `pseq` f x `pseq` f x `pseq` IO ()
02:25:26 <elliott> can be reduced to
02:25:30 <elliott> x `pseq` f x `pseq` IO ()
02:25:35 <elliott> because CSE, etc.
02:26:19 <oerjan> istr some compiler just did World -> a, essentially
02:26:27 -!- CakeProphet has quit (Quit: Lost terminal).
02:26:52 <elliott> that works but you need a "unique world" primitive
02:27:02 <elliott> which has to be completely unique each time, CSE-wise
02:27:05 <elliott> which is just weird
02:27:15 <elliott> at least the World -> (World, a) model requires no compiler changes to work with CSE :P
02:27:23 <elliott> i mean, in teh deep internals
02:27:36 <elliott> s/teh/the/
02:28:23 <elliott> holy shit jhc uses m4 in its libraries
02:29:26 -!- ive has joined.
02:37:03 -!- Gregor has quit (Quit: Coyote finally caught me).
02:37:45 -!- Gregor has joined.
02:38:48 <elliott> oerjan: man, jhc is so lame, it uses a modified version of ghc's parser
02:38:50 <elliott> so lame???
02:39:25 <elliott> (...not that haskell's syntax is _simple_...)
02:39:51 <elliott> oerjan: I like how Lexer.hs is over half as long as HsParser.ly
02:40:02 <elliott> and mostly full of actual complicated logic ather than the parser
02:41:14 <oerjan> mhm
02:41:26 <elliott> ather
02:41:28 <elliott> good word
02:42:22 <oerjan> prithe, nuncle, whence comest thou ather?
02:45:27 <elliott> oerjan: :))))))000000000000000
02:46:39 <elliott> i guess
02:46:40 <elliott> i should start
02:46:42 <elliott> with a lexer???
02:46:48 <elliott> i am really not sure where to start :badatprogramming:
02:47:11 <elliott> monqy: emphathise mywith my pilght
02:53:40 <elliott> monqy no empasise im sad
02:58:22 <elliott> not even oerjan can mephaithise
03:06:05 <oerjan> phtamiserable
03:06:32 <oerjan> spleing
03:06:57 <elliott> oerjan: emtphaethlaise with me
03:07:11 <oerjan> sorry, i don't do drugs
03:07:19 <elliott> :'(
03:07:25 <elliott> the drugge... of empathy.....
03:07:25 -!- MDude has changed nick to MSleep.
03:08:00 <oerjan> well my projects have halted at the beginning of the lexing stage before
03:10:12 <oerjan> http://www.reddit.com/r/programming/comments/kz98v/your_favorite_language_probably_sucks_at/c2oid71?context=1
03:11:30 <elliott> ais: a person that exists
03:11:45 <oerjan> dun dun dun
03:11:47 * elliott replies
03:12:42 <elliott> "Have you tried VHDL? Because of the built in libraries, it's only as low level as you want it to be? I like the idea of writing software as independent modules with parallel inputs regulated by a clock."
03:12:44 <elliott> lol
03:13:30 <oerjan> poor ais523, having elliott ruin his reddit reputation
03:13:43 <elliott> shut up, I have more karma than him
03:13:54 <elliott> ooh someone vote ais up, he has 127 comment karma
03:16:27 <zzo38> I watched the first five episodes of Kaiji
03:17:04 <monqy> elliott: sorry i was away not being here
03:17:08 <monqy> elliott: too away to
03:17:16 <monqy> elliott: empathinse
03:17:20 <elliott> you mean emtphaethlaise
03:17:24 <monqy> that too
03:18:26 <elliott> monqy: should i write.......lexer first...
03:18:27 <monqy> i would probably.....do things other than the parser....first
03:18:37 <monqy> i'm including lexer in there
03:18:55 <monqy> with the parser
03:18:58 <monqy> in things I wouldn't do first
03:19:35 <elliott> monqy: well i don't know if you can parse haskell while lexing it sanely
03:19:37 <elliott> oerjan might know :P
03:19:39 <elliott> layout and all
03:19:51 <elliott> but i dunno what else i could do without an ast, and writing an ast divorced from a parser sounds REALLY REALLY TEDIOUS
03:20:00 <monqy> :(
03:20:36 <monqy> i gues you could
03:20:38 <monqy> do parsing first
03:20:48 <elliott> i just don't knwo what to do :(
03:21:02 <oerjan> well i hear ghc needs the parser to callback the lexer in order to do layout properly
03:21:04 <monqy> or you could write an ast divorced from a parser or you could write a dummy parser
03:21:22 <oerjan> because of the } insertion rule
03:21:26 <elliott> monqy: ast divorced from a parser sounds really tedious
03:21:31 <elliott> what would a dummy parser even be
03:21:44 <zzo38> I also try to write Haskell parsing program. But it is mostly only lexer, grouping by (){}[] and also splitting by ; and finding name locality (layout is not supported)
03:21:58 <oerjan> elliott: deriving Read
03:22:05 <monqy> hehehehehe
03:22:09 <elliott> oerjan: how would I even use that :P
03:22:18 <zzo38> I make it so that I can make a macro program for Haskell. So if I am not using layout, I don't need to make it to support layout
03:22:38 <oerjan> elliott: add deriving Read to all your data types, then you have your dummy parser
03:22:47 <oerjan> *ast data types
03:22:49 <elliott> oerjan: yes, but how is that useful in any way? :P
03:23:00 <zzo38> (Actually, inside of () and [] they split by , and inside of {} they split by ; is how I do it)
03:23:09 <oerjan> elliott: it allows you to test other things before doing the proper parser?
03:23:23 <monqy> elliott: i dunno you'd make major simplifications like no layout, no infix, etc. when i said dummy i was actually thinking of something even simpler but then i realized that would not be as good of an idea
03:23:28 <elliott> oerjan: why would I even need a Read instance, then?
03:23:33 <oerjan> mind you, a lot of that you can simply do in ghci
03:23:41 <oerjan> elliott: well maybe not
03:24:27 <elliott> anyway, one thousand six hundred lines or so isn't so bad; I don't need any extensions or cruft, and I can maybe unify the lexer and parser
03:24:44 <elliott> (well plus utilities like the lexing and parsing monad it uses but I don't consider them "part of the parser")
03:24:58 <elliott> {-# INLINE happyIn150 #-}
03:24:58 <elliott> happyOut150 :: (HappyAbsSyn ) -> (HsName)
03:24:58 <elliott> happyOut150 x = unsafeCoerce# x
03:24:58 <elliott> {-# INLINE happyOut150 #-}
03:24:58 <elliott> happyIn151 :: (HsName) -> (HappyAbsSyn )
03:24:59 <elliott> happyIn151 x = unsafeCoerce# x
03:25:01 <elliott> {-# INLINE happyIn151 #-}
03:25:03 <elliott> happyOut151 :: (HappyAbsSyn ) -> (HsName)
03:25:05 <elliott> happyOut151 x = unsafeCoerce# x
03:25:07 <elliott> {-# INLINE happyOut151 #-}
03:25:09 <elliott> happyIn152 :: (HsName) -> (HappyAbsSyn )
03:25:11 <elliott> happyIn152 x = unsafeCoerce# x
03:25:13 <elliott> {-# INLINE happyIn152 #-}
03:25:15 <elliott> happyOut152 :: (HappyAbsSyn ) -> (HsName)
03:25:17 <elliott> happyOut152 x = unsafeCoerce# x
03:25:19 <elliott> {-# INLINE happyOut152 #-}
03:25:21 <elliott> happyIn153 :: (HsExp) -> (HappyAbsSyn )
03:25:23 <elliott> happyIn153 x = unsafeCoerce# x
03:25:24 <monqy> good parser
03:25:25 <elliott> {-# INLINE happyIn153 #-}
03:25:27 <elliott> happyOut153 :: (HappyAbsSyn ) -> (HsExp)
03:25:29 <elliott> happyOut153 x = unsafeCoerce# x
03:25:31 <elliott> happy producesgood output
03:25:33 <elliott> s/producesgood/produces good/
03:25:35 <elliott> ohm yogod
03:25:37 <elliott> http://sprunge.us/PNZP
03:25:39 <elliott> what
03:25:41 <elliott> IS THis????
03:25:54 <elliott> wow this is awful
03:25:55 <zzo38> That makes it really messy. The other way is to use Parsec
03:26:10 <oerjan> zzo38: i think records split by , inside {}
03:26:26 <monqy> zzo38: parsec? is that powerful enouygh?
03:27:00 <zzo38> monqy: I think so. It can store state if you need it to, as well.
03:27:20 <elliott> i do not like how cavalier ghc and jhc are aout using language extensions
03:27:26 <zzo38> oerjan: Yes it does.
03:27:32 <elliott> zzo38: i doubt parsec can do layout. at least unmodified.
03:27:33 <monqy> other options: handwritten parser
03:27:35 <elliott> or without massive hacks
03:27:53 <monqy> other other options: make your own TOTALLY RAD parser combinators, use them
03:28:15 <elliott> monqy: I guess when I write my arbitrary-CFG combinator library I will make it use that :P
03:28:22 <zzo38> elliott: You do have a state if you need it, though. You can use the state to keep track of layout.
03:29:00 <elliott> zzo38: well theoretically you can do anything with state just by storing the actual parser to use inside the state...
03:29:10 <elliott> but that doesn't mean it'll be "using" parsec in any meaningful sense
03:30:01 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
03:32:02 <oerjan> well i do think using the state to keep the layout stack is reasonable
03:32:30 <zzo38> oerjan: Yes that is what I meant.
03:32:39 <elliott> oerjan: does that handle the fail-reparse case?
03:32:58 <monqy> tokenprimex looks like a fun function
03:33:03 <oerjan> elliott: it should be nominally possible, at least...
03:33:28 <elliott> fsvo nominally
03:33:30 <elliott> monqy: where.....
03:33:37 <monqy> tokenPrimEx :: Stream s m t => (t -> String) -> (SourcePos -> t -> s -> SourcePos) -> Maybe (SourcePos -> t -> s -> u -> u) -> (t -> Maybe a) -> ParsecT s u m a
03:33:44 <monqy> FunCtion
03:33:52 <elliott> beautaetauetiaetuaieutieatuaeituaietuaietiaeutaieutaeituaeitaueitaetiful...........
03:40:14 -!- lambdabot has joined.
03:40:42 <zzo38> You can make barrier monad act similarly to the state monad by a function like this: flip $ perform (maybe (join (,)) (flip (,))) error (,)
03:41:27 <elliott> do we even need any non-barrier monads......
03:41:46 <oerjan> > let a = 2 + in "test"
03:41:47 <lambdabot> <no location info>: parse error on input `in'
03:42:09 <zzo38> Yes, you do need some. Anyways, barrier monads are not the most efficient, they also lack some things others have.
03:42:34 <oerjan> > let a = 2 + of "test"
03:42:35 <lambdabot> <no location info>: parse error on input `of'
03:42:40 <oerjan> > let a = 2 + 2 of "test"
03:42:41 <lambdabot> <no location info>: parse error on input `of'
03:43:00 <zzo38> The barrier monads are a bit similar to generator functions in JavaScript, actually.
03:43:01 <elliott> oerjan: im scared.....
03:43:12 <oerjan> elliott: wat
03:43:19 <elliott> oerjan: of ur acode.....
03:43:44 <oerjan> elliott: i'm just finding out if ghc ever reveals when it's failing to use the } insertion rule
03:43:57 <elliott> oerjan: does it ever fail?
03:44:19 <oerjan> hm...
03:45:29 <oerjan> well it sometimes gives that possibly incorrect indentation message...
03:45:49 <oerjan> > do "test" let x = 5
03:45:50 <lambdabot> <no location info>: parse error on input `let'
03:46:38 <oerjan> if the let had been one line lower, that _would_ have depended on indentation
03:47:10 <elliott> help
03:47:19 <zzo38> But generator functions in JavaScript cannot have a return value.
03:49:48 <oerjan> it's possible using the state for the layout stack would just "work".
03:50:58 <elliott> oerjan: only one way to find out...
03:51:07 <elliott> oerjan: well edwardk was working on a haskell layout "parser transformer" thing
03:51:10 <elliott> presumably using its state
03:53:36 -!- itidus20 has quit (Ping timeout: 256 seconds).
04:17:23 <oerjan> elliott: i think in order for it to just work, there needs to be at least one sanity condition on your parser structure
04:17:35 <elliott> wat
04:18:00 <cheater> oerjan: watch garret lisi's presentation on TED
04:18:00 <oerjan> if you have do (try a <|> b); virtualRightBrace somewhere
04:18:22 <oerjan> then a must _not_ be able to parse a prefix of something b parses
04:18:23 <elliott> oerjan: become a geologist
04:18:49 <elliott> oerjan: also, would you even need try if a couldn't do that...?
04:19:04 <oerjan> elliott: possibly not.
04:19:26 <oerjan> oh i mean, a whole parse by a must not be a prefix of something b parses
04:19:31 <oerjan> er...
04:20:26 <elliott> cheater: you upgraded your connection i guess if it can handle video now? grats
04:21:10 <cheater> no, i watched it ages ago.
04:21:12 <oerjan> let's say a stops parsing "argle bargle glop glyf" at glop, so a virtual } might be inserted befor glyf
04:21:27 <oerjan> then b must not be able to parse beyond glop
04:21:33 <elliott> oh
04:21:46 <elliott> oerjan: it's that ~surfer dude~ who came up with that ToE that got debunked in about three days
04:21:47 -!- MSleep has quit (Ping timeout: 252 seconds).
04:21:47 <elliott> that lie group thing
04:21:59 <oerjan> elliott: ok
04:22:13 <oerjan> is he talking about that or something else
04:22:17 <cheater> and then he continued working and it didn't
04:22:30 <oerjan> i'm not _very_ interested
04:22:41 <elliott> oerjan: dunno, wouldn't listen to anything he says anyway, unless it seemed exceptinoally interesting
04:23:10 <cheater> oerjan: he shows how he applies E8 sort of logic to elements, you could do the same with values or types in a a language.
04:24:04 <cheater> i think this would be interesting because it's difficult to reasons about operations in E8 without the help of computers
04:24:28 <cheater> AND most languages model some structure in abstract algebra, a lot of such structures are embedded in E8
04:26:18 <cheater> E8 is currently the most complex structure in algebra
04:26:49 <cheater> that is being looked at, at least
04:31:32 <oerjan> i sincerely doubt your second last statement, just on intuition
04:31:48 <Sgeo|web> HOLY FUCK I WAS RIGHT MY PROFESSOR WAS WRONG BUT I WAS STARING AT MY RESULT FROM MY RUBY SCRIPT AND NOT RECOGNIZING IT BECAUSE I GOT THE MATH THAT I DID EARLIER IN CLASS UNDER THE ASSUMPTION THAT I WAS RIGHT WRONG
04:31:51 <oerjan> even with your last one
04:32:19 <elliott> hi Sgeo|web
04:32:37 * oerjan puts Sgeo|web in shouting disease quarantine
04:33:38 <elliott> you don't understand..... it was a holy fuck situation
04:33:42 <Sgeo|web> I wasn't certain that my professor was wrong because I know sometimes things that look independent aren't actually independent and interact in weird and unintuitive ways, and I thought maybe this was one of those times
04:33:55 <oerjan> elliott: like haven't been seen in 2000 years?
04:34:09 <elliott> oerjan: is the joke that jesus... and holy...and.....
04:34:21 <elliott> because doesn't immaculate conception poke... a hole in this joke...
04:34:31 <oerjan> maybe.
04:34:41 <Sgeo|web> Immaculate Conception is Mary being born without sin
04:34:54 <Sgeo|web> Free from original sin, I mean
04:34:57 <oerjan> well, i knew that.
04:35:16 <elliott> yeah but isn't jesus still the dad
04:35:18 <elliott> erm
04:35:19 <elliott> yeah but isn't god still the dad
04:35:32 <elliott> I dunno, I don't remember any fucking being involved
04:35:37 <elliott> at least outside of the astral plane
04:35:43 <elliott> but I'm not so hot on my christian porn theology
04:35:48 <pikhq_> elliott: As traditional Western Christian doctrine holds that Jesus == God, Jesus would still be the dad.
04:35:52 <cheater> oerjan: you doubt that E8 is one of the most complex structures in mathematics?
04:36:00 <Sgeo|web> elliott: I think it's a joke that God had sex with Mary
04:36:03 <elliott> "one of" = ""
04:36:12 <elliott> pikhq_: i don't think the elements of the trinity are considered literally identical are tehy
04:36:17 <elliott> or they wouldn't need names
04:36:21 <elliott> it's that "separate but the same" stuf
04:36:26 <pikhq_> elliott: It's utterly vague.
04:36:32 <elliott> no shit
04:36:32 <oerjan> cheater: s/statement/line/
04:36:42 <cheater> oerjan: well what are you refering to then
04:36:55 <pikhq_> This is what you get when you try to make polytheism consistent with monotheism.
04:37:08 <cheater> oerjan: why not just copy-paste
04:37:11 <oerjan> cheater: i doubt it is the most complex, yes.
04:37:15 <cheater> ok.
04:37:53 <cheater> no, that is incorrect. it is undoubtedly one of the most complex things out there.
04:38:41 <elliott> oerjan has a phd in irc discussion of comepmxepxpelixty.............
04:41:07 <oerjan> elliott: http://www.airshipentertainment.com/growfcomic.php?date=20080608
04:41:17 <elliott> oerjan has a phd in convenient comics to reference in any situation
04:41:27 -!- hagb4rd has quit (Quit: Nettalk6 - www.ntalk.de).
04:41:56 <elliott> perhaps oerjan
04:41:59 <elliott> has every phd....................
04:42:08 <elliott> just a thought
04:44:32 <elliott> oerjan: are you gonna be interesting soon, just gotta schedule things in, don't think i'll get a parser for qhc started today
04:44:41 <oerjan> now if i had a phd in not biting my lip, that would be something
04:45:52 <zzo38> A PhD in not biting your lip?
04:46:11 <oerjan> yes. then i might be able to eat today without hurting myself.
04:46:22 -!- GreaseMonkey has joined.
04:46:41 <zzo38> As far as I know there is no such PhD
04:47:10 <oerjan> as far as i know you have no joke detector.
04:47:37 * pikhq_ grants oerjan a PHILOSOPHIAE DOCTOR in non-lip-biting
04:47:47 <pikhq_> Now to become accreditted.
04:48:03 <elliott> oerjan: i dunno i think zzo38 discovered a fairly fatal flaw in your plan
04:48:17 * oerjan walks to accept the phd, trips over something and breaks his leg
04:48:41 <elliott> rip
04:49:04 <elliott> oerjan: but seriously are you planning to like give the channel a lecture or something or can i go be busy for some hours
04:49:37 <oerjan> i am not planning, no.
04:49:40 <shachaf> elliott: I think "QHC" is taken.
04:49:41 <zzo38> Now you need a PhD in not breaking your leg
04:49:41 * shachaf wonders if elliott will softly and suddenly vanish away again.
04:49:50 <elliott> ah but are you INTENDING
04:50:00 <elliott> shachaf: Probably XHC for all X is taken.
04:50:17 <pikhq_> *All* X?
04:50:19 <oerjan> no.
04:50:23 <elliott> But you only predicted that because I mentioned softly and suddenly vanishing away like seven lines up.
04:50:26 <pikhq_> Even 龍HC?
04:50:29 -!- elliott has quit (Quit: So good guess!).
04:50:53 <shachaf> I think elliott just leaves whenever I'm around nowadays.
04:52:16 <oerjan> so you are secretly elliott, check.
04:52:41 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .).
04:59:31 -!- hagb4rd has joined.
05:19:28 <zzo38> Each player must, at the beginning, loan any amount of money they choose from 1 million yen up to 10 million yen. The interest is 40% compounded every ten minutes. Each player gets three stars and twelve cards, four each of Rock, Paper, and Scissors. At the end of four hours, anyone with no cards and at least three stars wins.
05:19:39 <zzo38> And you have to pay back your loan.
05:20:28 <zzo38> There is a scoreboard that tells the time remaining, as well as how many of each card are still in the game in total and have not yet been played.
05:21:30 <zzo38> Disposing of cards is not permitted, but you can buy and sell them. You can also buy and sell stars. Normally each game is a bet of one star, but you can bet more than one star, and you can bet money on it too.
05:22:11 <zzo38> You are permitted to pay back your loan as soon as you meet the winning conditions.
05:24:00 <zzo38> You also lose if you are unable to pay back your loan.
05:24:25 <zzo38> Now, do you wish to play this kind of game?
05:26:28 <zzo38> If you attempt to flush your cards down the toilet, or leave them on the floor, you will be disqualified.
05:28:06 <oerjan> "no"
05:29:03 <oerjan> > 0.6 ^ 24
05:29:04 <lambdabot> 4.738381338321614e-6
05:29:31 <fizzie> Here "disqualified" must be some sort of an euphemism for "taken behind the shed and shot".
05:29:33 <oerjan> wait, is this yearly interest
05:29:34 <zzo38> You get an extra 4 million yen for each star above 3 that you have at the end.
05:29:51 <zzo38> fizzie: Yes.
05:29:55 <oerjan> because if it is 10 minute interest it's just insane
05:29:58 <zzo38> oerjan: No. It is 40% for four hours.
05:30:04 <oerjan> oh.
05:33:08 <zzo38> (You get the extra money due to being able to sell the stars to the judges for that amount.)
05:34:33 <zzo38> You also are not allowed to change the amount of the loan after it has started.
05:35:30 <zzo38> Now do you understand?
05:36:32 <fizzie> "Have you ever used money that you can buy something with? Describe in detail where, how, why and name of all persons:" (A question from a form you can use to apply for a free "comrade ticket" to this event, if you have already purchased a ticket. It's a very long form.)
05:38:42 <zzo38> fizzie: Comrade ticket? But you need to already have a ticket? I cannot possibly remember all the things I have ever purchased with money, or the names of the merchants.
05:40:18 <zzo38> What is a comrade ticket anyways?
05:41:03 <pikhq_> A sentient, communist ticket.
05:41:03 <fizzie> It's a ticket you can give to a friend/enemy/hostage/etc.
05:41:45 <zzo38> OK.
05:43:10 <oerjan> i for one welcome our new ticket overlords
05:46:21 -!- esowiki has joined.
05:46:36 -!- esowiki has joined.
05:47:45 -!- esowiki has joined.
05:48:15 -!- esowiki has joined.
05:48:50 -!- esowiki has joined.
05:49:51 -!- esowiki has joined.
05:50:06 -!- esowiki has joined.
05:50:26 -!- esowiki has joined.
05:51:01 -!- esowiki has joined.
05:52:20 -!- esowiki has joined.
05:52:34 -!- glogbot has joined.
05:53:01 <CakeProphet> oh hello.
05:54:11 <CakeProphet> glogbot: how are you?
05:54:55 -!- Gregor has joined.
05:56:19 -!- HackEgo has quit (Ping timeout: 258 seconds).
05:56:30 -!- HackEgo has joined.
05:56:46 <oerjan> Sgeo|web: think about it as the combination of two decks, one with only suits and one with only ranks
05:57:25 <oerjan> chosing A from the second deck and B from the first deck gives the exact same probabilities
05:57:33 <zzo38> pikhq_: I cannot answer in Unicode my IRC client receive but cannot send Unicode
05:57:35 <zzo38> Sorry
05:57:52 <oerjan> and those are of course independent
05:58:30 <oerjan> hm oh.
05:59:11 <oerjan> or perhaps its the pulling out which is the confusion? in which case, shuffle the deck, let A be the top card and B the card under that
05:59:15 <oerjan> *it's
06:00:13 <Sgeo|web> I need to sleep soon
06:00:30 <oerjan> anyway, they are independent
06:01:42 <Sgeo|web> Yeah, that's what I thought.
06:01:55 <Sgeo|web> But wasn't certain until I saw the results from my crappy script
06:02:13 <Sgeo|web> Probably would have been a 1-liner in Haskel
06:02:13 <Sgeo|web> Haskell
06:02:23 <Sgeo|web> Instead of the monster I made it in Ruby
06:06:15 <fizzie> "The Monster in Ruby", the new summer hit movie. Coming soon to a theater near you.
06:06:32 <zzo38> Do you like to play monster character in Ruby? Do you in Emerald?
06:08:27 <Sgeo|web> Sleep time
06:15:23 <Madoka-Kaname> Note to self: Take Bible studies or something. Understanding a religion's holy book better than many believers would be an advantage in arguments...
06:18:20 -!- esowiki has joined.
06:18:40 -!- esowiki has joined.
06:18:48 -!- esowiki has joined.
06:20:04 -!- esowiki has joined.
06:20:55 -!- esowiki has joined.
06:21:03 -!- glogbot has joined.
06:21:21 <CakeProphet> `run units 'pythagoreanthird' 'minorsecond'
06:21:22 <HackEgo> Unknown unit 'minorsecond'
06:21:28 <zzo38> pikhq_: Even if the context is of being metaphorical?
06:21:37 <CakeProphet> `run units 'pythagoreanthird' 'musical fifth'
06:21:46 <HackEgo> Unknown unit 'musical'
06:21:50 <CakeProphet> `run units 'pythagoreanthird' 'musicalfifth'
06:21:52 <HackEgo> ​* 0.84375 \./ 1.1851852
06:22:12 <CakeProphet> `run units 'lightyear' 'beardsecond'
06:22:12 <pikhq_> zzo38: It's quite literal.
06:22:14 <HackEgo> ​* 1.8921461e+24 \./ 5.2850042e-25
06:22:25 <pikhq_> zzo38: It then goes on to note a scheme for substituting sacrifices.
06:22:37 <zzo38> pikhq_: No, I mean metaphorical at a completely different level.
06:22:45 <pikhq_> So, it is permissible to sacrifice a valued goat in favor of a first-born son.
06:22:51 <pikhq_> Erm, in lieu of.
06:22:58 <Madoka-Kaname> pikhq, well, I intend to less argue against the religion itself, and more of the kinds of things people justify with their religion.
06:23:06 <CakeProphet> `run units 'cubicfeat/minute' 'cubiccentimeters/second'
06:23:07 <Madoka-Kaname> i.e. [quote dump] "Yep. Just like Jesus would do"
06:23:11 <HackEgo> Unknown unit 'cubicfeat'
06:23:14 <CakeProphet> `run units 'cubicfeet/minute' 'cubiccentimeters/second'
06:23:16 <HackEgo> Unknown unit 'cubicfeet'
06:23:17 <CakeProphet> >_>
06:23:23 <CakeProphet> sometimes my brain does strange things.
06:23:33 <pikhq_> Madoka-Kaname: Well, for *that* it'd probably be easiest to just read the Gospels.
06:23:48 <CakeProphet> `run units 'feet^3/minute' 'cm^3/second'
06:26:12 <HackEgo> ​* 471.94744 \./ 0.00211888
06:26:13 <pikhq_> Those are at least not mind-numbingly long, terrible, ancient, and boring. Just *fairly* terrible, ancient, and boring.
06:26:13 <CakeProphet> `run units 'feet^3/minute^2' 'cm^3/second^2'
06:26:13 <Madoka-Kaname> =p
06:26:13 <CakeProphet> `run units 'romanfoot' 'foot'
06:26:13 <Madoka-Kaname> CakeProphet, accelerating expansion or something?
06:26:13 <Madoka-Kaname> o.o
06:26:13 <pikhq_> And if you think while reading it, you get all sorts of fun questions. For instance, where was Jesus born?
06:26:13 <zzo38> Some give the example of that God created the light before the sun, as being absurd and wrong, and possibly just metaphorical. I say, even if that is what is meant, that particular example is not a good one because the statement is correct; there can be light!
06:26:13 <CakeProphet> Madoka-Kaname: excellerating wind output on a fan.
06:26:13 <Madoka-Kaname> =p
06:26:13 <zzo38> There are a lot of better examples of things that do in fact more nonsense.
06:26:13 <CakeProphet> derivative.
06:26:13 <Madoka-Kaname> zzo38, well, the big bang was just as silly.
06:26:13 <pikhq_> Near as I can tell, Jesus was born in a superposition of towns.
06:26:13 <CakeProphet> you know what's silly?
06:26:13 -!- Gregor has joined.
06:26:13 <CakeProphet> Copenhagen interpration.
06:26:13 <pikhq_> CakeProphet: Agreed.
06:26:13 <pikhq_> CakeProphet: But "superposition of towns" is funny enough I'm willing to say it anyways.
06:26:13 <HackEgo> ​* 7.8657907 \./ 0.1271328
06:26:13 <HackEgo> ​* 0.97112861 \./ 1.0297297
06:26:13 <CakeProphet> ether
06:26:13 <CakeProphet> was silly
06:26:14 -!- lambdabot has joined.
06:26:20 <CakeProphet> > let fibs = 0 : 1 : zipWith (+) fibs (tails fibs) in fibs
06:26:25 <lambdabot> Occurs check: cannot construct the infinite type: a = [a]
06:26:30 <CakeProphet> > let fibs = 0 : 1 : zipWith (+) fibs (tail fibs) in fibs
06:26:33 <lambdabot> [0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946...
06:26:36 <Madoka-Kaname> zzo38, photons were existing far before stars!
06:26:49 <zzo38> Madoka-Kaname: Yes that is what I meant.
06:27:00 <pikhq_> Madoka-Kaname: Also, the big bang theory isn't silly, it's the clear result of direct observation.
06:27:02 <CakeProphet> I think I'm experiencing organ failure?
06:27:12 <Madoka-Kaname> pikhq_, I know. =p
06:27:22 <pikhq_> https://upload.wikimedia.org/wikipedia/commons/2/2d/WMAP_2010.png Here, have a photo.
06:27:27 <Madoka-Kaname> I was personifying the big bang, not attacking the theory!
06:27:31 <olsner> pikhq_: the sitcom or the actual theory? :P
06:27:36 <pikhq_> olsner: The theory.
06:27:50 <pikhq_> olsner: I'm consistent with capitalisation, generally.
06:28:01 <pikhq_> olsner: I'd say "The Big Bang Theory" in reference to the sticom.
06:28:10 <pikhq_> Sitcom, even.
06:35:56 -!- esowiki has joined.
06:35:59 -!- glogbot has joined.
06:36:00 -!- glogbackup has left.
06:40:23 -!- glogbot has quit (Ping timeout: 252 seconds).
06:40:29 -!- esowiki has joined.
06:40:29 -!- glogbot has joined.
06:41:46 -!- oerjan has quit (Quit: Good night).
06:46:30 -!- esowiki has joined.
06:47:06 -!- esowiki has joined.
06:47:27 -!- esowiki has joined.
06:47:34 -!- glogbot has joined.
06:47:34 -!- glogbackup has left.
06:47:45 <zzo38> Do you need chess board?
06:47:59 -!- HackEgo has quit (Ping timeout: 276 seconds).
06:48:37 <zzo38> Can I somehow make the spells of Icosahedral RPG to form a (mathematical category theory) category?
06:48:45 -!- HackEgo has joined.
06:48:47 -!- Gregor has joined.
06:49:03 <CakeProphet> zzo38: no I was thinking software game.
06:49:31 <zzo38> CakeProphet: Do you need cards anyways, even if the cards is done by computer?
06:50:16 <monqy> oerjan isn't here so i'm going to call it abcdef
06:50:48 <zzo38> Do you know what 88's funny game is?
06:51:53 -!- Zetroid has joined.
06:51:59 <CakeProphet> zzo38: cards could be incorporated somehow?
06:57:26 <zzo38> Use two standard decks, a tarot deck, and a Fanucci deck, all mixed together. And Washizu mahjong tiles. Some of the cards have a magic spell on them, and some of them are torn.
07:14:14 <Vorpal> CakeProphet: what software game?
07:14:42 <Vorpal> <CakeProphet> I think I'm experiencing organ failure? <-- I read this as the musical instrument first.
07:19:36 -!- ive has left.
07:25:41 <fizzie> Fancy Trac is fancy; it noticed the attachment starts with a unified-diff header, and colors it with a pretty diff-viewer.
07:28:35 <CakeProphet> monqy: you combine them to create spells.
07:28:40 <CakeProphet> up to 3 perhaps.
07:30:10 <monqy> hi
07:30:55 <monqy> m is pretty close to z, I guess
07:31:19 <CakeProphet> ...
07:31:33 <fizzie> An 'ad hobbitem' fallacy is when you try to undermine someone's credibility by referring to how hairy his/her feets are.
07:31:56 <Vorpal> fizzie: really?
07:32:02 <fizzie> Vorpal: No, I just made it up.
07:32:20 <Vorpal> ah
07:32:26 <fizzie> But it could be!
07:32:31 <Vorpal> yeah
07:33:01 <fizzie> The search seems to mostly find just something that looks like a Latin translation of LOTR.
07:33:05 <Vorpal> fizzie: in an alternative universe it is a widely accepted word.
07:33:07 <fizzie> "Bilbo undecigesimos primos annos, CXI, actus erit, numerum insuetiore et aetatem respectabilem ad Hobbitem --"
07:33:17 <Vorpal> fizzie: XD
07:34:25 <Vorpal> fizzie: does it say that Bilbo has hairy feet?
07:36:26 <Vorpal> hm why does English use the term eigen in eigenvalues rather than calling it something like "selfvalues"
07:38:11 <Vorpal> or ownvalues, that works too
07:41:26 <fizzie> The Finnish term is translated; "ominaisarvot".
07:42:30 <Vorpal> the Swedish term is translated too: egenvärden
07:42:40 <Vorpal> (note the dropped i)
07:45:06 <fizzie> They do have a term though: "characteristic value".
07:46:24 <Vorpal> hm
07:46:25 <olsner> I think the english imported the concept from a german mathematician, presumably at some time when german was a primary academic language (which would be why they kept the german instead of adopting a new english word)
07:46:40 <Vorpal> ah, makes sense
07:47:05 -!- kmc has joined.
07:52:09 -!- zzo38 has quit (Remote host closed the connection).
07:53:42 <CakeProphet> how many lines of code is GHC?
07:54:50 <CakeProphet> over 100,000 in fact.
07:55:11 <CakeProphet> (...that's a lot of lines for a Haskell program)
07:56:50 <CakeProphet> I would say Haskell's main compiler is Pretty Fucking Excellent(tm)
07:59:25 -!- MichaelBurge has quit (Read error: Connection reset by peer).
08:00:04 -!- MichaelBurge has joined.
08:02:32 <Vorpal> CakeProphet: ghc is written in haskell right? Apart from low level parts of the RTS.
08:03:21 <CakeProphet> yes.
08:03:35 <Vorpal> which was the first haskell compiler?
08:03:48 <Vorpal> or interpreter I guess
08:03:51 <cheater> miranda
08:03:53 <cheater> ?
08:03:56 <cheater> maybe
08:04:13 <cheater> if you're asking what was first used to compile haskell
08:05:14 <monqy> wasn't miranda a language? that would be like answering "what's a popular c compiler" with "c"
08:05:38 <Vorpal> oh cheater talking? I have him on ignore. And yes miranda is a language
08:06:09 <monqy> perhaps I should too
08:06:38 <monqy> I don't like ignoring people because it weirds conversation, but rarely I do it anyway
08:07:02 <Vorpal> yeah it weirds conversations definitely
08:09:53 <cheater> monqy: please ignore me if it'll spare me stupid comments like yours just now about ignoring me to facilitate someone's hatred
08:10:17 <monqy> what?
08:10:25 <CakeProphet> I want to say that the first implementation of the Haskell 98 standard is GHC.
08:10:25 <monqy> it's not about facilitating someone's hatred
08:10:32 <monqy> it's because I don't want to listen to you
08:10:39 <Vorpal> CakeProphet: of haskell, not haskell 98
08:10:49 <Vorpal> oh well, I need to leave, university
08:11:02 <cheater> monqy: oh, moving target fallacy
08:11:07 <cheater> monqy: definitely ignore me then
08:11:13 <monqy> sure thing
08:11:29 <CakeProphet> monqy: I hate you.
08:11:33 <monqy> CakeProphet: what
08:11:37 <CakeProphet> :( :( :(
08:11:40 <monqy> :(
08:11:50 <monqy> are you ignoring cheater too?
08:12:04 <CakeProphet> No I have no reason to really.
08:12:06 <cheater> no CakeProphet is too cool to ignore people
08:12:44 <CakeProphet> cheater: yes this is something I would generally agree with
08:12:57 <CakeProphet> I might ignore derrick or itidus one of these days.
08:13:08 <cheater> i don't really know who they are
08:13:19 <cheater> sometimes i see itidus talking but i've never had a conversation with him
08:13:27 <CakeProphet> some of the few people I don't like reading.
08:13:55 <monqy> I agree w/r/t derrik but itidus is amazing
08:14:32 <CakeProphet> `quote <monqy>.*?I agree
08:14:37 <HackEgo> 682) <monqy> i agree with elliott
08:15:00 <cheater> monqy would agree to everything.
08:15:04 <cheater> he's like that.
08:15:34 <cheater> right now he's agreeing with you and disagreeing with you at the same time, trying to maximize agreement rate
08:15:47 <monqy> hm?
08:16:23 <CakeProphet> uh, yeah I don't do stupid personal shit.
08:16:27 <CakeProphet> no tks
08:16:40 <CakeProphet> #esoteric shouldn't work that way.
08:17:26 <cheater> same reason i told monqy to put me on ignore
08:17:31 <cheater> i just don't need that really
08:36:09 -!- monqy has quit (Quit: hello).
08:56:23 -!- Zetroid has quit (Ping timeout: 255 seconds).
09:16:53 -!- kmc has quit (Quit: Leaving).
09:35:01 -!- kmc has joined.
10:15:01 -!- derdon has joined.
10:19:19 -!- pikhq has joined.
10:19:20 -!- pikhq_ has quit (Ping timeout: 248 seconds).
10:19:50 -!- ais523 has joined.
10:19:57 -!- ais523 has quit (Changing host).
10:19:57 -!- ais523 has joined.
10:21:46 -!- sllide has joined.
10:52:49 <Vorpal> hi
10:53:49 <ais523> hi
11:16:03 -!- GreaseMonkey has quit (Quit: The Other Game).
11:36:13 -!- Phantom_Hoover has joined.
12:43:04 -!- DH____ has quit (Read error: Connection reset by peer).
12:43:08 -!- DHeadshot has joined.
12:49:57 -!- atehwa has set topic: computed jumps... the topic. | Esolang event @ Hel/Finland on 3.10.2011: https://wiki.helsinki.fi/display/lambda/esoteeriset+ohjelmointikielet | god bless haskell america | 12345678!&^ | http://codu.org/logs/_esoteric/.
12:50:14 -!- atehwa has set topic: computed jumps... the topic. | http://codu.org/logs/_esoteric/.
12:50:51 <Phantom_Hoover> atehwa, did anyone show up?
12:51:46 <atehwa> yes :)
12:51:57 <atehwa> about 20 people at the same time, and 30 people total
12:52:13 <atehwa> I took the effort to advertise the event quite broadly
12:52:34 <fizzie> Whoa, that's a lot of people.
12:52:39 <atehwa> yeah, definitely
12:52:49 <atehwa> I'm quite proud
12:53:00 <atehwa> what I'm not so proud about is that I wasn't too well prepared
12:53:21 <Phantom_Hoover> There aren't even that many regulars in the channel.
12:53:22 <atehwa> but the subject is so broad anyway, you couldn't give very detailed treatment of anything
12:53:40 <atehwa> Maybe I should advertise the channel for the participants of the event
12:53:47 <atehwa> I have their email addresses, anyway.
12:54:22 <atehwa> oh and BTW, the material is here: http://members.sange.fi/~atehwa/slides/esoteric
12:58:17 * ais523 looks
13:03:11 -!- boily has quit (Ping timeout: 245 seconds).
13:10:02 -!- kmc has quit (Quit: Leaving).
13:10:40 <Phantom_Hoover> "just a new syntax for Brainfuck,"
13:10:52 <Phantom_Hoover> atehwa, did you cite me as world expert on hating BF derivatives.
13:11:45 <ais523> Phantom_Hoover: Ook! doesn't count, BF derivatives were interesting back then
13:12:03 <ais523> but all the others are hateworthy unless they use the BF structure to demonstrate some language feature that's interesting on its own
13:12:04 <Phantom_Hoover> I have given Ook! pardon already.
13:12:14 <ais523> like BF Joust or PaintFuck
13:13:25 <Phantom_Hoover> "[Unlambda] does not have predefined data types, other than the program source"
13:13:43 <Phantom_Hoover> Hmm, can the .cs be considered a data type?
13:23:37 <atehwa> Phantom_Hoover: I did inform people there about some registrants' dislike towards Brainfuck
13:24:00 <Phantom_Hoover> Oh, no, everyone loves BF.
13:24:09 <Phantom_Hoover> It's the derivatives we detest.
13:26:27 <atehwa> :)
13:27:14 <atehwa> most "designers" of BF derivatives are BF fans
13:27:36 <atehwa> they usually dislike other derivatives, too :)
13:28:00 <atehwa> I don't really understand why we should favour bf over its derivatives, though
13:28:36 <ais523> in general, we shouldn't, it's just that most of the derivatives are much worse than the original
13:28:40 <ais523> they have a tendency to miss the point
13:28:41 <atehwa> If it was a clear standard that gave life to 15 year old programs, I could live with that
13:28:55 <ais523> the best derivatives find a point of their own to hit
13:29:07 <atehwa> ais523: well, then we should probably dislike "bad" bf derivatives, whatever that means for anyone.
13:29:24 <ais523> atehwa: indeed, it's just that around 90% of them are awful
13:29:37 <atehwa> it's like PHP software
13:30:09 <atehwa> "there's no reason why your particular piece of software couldn't be great even if it was written in PHP, it just happens that 90% of stuff written in PHP is crap"
13:31:03 -!- boily has joined.
13:31:09 <atehwa> Phantom_Hoover: .cs?
13:31:22 <atehwa> printing "functions"?
13:31:26 <Phantom_Hoover> Yeah.
13:31:28 -!- copumpkin has joined.
13:32:05 <atehwa> hmm.... the ability to have those functions in program source extends the data model, of course
13:32:37 <atehwa> but IMO they're farther from data types than SKI expressions, because there's no way to inspect them
13:33:31 <atehwa> SKI expressions can be used to build general-purpose data types ("first-class"), whereas printing functions can't
13:34:14 <atehwa> it's a matter of terminology, really.
13:57:43 -!- azaq23 has joined.
13:57:58 -!- azaq23 has quit (Max SendQ exceeded).
13:58:28 -!- azaq23 has joined.
14:07:52 -!- azaq23 has quit (Ping timeout: 256 seconds).
14:09:25 -!- pikhq_ has joined.
14:09:50 -!- pikhq has quit (Ping timeout: 260 seconds).
14:28:55 -!- azaq23 has joined.
14:28:56 -!- augur has quit (Remote host closed the connection).
14:30:33 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
14:36:55 <Sgeo|web> Ook! is getting a pardon?
14:38:56 <ais523> yes, Ook! gets a pardon
14:39:05 <ais523> it'd be awful if invented for the day, but at the time, it was actually interesting
14:39:11 <ais523> *if invented today
14:41:03 -!- MDude has joined.
14:47:44 <Phantom_Hoover> I love all the people who put their names on their crappy BF derivatives.
14:48:56 <ais523> haha, I suppose if I invent a really really bad BF deriv, elliottfuck might be a good name for it
14:49:07 <ais523> not because elliott makes bad BF derivs
14:49:14 <ais523> but for the joke of trying to shift the blame
14:50:07 <Deewiant> What made Ook! interesting even at the time?
14:50:53 -!- azaq23 has quit (Quit: Leaving.).
14:52:04 <Phantom_Hoover> Deewiant, nothing, it was just a silly joke.
14:52:14 <Phantom_Hoover> The kind that stops being funny the second time it's made.
14:53:56 <Phantom_Hoover> It's now been made at least 6 times.
14:56:12 -!- copumpkin has joined.
14:59:50 -!- augur has joined.
15:01:47 -!- oklopol has quit (Ping timeout: 255 seconds).
15:02:17 <ais523> Deewiant: it was the first language which really had a deliberately useless syntax
15:02:33 <ais523> there had been terse syntaxes before, but not stupid ones
15:03:17 <Deewiant> Doesn't INTERCAL kind of fit that bill? :-P
15:03:32 <ais523> not really
15:03:56 <ais523> it's more a parody syntax than a deliberately useless one, more like LOLCODE than Ook! in that respect
15:04:26 <Sgeo|web> I thought Ook! was just BF with the commands replaced by variations of Ook! So, what syntax?
15:04:28 <Deewiant> I don't think there's a big difference there
15:04:34 <Deewiant> But I kind of see your point
15:05:59 <MDude> All the commands were made to look similar.
15:07:53 -!- hagb4rd has quit (Ping timeout: 248 seconds).
15:42:20 -!- hagb4rd has joined.
15:42:20 <cheater> ais523: what about
15:42:24 <cheater> i.e. whitespace
15:42:29 <cheater> that's impractical
15:42:50 <ais523> that's also quite recent, IIRC
15:43:04 <cheater> i think less recent than ook, or is it?
15:44:33 <cheater> <orbitz> We need a langugae with test-based features
15:44:33 <cheater> That is, you have to pass a test in order to use the feature
15:50:14 <Sgeo|web> I think my language idea of needing to crack a hash to output was going to be a BF derivative because I couldn't imagine a good other structure to use
15:50:23 <Sgeo|web> I don't remember details though
15:50:32 <Sgeo|web> I should get around to actually making that language
16:07:41 -!- monqy has joined.
16:09:41 <Gregor> <elliott> oerjan: "esthetic" is an abominable spelling imho. :( <elliott> it's the common american spelling
16:09:43 <Gregor> No it's not.
16:09:46 <Gregor> Maybe it was 100 years ago.
16:09:58 <Gregor> (Hooray for responding to multi-day-old logs :P )
16:11:18 <Gregor> Of course, I never had a class in "archeology" either ...
16:15:28 <Phantom_Hoover> Did you get lab coats in your department?
16:18:59 <Gregor> Not quite cold enough yet. I'm holding off until people will want to wear them.
16:27:29 -!- augur has quit (Remote host closed the connection).
16:36:35 -!- Ngevd has joined.
16:36:38 <Ngevd> Hello!
16:37:36 -!- kwertii has joined.
16:40:23 <Deewiant> https://secure.wikimedia.org/wikipedia/en/wiki/COMEFROM#Examples "An actual example in INTERCAL would be too difficult to read[citation needed]."
16:40:35 <ais523> heh
16:40:38 <ais523> I am aware of the line
16:40:55 <Deewiant> I think I was too, but not the "[citation needed]"
17:03:27 -!- ais523 has quit (Remote host closed the connection).
17:20:25 -!- Ngevd has quit (Quit: Leaving).
17:26:22 <monqy> Articles in category "Brainfuck derivatives"
17:26:22 <monqy> There are 95 articles in this category.
17:26:25 <monqy> Articles in category "Brainfuck equivalents"
17:26:25 <monqy> There are 13 articles in this category.
17:26:30 <monqy> weeping
17:29:18 <Phantom_Hoover> I blame Sgeo|web.
17:42:24 -!- nooga has joined.
17:51:28 -!- ais523 has joined.
17:52:36 <Vorpal> Phantom_Hoover: did he make many of them?
17:53:18 <Vorpal> monqy: there are actually a few interesting Brainfuck derivatives though
17:53:26 <Vorpal> boolfuck iirc
17:53:52 <monqy> in their place i will substitute the multitude of awful non-brainfuck-derivatives
17:56:42 -!- elliott has joined.
17:57:37 <elliott> CakeProphet: have i mentioned i'm going to replace hackego's units :P
17:58:23 <elliott> 05:36:32: <fizzie> "Have you ever used money that you can buy something with? Describe in detail where, how, why and name of all persons:" (A question from a form you can use to apply for a free "comrade ticket" to this event, if you have already purchased a ticket. It's a very long form.)
17:58:25 <elliott> fizzie: :D
17:58:27 -!- Ngevd has joined.
17:59:17 <Ngevd> Hello
17:59:22 <monqy> hi
17:59:31 <monqy> that is an awful form question
17:59:36 <Ngevd> elliott, how's the idle thinking going?
17:59:37 <elliott> no its the best
17:59:58 -!- hagb4rd has quit (Quit: Nettalk6 - www.ntalk.de).
18:00:12 <elliott> ais523: hi, please delete [[Category:Shameful]], it's an unauthorised category creation
18:00:18 <elliott> Ngevd: at the percolation stage :P
18:00:28 <ais523> elliott: someone created the category page?
18:00:36 <elliott> ais523: as their first (IP) contrib
18:00:51 <elliott> http://esolangs.org/wiki/User:Grouchymaverick
18:00:54 <elliott> this guy sure is a grouchy maverick
18:01:10 <ais523> reason for deletion: unapproved category; missing an in-joke
18:01:44 <elliott> ais523: btw, Aptennap has been waiting for a reply for days now
18:01:49 <elliott> on http://esolangs.org/wiki/User_talk:Aptennap
18:02:03 <elliott> (time for a which-usdr-talk-page-to-reply-on flamewar?)
18:02:06 <elliott> s/usdr/user/
18:02:49 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
18:03:14 <ais523> I replied on his
18:03:17 <ais523> as he replied on his not mine
18:03:26 <ais523> my reply is definitely in the right place; his may not be, but I don't really care
18:03:39 <elliott> yep, I was just wondering which side of THE DEBATE You were on :P
18:04:08 <ais523> elliott: oh, I'm all for splitting conversations, but don't care strongly enough about it to flamewar
18:04:13 <elliott> I wonder how Timwi's CSS-only skin is getting on
18:05:14 -!- boily has quit (Read error: Operation timed out).
18:05:34 <elliott> 08:09:53: <cheater> monqy: please ignore me if it'll spare me stupid comments like yours just now about ignoring me to facilitate someone's hatred
18:05:34 <elliott> Ignoring someone else doesn't prevent them from seeing your comments, so that wouldn't have the effect you desire
18:05:44 <elliott> 08:10:25: <CakeProphet> I want to say that the first implementation of the Haskell 98 standard is GHC.
18:05:44 <elliott> I'm not sure about that
18:05:48 <elliott> well 98 maybe
18:06:34 <cheater> elliott: why are you even replying to things i say?
18:07:15 <elliott> I was clarifying the function of ignores for people in the channel. There are some forty people here that this channel is a conversation with all of.
18:07:41 <cheater> it was obviously yet another quip addressed at me
18:07:49 <elliott> wow, Wikipedia uses google (verb) in articles
18:08:20 <cheater> not only did you show a lack of understanding of what i spoke about but displayed mild stupidity by assuming i don't know how the ignore function works
18:08:32 <cheater> why is that ever interesting for anyone?
18:08:57 <elliott> heh, not only that but it has an /article/ on google (verb)
18:09:23 <MDude> It's probab ly just not worth the hassle ot edit out when people use it.
18:09:31 -!- augur has joined.
18:09:46 <elliott> MDude: it's in the first few paragraphs of [[New York City]], linked to the article on the verb
18:09:52 <fizzie> elliott: It also asks for the length of your submarine in millimetres, as well as "Continue the following sentence: I request to be sent to Siberia for 13 years because:", and also "Are you aware that you will be sentenced to prison camp if you don't answer here 'yes'" in which "yes" does not pass form validation.
18:09:56 <elliott> I'm sure it'd be gone if it wasn't approved of
18:10:13 <elliott> fizzie: So is there any actual possibility of getting a ticket? :p
18:11:53 <elliott> cheater: btw, I don't do personal quips, but I would appreciate it if you stopped making them in here about me, it's quite hypocritical to accuse me of doing it while still doing it yourself
18:12:03 <cheater> ahahah
18:12:07 <cheater> as if.
18:12:28 <elliott> I don't appreciate them in the slightest and I'm sure nobody else does either
18:12:34 <fizzie> elliott: I believe so, but the evaluation criteria are... obscure.
18:12:37 <cheater> there's this thing called self-awareness
18:12:47 <cheater> which you are not displaying
18:12:58 <elliott> so, you're not going to stop, right?
18:13:15 <fizzie> Oh, they also ask for a hand-drawn picture of your passport, and "Best picture gets special prize!"
18:13:21 <cheater> i think you're out on a limb here with your monologue
18:13:34 <Ngevd> .
18:13:40 <Ngevd> .
18:13:41 <Ngevd> .
18:13:49 <Ngevd> THIS IS GETTING TEDIOUS
18:13:56 <elliott> It's not a monologue, it's a simple request for you to stop doing the same shit you accuse me of, but clearly you are not interested in cooperating civilly
18:14:12 <cheater> yeah i'm sort of waiting til elliott figures out no one is interested in his daily attacks at me
18:14:29 <elliott> Ngevd: It's even more tedious when you're on the receiving end, but I'll just take it up where everyone else isn't bothered by it.
18:14:53 <Ngevd> IT'S DOUBLE ENDED
18:15:02 <Ngevd> AS IN, BOTH ENDS RECIEVE
18:15:05 <Ngevd> IT'S ANNOYING
18:15:08 <cheater> yeah
18:15:09 <Ngevd> TO LISTEN TO
18:15:14 <monqy> #esoteric drama
18:15:19 <cheater> i wish elliott wouldn't keep on creating drama every day
18:15:42 <elliott> Ngevd: Which is why I'm taking it up in private, so turn your caps lock off and acknowledge you've been here for about three months out of over a year.
18:15:49 <cheater> notice this started with elliott posting a quote from me, making up some bullshit to make himself look smart and to make me look stupid, and winding it up from there
18:15:49 -!- kwertii has quit (Ping timeout: 260 seconds).
18:15:53 <Ngevd> Yup
18:15:58 <Ngevd> And my caps lock was never on
18:16:03 <MDude> No.
18:16:57 <cheater> Ngevd: btw, do you listen to any music in particular? i wanted to ask you earlier
18:16:59 <MDude> At least, all i noticed was Elliot asking some not-that important thing of you, you takign it personally, and then an endless cycle of NO YOU'RE THE ONE ATTACKING ME.
18:17:04 <Ngevd> cheater, Muse
18:17:11 -!- Phantom_Hoover has joined.
18:17:20 <Ngevd> Occasionally Red Hot Chilli Peppers and Breaking Benjamin
18:17:27 <cheater> MDude: not really.
18:17:46 <cheater> Ngevd: interesting, i never heard of the third one
18:18:00 <Ngevd> They're a not-very-big group
18:18:09 <Ngevd> Quite good
18:18:15 <Ngevd> In my opinion at least
18:18:17 <cheater> so did they break him in the end
18:18:18 <cheater> :p
18:19:13 <Ngevd> They're from the far-off land of Pennsylvania
18:21:00 <Ngevd> And as the lead singer, aptly named Benjamin, has numerous phobias, including flying, they will never perform anywhere I can really see them
18:22:27 <cheater> o
18:22:47 <cheater> what if that's what the band's name is about
18:22:51 <cheater> his phobias
18:22:54 <cheater> and breaking them
18:23:04 <Ngevd> No, that would be their third album
18:23:05 <Ngevd> Phobia
18:23:11 <Ngevd> The band name is about a mic
18:23:19 -!- boily has joined.
18:23:32 <cheater> so elliott i don't see any "private chat", didn't you want to "work it out"? or are you just bothering ais or oerjan again with your troll attempts
18:23:33 -!- kwertii has joined.
18:23:49 <cheater> because really riling me up and then going to tell is just laughable
18:24:23 <cheater> Ngevd: a mic?
18:24:24 <cheater> what mic?
18:24:26 <cheater> interesting
18:24:42 * cheater knows microphones sometimes have very crazy stories
18:24:46 <Ngevd> One at a club they were performing at under a different name
18:25:10 <cheater> one recording engineer who made a classic recording of some sort, multiple platinum, recovered a pair of microphones after decades
18:25:17 <cheater> he had to sell em at some point
18:25:20 <cheater> and now got them back
18:25:28 <ais523> <cheater> so elliott i don't see any "private chat", didn't you want to "work it out"? or are you just bothering ais or oerjan again with your troll attempts <--- what was that line for? it seems to be riling elliott for no good reason
18:26:27 <cheater> ais523: that line was for telling him that it is not socially acceptable to annoy people, and also not acceptable to annoy them as part of a scheme in which you use this in a premeditated show of some sort that is supposed to show those people in a bad light.
18:26:54 <cheater> ais523: apparently he is unaware of those facts, at least according to what i see, OR is aware of them but thinks no one will say a thing and he will get away with it
18:26:56 <ais523> cheater: I just don't see how you can get annoyed by elliott while he's not posting
18:27:10 <cheater> ais523: i got annoyed by him while he was posting
18:27:38 <Phantom_Hoover> cheater, stop stirring shit, it'll explode or something.
18:27:41 <cheater> now i am not *being* annoyed, i just *am* annoyed, but that line was not out of annoyance itself, it was to prevent his silly scheme from succeeding.
18:28:03 <ais523> cheater: do you really think that elliott spends all his time on convoluted schemes to annoy you?
18:28:04 -!- kwertii has quit (Ping timeout: 252 seconds).
18:28:10 <ais523> would there be any point in doing so, among other things?
18:28:12 <cheater> if you look at what i just described, his scheme at least partly depends on no one saying anything in view of his obvious attempts at denigration
18:28:18 <cheater> ais523: yes, i do.
18:28:36 <cheater> ais523: if i didn't, i wouldn't be saying this.
18:28:49 -!- kwertii has joined.
18:29:01 <cheater> ais523: when this whole thing started i wouldn't have ever had a thought like this, but this is now obvious
18:29:09 <cheater> anyways this is not a convoluted scheme
18:29:12 <ais523> cheater: isn't the way you're trying to defend just likely to rile him into annoying you back?
18:29:16 <ais523> it's a mutual recrimination cycle
18:29:17 <cheater> kids in kindergarten know how to do this
18:29:21 <cheater> annoy someone and go tell
18:29:35 <cheater> the *explanation* is convoluted, but not the modus operandi.
18:29:46 <cheater> ais523: no, i am not trying to get him to annoy me again
18:30:04 <ais523> what /are/ you doing, then?
18:30:17 <cheater> ais523: i am trying to show him that his schemes are childish and make no sense, because i'm not stupid enough to be unable to notice what he's doing and call him out on that
18:30:49 <cheater> which in turn means that i can, at least to some extent, defend myself from his attempted manipulations of people here
18:31:09 <ais523> cheater: well, if you /didn't/ call him out, there wouldn't be a problem in the first place, right?
18:31:13 <cheater> it's not the first time he's trying this, not the second, and not the tenth
18:31:16 <ais523> your "defence" is the actual argument
18:31:35 <cheater> ais523: no, it is not.
18:32:01 <cheater> ais523: the argument started with elliott making annoying comments on quotes of things i have said hours ago
18:32:27 <cheater> ais523: it was the start of this behavioral scheme which continued when he said in the channel that he is "taking this private"
18:32:41 <cheater> obviously i have thought he'd try to be constructive and msg me
18:32:50 <monqy> cheater: what manipulations? Honestly, nobody's manipulating me. I have my own opinions. Okay?
18:33:01 <cheater> monqy: weren't you going to ignore me?
18:33:11 <monqy> I did, but then this looked interesting so I unignored you
18:33:18 <cheater> so ignore me again
18:33:21 <monqy> no
18:33:30 <cheater> either way i'm talking with ais, not with you.
18:33:43 <ais523> cheater: err, it's an IRC channel?
18:33:57 <monqy> cheater: so are you going to disregard what I said and only believe your own theories about all of us?
18:34:03 <cheater> ais523: and if i am in a physical room i can too talk to just select people.
18:34:20 <cheater> ais523: or if you are in a dining room with 1000 students are you having a conversation with everyone?
18:34:23 <ais523> cheater: that's what /query is for, right?
18:34:35 <ais523> I don't think I've ever been in a dining room with 1000 students before, so I wouldn't know
18:34:35 <cheater> that's one way to do it
18:35:09 <cheater> consider any other large number
18:35:17 <ais523> but normally, when I'm in a room with, say, ten people
18:35:28 <ais523> there are mini-conversations, but they're fluid
18:35:30 <ais523> people will hear an interesting bit of a conversation they aren't in, and join in
18:35:43 <ais523> IRC works a lot like that except that people tend to be in lots of conversations simultaneously, including in the same channel
18:36:06 <cheater> ais523: anyways, after he didn't msg me, i realized he's "taking it private" by going to complain to someone, like a brat who feels he'll get me into trouble. which he's done before, oerjan told me elliott keeps on complaining about me to him in private, and he was very surprised when i told him (oerjan) that elliott never came to *me* with any issues, that he just keeps insulting me in public instead.
18:36:30 <cheater> this is a classical social strategy and, again, is mostly used by kids.
18:36:33 <Ngevd> I like Haskell's zipWith
18:36:35 <cheater> at some point they grow up.
18:36:53 -!- FireFly has quit (Excess Flood).
18:38:01 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
18:38:14 <cheater> ais523: what's surprising is: why didn't you ask elliott what his original annoying comment was for? you asked me what i made my comment for, why didn't you apply the same behaviour to elliott? is he exempt of responsibility?
18:38:44 <ais523> cheater: I did, he was annoyed at things you'd said in the logs
18:38:55 <ais523> and so the argument continues indefinitely
18:39:11 <cheater> so what?
18:39:20 <cheater> i am annoyed at things he said earlier too
18:39:26 <cheater> but if he's talking i don't call him out
18:39:34 <ais523> so if you keep being annoyed at things the other said earlier indefinitely
18:39:34 -!- FireFly has joined.
18:39:37 <cheater> the only times i talk to him at all are if he starts talking to me
18:39:38 <ais523> then the argument's never going to finish
18:39:40 <cheater> no no
18:39:42 <cheater> look
18:39:48 <cheater> it's obvious
18:39:50 <cheater> he initiated this
18:40:01 <cheater> i hadn't spoken to him for about 24 hours at that time
18:40:07 <cheater> maybe more, maybe less
18:40:07 <Ngevd> Tell me when you've shut up about this. I'll be in #esoteric-minecraft, likely
18:40:10 -!- Ngevd has left ("Leaving").
18:40:11 <ais523> he reads logs
18:40:11 <cheater> but a substantial time
18:40:23 <ais523> so he's going to reply when he reads the comment, not when it happens
18:40:27 <cheater> so what? the thing i said wasn't directed at him or about him
18:40:38 <cheater> when he doesn't talk about me i let him alone too
18:41:20 <cheater> it doesn't change anything when he reads it, it wasn't directed at him or about him, there's nothing related to him in it, if he comments on it then he is initiating contact between me and him again
18:41:23 -!- elliott has left ("I'm with Ngevd").
18:41:25 <cheater> which is unwanted
18:41:35 <cheater> especially when he makes it as unpleasant as he did
18:41:52 <cheater> but even if it's "pleasant" it's still unwanted because i just don't want to talk to him
18:42:16 <cheater> simply because i see him as an unfriendly person
18:42:39 <ais523> aha, I think that's the point of friction; you want to be in the same channels as elliott, so as to talk about the same subjects, /but/ don't want him to be involved in conversations you're involved in
18:42:56 <cheater> no, that is not the point of friction
18:43:11 <cheater> the point of friction here is that he took something i said, and made a stupid, childish remark
18:43:14 -!- pikhq has joined.
18:43:18 <cheater> and that he keeps on doing that
18:43:21 <cheater> this is the point of friction
18:43:33 <ais523> cheater: I'm trying to talk about the whole situation between you and elliott that has been running for weeks, if not months
18:43:40 <cheater> no
18:43:41 <cheater> years
18:43:43 <ais523> not whatever the latest thing that resparked off the argument is
18:43:51 <cheater> not weeks, not months, years
18:43:51 <ais523> you haven't been around for that many years
18:44:13 <cheater> check logs
18:44:15 <cheater> anyways
18:44:23 -!- pikhq_ has quit (Ping timeout: 256 seconds).
18:44:26 <cheater> the latest thing that resparked the argument was that elliott took a quote of me and made a stupid, deprecating comment
18:44:37 <cheater> the thing BEFORE THAT, which was yesterday, was him doing exactly the same thing
18:44:41 <cheater> etc etc
18:44:41 -!- sllide has quit (Quit: Leaving).
18:44:49 <cheater> i seriously don't talk to him or about him at all
18:44:57 <ais523> yes you do, you are right now
18:45:06 <cheater> yes, i was just going to add that:
18:45:10 <cheater> UNLESS he initiates it
18:45:13 <cheater> which he has just now
18:45:25 <cheater> it's really simple
18:45:30 <cheater> i'm passive in this
18:45:32 <ais523> well, each time he does it's a response to you coming up with an argument like this
18:45:35 <cheater> i don't initiate anything
18:45:41 <ais523> and each time you do, it's a response to him getting annoyed at your arguments
18:45:44 <cheater> no, this is a fallacy
18:45:45 <ais523> do you see the problem here?
18:45:46 <cheater> look at what he did
18:45:48 -!- sllide has joined.
18:45:50 <cheater> you are lying
18:45:59 <cheater> <elliott> 08:09:53: <cheater> monqy: please ignore me if it'll spare me stupid comments like yours just now about ignoring me to facilitate someone's hatred
18:46:05 <ais523> he hasn't spoken in here for over half an hour
18:46:08 <cheater> HOW is that a response to something i said to him or about him??
18:46:16 -!- sllide has quit (Read error: Connection reset by peer).
18:46:20 <cheater> tell me
18:46:33 <ais523> cheater: he interpreted it as being about him because there was no other reference
18:46:35 <ais523> who was it about?
18:46:40 -!- sllide has joined.
18:47:06 <cheater> it was about monqy and vorpal. it was 100% clear from context.
18:47:21 <cheater> read the log where i was talking with monqy at that point and you'll see for yourself.
18:47:25 <cheater> nothing to do with elliott.
18:47:27 <monqy> he may have interpreted it as being about him because of the "facilitating someone else's hatred" bit. was I actually facilitating Vorpal's hatred?
18:48:01 <cheater> obviously, because vorpal said he had me on ignore (whether he actually does or not, he's probably just showing off) and told you to ignore me too.
18:48:22 <cheater> and you said you just might.
18:48:33 <monqy> he never told me to ignore you
18:48:34 <cheater> so i said that if you want to facilitate vorpal you can feel free.
18:48:54 <ais523> cheater: hmm... what might help, is when you make comments, don't give elliott a chance to misinterpret them as being about him
18:48:59 <cheater> he has implied it to which you have reacted with an "i might"
18:49:02 <monqy> 08:05:38: <Vorpal> oh cheater talking? I have him on ignore. And yes miranda is a language
18:49:05 <monqy> 08:06:09: <monqy> perhaps I should too
18:49:08 <monqy> 08:06:38: <monqy> I don't like ignoring people because it weirds conversation, but rarely I do it anyway
18:49:11 <monqy> 08:07:02: <Vorpal> yeah it weirds conversations definitely
18:49:13 <monqy> that is what happened
18:49:19 <monqy> he said nothing about "you should do this too"
18:49:32 <cheater> monqy: it was implied.
18:49:39 <monqy> you are jumping to conclusions
18:49:41 <cheater> obviously people want to do what others in the group do
18:49:45 -!- Phantom_Hoover has joined.
18:49:47 <cheater> they.. monkey themselves
18:49:51 <cheater> for lack of better terms
18:49:51 <monqy> ohoho
18:49:59 <Phantom_Hoover> Damn powercuts.
18:50:01 <cheater> and you said that you might too
18:50:04 -!- pumpkin has joined.
18:50:05 <cheater> so, here's that.
18:50:13 <Vorpal> Phantom_Hoover: oops no ups?
18:50:13 <cheater> ais523: the rule is: i never talk about elliott unless i am explicit about it.
18:50:15 <monqy> actually, as I indicated later, it is because I did not want to listen to you. that is the reason for ignoring, no?
18:50:34 <Phantom_Hoover> Vorpal, not much good if the router and modem are connected to the mains.
18:50:35 <ais523> cheater: hmm, shall we put that in the topic so that there can be no misunderstanding?
18:50:42 <Phantom_Hoover> Also FFS you know I have a laptop.
18:50:50 <cheater> ais523: if he thinks i might be talking about him, but i hadn't mentioned his name as identifying him as the object of the conversation, then he is not.
18:50:57 <cheater> ais523: no, better put it in his head
18:51:14 <cheater> because the topic isn't a place for fixing elliott's unwanted behaviour
18:51:29 -!- monqy has left ("sick of this").
18:51:34 <cheater> "ais523: if he thinks i might be talking about him, but i hadn't mentioned his name as identifying him as the object of the conversation, then he is *wrong*."
18:51:39 <Phantom_Hoover> monqyyyyyyyyyyyyyyyyy
18:51:40 <cheater> there, corrected.
18:52:11 <ais523> well, it's more important that the rest of the channel thinks that, so he can't decide you're trying to incite him or something
18:52:17 <cheater> ais523: so to reiterate: i never, ever, initiate contact to elliott in here, and almost never anywhere else.
18:52:37 <Vorpal> Phantom_Hoover: ups on them too?
18:52:45 <cheater> ais523: is what i just said something that you can agree on?
18:52:52 <Vorpal> or on them only since you have a laptop
18:52:53 -!- Phantom_Hoover has left.
18:53:36 -!- copumpkin has quit (Ping timeout: 245 seconds).
18:55:32 <ais523> cheater: do you agree to not make any comments that could even be misinterpreted as being about elliott? otherwise, you might get people annoyed at him even if you don't mean to
18:55:47 <cheater> ais523: i cannot control elliott's interpretations
18:55:56 <cheater> and i refuse to be terrorized by what elliott might think
18:56:02 <ais523> I didn't say elliott's interpretations, I'm talking about other members of the channel
18:56:12 <cheater> the same goes for other people
18:56:30 <cheater> i cannot control X's interpretations
18:56:37 <ais523> yes you can
18:56:41 <cheater> and i refuse to be terrorized by what X might think
18:56:43 <ais523> it's quite easy to say something in a way that can't be misinterpreted
18:56:53 <cheater> that's like asking me to walk backwards on fridays
18:57:01 <ais523> elliott is worried that you'll be making statements that aren't about him in such a way as to manipulate people into thinking they're about him
18:57:19 <cheater> ok let me make it 100% clear
18:57:24 <cheater> i don't care at all about elliott
18:57:28 <pikhq> Whoooo. kernel.org's up.
18:57:52 <ais523> cheater: then just stop responding to him, altogether
18:58:12 <ais523> if you don't even try to defend yourself, then the channel will be able to make up its own minds
18:58:14 <cheater> ais523: no because then he gets to play his games and get me into trouble
18:58:20 <MDude> You are always the first person to respond to his complaints about you.
18:58:37 <ais523> cheater: he can't get you into trouble if you don't respond, right?
18:58:39 <cheater> ais523: people will make their minds up on what someone shouts in their ear
18:58:42 <cheater> ais523: that is wrong
18:58:46 <cheater> i have tried that already
18:58:52 <cheater> i put him on ignore for several months
18:58:55 <ais523> and /did/ you get into trouble?
18:58:57 <cheater> after that time everyone hated me
18:58:58 <cheater> yes.
18:59:04 <cheater> i got kicked out of here.
18:59:17 <ais523> cheater: well, do you think arguing with everything he says will make people hate you less?
18:59:18 <cheater> ignoring a danger does not make it go away.
18:59:35 <cheater> it gives me a chance to highlight bullshit
18:59:53 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
19:00:08 <cheater> which is often needed because often people don't know what's true or don't care enough to find out the final truth of the matter and instead they just accept what is given to them
19:00:28 -!- pumpkin has changed nick to copumpkin.
19:01:09 <ais523> well, the problem is that you've kept up a stream of comments that could be misinterpreted as being about elliott for months/years now, even if they apparently are
19:01:15 <ais523> and he doesn't like the apparent constant barrage of attacks
19:01:22 <cheater> you mean aren't?
19:02:01 <ais523> err, yes
19:02:03 <cheater> look ais, ANYTHING can be taken out of context and made to look like i'm talking about anyone in particular
19:02:13 <cheater> that's not how language works
19:02:26 <cheater> you can't take single sentences and interpret them without context
19:02:56 <cheater> you will without fail be able to conceive any sort of twisted sick stupidity by doing that
19:03:19 <ais523> cheater: so why doesn't elliott do this with anyone else?
19:03:32 <ais523> it's pretty rare for a troll to be out for one person specifically
19:03:39 <ais523> hmm, we should take this to /query, no reason to clog up #esoteric
19:03:48 <fizzie> As I recall it, at least the "responsibility for your pets" line that actually did get you kicked out was very hard to interpret as being about anything else than elliott, given that it explicitly names him, and is (as far as one can tell from it) about things happening completely elsewhere.
19:04:13 <cheater> no ais, it is not
19:04:27 <cheater> fizzie: that was ages ago.
19:04:43 <cheater> fizzie: and again, this was in response to something he did.
19:05:00 <fizzie> That was what got you kicked out, not ignoring him. As far as I know. I'm certainly no expert on the whole debacle.
19:05:02 -!- Sgeo|web has quit (Ping timeout: 252 seconds).
19:06:00 <fizzie> (And I don't want to be, so feel free to continue in query with ais523 if it seems more profitable than on-channel discussion.)
19:09:45 <ais523> OK, can I go invite everyone back now? and can we actually discuss esolangs then?
19:10:55 <fizzie> Regarding the first point, if you are feeling brave, certainly; regarding the second, it might be too much to hope for?
19:11:17 -!- elliott has joined.
19:11:40 <ais523> fizzie: aww, but I like esolangs
19:11:49 -!- Ngevd has joined.
19:11:59 <elliott> Esolangs are shit, man.
19:12:05 <ais523> :(
19:12:07 <fizzie> ais523: You could try throwing out some topics, maybe one of them will (metaphorically) catch fire.
19:12:18 <ais523> fizzie: heh, you just reminded me of Burn
19:12:23 <ais523> I'm sure it can't be /that/ hard to figure out
19:12:36 <Ngevd> I'm publishing a spec for my latest esolang at current
19:12:41 <ais523> (Burn backstory: I wrote an esolang, then forgot how it worked, and all I have is one sample program to try to reconstruct it from)
19:12:46 -!- monqy has joined.
19:13:31 <fizzie> I'm not even sure what the "BG" means in the comment? Background? Blue/green?
19:14:01 <elliott> Burn grade.
19:14:17 <elliott> Baguette gastronomy.
19:14:52 <cheater> fizzie: sorry, i was refering to another time. but that doesn't matter, anyways. there's little reason to talk about this.
19:15:41 <fizzie> ais523: Have you considered some sort of repressed-memory hypnotherapy sort of thing?
19:15:49 <ais523> fizzie: no, I hadn't
19:16:06 <fizzie> I've seen it in webcomics, it worked quite well there.
19:21:51 <ais523> Ngevd: what interesting feature does it have?
19:22:03 <ais523> or is there more than one? (people typically don't waste interesting esolang properties by doubling up on them)
19:22:20 <elliott> Heh, Leonard Nimoy is "retiring".
19:22:42 <elliott> ais523: if it's Brook, then the idea is that the program outputs its own interpreter, which is used to run itself, lazily
19:22:46 <Ngevd> A program can create a stream of characters which is interpreted as per the program's spec
19:22:52 <elliott> presumably with some prefix of an interpreter to start it off
19:23:04 <ais523> heh, a sort of backwards Muriel?
19:23:15 <ais523> tell me it has no other loop construct, and I'll be pleased
19:23:27 <Ngevd> It has a fixed, non conditional loop
19:23:35 <Ngevd> "Pop a number and loop that many times"
19:23:44 <ais523> hmm, I'll give you that
19:23:46 <elliott> that's conditional, sort of
19:23:46 <ais523> I think
19:23:50 -!- tiffany has joined.
19:24:05 <monqy> Ngevd: would you be able to remove it?
19:24:11 <Ngevd> Meaning?
19:24:15 <ais523> it's entropic
19:24:22 <ais523> Ngevd: argument 0 or 1, you have an if
19:24:34 <Ngevd> Hmm, true
19:24:42 <Ngevd> I may make it fixed length at write-time
19:24:44 <fizzie> Speaking of non-textual syntax (yes, yes, I know it wasn't the topic), any existing languages where the "lexical" structure is based on taking an audio file, turning it into a spectro-temporal representation (i.e. spectrogram) with some well-defined parameters, and then having some features in that domain that do things? It sounds like it could work slightly like Fugue/Prelude/Musical-X/(esp.) Velato, except it would give even more freedom to the musician-progr
19:24:44 <fizzie> ammer to make it sound like whatever e wants (assuming "coarse" enough do-a-thing features).
19:24:51 <ais523> so we have, basically, a primitive recursive programming language, that can only become TC by doing a weird interp-loop thing
19:24:55 <ais523> I like the concept
19:25:06 <ais523> fizzie: oh, I'm sure it was the topic /once/
19:25:06 <Ngevd> As in, "17(16^) pushes 16 to the queue 17 times
19:25:50 <ais523> I actually have a different opinion on musical languages; I'd prefer them to sound like interesting and varied music upon compiling arbitrary programs to them
19:26:05 <elliott> fizzie: That sounds almost as useless as SPEECH RECOGNITION.
19:26:09 <ais523> e.g. if you compile Lost Kingdoms to Fugue, it's very repetitive because the huge lists of >>>>>> and <<<<<<< just become scales
19:26:22 <fizzie> ais523: That is obviously a better thing, but it's not quite as trivial.
19:26:23 <Ngevd> I'd hate to see a Screamo
19:26:32 <ais523> it sounds quite nice in the context of hworld.mid, but not in something that does a lot of lefting and righting
19:26:47 <ais523> (I haven't /actually/ compiled Lost Kingdoms to Fugue, but that's what it'd sound like if I did)
19:26:48 <elliott> http://googleblog.blogspot.com/2006/10/do-you-google.html this is still the best blog post ever
19:27:20 <ais523> elliott: I was disappointed when the ksplice security advisory for Bowser's Castle disappeared when Oracle bought them
19:27:26 <cheater> ais523: instead of a simple mapping of "up one note" and "down one note" you need to use phrases, and follow up through them.
19:27:31 <cheater> you need to sequence these phrases.
19:27:35 <elliott> ais523: oh dear, Oracle bought them?
19:27:40 <ais523> elliott: indeed
19:27:42 <elliott> shame
19:27:51 <ais523> that was one of my favourite blog posts ever
19:27:55 <cheater> it's something that was mostly figured out in the 80s in so called "arranger keyboards"
19:28:12 <elliott> ais523: did you know that esolangs.org/w redirects to the wiki?
19:28:15 <elliott> I've saved, like, whole seconds of typing time
19:28:39 <ais523> no, although it doesn't surprise me
19:28:47 <ais523> why don't you just use the Esolang search box in the corner of your browser?
19:29:07 <elliott> :P
19:29:15 <ais523> (sorry, that's a vague attempt at tab=8-style trolling)
19:29:29 <elliott> that was a new one, though, so I don't mind
19:29:33 <ais523> I appreciate that even though I'm correct, trying to prove it to everyone else is a waste of time
19:29:40 <fizzie> Or the "eso" keyword-bookmarklet, or the Esolang search widget in your panel, or the Esolang wiki screensaver (just wait for the article of interest), or ...
19:29:53 <elliott> I should make @ render \t as 9 spaces in absolutely all situations.
19:30:06 <ais523> hey, does anyone know an appropriate channel/webforum/newsgroup for having flamewars about indentation styles?
19:30:06 <elliott> To change that involves delving deep into driver code and messing with bitshifts.
19:30:14 <elliott> ais523: /dev/null
19:30:21 <ais523> as in, people go there fore the purpose of flamewarring with each other?
19:30:31 <ais523> the web really needs a decent index
19:30:44 <ais523> Yahoo used to be that before search engines took off, it was part of the reason it got popular
19:30:59 <elliott> dmoz? :-P
19:31:10 <elliott> Still Waiting for DMOZ? - Try BOTW Business Directory
19:31:10 <elliott> www.botw.org/submit
19:31:10 <elliott> Guaranteed Submission Reviews
19:31:12 <elliott> good ad
19:31:27 <elliott> wtf, dmoz is alexa rank 592
19:31:28 -!- Phantom_Hoover has joined.
19:31:54 <elliott> "After a Slashdot article suggested that Gnuhoo had nothing in common with the spirit of free software,[2] for which the GNU project was known, Richard Stallman and the Free Software Foundation objected to the use of Gnu. So Gnuhoo was changed to NewHoo. Yahoo! then objected to the use of "Hoo" in the name, prompting them to switch the name again."
19:32:01 <elliott> We like your name, apart from the gnu part and the hoo part.
19:32:57 <ais523> elliott: I did think of dmoz
19:32:58 <elliott> ais523: wow, Google Directory is down
19:33:01 <elliott> Google Directory is no longer available.
19:33:01 <elliott> We believe that Web Search is the fastest way to find the information you need on the web.
19:33:01 <elliott> If you prefer to browse a directory of the web, visit the Open Directory Project at dmoz.org
19:33:27 <elliott> here you go, google thinks this is the place to flamewar indentation: http://www.ruby-forum.com/topic/114942
19:33:57 <ais523> yeah, dmoz isn't really clear enough
19:34:00 <ais523> also, Ruby?
19:34:10 <ais523> that actually makes some sort of sense
19:34:11 <elliott> Hey, Web Search is the fastest way to find the information you need on the web.
19:34:13 <elliott> Don't question it.
19:34:25 <elliott> "flame war forum12 up, 3 down
19:34:25 <elliott> A site on the internet where flaming is encouraged for the purpose of entertainment.
19:34:25 <elliott> www.flamewarforum.com
19:34:25 <elliott> Contains information regarding what a flame war is, how to flame, how best to respond to flaming and a guide to forum speak."
19:34:28 <elliott> ais523: Urban Dictionary saves the day again
19:34:36 <elliott> if only it wasn't squatted
19:34:55 <fizzie> I was trying to find an alt.comp.* group for it, but no much luck.
19:35:09 <elliott> alt.comp.eight-space-tabs.die.die.die
19:35:11 <kwertii> people still use newsgroups?
19:35:19 <ais523> I do
19:35:22 <elliott> (Did I get the reference right?)
19:35:33 <ais523> elliott: yes
19:35:39 <Ngevd> I'm debating whether including a global register in Brook that different continuities (As I call them) can all access
19:35:39 <fizzie> Usenet will never die.die.die.
19:35:47 <ais523> I was in a discussion about facts (thus not flamewar) recently, and was planning to turn to Usenet for help
19:35:55 <ais523> but it turned out it had been discussed already
19:35:55 <elliott> Ngevd: that sounds lame, make it harder
19:36:02 <Ngevd> DEAL
19:36:14 <ais523> (the issue in question: is "int main(){return 0;}", technically speaking, strictly conforming C?)
19:36:34 <ais523> (the only bit people think is potentially problematic is main() rather than main(void))
19:36:40 <elliott> ais523: which standard?
19:36:45 <elliott> it's valid C99 and C[eight]9
19:36:49 <elliott> erm
19:36:49 <elliott> well
19:36:50 <elliott> it's valid C99
19:36:55 <ais523> C89 and C99
19:36:55 <elliott> it might not be valid C[eight]9
19:36:56 <elliott> no wait
19:36:59 <elliott> ais523: yes, it's valid
19:37:02 <ais523> see, it's a nontrivial question
19:37:04 <elliott> ais523: () means (void) in definitions
19:37:08 <elliott> in C99, it means (void) in declarations too
19:37:14 <elliott> but in C[eight]9, it means unspecified prototype
19:37:19 <elliott> so yes, it's definitely conforming
19:37:23 <ais523> no, in C99 it doesn't mean (void) in declarations too
19:37:26 <ais523> you're thinking of implicit int
19:37:29 <elliott> err, right
19:37:35 <elliott> but yes, in definitions is always means (void)
19:37:38 -!- boily has quit (Ping timeout: 258 seconds).
19:37:56 <ais523> so anyway, the conclusion was that /if/ it's legal, it means the same thing as the version with void specified, because of the whole declaration-equivalence thing
19:38:06 <ais523> however, apparently there's an accidental miswording in the definition of main
19:38:12 <ais523> which suggests that maybe it isn't after all
19:38:21 <elliott> hmm
19:38:23 <elliott> what miswording?
19:38:31 -!- oerjan has joined.
19:38:45 <ais523> basically, it implies that the prototype of main has to specify the types void, or int+char**, or equivalent
19:38:49 <ais523> and doesn't define "equivalent"
19:38:50 <fizzie> ais523: C99 "It shall be defined with a return type of int and with no parameters: int main(void) { /* ... */ } or ..."
19:39:09 <ais523> fizzie: yep, something like that
19:40:06 <fizzie> The "or equivalent" (based on the placement of semicolons) only applies for the two-argument form, where a footnote says "int can be replaced by a typedef name defined as int, or the type of argv can be written as char ** argv, and so on".
19:40:32 -!- FireFly has quit (Changing host).
19:40:32 -!- FireFly has joined.
19:41:17 <fizzie> N1570 (latest C1x) hasn't changed any of that wording, apparently.
19:41:34 <Ngevd> Now for the most important stage in any esolang creation
19:41:34 <Ngevd> Making sure the name isn't taken already
19:41:39 <ais523> 1570 is latest? good to know the number
19:41:51 <fizzie> I think it is; it's from April.
19:41:56 <ais523> what's likely to change for C1x? I thought C99 did most of the changes people wanted and hadn't really caught on anyway
19:41:59 <fizzie> The latest that I knew of.
19:42:12 <ais523> Ngevd: bleh, just call it Clue
19:42:12 <elliott> C99 caught on pretty well for the successor to C[eight]9
19:42:26 <fizzie> C1x makes some amount of (possibly the least adopted) mandatory C99 features optional.
19:42:30 <ais523> well, I suspect C89 is still used more
19:43:06 <pikhq> Shame, too; C99 adds many conveniences.
19:43:27 <fizzie> And then of course it adds its own features that are already subject of debate; like threading, type-generic expressions and the removal of gets.
19:43:36 <ais523> removal of gets? wow
19:43:51 <ais523> I think I proved it was theoretically possible to use safely, but such uses weren't actually useful
19:43:59 <elliott> ais523: how?
19:44:09 <cheater> fizzie: how do you add removal of gets?
19:44:09 <ais523> elliott: reading back from a temporary file you wrote yourself
19:44:16 <elliott> ais523: someone else could have changed it
19:44:28 <ais523> that'd violate the definitions in the standard, IIRC
19:44:29 <pikhq> Or having stdin rebound to be a pipe from yourself.
19:44:38 <elliott> ais523: oh, you mean of temporary files?
19:44:41 <ais523> pikhq: can't be done in standard C
19:44:47 <ais523> elliott: I think so, not sure, it was a while ago
19:44:48 <pikhq> ais523: No, but it can be done in POSIX.
19:44:55 <ais523> yep, and that's a good way to safe-gets in POSIX
19:44:56 <elliott> ais523: reading a temporary file you wrote yourself is perfectly useful; it lets you prove a hosted C system TC
19:45:05 <ais523> ah right
19:45:07 <ais523> but why use gets?
19:45:12 <fizzie> cheater: At that point of the sentence when gets came up, I didn't quite feel up to rearranging it.
19:45:13 <ais523> it's a bit of a wonky API for that
19:45:15 <pikhq> Legacy only.
19:45:22 <elliott> ais523: well, you said you could use gets safely but it wasn't useful
19:45:28 <ais523> yep, that's what I meant
19:45:30 <elliott> ais523: if your language is somehow naturally line-based memory-wise, why not?
19:45:32 <ais523> in that the API wasn't good for typical use
19:45:46 <ais523> well, you know the length, so just use fread/fwrite
19:45:52 <elliott> you can always just write your own gets a
19:45:54 <elliott> , anyway
19:45:55 * oerjan swats monqy -----###
19:46:07 <elliott> ais523: more code
19:46:10 <elliott> why bother? gets is safe
19:46:22 <cheater> fizzie: oh, i thought you meant "the ability to remove gets"
19:46:30 <Ngevd> Spec online
19:46:37 <cheater> like, there are gets, and then you call a magical function, and then the gets are not there.
19:46:44 <ais523> elliott: similar amount of code, as you don't have to write the \n terminator by hand
19:46:49 <cheater> (what are gets? getters on structs?)
19:46:59 <elliott> ais523: umm, eh?
19:47:06 <fizzie> ais523: They do add a "gets_s" function, which is like fgets() in that it accepts a maximum size for the destination, but like gets() in that it always reads a full line of input, maintaining a one-to-one mapping to input lines and gets_s calls.
19:47:11 <elliott> ais523: oh, you can't use gets to read a file you wrote yourself
19:47:14 <elliott> gets works on stdin
19:47:29 <oerjan> <ais523> Ngevd: bleh, just call it Clue <-- * oerjan swats ais523 for not remembering oklopol [?] has an esolang named that -----###
19:47:33 <ais523> elliott: you redirect stdin; freopen is standard
19:47:37 <elliott> ais523: oh, it is?
19:47:46 <pikhq> Hmm, sure enough.
19:47:47 <elliott> oerjan: whoosh
19:47:47 <ais523> oerjan: you missed the point, there are /two/ esolangs called Clue already
19:47:48 <Ngevd> oerjan, that's the joke
19:47:48 <elliott> oerjan: whoooosh
19:47:50 <elliott> oerjan: WHOOOOOOOOOSH
19:47:52 <elliott> [gale force wind]
19:48:00 <pikhq> You can attach any damned file to stdin.
19:48:14 <ais523> elliott: dup2 is POSIX, freopen is C89
19:48:21 <ais523> either would work for that situation
19:48:38 <elliott> I wonder if you can write tie in pure C89?
19:48:44 <Ngevd> My long-term project Uniquode includes embedded Clue (Keymaker) programs functioning as gotos
19:48:49 <elliott> you just need to loop stdin<->stdout and then call system()
19:49:00 <elliott> so with freopen and a temporary file, perhaps?
19:49:10 <elliott> Ngevd: brook is the best name for it imo
19:49:20 <ais523> elliott: nah, you'd need a pipe, and there's no way to write one in C89
19:49:28 <ais523> you could do it if you also had fork, and simulated a pie by hand
19:49:32 <ais523> *pipe
19:49:37 <ais523> but you don't have fork in C89
19:49:42 <elliott> ais523: hmm, can't you rewind the fd after writing to it?
19:49:47 <elliott> I guess you can't control writes though
19:49:52 <Ngevd> Hehe Brook already is a programming language that isn't esoteric
19:50:00 <elliott> you need, like, a don't-forward-read-pointer-on-write fd
19:50:02 <elliott> Ngevd: doesn't matter
19:50:06 <ais523> Ngevd: esolangs have nameclashed with reallangs before
19:50:07 <Ngevd> A C based language for GPU things
19:50:10 <elliott> Ngevd: we have one called cobol too
19:50:15 <cheater> fizzie: OH, you mean the gets() function, sorry
19:50:21 <cheater> < confused!
19:50:49 * oerjan blows away
19:51:28 <ais523> Ngevd: have you ever seen SystemC?
19:51:46 <ais523> it's possibly the scariest non-eso lang I've ever seen
19:51:50 <ais523> actually, beats all the esolangs too
19:51:51 <cheater> SystemC sounds familiar
19:51:53 <elliott> ais523: please, this is polite company
19:51:57 <cheater> what is it?
19:52:05 <cheater> and why is it scary?
19:52:06 <Phantom_Hoover> SystemC is that LLVM thing, no?
19:52:07 <ais523> its design principle can be summarised as "recreate VHDL with C++ templates"
19:52:16 <cheater> ohhh right
19:52:20 <cheater> i remember
19:52:31 <fizzie> ais523: Incidentally, C1x also adds an exclusive create-and-open mode, so if you open the temporary file as "w+x", you can possibly be more assured it won't change before the gets() call (that has sadly been removed...); it creates the file "with exclusive (also known as non-shared) access to the extent that the underlying system supports exclusive access".
19:52:31 <cheater> it's this kinda XML looking thing right?
19:52:38 <elliott> ais523: I replied to an /r/programming thread you were in :P
19:52:40 <elliott> SORRY MAN
19:53:04 <elliott> (was reminded of it by the VHDL comment)
19:53:06 <ais523> elliott: why is that a sorry? also, which one?
19:53:15 <elliott> http://www.reddit.com/r/programming/comments/kz98v/your_favorite_language_probably_sucks_at/c2onwrv?context=3
19:53:22 <oerjan> to simulate a pie by hand, you must first simulate the universe
19:53:23 <elliott> that's my answer to both questions :P
19:53:46 <cheater> oerjan: haha
19:54:00 <cheater> oerjan: that's funny, did you just come up with that?
19:54:12 <elliott> carl "oerjan" sagan
19:54:40 <ais523> elliott: the funny thing is, that that answer is completely accurate and yet /looks/ like trolling
19:54:46 <elliott> ?
19:54:58 <ais523> elliott: to the question to me on Reddit, IMean
19:54:59 <ais523> *I mean
19:55:16 <elliott> hmm, I see what you mean :P
19:55:33 <elliott> to be fair, my favourite toaster automaton language is Tcl
19:55:55 <elliott> fizzie: also, don't tell him, but I've accidentally adopted the ineiros tab method
19:56:47 -!- boily has joined.
19:57:12 <oerjan> ais523: is that to trolling like an anti-joke is to a joke?
19:57:46 <ais523> oerjan: I don't know
19:58:02 <oerjan> ais523: i should apologize for pointing elliott to that thread, then :P
19:58:26 <fizzie> elliott: Also called "the crazy method".
19:59:02 <elliott> fizzie: Does he take it to the point of intentionally kill -9'ing his browser to spring clean?
19:59:53 <fizzie> elliott: I actually think he cleaned the nesting out one of these days. But I wouldn't put it past him to be at six or so already again.
19:59:59 <elliott> Oh no.
19:59:59 <oerjan> what is ineiros's tab method again
19:59:59 -!- sadhu has joined.
20:00:08 <elliott> Unfortunately with Chrome closing tabs pushes the tabsets away. :p
20:00:20 <elliott> oerjan: Using the "oops, the browser crashed, here's the tabs you had" screen to store tabsets.
20:00:24 <elliott> oerjan: /Nested./
20:00:54 <sadhu> I have started working on the asm-to-bf project
20:00:57 <fizzie> oerjan: Firefox has the "restore tabs" screen; if you ignore it and start piling on new tabs, when it crashes the next time, the "restore tabs" screen has a "restore tabs" screen inside it. And so on. (Do I misremember, or did it actually show it as a tree?)
20:01:24 <sadhu> first i am working on a good bf interpreter now...which dynamically allocates cell
20:01:31 <sadhu> inspired by beef!
20:01:41 <elliott> I think egobfi does that already
20:01:47 <elliott> you might want to look at the esotope BF compiler
20:01:56 <oerjan> elliott: Nested? otherwise i use that when i restart IE (which may be more due to the fact IE has a memory leak bug or something that _requires_ that i restart it before it makes my whole laptop flaky^Hier than usual)
20:02:06 <elliott> it goes the wrong way (BF to C) but conveys are pretty deep understanding of BF's semantics :P
20:02:22 <elliott> oerjan: nested, as in "crashed, here's tabs" pages offering a "crashed, here's tabs" page as one of the ones to reopen
20:02:26 <elliott> which then contains a tabset itself.
20:02:42 <oerjan> elliott: ouch.
20:04:18 -!- kwertii has quit (Quit: kwertii).
20:06:25 <oerjan> alas, IE doesn't afaik offer recursion on that, which has occasionally bitten me when the restart is due to some program wanting an update and a complete reboot before opening its _own_ browser page which i then close before thinking.
20:07:08 <elliott> I'm surprised Firefox does.
20:09:50 <sadhu> elliott:esotope is a great idea but my project will convert assembly like opcodes to brainfuck
20:11:40 -!- ralc has joined.
20:11:43 <elliott> Just offering reading material
20:12:14 <sadhu> elliott:thanks for that...esotope is really state of the art!
20:12:30 <sadhu> i mean the optimization....its awesome!
20:13:04 <fizzie> elliott: Incidentally, the nestedness feature will involve escaping (and double-escaping, and triple-escaping, and so on) in the JSON that's holding the tab information.
20:13:52 <fizzie> elliott: It looks like: ({"windows":[{"tabs":[{"entries":[{"url":"about:sessionrestore","title":"Restore Session","ID":0,"formdata":{"#sessionData":"({\"windows\" ... :\"({\\\"windows\\\": ... :\\\"({\\\\\\\"windows\\\\\\\" ...
20:14:22 <sadhu> is fizzie a bot?
20:14:36 <oerjan> fizzie: that's ... exponential growth
20:14:53 <oerjan> fungot: is your master a bot?
20:14:56 <fizzie> oerjan: Yes, which makes his nesting depth of 8 or 9 or so rather... interesting. I think it finally failed.
20:15:21 <fizzie> fungot: What, are you mute or something?
20:15:21 <fungot> fizzie: these unique items make us invincible!
20:16:06 <oerjan> i didn't think i'd used it that much... i guess no one else has.
20:16:36 <oerjan> oh wait right
20:16:46 <ais523> '''Brook''' is a language created by [[User:Taneb]] in 2011 with the gimmick that the program can produce and immediately execute an infinite length program written in Brook. It is unknown if it is [[Turing-complete]] or not. ==IF YOU ARE [[User:Ehird]], do not read onwards! That means you, elliott!==
20:17:00 <oerjan> i first used it, then pasted the conversation to elliott, which triggered it again
20:17:02 <ais523> Ngevd: wow, I've never seen something like that in a wiki article
20:17:17 <fizzie> I think one of these days it'd be time to add a new ^style again.
20:17:50 <oerjan> fizzie: are there right-wing american radio host transcripts?
20:17:56 <oerjan> just an idea.
20:18:08 <fizzie> oerjan: Are there conservapedia db-dumps?
20:18:14 <oerjan> hm...
20:18:36 <oerjan> i dunno, but that might be even better...
20:19:01 <fizzie> Though the current Wikipedia style is very bad. I tried to use talk pages to make it more conversational, but it's not really all that, and also the formatting removal was pretty weak sauce.
20:21:42 <oerjan> and besides, i just realized fungot's markovization would only make it more sensible.
20:21:42 <fungot> oerjan: the knight spirit has. you came to see it? that glow...!? is that schala's! i see you're dressing...normally again!
20:25:11 <oerjan> `addquote <fizzie dictionary> An 'ad hobbitem' fallacy is when you try to undermine someone's credibility by referring to how hairy his/her feets are.
20:25:16 <HackEgo> 701) <fizzie dictionary> An 'ad hobbitem' fallacy is when you try to undermine someone's credibility by referring to how hairy his/her feets are.
20:27:29 <oerjan> <fizzie> "Bilbo undecigesimos primos annos, CXI, actus erit, numerum insuetiore et aetatem respectabilem ad Hobbitem --"
20:27:31 <sadhu> HackEgo !
20:27:40 <sadhu> how to use HackEgo
20:27:49 <fizzie> oerjan: I make no claims as to the accuracy of that.
20:27:50 <oerjan> that actually says eleventy-first :P
20:29:00 <fizzie> oerjan: Yeah, well, it came via "rivendellworld.proboards.com" and apparently originally from a Geocities page, so...
20:30:27 <oerjan> looks plausible to this amateur, anyway
20:30:59 <fizzie> I'm sure it's at least equally accurate as the rec.arts.books.tolkien/alt.fan.tolkien "free ebook" of LOTR that they published as a response to all the people coming there and asking for a copy of the ebook.
20:35:42 <elliott> back
20:35:57 <elliott> (temporarily)
20:36:29 <elliott> <sadhu> is fizzie a bot?
20:36:31 <elliott> sadhu: yes :)
20:36:41 <fizzie> I NO BOT I SHOW YOU BOT
20:36:42 <elliott> sahre hackego:
20:36:43 <elliott> `help
20:36:43 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/
20:36:48 <elliott> erm
20:36:49 <elliott> sadhu: re hackego
20:37:46 <Ngevd> I may try to write a Fibonacci numbers thing in Brook
20:38:22 <sadhu> run echo brainfucked!
20:38:28 <sadhu> `run echo brainfucked!
20:38:30 <HackEgo> brainfucked!
20:38:38 <sadhu> `run cat /etc/fstab
20:38:39 <HackEgo> cat: /etc/fstab: No such file or directory
20:38:51 <sadhu> :D
20:39:12 <fizzie> Are we in for another break-out-of-plash session? (Or is that umlbox already?)
20:39:18 <elliott> umlbox, yes.
20:39:38 <fizzie> Umlbox is the box sort of box.
20:39:43 <fizzie> Eh, best sort of box, I tried to say.
20:39:50 <fizzie> But undoubtedly it's the box sort of box too.
20:41:23 <elliott> fizzie: Can you make a "fungot" style with everything fungot has said over its lifetime?
20:41:24 <fungot> elliott: but cyrus! are you leaving! moon stone?! you dare to defile this place is a mini war zone! this must be the invention. hope it still leaves you hungry! here you are the only one thing we need to defeat you, lavos.
20:41:35 <elliott> Including non-babble.
20:42:20 <fizzie> In theory, sure. I should probably automate some steps in the style-making, though, to experiment more easily with it.
20:42:41 <fizzie> Currently I have to copy-paste at least five commands!
20:44:34 -!- DHeadshot has quit (Read error: Connection reset by peer).
20:44:38 -!- DH____ has joined.
20:45:17 <Ngevd> What do people thing of Brook?
20:48:45 -!- GreaseMonkey has joined.
20:56:15 -!- sadhu has quit (Quit: Grrr......... X-D).
20:56:18 <Ngevd> Brook fibonacci numbers program: I2(1^@O)2^-2(94^@c1^@C)C40^c85^c43^c64^c85^c64^c79^c41^c
20:56:22 -!- hagb4rd has joined.
20:56:26 <CakeProphet> elliott: why are you going to replace units?
20:56:26 <oerjan> 13:13:25: <Phantom_Hoover> "[Unlambda] does not have predefined data types, other than the program source"
20:56:30 <oerjan> 13:13:43: <Phantom_Hoover> Hmm, can the .cs be considered a data type?
20:56:53 <oerjan> i'd say the continuations fit better, although there's a way to simulate them in source
20:57:17 <elliott> unlambda continuatinos are just functions
20:57:34 <Phantom_Hoover> But are they faster than light?
20:58:11 <oerjan> i don't _think_ there is any unlambda value which cannot be written equivalently as source
21:00:54 <oerjan> there is the single last character read, btw.
21:02:13 <oerjan> which is quite hard to reify into a function, because of the lack of something to fit in the last spot of . : | :: ? :
21:02:24 <Ngevd> Goodnight!
21:02:27 -!- Ngevd has quit (Quit: Leaving).
21:06:40 -!- pikhq_ has joined.
21:08:54 -!- pikhq has quit (Ping timeout: 240 seconds).
21:10:09 <CakeProphet> elliott: < CakeProphet> elliott: why are you going to replace units?
21:12:27 <elliott> YOU'LL SEE.
21:14:29 <ineiros> elliott: Have you looked at Firefox's session(re)store file when you have some sessions waiting for you?
21:14:41 <elliott> ineiros: That escaped JSON thing? But I use Chrome. :p
21:14:58 <elliott> With Chrome, it GCs my old tabs by pushing them off the "recently closed tabs" list.
21:15:28 <CakeProphet> elliott: is there something better than units?
21:15:44 <elliott> CakeProphet: I already said YOU'LL SEE. :p
21:16:45 <fizzie> ineiros: I pasted that thing you pasted me.
21:17:55 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
21:18:00 <ineiros> elliott: I like Chrome's way of forgetting the tabs. And I dislike its way of forgetting pinned tabs (if I open an additional window).
21:18:32 <elliott> I don't see the point of pinned tabs much.
21:18:33 <ineiros> fizzie: Ah, didn't read the whole context. I'm on my N900 and I'm lazy.
21:19:15 <fizzie> ineiros: It might have happened slightly later, I didn't recall the horror immediately.
21:20:33 <ineiros> elliott: Basically I mark the pages I really want to read at some point with that feature.
21:21:25 <elliott> You could use bookmarks. :p
21:22:40 <CakeProphet> elliott: I don't want to see later I want to see NOW
21:22:48 <elliott> CakeProphet: Too bad.
21:22:50 <elliott> I'm busy.
21:23:03 <ineiros> Bookmarks are things I probably will never return to.
21:26:59 <ineiros> I nowadays recognize the limits of time, and like to keep the tabs annoying me until I read or permanently close them.
21:40:12 -!- nooga has quit (Ping timeout: 252 seconds).
21:40:54 <Phantom_Hoover> I have bookmarks I have not read in a year.
21:42:46 <elliott> oerjan: CSE can introduce space leaks, right?
21:43:16 <elliott> because e.g. "case huge x of OK _ -> { long-running code that calculates huge x in one place in a very rare circumstance and throws it away immediately }; _ -> error ..."
21:43:17 <elliott> -->
21:43:34 <elliott> let x' = huge x in case x' of OK _ -> { ha ha, x' is kept around forever in here }; _ -> error ...
21:45:31 <oerjan> elliott: i thought that was the main reason why ghc doesn't do it aggressively
21:45:37 <elliott> right
21:45:45 -!- hagb4rd has quit (Ping timeout: 248 seconds).
21:46:32 <oerjan> Phantom_Hoover: i have bookmarks i have not read in 9 years. admittedly they're on a cd which may or may not be readable any longer.
21:47:04 <oerjan> and in netscape format
21:47:20 <Phantom_Hoover> Bookmarks that I left to read later.
21:48:00 <oerjan> that's what i did with those, too.
21:48:15 <elliott> oerjan: you used netscape? :DD
21:48:20 <elliott> did you switch to IE because it was the hot new thing
21:48:57 <ais523> hmm, TIL that Mac touchpads completely screw up my muscle memory
21:49:06 <oerjan> i switched to IE because my laptop came with windows preinstalled and i am lazy.
21:49:07 <ais523> I was trying to drag via double-tap rather than via pushing unusually hard
21:49:28 <ais523> likewise, trying to scroll with the edge of the touchpad rather than via using two fingers
21:50:21 <elliott> <ais523> I was trying to drag via double-tap rather than via pushing unusually hard
21:50:23 <elliott> that's not how you drag
21:50:35 <ais523> how do you drag, then?
21:50:38 <elliott> you click with thumb and use ... whatever finger comes after thumb ... to move
21:50:44 <ais523> ah, right
21:50:52 <elliott> annoyingly, the linux drivers for this touchpad breaks that
21:50:58 <ais523> pushing unusually hard also works, and is what the Mac owner showed me
21:51:04 <elliott> so I /do/ have to just push unusually hard in practice
21:51:11 <elliott> relatedly: I don't move windows much
21:51:44 <CakeProphet> elliott: what finger comes after your thumb?
21:51:51 <elliott> dunno :D
21:51:51 <ais523> I can't remember why I was dragging; that might have been it
21:51:53 <ais523> CakeProphet: index
21:52:17 <ais523> elliott: but then, I'm the sort of insane person who's used tap-drag while playing Enigma
21:52:47 <oerjan> now for the big question: what comes after index. i am not sure myself.
21:53:06 <elliott> bird finger
21:53:12 <oerjan> ...makes sense.
21:53:17 <elliott> oh, it's literally middle
21:53:18 <elliott> boooooring
21:53:26 <elliott> they should just call them zero one two three and four
21:53:29 <oerjan> i don't believe you, but it does make sense.
21:53:40 <elliott> let's laugh at all those animals without opposable zeroes
21:54:09 <oerjan> you should never laugh at positivity.
21:55:32 <oerjan> oh now i remember, middle finger was the name of that planet in forever war
21:56:37 <oerjan> iirc it was a snub against the rest of humanity that they wouldn't understand
22:01:08 <elliott> Terrible ideas: gch, a Haskell frontend for gcc.
22:01:08 <fizzie> Thumb, index, middle, ring and the pinky a.k.a. "commie" finger.
22:01:26 <elliott> What is it with the tendency of two messages after a long period of silence to coincide almost exactly, timewise?
22:01:33 <elliott> I realise there's selection bias but it happens in one-to-one conversations all the time.
22:01:57 <elliott> <oerjan> synchronicity
22:03:03 -!- ive has joined.
22:05:28 <elliott> "After all, Ada language is used into mission critial software, and Haskell has been influenced by Ada: This can’t be for accident, after all, don’t you believe?"
22:06:50 <ais523> elliott: who wrote that?
22:07:04 <ais523> it sounds like some sort of crazy opposite to zzo38
22:07:51 <elliott> ais523: http://alfredodinapoli.wordpress.com/2011/10/03/book-review-learn-you-a-haskell-for-great-good/
22:08:14 <oerjan> hm _is_ there any ada influence in haskell, i wonder
22:10:49 <ais523> a book review on learn you a haskell?
22:10:52 <ais523> I'm worried, now
22:10:56 <elliott> why?
22:11:10 <ais523> not the existence of a book review
22:11:13 <ais523> but that sentence in a book review
22:12:17 -!- Phantom_Hoover has quit (Quit: Leaving).
22:14:29 -!- Jafet has joined.
22:25:48 <elliott> Aw, Ngevd isn't here.
22:26:46 <oerjan> he has a disturbingly normal sleeping rhythm, there must be something wrong with him.
22:27:24 <elliott> Clearly.
22:28:31 <fizzie> "There's disturbingly little wrong with him, there must be something wrong with him."
22:28:34 <elliott> oerjan: I think I might kick off qhc by just writing a parser for layout-less Haskell; I can then modify the various "brace" parsers to handle it.
22:29:02 <olsner> only mad people sleep when the sane people are still awake
22:29:39 <fizzie> So you're saying it's safe to go to sleep now?
22:30:33 <elliott> olsner: huh i thought oerjan said that
22:30:38 <elliott> it's the kind of thing he would say :P
22:30:46 <fizzie> So did I, initially.
22:30:59 <fizzie> Perhaps they're the same person.
22:31:09 <Vorpal> <fizzie> So did I, initially. <-- same
22:31:10 * elliott tries to figure out where jhc's FrontEnd.HsSyn comes from
22:31:11 <oerjan> we should check.
22:31:34 <Vorpal> are all haskell implementations written primarily in haskell?
22:31:52 <Vorpal> well, all modern ones
22:32:06 <elliott> hugs is in C
22:32:10 <Vorpal> ah
22:32:17 <Vorpal> elliott: was hugs the first one?
22:32:22 <fizzie> oerjan: Three people have thought it was you; by international maritime law, you are now legally obligated to say it.
22:32:25 <elliott> well Hugs derives from Gofer
22:32:29 <Vorpal> aha
22:32:35 <Vorpal> elliott: which one was the first one then?
22:32:41 <elliott> oerjan probably knows what the first actual implementation of Haskell was, but I think it's hard to say
22:32:47 <Vorpal> oh?
22:32:50 <elliott> Haskell was basically a merging of like two or three other languages at the time
22:32:52 <oerjan> i'd have to look it up
22:32:55 <Vorpal> ah
22:33:02 <elliott> so I imagine most implementations simply evolved
22:33:03 <Vorpal> elliott: which ones?
22:33:04 <olsner> you should all just tune your nick colorization better so that me and oerjan get different colors
22:33:05 <elliott> rather than were written from scratch
22:33:18 <elliott> Vorpal: well Miranda for one
22:33:20 <Vorpal> olsner: I don't use that feature
22:33:23 <Vorpal> elliott: what other ones?
22:33:25 <oerjan> my nick colorization is perfectly tuned, everyone is black on white
22:33:37 <elliott> Following the release of Miranda by Research Software Ltd, in 1985, interest in lazy functional languages grew: by 1987, more than a dozen non-strict, purely functional programming languages existed. Of these, Miranda was the most widely used, but was not in the public domain. At the conference on Functional Programming Languages and Computer Architecture (FPCA '87) in Portland, Oregon, a meeting was held during which participants formed a strong
22:33:37 <elliott> consensus that a committee should be formed to define an open standard for such languages. The committee's purpose was to consolidate the existing functional languages into a common one that would serve as a basis for future research in functional-language design.[10]
22:33:47 <elliott> dunno, oerjan probably knows what the first Haskell impl was anyway :-P
22:34:07 <Vorpal> right
22:34:09 <olsner> I wonder how IRC would be if you just removed everone else's nicks entirely
22:34:19 <Vorpal> elliott: he said he would have to look it up above
22:34:23 <elliott> olsner: better and worse
22:34:25 <olsner> it might be like conversing with the hive mind
22:34:25 <fizzie> olsner: IRCnet ircd has a channel mode for that.
22:34:35 <elliott> olsner: you would be more objective in general, but you would waste time reading troll messages
22:35:03 <elliott> "The language is rooted in the observations of Haskell Curry and his intellectual descendants, that "a proof is a program; the formula it proves is a type for the program"." --Wikipedia, on Haskell, being full of shit
22:35:05 <oerjan> i vaguely recall something about "written in ml"
22:36:00 <fizzie> The +a mode on a !channel will rewrite all PRIVMSGs, joins, parts and whatever to appear to come from "anonymous!anonymous@anonymous". It's also irrevocable.
22:36:02 <oerjan> olsner: 4chan?
22:36:18 <Jafet> "* Exception: stack overflow" --Uncyclopedia, reporting the truth about Haskell
22:36:23 -!- Madoka-Kaname has quit (Read error: Connection reset by peer).
22:36:50 <elliott> stack overflows are like, the least common haskell error :P
22:36:56 <olsner> oerjan: oh, right, already invented... meh
22:37:00 <elliott> fizzie: Irrevocable?
22:37:03 <fizzie> We tried the "count consecutive numbers" thing on a +a channel once to attempt to figure out how many people were present, but it just kept going and going.
22:37:06 <elliott> fizzie: So if I were to take over a channel...
22:37:26 <elliott> I like that it still sends joins and parts, though.
22:37:27 <elliott> Very useful.
22:37:34 <fizzie> I seem to recall you need to have the +O flag only the original channel creator gets.
22:38:22 <elliott> fizzie: Re just kept going and going, I imagine people repeated themselves for "the lulz", as they call it. :p
22:38:34 <olsner> or someone quickly built a counting bot or three
22:39:38 * CakeProphet does use "always on top" quite a bit.
22:39:43 <elliott> oerjan: did haskell 98 actually improve anything?
22:39:50 <CakeProphet> I always hate that Windows doesn't have that.
22:40:14 <oerjan> "GHC was begun in January 1989 at the University of Glasgow, as
22:40:14 <oerjan> soon as the initial language design was fixed. The first version of
22:40:14 <oerjan> GHC was written in LML by Kevin Hammond, and was essentially
22:40:16 <oerjan> a new front end to the Chalmers LML compiler."
22:40:22 <elliott> CakeProphet: um yes it does
22:40:24 <elliott> i think
22:40:33 <elliott> Vorpal: there we go then
22:40:44 <elliott> oerjan: I bet LML = Lazy ML
22:40:49 <oerjan> it may not have been the _only_ one then, though...
22:40:54 <fizzie> 4.2.1 of http://www.faqs.org/rfcs/rfc2811.html -- yes, it needs the channel creator privilege on !foo; not on &foo, but it's un-settable there too.
22:40:56 <elliott> in which case it was probably pretty similar to Haskell, and might have even contributed to the design process
22:41:03 <elliott> oerjan: well that's before even the first standard
22:41:04 <oerjan> (http://research.microsoft.com/en-us/um/people/simonpj/papers/history-of-haskell/history.pdf section 9.1)
22:41:58 <oerjan> <elliott> oerjan: did haskell 98 actually improve anything? <-- i dunno, i've not learned any previous versions :P
22:42:05 <elliott> " SASL was even used at Burroughs to develop an
22:42:05 <elliott> entire operating system—almost certainly the first exercise of
22:42:05 <elliott> pure, lazy, functional programming “in the large”."
22:42:07 <elliott> heroes :')
22:42:16 <elliott> oerjan: surely you learnt the previous version to be able to contribute to the 98 report :P
22:42:19 <elliott> or did you learn it as it was written
22:42:56 <elliott> "In July 1981, Peter Henderson, John Darlington, and David Turner
22:42:56 <elliott> ran an Advanced Course on Functional Programming and its Applications, in Newcastle (Darlington et al., 1982)."
22:42:58 <elliott> CLEARLY OUR NEWCASTLE
22:44:14 <elliott> oerjan: remember that time a Clean programmer came here?
22:44:23 <elliott> could barely speak a lick of English but still, that's like meeting a giraffe
22:45:01 <Vorpal> <elliott> oerjan: surely you learnt the previous version to be able to contribute to the 98 report :P <-- did he contribute to it?
22:45:11 <elliott> Vorpal: yes, he practically wrote half of it
22:45:18 <Vorpal> elliott: I don't believe that
22:45:47 <Vorpal> elliott: I could have believed that he wrote a paragraph or two in it. :P
22:46:07 <elliott> "In addition, dozens of other people made helpful contributions, some small but many substantial. They are as follows: [...] Orjan Johansen [...]"
22:46:10 <oerjan> elliott: it _may_ be that 98 was the first to have modules, i'm not sure
22:46:14 <elliott> HIS WAS JUST PARTICULARLY SUBSTANTIAL
22:46:22 <Vorpal> elliott: ah
22:46:26 <elliott> oerjan: um i doubt that:
22:46:26 <elliott> Haskell 1.4 report - html (tar + gzip) [125K]
22:46:26 <elliott> Haskell 1.4 report - postscript [230k]
22:46:26 <elliott> Haskell 1.4 library report - html (tar + gzip) [60k]
22:46:26 <elliott> Haskell 1.4 library report - postscript [100K]
22:46:32 <elliott> oerjan: unless "library" meant "huge list of predefined functions"
22:46:38 -!- Madoka-Kaname has joined.
22:46:39 -!- Madoka-Kaname has quit (Changing host).
22:46:39 -!- Madoka-Kaname has joined.
22:46:46 <elliott> yes indeed not
22:46:49 <elliott> module IO (
22:46:51 <elliott> -- The Haskell 1.4 Library Report
22:46:52 <oerjan> ok
22:47:06 <elliott> An implementation is entitled to assume the following laws about these operations:
22:47:06 <elliott> range (l,u) !! index (l,u) i == i -- when i is in range
22:47:06 <elliott> inRange (l,u) i == i `elem` range (l,u)
22:47:08 <elliott> wow
22:47:19 <elliott> Haskell 1.4 implementations were allowed to assume typeclass laws
22:47:38 <elliott> liftM5 :: (Monad m) => (a -> b -> c -> d -> e -> f) ->
22:47:38 <elliott> (m a -> m b -> m c -> m d -> m e -> m f)
22:47:39 <elliott> liftM5 f = \a b c d e -> [f a' b' c' d' e' |
22:47:39 <elliott> a' <- a, b' <- b,
22:47:39 <elliott> c' <- c, d' <- d, e <- e']
22:47:41 <elliott> nice definition :D
22:48:14 <oerjan> <elliott> oerjan: remember that time a Clean programmer came here? <-- i've forgotten :(
22:48:15 <elliott> oerjan: and IO had a Show instance...
22:48:37 <elliott> instance Show (a->b) where
22:48:37 <elliott> showsPrec p f = showString "<<function>>"
22:48:37 <elliott> instance Show (IO a) where
22:48:37 <elliott> showsPrec p f = showString "<<IO action>>"
22:48:40 <Vorpal> heh
22:48:57 <elliott> and of course, it had Void
22:49:03 <Vorpal> elliott: Void?
22:49:06 <Vorpal> wtf was Void in haskell
22:49:07 <elliott> data Void -- No constructor for Void is exported. Import/Export
22:49:07 <elliott> -- lists must use Void instead of Void(..) or Void()
22:49:09 <elliott> the empty type
22:49:12 <Vorpal> ah
22:49:14 <elliott> sadly absent from later standards
22:49:18 <elliott> though implementable
22:49:20 <elliott> newtype Void = Void Void
22:49:47 <oerjan> <elliott> Haskell 1.4 implementations were allowed to assume typeclass laws <-- i vaguely recall that is _still_ the case, it would just be insane to do so if you want any useful sandboxing
22:49:59 <elliott> ais523: what's the command to get the patched source directory of a package on debian again?
22:50:03 <elliott> oerjan: yikes (sandboxing how?)
22:50:23 <Vorpal> elliott: apt-get source iirc?
22:50:36 <Vorpal> elliott: I think that extracts it and applies patches
22:50:41 <Vorpal> though not for everything maybe
22:50:50 <elliott> thanks
22:51:00 <Vorpal> elliott: seems to depend on /how/ the patches are done
22:51:20 <Vorpal> elliott: I swear there are as many package management systems for debian as there are packages...
22:51:35 <elliott> it seems to just unpack the debian/ directory here
22:51:40 <elliott> I guess it wants me to run the svn command
22:51:51 <Vorpal> elliott: oh right, it might have patches inside debian/
22:52:11 <Vorpal> elliott: that are applied later
22:52:16 <fizzie> It's possible to patch things from withing the debian/rules thing, yes.
22:52:21 <ais523> elliott: apt-get source
22:52:25 <oerjan> elliott: like with safe haskell... if you can write instances that cause segfaults because the implementation assumes things about them, you've got trouble. i recall arrays used to have such a problem in ghc.
22:52:36 <ais523> it downloads the original and the patch and then applies one to the other, leaving the original original there
22:52:51 <elliott> oerjan: ah. I was just thinking about simplifications of expressions.
22:53:10 <elliott> ais523: so I'm meant to manually extract the orig tarball it gives, right?
22:53:18 <elliott> it says
22:53:20 <elliott> dpkg-source: info: extracting gcj-4.5 in gcj-4.5-4.5.3
22:53:20 <elliott> dpkg-source: info: unpacking gcj-4.5_4.5.3.orig.tar.gz
22:53:20 <elliott> dpkg-source: info: applying gcj-4.5_4.5.3-9ubuntu1.diff.gz
22:53:20 <elliott> but
22:53:21 <ais523> elliott: no, it creates adirectory
22:53:23 <elliott> $ l
22:53:24 <elliott> debian/
22:53:24 <ais523> *a directory
22:53:28 <elliott> in the appropriately-named directory
22:53:35 <ais523> in that case, that's the only thing that's there
22:53:35 <Vorpal> elliott: ... no?
22:53:41 <Vorpal> hm
22:53:43 <elliott> ais523: odd
22:53:48 <elliott> it does say
22:53:50 <elliott> NOTICE: 'gcj-4.5' packaging is maintained in the 'Svn' version control system at:
22:53:50 <elliott> svn://svn.debian.org/svn/gcccvs/branches/sid/gcc-4.5
22:53:51 <ais523> and that that gcj package is just a wrapper
22:53:52 <elliott> when i run apt-get sourec
22:53:56 <elliott> source
22:54:01 <Vorpal> ais523: ah of course
22:54:01 <elliott> ais523: oh, hmm, there's a similar package ending -source
22:54:15 <elliott> elliott@katia:~$ apt-get source gcj-4.5-source
22:54:15 <elliott> source source source
22:54:19 <elliott> oh, nope
22:54:21 <Vorpal> elliott: why gcj though?
22:54:23 <elliott> it downloaded the same package
22:54:25 <ais523> packages that are -source are generally installed not downloaded
22:54:27 <elliott> Vorpal: I need to compile it
22:54:30 <ais523> into /usr/src
22:54:36 <Vorpal> elliott: I mean, who uses gcj?
22:54:45 <elliott> ais523: oh, probably I should download the gcc package instead
22:54:54 <ais523> heh, right
22:55:06 <ais523> and libgcj, presumably, if there is one
22:55:09 <Vorpal> elliott: it is probably part of gcc yes and just generated as part of building the entire gcc toolchain with everything
22:55:09 <fizzie> dpkg-buildpackage should probably take care of compiling apt-get source'd things.
22:55:19 <elliott> ais523: hmm, I might only have to build libgcj, actually
22:55:22 <elliott> fizzie: I want to change configure opts
22:55:41 <elliott> Picking 'gcj-4.6' as source package instead of 'libgcj12'
22:55:44 <elliott> oh for /god's sake/
22:55:59 <oerjan> "GHC proper was begun in the autumn of 1989, by a team consisting
22:55:59 <oerjan> initially of Cordelia Hall, Will Partain, and Peyton Jones. It
22:55:59 <oerjan> was designed from the ground up as a complete implementation of
22:55:59 <oerjan> Haskell in Haskell, bootstrapped via the prototype compiler. The
22:55:59 <oerjan> only part that was shared with the prototype was the parser, which
22:56:01 <Vorpal> elliott: debian/ubuntu is a PITA to modify packages on. That thing is much easier on arch. Not a zillion different systems like on debian
22:56:02 <oerjan> at that stage was still written in Yacc and C. The first beta release
22:56:04 <oerjan> was on 1 April 1991 (the date was no accident), but it was another
22:56:07 <oerjan> 18 months before the first full release (version 0.10) was made in
22:56:09 <oerjan> December 1992. This version of GHC already supported several
22:56:12 <oerjan> extensions to Haskell: monadic I/O (which only made it officially
22:56:14 <oerjan> into Haskell in 1996), [...]
22:56:19 <elliott> <oerjan> was on 1 April 1991 (the date was no accident), but it was another
22:56:19 <elliott> :D
22:56:22 <fizzie> That just means "libgcj12" is generated from that source package. They do generate multiple binary ones.
22:56:24 <elliott> interhaskell
22:56:30 <elliott> fizzie: yes, but there's /no source/ in the directory :P
22:56:50 <elliott> rules rules.d/ rules.patch rules.unpack
22:56:50 <elliott> rules2 rules.defs rules.sonames runcheck.sh
22:56:50 <elliott> rules.conf rules.parameters rules.source
22:56:52 <Vorpal> elliott: that is because it is generated from a different package.
22:56:54 <elliott> ooh, it's like the lottery
22:56:59 -!- CakeProphet has quit (Ping timeout: 255 seconds).
22:57:11 <Jafet> Pick a briefcase
22:57:27 <Vorpal> elliott: I suspect all of these are somehow generated from the gcc package or such
22:57:37 <elliott> well there's stuff in the debian/ directory
22:57:50 <Vorpal> elliott: hm
22:57:55 <Vorpal> which is strange
22:57:58 <elliott> good lord, can I pay someone to build me a libgcj? :-P
22:58:17 <Vorpal> elliott: you discovered the horror of debian package building
22:58:24 <elliott> i don't even need it from debian
22:58:31 <elliott> just the standard gcc tarballs won't build it here
22:58:35 <Vorpal> elliott: oh?
22:58:36 <elliott> they fail on some weird issue
22:58:39 <Vorpal> weird
22:58:45 <Vorpal> elliott: why do you need gcj though
22:58:48 <elliott> something about bits/blah.h :P
22:58:52 <elliott> Vorpal: because I need it
22:59:02 <Vorpal> elliott: for what?
22:59:12 <elliott> compiling java programs
22:59:21 <Vorpal> elliott: and bits/* is generally internal glibc helper headers.
22:59:29 <Vorpal> anyone including that directly should be shot
22:59:32 <elliott> yes, that's why I gave up on it
22:59:35 <elliott> Vorpal: gcc does that kind of shit all the time
22:59:46 <elliott> Vorpal: to be fair, it has to know executable format and the like
22:59:51 <Vorpal> elliott: use openjdk for java programs?
23:00:00 <elliott> no, I need gcj
23:00:01 <fizzie> elliott: Just "dpkg-buildpackage -b" it and see what happens? At least on Ubuntu it wants gcc-4.5-source as a build-dependency, maybe it picks the source from there.
23:00:04 <ais523> bits/* is mostly platform definitions
23:00:07 <Vorpal> elliott: yes but still, what if it isn't gnu libc?
23:00:13 <Vorpal> elliott: then there might be no bits/
23:00:14 -!- Jafet has quit (Quit: Leaving.).
23:00:17 <elliott> fizzie: That will build it with the standard options.
23:00:19 <ais523> as in, say, the list of errnos directly from the kernel
23:00:24 <elliott> fizzie: Like I said, I need to change them, although there's so many I'm not sure which.
23:00:24 <ais523> and the actual header files are wrappers around them
23:00:58 <fizzie> elliott: You can edit the control files; but at least it will get you the source from somewhere, or list it as a missing build dependency.
23:01:05 * elliott elliott@katia:~$ apt-get source gcc-4.6
23:01:43 <elliott> Have I mentioned how simple Kittens' package files are? :p
23:02:19 <elliott> s/s'/'s/
23:02:42 <elliott> elliott@katia:~/gcc-4.6-4.6.1$ l
23:02:42 <elliott> debian/ gcc-4.6.1.tar.xz
23:02:45 <elliott> Vorpal: um...
23:02:52 * elliott shrugs, tar xfs it
23:02:56 <Vorpal> elliott: this would be trivial to figure out on arch. Sure there is the split package thing, but it is trivially obvious to understand it. Just a single PKGBUILD file with a few extra functions that define which files go in which binary package
23:03:30 <elliott> http://projects.archlinux.org/svntogit/packages.git/tree/trunk/PKGBUILD?h=packages/gcc
23:03:31 <elliott> http://projects.archlinux.org/svntogit/packages.git/tree/trunk/gcc.install?h=packages/gcc
23:03:31 <fizzie> I'd probably just edit the debian/ metafiles to twiddle whatever attributes I wanted in there, and then dpkg-buildpackage it; assuming I wanted an "otherwise compatible but slightly tweaked" build.
23:03:34 <elliott> http://projects.archlinux.org/svntogit/packages.git/tree/trunk/gcc-libs.install?h=packages/gcc
23:03:37 <elliott> Not exactly what I would call simple.
23:03:50 <elliott> fizzie: If only I knew exactly which bits I needed to flip.
23:03:55 -!- CakeProphet has joined.
23:03:55 -!- CakeProphet has quit (Changing host).
23:03:55 -!- CakeProphet has joined.
23:03:56 <Vorpal> elliott: the .install things run when installing the binary package
23:04:04 <Vorpal> elliott: so you need one for each binary package
23:04:19 <elliott> Doesn't mean it's quite the perfect paradise of simplicity.
23:04:20 <fizzie> Manually trying to compile it would probably lead to a not very debianized result. But w/e.
23:04:32 <elliott> I especially like those undocumented options to configure.
23:04:33 <Vorpal> elliott: no it could be simpler. But it is WAY simpler than debian :P
23:04:48 <elliott> fizzie: I don't care how Debianised it is, I just want it to work :P
23:05:08 <elliott> Holy shit, the Debian diff to gcc is THIRTY SIX MEGABYTES uncompressed.
23:05:13 <elliott> THIRTY
23:05:14 <Vorpal> elliott: the key is that you have pkgname=('gcc' 'gcc-libs' 'gcc-fortran' 'gcc-objc' 'gcc-ada' 'gcc-go') as an array as opposed a single variable
23:05:14 <elliott> SIX
23:05:15 <elliott> MEGABYTES
23:05:25 <Vorpal> elliott: then you have separate package_foo
23:05:32 <elliott> Vorpal: THIRTY
23:05:33 <elliott> SIX
23:05:34 <elliott> MEGABYTES
23:05:40 <Vorpal> elliott: well, that is debian for you
23:05:58 <fizzie> If you want to install it as a system thing, it should probably be built according to Debian rules. If not, why do you need the Debian-specific patches on it instead of using the original sources?
23:06:04 <elliott> It is
23:06:07 <elliott> one zero four six six seven one
23:06:08 <elliott> lines long.
23:06:15 <elliott> fizzie: Because the original sources don't: built.
23:06:27 <elliott> fizzie: http://www.linux-archive.org/debian-gcc/569731-bug-639752-gcc-4-5-ftbfs-usr-include-features-h-323-26-fatal-error-bits-predefs-h-no-such-file-directory.html
23:06:32 <elliott> I applied the patch there but it didn't help.
23:06:38 <Vorpal> elliott: again look at arch! two patch files, less than 200 lines in total
23:06:38 <elliott> But it's the same
23:06:39 <Vorpal> :P
23:06:40 <elliott> /usr/include/features.h:323:26: fatal error: bits/predefs.h: No such
23:06:40 <elliott> file or directory
23:06:41 <elliott> error.
23:06:45 -!- sllide has quit (Ping timeout: 256 seconds).
23:06:46 -!- variable has quit (Quit: I found a 1 /dev/zero).
23:06:56 <Vorpal> elliott: wait a second, features.h included it, not gcc directly
23:07:05 <Vorpal> elliott: your system, it might be screwed
23:07:08 <elliott> Vorpal: No.
23:07:10 <elliott> It's a gcc bug.
23:07:14 <elliott> Thus why there's a gcc patch.
23:07:19 <elliott> It's bootstrapping header location bullshit.
23:07:22 <Vorpal> oh
23:07:28 <elliott> You wouldn't think this matters because it's java.
23:07:32 <Vorpal> I don't have any /usr/include/bits/predefs.h either btw
23:07:36 <elliott> BUT YOU'D BE WRONG BECAUSE YOU CAN'T BUILD GCJ WITHOUT --ENABLE-LANGUAGES=C++ TOO
23:07:37 <Vorpal> elliott: so apply the patch in question?
23:07:42 <Vorpal> elliott: XD
23:07:44 <elliott> Vorpal: <elliott> I applied the patch there but it didn't help.
23:07:49 <Vorpal> oh
23:07:54 <Vorpal> elliott: apply all 36 MB?
23:08:04 <elliott> Vorpal: It creates a huge debian/ and does nothing else.
23:08:19 <Vorpal> elliott: that debian will contain all the patch files
23:08:28 <elliott> You might think I'm not being serious with my Kitten jabs but good god Debian is driving me to it.
23:08:29 <Vorpal> which will be applied from rules or rules.something
23:08:35 <fizzie> I'm not entirely sure you will get the patched sources to build manually either, without following the debian/rules procedure.
23:08:38 -!- copumpkin has joined.
23:08:49 <Vorpal> fizzie: there is that too
23:08:53 <elliott> fizzie: I know what I'll do, I'll just build a slightly older gcc. I think before they did multilib.
23:09:00 <elliott> ISTR it failed in some multilib shit.
23:09:08 -!- variable has joined.
23:09:08 <elliott> GCC 4.4.6. Yes, that sounds reassuring.
23:09:22 <fizzie> Especially considering it's gcc, of all things. It's not exactly the simplest of programs to build.
23:09:47 <elliott> It's not hard to build when it works, people just make it hard :P
23:09:49 <Vorpal> oh kernel.org is up again
23:09:50 <Vorpal> yay
23:10:01 <elliott> Vorpal: You visit kernel.org regularly?
23:10:34 <elliott> I wonder what http://projects.archlinux.org/svntogit/packages.git/tree/trunk/gcc_pure64.patch?h=packages/gcc does.
23:10:44 <elliott> Is it just to use /lib instead of /lib64 on 64-bit systems?
23:11:00 <Vorpal> elliott: I think so. Arch doesn't do multilib anyway (yes that is a pain)
23:11:05 <elliott> "gcc-4.2.0.orig" I thought Arch were ahead of the times.
23:11:07 <Vorpal> well not proper multilib
23:11:09 <Vorpal> not for building
23:11:11 <Vorpal> just for using
23:11:32 <Vorpal> elliott: I have gcc 4.6.1 here
23:11:36 <elliott> Hmm, weird, they still use that diff.
23:11:38 <Vorpal> elliott: maybe they apply it with -p1
23:11:42 <elliott> I guess it just hasn't broken yet.
23:12:18 <oerjan> "The prelude code was also remarkably un-buggy for code
23:12:18 <oerjan> that had never been compiled (or even type checked) before hbc
23:12:20 <oerjan> came along."
23:12:34 <elliott> heh
23:12:39 <oerjan> it would appear that hbc may have been the first compiler to reach a usable state
23:12:51 <oerjan> while it was not _started_ first
23:13:15 <elliott> ./configure --enable-languages=java --disable-bootstrap --prefix=/opt/gcj --disable-shared --disable-multilib
23:13:23 <oerjan> “During the spring of 1990 I was eagerly awaiting the first Haskell
23:13:23 * elliott backports that to this gcc.
23:13:23 <oerjan> compiler, it was supposed to come from Glasgow and be based
23:13:23 <oerjan> on the LML compiler. And I waited and waited. After talking to
23:13:23 <oerjan> Glasgow people at the LISP& Functional Programming conference
23:13:23 <oerjan> in Nice in late June of 1990 Staffan Truv´e and I decided that instead
23:13:26 <oerjan> of waiting even longer we would write our own Haskell compiler
23:13:28 <oerjan> based on the LML compiler.
23:13:31 <oerjan> “For various reasons Truv´e couldn’t help in the coding of the
23:13:33 <oerjan> compiler, so I ended up spending most of July and August coding,
23:13:35 <elliott> Oh, I think I need --enable-libgcj too.
23:13:36 <oerjan> sometimes in an almost trance-like state; my head filled with
23:13:38 <oerjan> Haskell to the brim. At the end of August I had a mostly complete
23:13:41 <oerjan> implementation of Haskell. I decided that hbc would be a
23:13:49 <oerjan> cool name for the compiler since it is Haskell Curry’s initials. (I
23:13:49 <oerjan> later learnt that this is the name the Glasgow people wanted for
23:13:50 <oerjan> their compiler too. But first come, first served.)
23:14:09 <elliott> elliott@katia:~/Downloads/gcc-4.4.6$ ./configure --enable-languages=java --disable-bootstrap --enable-static --disable-shared --prefix=/opt/gcj --enable-libgcj
23:14:12 <elliott> oerjan: /me reads
23:14:19 <oerjan> (written by augustss)
23:14:26 <elliott> what a surprise :P
23:14:48 <elliott> heh, did the glasgow people want to call it hbc after Curry too?
23:15:05 <oerjan> so it says
23:15:43 -!- augur has quit (Remote host closed the connection).
23:15:46 <elliott> well no it just says they wanted hbc
23:15:56 <elliott> ../.././gcc/gcov.c:1103:6: warning: jump skips variable initialization [-Wjump-misses-init]
23:15:56 <elliott> ../.././gcc/gcov.c:1094:6: note: label ‘mismatch’ defined here
23:15:57 <elliott> ../.././gcc/gcov.c:1069:26: note: ‘fn_n’ declared here
23:15:57 <elliott> ../.././gcc/gcov.c:1103:6: warning: jump skips variable initialization [-Wjump-misses-init]
23:15:57 <elliott> ../.././gcc/gcov.c:1094:6: note: label ‘mismatch’ defined here
23:15:57 <elliott> ../.././gcc/gcov.c:1068:13: note: ‘ident’ declared here
23:15:59 <elliott> im scared
23:16:18 <Vorpal> elliott: false positive perhaps
23:16:31 <elliott> does anyone ever fix warnings in gcc? I somehow doubt it
23:16:36 <elliott> there's millions
23:16:56 <Vorpal> elliott: might be because you are building using a newer gcc version?
23:17:08 <elliott> might be, but gcc always generates tons of warnings :P
23:17:16 <Vorpal> hm true
23:17:23 <Vorpal> I don't compile it very often
23:17:34 <elliott> ../.././gcc/function.h:140:34: warning: using ‘call_site_record’ as both a typedef and a tag is invalid in C++ [-Wc++-compat]
23:17:40 <elliott> ah yes, I forgot they're letting C++ into gcc.
23:18:48 <CakeProphet> what why.
23:18:49 <CakeProphet> no.
23:18:50 <CakeProphet> bad.
23:19:38 -!- ais523 has quit (Remote host closed the connection).
23:21:35 <Vorpal> old news
23:21:35 <elliott> ../../../host-x86_64-unknown-linux-gnu/gcc/options.h:83: error: storage class specified for parameter ‘warn_psabi’
23:21:35 <elliott> ../../../host-x86_64-unknown-linux-gnu/gcc/options.h:84: error: storage class specified for parameter ‘warn_redundant_decls’
23:21:36 <elliott> ../../../host-x86_64-unknown-linux-gnu/gcc/options.h:85: error: storage class specified for parameter ‘flag_redundant’
23:21:36 <elliott> ../../../host-x86_64-unknown-linux-gnu/gcc/options.h:86: error: storage class specified for parameter ‘warn_reorder’
23:21:38 <elliott> ../../../host-x86_64-unknown-linux-gnu/gcc/options.h:87: error: storage class specified for parameter ‘warn_return_type’
23:21:41 <elliott> ../../../host-x86_64-unknown-linux-gnu/gcc/options.h:88: error: storage class specified for parameter ‘warn_selector’
23:21:44 <elliott> ../../../host-x86_64-unknown-linux-gnu/gcc/options.h:89: error: storage class specified for parameter ‘warn_sequence_point’
23:21:47 <elliott> ../../../host-x86_64-unknown-linux-gnu/gcc/options.h:90: error: storage class specified for parameter ‘warn_shadow’
23:21:50 <elliott> I...
23:21:55 <Vorpal> elliott: did you boostrap a gcc of the same version?
23:22:01 <Vorpal> elliott: if not you are doing it wrong
23:22:04 <elliott> I --disable-bootstrapped.
23:22:12 <Vorpal> elliott: that is why it fails then
23:22:16 <Vorpal> try again doing it properly
23:22:31 <elliott> I thought that would just skip a pointless bootstrap given that I'm going to compile JAVA CODE >_<
23:22:33 <Vorpal> well, probably why it fails
23:22:54 <Vorpal> elliott: you need to --enable-language=c,c++,java and enable the bootstrap probably
23:23:03 <elliott> It automatically enables C++.
23:23:08 <elliott> If you select Java.
23:23:13 <Vorpal> I suspect you need plain C too
23:23:46 <elliott> elliott@katia:~/Downloads/gcc-4.6.1$ ./configure --enable-languages=c,java --disable-multilib --enable-static --disable-shared --prefix=/opt/gcj --enable-libgcj
23:23:47 <elliott> Here goes nothing.
23:24:04 <Vorpal> elliott: are you sure gcj works with static?
23:24:10 <elliott> Yes.
23:24:13 <Vorpal> okay
23:24:24 <elliott> http://gcc.gnu.org/wiki/Statically_linking_libgcj
23:24:44 <Vorpal> elliott: what thing is it that you are compiling with gcj?
23:24:50 <elliott> Java code.
23:24:55 <Vorpal> elliott: what java code
23:25:01 <elliott> Code, written in Java.
23:25:12 <Vorpal> elliott: why are you avoiding a straight answer?
23:25:21 <elliott> More fun.
23:25:38 <Vorpal> meh
23:28:55 <elliott> coppro: How far is libc++ from running WebKit? :p
23:31:13 <oerjan> hm still zeppelins in iwc? the timeline cannot have been entirely normalized.
23:32:05 <elliott> More like LAMEalised.
23:32:33 <oerjan> yeah outright killing hitler?
23:32:44 <elliott> Vorpal: Thou lies, bits/predefs.h error remains :P
23:32:58 <Vorpal> elliott: not the storage class one though?
23:33:01 <elliott> Maybe --disable-multilib doesn't quite disable multilib.
23:33:12 <Vorpal> elliott: that was the one I talked about
23:33:13 <elliott> Vorpal: Well no, I decided to try 4.6 again, if no bootstrapping was the problem.
23:33:20 <Vorpal> elliott: different problem
23:33:31 <elliott> Your mom is a different problem. But ok ok fine.
23:33:43 <Vorpal> elliott: I suggested that the storage class thingy is /probably/ a bootstrapping problem
23:33:53 <Vorpal> elliott: not bootstrapping gcc = weird problems
23:34:11 <Vorpal> that is especially painful when you are building a cross compiler
23:34:12 -!- CakeProphet has quit (Ping timeout: 276 seconds).
23:34:12 <elliott> Guess who can't wait for gcc to die?? This guy!
23:34:17 <Vorpal> you need a native one of same version then
23:34:23 -!- pikhq has joined.
23:34:26 <Vorpal> elliott: use clang. Write Java frontend for it
23:34:30 -!- pikhq_ has quit (Ping timeout: 240 seconds).
23:34:32 <oerjan> elliott: but then, everyone knows that killing hitler never works. clearly something will become messed up, now.
23:34:36 <elliott> elliott@katia:~/Downloads/gcc-4.4.6$ ./configure --enable-languages=c,java --enable-static --disable-shared --prefix=/opt/gcj --enable-libgcj
23:34:40 <elliott> ATTEMPT NUMBER 9999999999999
23:34:50 <Vorpal> over 9000
23:34:50 -!- CakeProphet has joined.
23:35:00 <CakeProphet> I guess 52 torrents is not good for my connection..
23:35:01 -!- CakeProphet has quit (Changing host).
23:35:01 -!- CakeProphet has joined.
23:35:11 <CakeProphet> *IRC connection
23:35:23 <oerjan> a torrent a day keeps your bandwidth away
23:35:52 <Vorpal> heh
23:35:58 <Vorpal> and duh
23:35:59 <CakeProphet> wow I actually hit 1 MB/s
23:36:00 <CakeProphet> that's rare.
23:38:03 <CakeProphet> huh usr/lib contains 6.7 GBs apparently
23:38:11 <CakeProphet> most of it in debug
23:38:22 <elliott> Vorpal: i love how almost all the warnings in this version are from -Wc++-compat
23:38:28 <Vorpal> heh
23:39:10 <CakeProphet> would I break things if I deleted stuff in /usr/lib/debug?
23:39:26 <Vorpal> CakeProphet: just uninstall the -dbg package that adds that file
23:39:32 <Vorpal> CakeProphet: but yes it would break debugging
23:39:41 <elliott> Gregor: Re fast compression, you might also be interested in: LZFX is a small (one C file, 200 non-comment lines) BSD-licensed library designed for very-high-speed compression of redundant data.
23:39:47 <elliott> http://code.google.com/p/lzfx/
23:40:04 <CakeProphet> hmmm I'd only get getting like 1.3 GBs from doing that really.
23:40:06 <CakeProphet> not worth it.
23:40:23 <Vorpal> CakeProphet: low on disk space but 1.3 GB not worth it?
23:40:29 <CakeProphet> neither.
23:40:43 <CakeProphet> I'm just uh... playing around and looking at my disk usage.
23:40:48 <Vorpal> I see
23:40:58 <CakeProphet> maybe preparing for a future in which it is something I need to worry about.
23:41:23 <elliott> http://www.creativereview.co.uk/cr-blog/2011/august/sainsburys-own-label-book <-- holy shit, I want to live in a world where supermarket products look this cool
23:41:37 <elliott> CakeProphet: Installing Kitten should decimate your disk usage.
23:41:51 <elliott> Vorpal: Same error without bootstrap.
23:41:59 <elliott> Maybe my system /is/ fucked.
23:42:08 <elliott> Vorpal: Do you know which packages the bits/ stuff is?
23:42:10 <elliott> in?
23:42:11 <CakeProphet> 97% of my disk usage is in /home, imagine that.
23:42:17 <elliott> I don't seem to ... have it.
23:42:40 <Vorpal> elliott: nope. Try dpkg-query to check which packages own a file from there
23:42:50 <CakeProphet> /usr just happens to be the next biggest chunk at 6 GB
23:42:52 <elliott> Vorpal: I don't _have_ those files, that's the problem :P
23:42:58 <Vorpal> elliott: and the file you mentioned? I don't have it either
23:43:06 <Vorpal> elliott: any file from there, surely you have bits/something?
23:43:16 <elliott> elliott@katia:~/Downloads/gcc-4.4.6$ ls /usr/include/bits/
23:43:16 <elliott> ls: cannot access /usr/include/bits/: No such file or directory
23:43:22 <Vorpal> elliott: otherwise: find /usr/include -name bits
23:43:24 <elliott> This may be my: Problem.
23:43:27 <Vorpal> maybe it is x86-64/bits
23:43:29 <Vorpal> or some such
23:43:32 <elliott> Oh: /usr/include/x86_64-linux-gnu/bits
23:43:44 <elliott> (Maybe that's the problem.)
23:43:58 <Vorpal> elliott: now why does it not look there I wonder
23:44:16 <elliott> Probably one of Debian's five billion patches adds that.
23:44:25 <Vorpal> heh
23:44:36 <Vorpal> elliott: so apply the relevant patch
23:44:44 <elliott> Vorpal: Ha ha ha.
23:44:45 <Vorpal> it is probably in debian/patches or something like that
23:45:02 <pikhq> elliott: It's actually an option to --configure
23:45:03 <Vorpal> elliott: you could do grep -R bits
23:45:06 <pikhq> Erm, configure
23:45:07 <elliott> pikhq: What is?
23:45:23 <pikhq> elliott: The bit that makes it install bits in /usr/include/x86_64-linux-gnu/
23:45:31 <elliott> Vorpal: http://sprunge.us/SRMU Pick one
23:45:37 <elliott> pikhq: Ah. How do I get gcc to look there for bits/ headers?
23:45:41 <elliott> It's failing because, I think, it can't find them.
23:45:44 <elliott> When compiling gcc.
23:45:51 <Vorpal> elliott: all on one line? Not going to look at that
23:46:03 <elliott> "diod is an I/O forwarding server that implements a variant of the 9P protocol from the Plan 9 operating system. When paired with a modern version of the v9fs Linux 9P client, diod allows a file system to be exported over a TCP/IP network in a manner similar to NFS."
23:46:08 <elliott> OMG MAYBE MY PERFECT IRC CLIENT CAN COME TRUE
23:46:13 <CakeProphet> .cache is 1.3 GB apparently
23:48:48 <pikhq> Fek, I can't find it.
23:49:29 -!- CakeProp1et has joined.
23:50:02 <Vorpal> elliott: well have fun with debian
23:50:15 <Vorpal> I always had issues building gcc on debian
23:50:20 <Vorpal> I just don't do it any more
23:50:23 <elliott> It's always worked for me up until now :P
23:50:41 -!- CakeProphet has quit (Ping timeout: 245 seconds).
23:50:53 <pikhq> Yeah, GCC has opted to do multiarch in the way most likely to need patches.
23:51:18 <pikhq> Erm, Debian.
23:51:25 <elliott> Can I just...
23:51:28 <elliott> ln -s ... /usr/include/bits?
23:51:32 <elliott> Will that break everything?
23:51:52 <pikhq> Well, I seem to already have such a symlink.
23:51:56 <pikhq> So, "no".
23:52:00 -!- DH____ has quit (Read error: Connection reset by peer).
23:53:15 <CakeProp1et> I'm feeling a little bouncy
23:54:38 -!- CakeProphet has joined.
23:54:39 -!- CakeProphet has quit (Changing host).
23:54:39 -!- CakeProphet has joined.
23:55:11 -!- augur has joined.
23:55:56 * CakeProphet turned on a speed limit
23:56:31 <elliott> elliott@katia:~/Downloads/gcc-4.6.1$ sudo ln -s /usr/include/x86_64-linux-gnu/sys /usr/include
23:56:32 <elliott> ln: creating symbolic link `/usr/include/sys': File exists
23:56:32 <elliott> elliott@katia:~/Downloads/gcc-4.6.1$ ls /usr/include/sys
23:56:32 <elliott> asoundlib.h
23:56:32 <elliott> pikhq: Rage.
23:57:45 -!- CakeProp1et has quit (Ping timeout: 256 seconds).
23:58:25 <elliott> pikhq: Can I just... symlink every relevant header?
2011-10-05
00:00:10 <elliott> Aaand the build starts again.
00:03:30 <elliott> checking for x86_64-unknown-linux-gnu-gcc... /home/elliott/Downloads/gcc-4.6.1/host-x86_64-unknown-linux-gnu/gcc/xgcc -B/home/elliott/Downloads/gcc-4.6.1/host-x86_64-unknown-linux-gnu/gcc/ -B/opt/gcj/x86_64-unknown-linux-gnu/bin/ -B/opt/gcj/x86_64-unknown-linux-gnu/lib/ -isystem /opt/gcj/x86_64-unknown-linux-gnu/include -isystem /opt/gcj/x86_64-unknown-linux-gnu/sys-include
00:03:30 <elliott> checking for C compiler default output file name...
00:03:30 <elliott> configure: error: in `/home/elliott/Downloads/gcc-4.6.1/x86_64-unknown-linux-gnu/libgomp':
00:03:30 <elliott> configure: error: C compiler cannot create executables
00:03:31 <elliott> See `config.log' for more details.
00:03:33 <elliott> make[2]: *** [configure-stage1-target-libgomp] Error 77
00:03:35 <elliott> pikhq: hepl
00:03:46 -!- derdon has quit (Remote host closed the connection).
00:04:06 <elliott> configure:3666: checking for C compiler default output file name
00:04:06 <elliott> configure:3688: /home/elliott/Downloads/gcc-4.6.1/host-x86_64-unknown-linux-gnu/gcc/xgcc -B/home/elliott/Downloads/gcc-4.6.1/host-x86_64-unknown-linux-gnu/gcc/ -B/opt/gcj/x86_64-unknown-linux-gnu/bin/ -B/opt/gcj/x86_64-unknown-linux-gnu/lib/ -isystem /opt/gcj/x86_64-unknown-linux-gnu/include -isystem /opt/gcj/x86_64-unknown-linux-gnu/sys-include -g -O2 conftest.c >&5
00:04:06 <elliott> /usr/bin/ld: cannot find crt1.o: No such file or directory
00:04:07 <elliott> /usr/bin/ld: cannot find crti.o: No such file or directory
00:04:08 <elliott> collect2: ld returned 1 exit status
00:04:10 <elliott> configure:3692: $? = 1
00:04:12 <elliott> configure:3729: result:
00:04:14 <elliott> configure: failed program was:
00:04:21 <elliott> pikhq: idgi?
00:04:27 <Vorpal> elliott: urgh
00:04:29 <Vorpal> well, night →
00:04:39 <elliott> Is it failing to find the crt files because they're in some multilib location?
00:07:02 <elliott> OK, here's my plan:
00:07:04 <elliott> Don't disable multilib :P
00:09:23 <Gregor> Uhh, excuse me, pikhq.
00:09:25 <Gregor> Debian is incapable of wrong.
00:09:37 <Gregor> Therefore no matter how terrible, annoying and incompatible their solution is, it's right.
00:10:43 -!- CakeProphet has quit (Read error: Connection reset by peer).
00:12:21 -!- CakeProphet has joined.
00:12:22 -!- CakeProphet has quit (Changing host).
00:12:22 -!- CakeProphet has joined.
00:17:09 <elliott> /usr/include/gnu/stubs.h:7:27: fatal error: gnu/stubs-32.h: No such file or directory
00:17:10 <elliott> Yessssssssss
00:18:21 <elliott> I like how Gregor returned JUST to inform us about Debian :P
00:19:21 <pikhq> elliott: Eff if I know.
00:19:39 <elliott> pikhq: I guess I gotta install 32-bit libc
00:19:42 <elliott> What's the multilib incantation for that :P
00:20:00 <pikhq> Won't help, that's also multilibbed.
00:20:12 <Gregor> Also,
00:20:27 <Gregor> (nothing)
00:20:44 <elliott> Gregor: See /msg :P
00:22:45 <Gregor> elliott: Yeah yeah
00:27:24 <elliott> Gregor cares about us; you can tell.
00:27:25 -!- Zuu has quit (Read error: Connection reset by peer).
00:27:47 <elliott> :p
00:27:57 <CakeProphet> Gregor is my best friend
00:28:12 <CakeProphet> I <3 everyone
00:29:42 <Gregor> CakeProphet: Where's my cake?
00:30:23 <oerjan> obviously CakeProphet cannot say where your cake is, only where it _will_ be.
00:30:38 <CakeProphet> ..
00:30:51 <CakeProphet> I wonder when/if people will get tired of talking about my nickname
00:31:03 <oerjan> NOT UNTIL THE CAKE COMES
00:31:43 -!- Zuu has joined.
00:35:06 -!- tiffany has quit (Quit: Bai~).
00:51:56 -!- kmc has joined.
00:59:04 <elliott> Yo CakeProphet
00:59:06 <elliott> `frink 38 feet -> "meters"
00:59:15 <HackEgo> 7239/625 (exactly 11.5824) meters
00:59:17 <elliott> `frink siderealday -> ["hours", "minutes", "seconds"]
00:59:25 <HackEgo> 23 hours, 56 minutes, 4.090530833 seconds
00:59:27 <elliott> `frink ??moon
00:59:36 <HackEgo> ​[moonmass = 7.3483e+22 kg (mass), \ moondist = 3.84400000e+8 m (length), \ moonlum = 2500 m^-2 cd (illuminance), \ moongravity = 1.62 m s^-2 (acceleration), \ moonradius = 1738000 m (length)]
00:59:38 <elliott> `frink teaspoon water c^2 -> "gallons gasoline"
00:59:47 <HackEgo> 3.1642098628361009386e+6 gallons gasoline
01:00:07 <elliott> It can also do translations (although I haven't set up the proxy stuff for that yet), historical concurrency conversions, general calculations, symbolic reductions, functional programming, blah blah blah blah blah it can do fucking everything.
01:00:14 <elliott> (Oh, and the quotes around the units aren't necessary; they just append the unit name to the result.)
01:01:41 <elliott> `frink now - #2001-01-01#
01:01:50 <HackEgo> Warning: undefined symbol "now". \ now (undefined symbol) + AD 2001-01-01 a.m. 12:00:00.000 (Mon) GMT
01:01:53 <elliott> Oops
01:01:54 <elliott> `frink now[] - #2001-01-01#
01:02:03 <HackEgo> 339469322551/1000 (exactly 3.39469322551e8) s (time)
01:02:11 <CakeProphet> elliott: units can do some currencies I think?
01:02:16 <elliott> `frink now[] - #2001-01-01# -> ["years", 0]
01:02:25 <HackEgo> 10 years
01:02:26 <elliott> CakeProphet: So to answer "why are you replacing units", the answer is "because Frink is about nine billion times more awesome".
01:02:49 <CakeProphet> `frink minorsecond -> majorthird
01:02:58 <CakeProphet> halp syntax
01:02:58 <HackEgo> Warning: undefined symbol "minorsecond". \ Unconvertable expression: \ minorsecond (undefined symbol) -> 5/4 (exactly 1.25)
01:03:06 <elliott> Well, it knows majorthird :P
01:03:14 <elliott> There's a list of all the units, lemme get it
01:03:22 <elliott> http://futureboy.us/frinkdata/units.txt
01:03:25 <CakeProphet> `la
01:03:26 <CakeProphet> `ls
01:03:27 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: la: not found
01:03:28 <HackEgo> bin \ canary \ hs_err_pid275.log \ hs_err_pid278.log \ karma \ lib \ paste \ quotes \ share \ wisdom
01:03:38 <elliott> o_O
01:03:39 <elliott> `rm hs_err_pid275.log
01:03:41 <CakeProphet> `ls share
01:03:41 <HackEgo> No output.
01:03:42 <elliott> `rm hs_err_pid278.log
01:03:43 <HackEgo> foo \ units.dat
01:03:44 <HackEgo> No output.
01:03:53 <CakeProphet> does frink use some kind of data file where you can add units?
01:03:58 <CakeProphet> `units --version
01:04:00 <HackEgo> GNU Units version 1.88 \ with readline, units database in /hackenv/share/units.dat \ Copyright (C) 2006 Free Software Foundation, Inc. \ GNU Units comes with ABSOLUTELY NO WARRANTY. \ You may redistribute copies of GNU Units \ under the terms of the GNU General Public License. \
01:04:09 <elliott> Yes, but it's built in. I think you can specify your own, but w/e.
01:04:18 <CakeProphet> actually I don't think units has minorsecond either
01:04:40 <elliott> I would bet money on Frink not only having a strict superset of units' units, but far, far more in total :P
01:04:51 <CakeProphet> `run cat share/units.dat | grep minorsecond
01:04:54 <HackEgo> No output.
01:05:00 <CakeProphet> `run cat share/units.dat | grep musicalfifth
01:05:03 <HackEgo> majorsecond musicalfifth^2 / octave \ musicalfifth 3|2 \ majorseventh musicalfifth majorthird \ minorseventh musicalfifth minorthird \ pythagoreanthird majorsecond musicalfifth^2 / octave \ pythagoreancomma musicalfifth^12 / octave^7
01:05:24 <CakeProphet> perfectfifth would be a better name.
01:05:52 <elliott> `run for [line] = read["share/units.dat"] =~ %r/musicalfifth/g { println[line] }
01:05:53 <HackEgo> sh: -c: line 0: syntax error near unexpected token `=' \ sh: -c: line 0: `for [line] = read["share/units.dat"] =~ %r/musicalfifth/g { println[line] }'
01:05:57 <elliott> Aw :P
01:06:08 <elliott> I'm a bit off on my Frink control constructs.
01:06:14 <CakeProphet> also you didn't use frink.
01:06:22 <elliott> `frink for [line] = read["share/units.dat"] =~ %r/musicalfifth/g { println[line] }
01:06:24 <elliott> THAT MIGHT BE WHY
01:06:26 <CakeProphet> lol
01:06:31 <HackEgo> Syntax error: <String>, line 1, near column 58 \ for [line] = read["share/units.dat"] =~ %r/musicalfifth/g { println[line] } \ ^ \ 1 error(s) occurred during parsing.
01:06:39 <elliott> Good, I made an actual mistake.
01:06:52 <elliott> `run 999 grams / sugar -> cups
01:06:53 <HackEgo> sh: 999: command not found
01:06:55 <CakeProphet> so frink is like perl+units?
01:06:57 <elliott> `frink 999 grams / sugar -> cups
01:06:58 <elliott> I'm smart.
01:07:06 <HackEgo> 4.995
01:07:21 <elliott> CakeProphet: Frink is a calculator with strongly-typed units support and a huge built-in library of functions.
01:07:29 <elliott> It's kind of Perlish but that's not really the main thing :P
01:07:37 <CakeProphet> ah okay.
01:07:39 <elliott> http://futureboy.us/frinkdocs/
01:07:44 <elliott> Its one flaw is being Java :P
01:07:46 <CakeProphet> right I didn't mean it was literally units+perl
01:07:57 <CakeProphet> but that's neat.
01:08:16 <CakeProphet> `frink 5 beardseconds -> lightyears
01:08:25 <HackEgo> Warning: undefined symbol "beardseconds". \ Warning: undefined symbol "beardseconds". \ Unconvertable expression: \ 5 beardseconds (undefined symbol) -> 9460730472580800 m (length)
01:08:29 <CakeProphet> NOOOOOO
01:08:31 <elliott> I taught it beardseconds once :P
01:08:35 <elliott> It's one definition:
01:08:47 <elliott> `frink beardsecond := 5 nm; 5 beardseconds -> lightyears
01:08:48 <CakeProphet> units has beardseconds only because I added it.
01:08:56 <HackEgo> 1/378429218903232000000000 (approx. 2.6425020850615385e-24)
01:08:59 <elliott> Note how it handles the plural automatically.
01:09:07 <CakeProphet> same as units, yes.
01:09:16 <CakeProphet> but frink is much better, I agree.
01:09:29 <elliott> That gcj-compiling was for this :P
01:09:37 <elliott> Turns out getting Gregor to download libgcj is easier.
01:09:38 <elliott> `run frink '55 mph -> yards' 2>&1 | paste
01:09:42 <CakeProphet> !help
01:09:48 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.5864
01:09:49 <CakeProphet> is egobot down forever?
01:09:56 <elliott> CakeProphet: Behold, strongly typed
01:09:58 <elliott> (See that paste)
01:10:01 <elliott> With USEFUL SUGGESTIONS :P
01:11:07 <CakeProphet> nea
01:11:08 <CakeProphet> t
01:11:12 <elliott> CakeProphet: Anyhow, it's a bit slow to start up right now because Java and because HackEgo is slooow, but I think I can solve that
01:11:19 <elliott> By writing a little "eval server" in Frink
01:11:24 <elliott> So it can reuse the same instance
01:11:29 <CakeProphet> right I was going to say
01:11:33 <CakeProphet> summon a daemon to do your bidding.
01:11:38 <CakeProphet> like any good warlock.
01:12:17 <CakeProphet> does hackego allow that even?
01:12:27 <CakeProphet> I figure it would time out.
01:12:31 <elliott> Hmm
01:12:32 <elliott> Good point
01:12:34 <elliott> Gregor: How daemons
01:12:43 <elliott> Can we just get you to set things off :P
01:14:43 <elliott> `frink ?cubit
01:14:52 <HackEgo> ​[blackcubit, hebrewcubit, egyptianshortcubit, shortgreekcubit, romancubit, greekcubit, persianroyalcubit, northerncubit, assyriancubit, homericcubit, sumeriancubit, egyptianroyalcubit, irishcubit, biblicalcubit, olympiccubit, hashimicubit]
01:14:55 <elliott> So many cubits.
01:15:12 <elliott> CakeProphet: Yeah, you can specify a different units file, it seems
01:15:30 <CakeProphet> the search feature is very nice.
01:15:36 <CakeProphet> obvious solution: port frink to Haskell
01:15:57 <elliott> `run 3 gram 18 karat Gold -> pound_1752
01:15:59 <HackEgo> sh: 3: command not found
01:16:02 <elliott> >_<
01:16:05 <elliott> `calc 3 gram 18 karat Gold -> pound_1752
01:16:09 <Gregor> I'd like to allow daemons, but I haven't thought of a good way to do it.
01:16:10 <elliott> Just gonna use my calc synonym since it's easier to remember than frink :P
01:16:14 <HackEgo> Warning: reading currency values from cache dated 2007-06-04 20:08:19 UTC \ Unknown symbol "pound_1752" \ Warning: undefined symbol "pound_1752". \ Unconvertable expression: \ 48.536123424838473363 dollar (currency) -> pound_1752 (undefined symbol)
01:16:22 <elliott> Gregor: Didn't HackEgo addinterps use to be daemons
01:16:30 <Gregor> *EgoBot, and no
01:16:38 <elliott> Well, they were killable
01:16:42 <Gregor> It had daemons separately, yeah.
01:16:48 <elliott> CakeProphet: Yeah, I need to get the HTTP connections working so it uses up to date currency info and can translate :P
01:16:49 <Gregor> They weren't the addinterps, it was another system.
01:17:02 <elliott> Gregor: Ah :P
01:17:06 <Gregor> It'd be nice if there was a way to be certain that it was behaving as a daemon ...
01:17:18 <elliott> Gregor: Does it matter? Just provide an easy way to kill it
01:17:25 <elliott> e.g. you have to specify a name for it, and there's a special `killdaemon <name>
01:17:34 <CakeProphet> elliott: actually kill n birds with 1 stone: write a Java -> Haskell translator
01:17:38 <CakeProphet> then you never have to use Java again.
01:17:39 -!- ive has quit (Ping timeout: 256 seconds).
01:17:48 <elliott> Excellent.
01:18:04 <elliott> Gregor: I mean, the only exploitable thing seems to be that you could get it to churn for hours.
01:18:09 <elliott> Gregor: But there's just plain not much you can do with that power :P
01:18:21 <elliott> If you use up all the CPU, anyone can `killdaemon it easily.
01:18:29 <elliott> If you use up all the RAM, well you'll get killed.
01:18:33 <elliott> If you use up all the disk, you can't, ulimits.
01:19:07 <elliott> Anyway, I wasn't really asking how you were gonna do them in general, just how I have to convince you to special-case a single daemon :P
01:19:07 <CakeProphet> but daemons are scary!!!
01:20:13 <elliott> `run acre -> "m"
01:20:14 <HackEgo> sh: acre: command not found
01:20:19 <elliott> saoidhlakslkdsfldkfg
01:20:22 <elliott> `calc acre -> "m"
01:20:22 <CakeProphet> I believe acre is ambiguous
01:20:25 <CakeProphet> oh
01:20:26 <CakeProphet> right
01:20:31 <HackEgo> Conformance error \ Left side is: 62726400000/15499969 (approx. 4046.872609874252) m^2 (area) \ Right side is: 1 m (length) \ Suggestion: divide left side by length \ or divide left side by area^(1/2) \ \ For help, type: units[length] \ or \ units[area]
01:20:35 <elliott> CakeProphet: Let's see HOW ambiguous
01:20:36 <elliott> `calc ?acre
01:20:45 <HackEgo> ​[acrefeet, acrefoot, intacre, scotsacre, irishacre, acre]
01:20:47 <elliott> `calc acre -> square metres
01:20:56 <HackEgo> 62726400000/15499969 (approx. 4046.872609874252)
01:21:01 <CakeProphet> how does it parse the multi-word units?
01:21:09 <CakeProphet> er, how does it work semantically
01:21:10 <CakeProphet> I mean.
01:21:25 <CakeProphet> er, both.
01:21:33 <elliott> `calc squrae 99
01:21:36 <elliott> erm
01:21:38 <elliott> `calc square 99
01:21:39 <CakeProphet> so square is a function
01:21:42 <elliott> Nah
01:21:43 <HackEgo> Warning: undefined symbol "squrae". \ 99 squrae (undefined symbol)
01:21:45 <elliott> Functions are f[x]
01:21:48 <HackEgo> 9801
01:21:48 <CakeProphet> ah
01:21:50 <elliott> I'm trying to answer your question :P
01:21:56 <CakeProphet> DO IT FASTER
01:21:57 <CakeProphet> GAH
01:22:02 <elliott> I think "square x" is special syntax for x^2.
01:22:04 <elliott> Which is reasonable.
01:22:17 <CakeProphet> `calc cubic 8
01:22:26 <HackEgo> 512
01:22:31 <CakeProphet> excellent
01:22:35 <elliott> `calc beardsecond := 5 nm; 99 mph -> megabeardseconds/minute
01:22:43 <HackEgo> 13277088/25 (exactly 531083.52)
01:22:46 <CakeProphet> bahahaha
01:23:10 <elliott> `calc beardsecond := 5 nm; 99 acres -> square terabeardseconds
01:23:18 <HackEgo> 31049568/1937496125 (approx. 0.01602561553510204)
01:23:21 <elliott> imo square terabeardseconds is best unit
01:23:41 <elliott> `calc beardsecond := 5 nm; moon area -> square terabeardseconds
01:23:48 <CakeProphet> `quote monqy.*?agree
01:23:49 <HackEgo> Warning: undefined symbol "area". \ Warning: undefined symbol "moon". \ Warning: undefined symbol "area". \ Warning: undefined symbol "moon". \ Unconvertable expression: \ area (undefined symbol) moon (undefined symbol) -> 25000000 m^2 (area)
01:23:51 <HackEgo> 682) <monqy> i agree with elliott
01:23:55 <elliott> `frink ??moon
01:24:03 <HackEgo> ​[moonmass = 7.3483e+22 kg (mass), \ moondist = 3.84400000e+8 m (length), \ moonlum = 2500 m^-2 cd (illuminance), \ moongravity = 1.62 m s^-2 (acceleration), \ moonradius = 1738000 m (length)]
01:24:27 <CakeProphet> `frink c
01:24:36 <HackEgo> 299792458 m s^-1 (velocity)
01:24:53 <elliott> `calc beardsecond := 5 nm; moonmass -> sugar cubic terabeardseconds
01:25:02 <HackEgo> 6.9540853530918000001e+8
01:25:09 <elliott> How many cubic terabeardsecond cups of sugar do you need to have the same mass as the moon?
01:25:10 <elliott> Ah.
01:25:34 <CakeProphet> `frink 299792458 m s^-1
01:25:40 <elliott> CakeProphet: I think I might have made the best calculation possible in my entire life.
01:25:43 <HackEgo> 299792458 m s^-1 (velocity)
01:25:45 <elliott> Do I kill myself now?
01:25:51 <CakeProphet> so I guess spaces do multiplication or something.
01:25:58 <elliott> yep
01:26:03 <CakeProphet> elliott: no you strive to become even more excellent
01:26:35 <CakeProphet> become unpossible in your entire life.
01:26:49 <CakeProphet> calculations
01:26:51 <CakeProphet> .
01:27:00 <elliott> Hmmmmmmmmmmm
01:27:23 <CakeProphet> `calc moonmass
01:27:27 <CakeProphet> `calc feet
01:27:31 <elliott> `calc atom -> bits
01:27:33 <HackEgo> 7.3483e+22 kg (mass)
01:27:39 <HackEgo> 381/1250 (exactly 0.3048) m (length)
01:27:41 <HackEgo> Warning: undefined symbol "atom". \ Unconvertable expression: \ atom (undefined symbol) -> 1 bit (information)
01:27:42 <elliott> I need to figure out how many bits, exactly, are in ten cups of sugar.
01:27:47 <elliott> `calc mol -> bits
01:27:50 <elliott> COME ON, CALCULATE MY BULLSHIT
01:27:53 <CakeProphet> `calc m
01:27:56 <HackEgo> Conformance error \ Left side is: 1 mol (amount_of_substance) \ Right side is: 1 bit (information) \
01:28:02 <HackEgo> 1 m (length)
01:28:19 <CakeProphet> I was wondering how it handles units.
01:28:25 <CakeProphet> it just, does.
01:28:38 <elliott> It has a set of primitive units.
01:28:41 <elliott> Everything else reduces to them.
01:28:45 <CakeProphet> rght
01:28:46 <CakeProphet> +i
01:28:48 <elliott> On top of that, it has a set of configured display units, that everything displays in by default.
01:28:59 <elliott> And then it handles all the operations like multiplication, division, powers, etc. on units.
01:29:20 <CakeProphet> `calc ?tempF
01:29:22 <CakeProphet> `calc ?F
01:29:29 <HackEgo> No matches found.
01:29:32 <HackEgo> ​[doricfoot, frenchinch, lateromanfoot, statfarad, daraf, fluidounce, degreeFahrenheit, fbm, degfahrenheit, olympicfinger, Rinfinity, greekfeet, fingerlength, footlambert, sulfur, frenchfeet, thaifung, fresnel, flemishell, femto, tonsrefrigeration, irishfurlong, fourier, imperialfloz, californium, hafnium, lbf, tonref,
01:29:45 <elliott> `frink editDistance["poop", "scoop"]
01:29:53 <HackEgo> 2
01:29:56 <elliott> CakeProphet: try ?fahren
01:30:11 <CakeProphet> `calc 100 degfahrenheit -> degcelsius
01:30:14 <CakeProphet> `calc ?fahren
01:30:21 <elliott> CakeProphet: it's F btw
01:30:21 <HackEgo> 500/9 (approx. 55.55555555555556)
01:30:24 <HackEgo> ​[degreeFahrenheit, degfahrenheit, Fahrenheit[x]]
01:30:26 <elliott> `frink 99 F -> C
01:30:34 <elliott> CakeProphet: Also,
01:30:35 <elliott> degfahrenheit := 5/9 degC // The *size* of a degree in the Fahrenheit scale.
01:30:35 <elliott> degreeFahrenheit := degfahrenheit // The *size* of a degree in the Fahrenheit scale.
01:30:35 <elliott> degF := degfahrenheit // WARNING: These should only be used when
01:30:35 <elliott> // you're indicating the *difference* between
01:30:35 <elliott> // two temperatures, (say, how much energy to
01:30:35 <HackEgo> Error
01:30:37 <elliott> // raise the temperature of a gram of water by 5
01:30:39 <elliott> // degrees Fahrenheit, *not* for absolute
01:30:41 <elliott> // temperatures. (I wonder if they should go
01:30:43 <elliott> // entirely to eliminate this confusion...)
01:30:45 <elliott> // For calculating absolute temperatures, use
01:30:47 <elliott> // the Fahrenheit[] or F[] functions below.
01:30:49 <elliott> `frink 99 F -> celsius
01:30:58 <HackEgo> Unknown symbol "celsius" \ Warning: undefined symbol "celsius". \ Unconvertable expression: \ 99 m^-2 s^4 kg^-1 A^2 (capacitance) -> celsius (undefined symbol)
01:31:17 <elliott> Pah :P
01:31:27 <CakeProphet> ah okay.
01:31:29 <elliott> Oh
01:31:31 <elliott> Case sensitive
01:31:34 <elliott> `frink 99 F -> Celsius
01:31:42 <elliott> Ohh
01:31:43 <HackEgo> Error
01:31:45 <elliott> I see, I see
01:31:48 <CakeProphet> yeah what are you doing :P
01:32:02 <elliott> Grep for // Function for converting Fahrenheit to/from standard units
01:32:03 <CakeProphet> `calc F[99]
01:32:04 <elliott> in http://futureboy.us/frinkdata/units.txt
01:32:12 <HackEgo> 310.37222222222222222 K (temperature)
01:32:13 <elliott> basically because it's not a multiplication factor
01:32:15 <CakeProphet> right
01:32:16 <elliott> it can't be a simple unit
01:32:20 <elliott> CakeProphet: You can write that as
01:32:20 <CakeProphet> this is what units does
01:32:22 <elliott> `calc 99 -> F
01:32:28 <CakeProphet> with tempF and tempC
01:32:28 <elliott> which is a bit nicer.
01:32:30 <elliott> Right.
01:32:31 <HackEgo> 310.37222222222222222 K (temperature)
01:32:49 <CakeProphet> I suppose K is the temperature primitive then.
01:32:53 <CakeProphet> that... uh... makes sense.
01:32:55 <elliott> \u2109 := degfahrenheit // Single Unicode codepoint for
01:32:55 <elliott> // DEGREE FAHRENHEIT
01:32:56 <elliott> Useful
01:33:03 <elliott> CakeProphet: It's based on SI units whenever possible
01:33:06 <elliott> But you can change the display units:
01:33:21 <elliott> `calc temperature :-> "Celsius"; 99 -> F
01:33:28 <elliott> It's the smiley face operator.
01:33:31 <HackEgo> BasicUnitFormatterManager: Warning: cannot find unit 'Celsius' -- you may get errors when displaying units of this type later. \ 37.22222222222222222
01:33:37 <elliott> Oh, god, I'm an idiot
01:33:44 <CakeProphet> oh no you've angered the BasicUnitFormatterManager
01:34:00 <elliott> OK, lemme figure this out :P
01:34:03 <CakeProphet> elliott: today does not seem to be your day.
01:34:10 <CakeProphet> you're making as many mistakes I typically make with hackego stuff.
01:34:11 <elliott> Aha
01:34:11 <elliott> So, the size of a Kelvin
01:34:11 <elliott> // and a degree Celsius are the same, but
01:34:11 <elliott> // the zero point of the Celsius scale is actually
01:34:11 <elliott> // set to .01 Kelvin below the triple point.
01:34:25 <elliott> That is... so stupid :P
01:34:40 <CakeProphet> so temperature is all fucked up in frink
01:34:41 <elliott> SO YEAH I TOTALLY LOVE IT DISPLAYING IN KELVINS NO DEBATE
01:34:44 <elliott> CakeProphet: No
01:34:47 <elliott> CakeProphet: Temperature is all fucked up in real life
01:34:50 <elliott> He's quoting the actual standards
01:34:55 <CakeProphet> oh okay.
01:35:54 <CakeProphet> `calc ??bit
01:35:59 <CakeProphet> `calc ??byte
01:36:03 <HackEgo> ​[blackcubit = 0.540512 m (length), \ hebrewcubit = 0.446532 m (length), \ egyptianshortcubit = 0.44914457142857142856 m (length), \ bit = 1 bit (information), \ shortgreekcubit = 0.35575875 m (length), \ romancubit = 111/250 (exactly 0.444) m (length), \ greekcubit = 0.474345 m (length), \ persianroyalcubit =
01:36:07 <HackEgo> ​[byte = 8 bit (information)]
01:36:11 <CakeProphet> blackcubit?
01:36:13 <elliott> http://futureboy.us/frinksamp/derivatives.frink
01:36:17 <elliott> LIKE SCOTCH BUT BETTER
01:36:30 <CakeProphet> so many cubits.
01:36:52 <CakeProphet> this program will be useful for whenever I decide to make a historic RP MUD
01:36:56 <Gregor> Wow, X-Chat Aqua really sucks.
01:37:03 <Gregor> But brew can't build X-Chat for me >_<
01:37:31 <CakeProphet> so I can say "the palace of the Gupta ruler is 215123135981240981240812 Guptan cubits"
01:37:31 <elliott> Gregor: Don't use XChat.
01:37:36 <CakeProphet> or whatever measurement the Gupta dynasty used.
01:37:40 <elliott> Gregor: http://limechat.net/mac/
01:37:46 <elliott> Gregor: Trust me :P
01:37:58 <Gregor> elliott: I used it for a while.
01:37:59 <Gregor> It sucks.
01:38:11 <elliott> Gregor: It's not all that fully-featured, but it's also not painful. You want to run ported software on OS X; it will be painful.
01:38:12 <Gregor> Just tried X-Chat Aqua to see if it sucks less.
01:38:13 <Gregor> It doesn't.
01:38:25 <elliott> LimeChat is okay, it's just not very fleshed out.
01:38:27 <elliott> At least it has ignores nowadays.
01:38:47 <Gregor> Limechat's huge issue for me is that it remembers channels from session to session.
01:38:48 <elliott> `calc 215123135981240981240812 persianroyalcubits -> m
01:38:56 <HackEgo> 1.3769601687887272727e+23
01:38:59 <Gregor> So if I ever restart it, it forceably rejoins every channel I've ever been in, which is godawful with a BNC.
01:39:02 <elliott> Gregor: Tried Cmd+W? :-P
01:39:07 <elliott> Gregor: But I think you can disable that.
01:39:12 <elliott> It's in the server prefs or main prefs I believe.
01:39:30 <CakeProphet> `calc ??fourier
01:39:34 <Gregor> OK, X-Chat Aqua is seriously unusable.
01:39:39 <HackEgo> ​[fourier = 1 m^-2 s^3 kg^-1 K^2 (unknown unit type)]
01:39:41 <Gregor> *fffffff*
01:39:53 <CakeProphet> does this thing let me look up functions?
01:40:22 <CakeProphet> wait what the hell is a fourier
01:40:52 <elliott> CakeProphet: Ooh, I forgot YET ANOTHER THING Frink can do:
01:40:55 <elliott> `frink g = new graphics; g.text["Hello, world!", 0, 0]; g.write["foo.png", 640, 480]
01:41:05 <HackEgo> DrawTextExpression: Don't have environment! \ GraphicsUtils:getWriterFormatNames: \ java.lang.reflect.InvocationTargetException \ Warning: unknown extension 'png' when writing image file 'foo.png'. Image file will probably not render correctly. \ The file formats supported for writing by your Java platform are:
01:41:09 <CakeProphet> temperature per square length mass?
01:41:13 <elliott> Javaaaaaaaaaaaaa >_<
01:41:34 <elliott> `run frink 'g = new graphics; g.text["Hello, world!", 0, 0]; g.write["foo.png", 640, 480]' 2>&1 | paste2
01:41:39 <elliott> CakeProphet: And yes, (?)? looks up everything
01:41:43 <elliott> `frink ??java
01:41:44 <HackEgo> sh: paste2: command not found
01:41:53 <HackEgo> ​[Javanese[str], \ FromJavanese[str], \ staticJava[arg1,arg2], \ newJava[arg1], \ newJava[arg1,arg2], \ callJava[arg1,arg2,arg3], \ newJavaArray[arg1,arg2]]
01:41:53 <CakeProphet> `calc ??fft
01:41:58 <elliott> `run frink 'g = new graphics; g.text["Hello, world!", 0, 0]; g.write["foo.png", 640, 480]' 2>&1 | paste
01:42:01 <CakeProphet> Javanese?
01:42:03 <HackEgo> No matches found.
01:42:06 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.18412
01:42:07 <CakeProphet> language translation?
01:42:09 <elliott> CakeProphet: Grep /FFT/ on http://futureboy.us/frinkdocs/
01:42:26 <elliott> Also the library
01:42:27 <elliott> Fourier[text] Routines for discrete and fast Fourier transforms (FFT) of data.
01:42:39 <elliott> which we can't access without manual downloading because Gregor hasn't told me how to get HTTP working yet.
01:42:52 <elliott> The file formats supported for writing by your Java platform are:
01:42:53 <elliott> GraphicsUtils:getWriterFormatNames:
01:42:53 <elliott> java.lang.reflect.InvocationTargetException
01:42:54 <elliott> Wow :P
01:42:58 <elliott> `rm foo.png
01:42:59 <HackEgo> rm: cannot remove `foo.png': No such file or directory
01:43:02 <Gregor> `run echo $http_proxy
01:43:03 <HackEgo> http://127.0.0.1:3128
01:43:09 <CakeProphet> `calc Javanese["Hello"]
01:43:20 <HackEgo> Error reading from http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&format=text&langpair=en|jw&q=Hello: \ java.net.UnknownHostException: ajax.googleapis.com:80 \ Error when calling function Javanese: \ Error when calling function translate: \ MatchExpression: left must be string. Expression was undef
01:43:22 <elliott> Like I said
01:43:23 <elliott> No HTTP yet
01:43:25 <elliott> Gregor: Tried that
01:43:28 <elliott> Gregor: Four-oh-three'd
01:43:36 <elliott> CakeProphet: Anyway, the FFT implementation is in http://futureboy.us/frinksamp/Fourier.frink (grep for "// Fast Fourier Transform")
01:43:41 <Gregor> elliott: Well, you can only access what I've whitelisted.
01:43:43 <elliott> CakeProphet: It probably isn't, uh, fast, though, being implemented in Frink itself.
01:43:56 <CakeProphet> "F"FT
01:44:01 <elliott> Gregor: Can you whitelist a bunch of domains for me? :P
01:44:09 <Gregor> I /can/.
01:44:12 <Gregor> But I /won't/.
01:44:21 <CakeProphet> `calc binomial[3,4]
01:44:23 <elliott> Gregor: They're just translation, currency conversion, and the like.
01:44:25 <Gregor> Anything you can't get through `fetch, you don't need :P
01:44:30 <HackEgo> 0
01:44:34 <elliott> Gregor: Oh come on :P
01:44:44 <CakeProphet> so this thing is kind of like Mathematica kind of.
01:44:53 <elliott> Gregor: It lets us convert CURRENT GOLD PRICES to HISTORICAL VALUES OF THE POUND IN THE EIGHTEENTH CENTURY
01:45:02 <elliott> And then TRANSLATE OUR THESIS ON IT TO ARABIC
01:45:13 <Gregor> What about ...
01:45:15 <Gregor> Linear-B?
01:45:23 <elliott> Gregor: No :P
01:45:30 <elliott> .
01:45:35 <Gregor> Interest waning ...
01:45:35 * elliott tries to find a definitive list of the domains Frink needs.
01:45:36 <CakeProphet> it's like mathematica but with units.
01:45:45 <CakeProphet> >_>
01:45:57 * CakeProphet doesn't actually know much about mathematica
01:45:59 <elliott> Gregor: What IS on the whitelist, anyway
01:46:12 <Gregor> elliott: Mostly Google and Wikipedia.
01:46:18 <Gregor> Probably a couple other things.
01:46:19 <elliott> `calc println[join["\n",sort[lines["http://google.com/"]]]]
01:46:28 <HackEgo> LineEnumeration: could not open http://google.com/: \ java.net.UnknownHostException: google.com:80 \ at frink.e.f$a.a(frink) \ at frink.e.f$a.access$000(frink) \ at frink.e.f.do(frink) \ at frink.expr.s.a(frink) \ at frink.c.e$20.do(frink) \ at frink.c.s.if(frink) \ at frink.c.f.a(frink) \ at
01:46:30 <elliott> for line = lines[url]
01:46:30 <elliott> for [result] line =~ %r/(\w+@(?:\w|\.)+\.\w+)/g
01:46:30 <elliott> println[result]
01:46:36 <elliott> I like how Frink is better at some Perl things than Perl is
01:46:49 <CakeProphet> I'm guessing %r is like s?
01:46:57 <CakeProphet> how is that better than Perl? :P
01:46:59 <elliott> It's the regexp literal syntax, so ... not really?
01:47:03 <elliott> CakeProphet: Note "url"
01:47:10 <elliott> All of Frink's file reading functions work on URLs.
01:47:21 <CakeProphet> oh well that's cool I guess.
01:47:29 * elliott adds the HTTP proxy stuff.
01:47:31 <elliott> Or, hmm
01:47:34 <CakeProphet> I /do/ have to add a use LWP to get that in Perl.
01:47:34 <elliott> I'm not sure -D will even work
01:47:39 <CakeProphet> so I guess that's something.
01:48:00 <CakeProphet> still no $_ goodness.
01:48:43 <elliott> You could assign it to a variable named _, I believe
01:48:57 <CakeProphet> that's not quite how $_ works though
01:49:04 <elliott> CakeProphet: Also, note how that iterates through all regexp matches
01:49:11 <elliott> Of that specific group
01:49:13 <CakeProphet> I see.
01:49:34 <CakeProphet> each match in the string or each group in the match?
01:49:36 * elliott recompiles a frink with the proxy settings.
01:49:42 <elliott> CakeProphet: Each match
01:49:54 <CakeProphet> ah yes okay. same as perl then.
01:49:58 <CakeProphet> with g on
01:50:25 * elliott reuploads
01:50:37 <elliott> CakeProphet: How do you go through each match in Perl?
01:50:55 <CakeProphet> while (/blah/g)
01:51:05 <elliott> Ah
01:51:28 <CakeProphet> I'm sure there's another way to do it with a for loop
01:51:30 <CakeProphet> but that's the one I use.
01:52:23 <elliott> `run mv frink lib
01:52:26 <HackEgo> No output.
01:52:31 <elliott> `calc read["http://google.com/"] =~ %s/<[^>]*>//gs
01:52:33 <HackEgo> ​/hackenv/bin/calc: line 2: /hackenv/lib/frink: Permission denied \ /hackenv/bin/calc: line 2: exec: /hackenv/lib/frink: cannot execute: Success
01:52:40 <elliott> `run chmod +x lib/frink
01:52:42 <HackEgo> No output.
01:52:44 <elliott> `calc read["http://google.com/"] =~ %s/<[^>]*>//gs
01:52:52 <HackEgo> Googlewindow.google={kEI:"eriLTsLEIqLjiALV-K36AQ",getEI:function(a){var b;while(a&&!(a.getAttribute&&(b=a.getAttribute("eid"))))a=a.parentNode;return b||google.kEI},kEXPI:"28936,30465,33068,33076,33104",kCSI:{e:"28936,30465,33068,33076,33104",ei:"eriLTsLEIqLjiALV-K36AQ"},authuser:0,ml:function(){},kHL:"en",time:function(){return(new
01:53:14 <CakeProphet> `run perl -e '$_="tttt"; print /t/g'
01:53:17 <HackEgo> tttt
01:53:26 <CakeProphet> ah okay for or while doesn't matter.
01:53:43 <CakeProphet> `run perl -e '$_="tttt"; print for /t/g'
01:53:45 <HackEgo> tttt
01:53:49 <elliott> `run strings lib/frink | grep 'http://' | paste
01:53:49 <CakeProphet> `run perl -e '$_="tttt"; print while /t/g'
01:53:51 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.31036
01:53:52 <HackEgo> tttttttttttttttt
01:53:55 <CakeProphet> ....er
01:54:18 <CakeProphet> okay so while is probably not what you want.
01:55:01 <elliott> Gregor: OK, how much pleading do I gotta do to get these domains whitelisted: www.systranbox.com, www.systranet.com, www.xe.com, babelfish.altavista.com, futureboy.us, www.measuringworth.com, ajax.googleapis.com?
01:55:15 <Gregor> Depends, how many of those are secretly porn?
01:55:18 <elliott> Those are all currency conversion and translation, apart from futureboy.us which is the Frink site and contains all the auto-downloadable libraries.
01:55:23 <Gregor> "futureboy.us" looks like gay porn to me.
01:55:28 <elliott> http://futureboy.us/ :P
01:56:30 <elliott> Gregor: Anyway, I think `fetch would be more useful to download gay porn than any sort of scripted thing :P
01:56:35 <CakeProphet> The /g modifier specifies global pattern matching--that is, matching as many times as possible within the string. How it behaves depends on the context. In list context, it returns a list of the substrings matched by any capturing parentheses in the regular expression. If there are no parentheses, it returns a list of all the matched strings, as if there were parentheses around the whole pattern.
01:56:48 <Gregor> elliott: Well yeah, that's what it's for.
01:56:49 <CakeProphet> In scalar context, each execution of m//g finds the next match, returning true if it matches, and false if there is no further match.
01:57:09 <elliott> Gregor: Right. Unfortunately I have no interest in gay porn, and tons of interest in Frink libraries, currency conversion, and translation :P
01:57:21 <Gregor> Pfff.
01:57:29 <elliott> (I take it adding the normal domain includes the www. subdomain too? Just thinking of redirections and the like.)
01:57:30 <Gregor> The effort involved in adding them RIGHT NOW is over my lazy threshold.
01:57:41 <elliott> Is it part of the repo?
01:57:44 <elliott> I could send you a patch.
01:57:46 <elliott> `help
01:57:47 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/
01:58:31 <Gregor> No, it's not.
01:58:40 <elliott> Repeat after me: Laaaaaaaame
01:58:43 <elliott> Quick CakeProphet repeat.
01:58:58 <CakeProphet> `quote monqy.*?agree
01:59:01 <HackEgo> 682) <monqy> i agree with elliott
01:59:24 <elliott> .*? = .*; this isn't Perl.
01:59:27 <Gregor> `quote [^]]agree.*elliott
01:59:30 <HackEgo> 682) <monqy> i agree with elliott
01:59:36 <Gregor> Err
01:59:37 <Gregor> I meant
01:59:40 <elliott> lol
01:59:41 <Gregor> `log [^]]agree.*elliott
01:59:44 <CakeProphet> why would .*? = .* that's silly
02:00:04 <HackEgo> 2011-10-05.txt:01:59:30: <HackEgo> 682) <monqy> i agree with elliott
02:00:07 <Gregor> lol
02:00:11 <elliott> You can't make zero-or-more optional; it already IS optional.
02:00:27 <CakeProphet> that's not what ? means
02:00:28 <CakeProphet> there
02:00:34 <elliott> ? means optional everywhere.
02:00:37 <CakeProphet> nope
02:00:52 <elliott> Yes.
02:00:55 <elliott> Perl mind virus.
02:00:58 <CakeProphet> ? is non-greedy in perl when used after * or +
02:01:26 <CakeProphet> this is, I thought, how most regexes workd. For example, PCRE and Python
02:01:29 <CakeProphet> this is most
02:01:29 <CakeProphet> of them.
02:01:32 <CakeProphet> yep.
02:02:28 <elliott> What would it even mean to non-greedily grep?
02:02:30 <elliott> It just prints out matching lines.
02:02:51 <CakeProphet> it's non-greedy matching one or zero repetitions of .
02:02:55 <CakeProphet> which is useful
02:03:01 <CakeProphet> for not having . match everything
02:03:20 <CakeProphet> .*? = "some stuff inbetween the thing before and the thing after it"
02:03:55 -!- oerjan has quit (Remote host closed the connection).
02:04:08 -!- oerjan has joined.
02:04:31 <CakeProphet> .* = "MATCH EVERYTHING UP TO A LINE BAHAHAHAHAHA SUCKER"
02:04:38 <elliott> CakeProphet: You do not understand.
02:04:41 -!- pikhq has quit (Ping timeout: 256 seconds).
02:04:47 <CakeProphet> of course in actual programs I try to avoid .*? in favor of something more efficient.
02:04:48 <elliott> Non-greedy matching would never change whether grep prints a line or not.
02:05:08 <CakeProphet> erm...
02:05:22 <CakeProphet> `quote monqy.*agree
02:05:25 <HackEgo> 682) <monqy> i agree with elliott
02:05:55 <CakeProphet> why?
02:06:35 <CakeProphet> does it not match . to the end of the line?
02:06:55 <elliott> Um... you realise that monqy.*agree would work in Perl, Python, etc. too?
02:07:15 <elliott> "Regexps are declarative" is the closest I can come to answering your question, because it doesn't make any sense.
02:07:27 <elliott> The string has a monqy in it; it then has an arbitrary amount of text, followed by an agree.
02:07:39 <oerjan> 01:46:12: <Gregor> elliott: Mostly Google and Wikipedia.
02:07:45 <oerjan> not esolang, check
02:07:47 <elliott> That is fact. If a regular expression algorithm cannot confirm that that string matches that regular expression, then it is just... broken.
02:09:04 <Gregor> `curl esolangs.org
02:09:07 <HackEgo> ​% Total % Received % Xferd Average Speed Time Time Time Current \ Dload Upload Total Spent Left Speed \ .100 1110 100 1110 0 0 8034 0 --:--:-- --:--:-- --:--:-- 8034.100 1110 100 1110 0 0 6976 0 --:--:-- --:--:-- --:--:-- 0
02:09:11 <Gregor> Grrf
02:09:15 <CakeProphet> elliott: erm...
02:09:16 <Gregor> `run curl esolangs.org 2> /dev/null
02:09:18 <HackEgo> ​<?xml version="1.0" encoding="UTF-8"?> \ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" \ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> \ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> \ \ <head> \ <meta http-equiv="content-type" \ content="application/xhtml+xml; charset=utf-8" />
02:09:25 <elliott> Gregor: Did you just add esolangs.org before adding the ones I asked for? X-D
02:09:29 -!- pikhq has joined.
02:09:30 <CakeProphet> elliott: what you're basically saying is "all * and + are non-greedy always"
02:09:35 <Gregor> elliott: No, was just checking if it's already there.
02:09:45 <Gregor> elliott: I don't have the keys set up to SSH from here, so it's bleh.
02:09:54 <elliott> Gregor: abcdefghijklmnopqrstuvwxyz
02:10:01 <elliott> If you need any punctuation, well... me too, man, me too.
02:10:56 <oerjan> who removed the punctuation from the topic.
02:11:03 <elliott> atehwa.
02:11:13 * oerjan swats atehwa -----###
02:11:18 <elliott> My disabilities must end with the passing of the Esolang event in Hel/Finland.
02:11:28 <CakeProphet> `run perl -e '$_="this is a test"; /this(.*?)test/; print $1;
02:11:30 <HackEgo> sh: -c: line 0: unexpected EOF while looking for matching `'' \ sh: -c: line 1: syntax error: unexpected end of file
02:11:44 <CakeProphet> `run perl -e '$_="this is a test"; /this(.*)test/; print $1;'
02:11:46 <oerjan> elliott: it's a miracle!
02:11:47 <HackEgo> is a
02:11:49 <CakeProphet> `run perl -e '$_="this is a test"; /this(.*?)test/; print $1;'
02:11:51 <HackEgo> is a
02:11:54 <CakeProphet> o_o
02:12:14 <elliott> CakeProphet: For someone who's such a fan of Perl, you think you'd realise that the major strength of regexps is that they're declarative.
02:12:33 <CakeProphet> elliott: no I just misunderstood the greediness semantics entirely.
02:12:59 <elliott> Pretty sure you can't give a declarative semantics that makes .* behave in such a broken manner.
02:13:07 <elliott> It would necessarily involve detailing a sequential scanning algorithm.
02:13:54 <CakeProphet> `run perl -e '$_="this is a test is a test"; /this(.*?)test/; print $1;'
02:13:57 <HackEgo> is a
02:13:58 <CakeProphet> `run perl -e '$_="this is a test is a test"; /this(.*)test/; print $1;'
02:14:01 <HackEgo> is a test is a
02:14:26 <CakeProphet> that is how greediness works. okay got it.
02:14:37 <elliott> Changing greediness only changes what matches you might get from a regexp.
02:15:01 <elliott> It never, ever changes whether it matches or not.
02:15:15 <elliott> Because either there are multiple matches to choose from -- in which case greediness effects which you pick but does not affect whether the line as a whole matches --
02:15:25 <elliott> or there is no choice to make between N possible matches, and so the greediness flag has no effect.
02:15:37 <elliott> Therefore greediness is completely irrelevant for grep, apart from when it's used interactively and highlights the matching portion.
02:15:53 <CakeProphet> I was assuming a degree of procedural simplicity to the algorithm, I suppose.
02:16:18 -!- ive has joined.
02:16:38 <CakeProphet> it's just never been a problem because I almost always write .*? and it always does what I expect.
02:17:42 <elliott> That is the worst habit I've ever heard of.
02:17:56 <CakeProphet> I don't always write *? just .*?
02:17:56 <elliott> You usually want ".*".
02:20:08 -!- CakeProp1et has joined.
02:20:44 <CakeProp1et> >_> I would think you usually want .* to match minimally in a complex pattern.
02:20:47 <CakeProp1et> but it really just depends on what you're doing
02:21:05 -!- pikhq_ has joined.
02:21:07 <CakeProp1et> s/\.\*/.*?/
02:22:22 -!- CakeProphet has quit (Ping timeout: 245 seconds).
02:22:44 -!- CakeProp1et has changed nick to CakeProphet.
02:24:13 -!- pikhq has quit (Ping timeout: 252 seconds).
02:24:41 <CakeProphet> elliott: also to what degree I'm actually a "perl fan" is debatable. :P
02:24:52 <CakeProphet> but I guess it's a fair description.
02:24:59 <CakeProphet> given my history.
02:26:12 <oerjan> i expect .*? to be more efficient if .* needs to backtrack a lot for the whole to match
02:27:05 <oerjan> and assuming it doesn't get compiled into a [ND]FA
02:28:00 <elliott> oerjan: You can't compare the performance of two programs that don't do the same thing.
02:28:05 <elliott> And that's a lousy assumption to make. :p
02:28:33 <oerjan> depends on the complexity of the regex...
02:28:39 <oerjan> if there are backreferences
02:28:55 <elliott> Some regexp.
02:30:32 <oerjan> if there are backreferences it will not usually be regular, so cannot become a finite automaton.
02:30:33 -!- Nisstyre has quit (Ping timeout: 248 seconds).
02:33:22 <elliott> readTVar is cheap, right?
02:33:38 <oerjan> no idea
02:33:43 <elliott> As in, if I have a variable read from a lot of places but only written from one, using a TVar for consistency won't add much overhead?
02:33:52 <elliott> I know it would with an MVar because a read is basically a take and a put, but I don't think it's true for STM
02:34:09 <elliott> At least that's my intuitive understanding :P
02:35:00 -!- Nisstyre has joined.
02:43:10 <elliott> eoarhlo
02:43:37 <elliott> Oh this will be useful:
02:43:54 <elliott> `frink 99 -> senary
02:44:02 <HackEgo> 243
02:44:19 <elliott> `frink parseInt["243", senary]
02:44:26 <elliott> Hmm, might have to specify the number seven instead of senary there
02:44:28 <HackEgo> Error when calling function parseInt: \ Second argument to parseInt must be an integer. \ at frink.c.ab.a(frink) \ at frink.c.ab.evaluate(frink) \ at frink.parser.Frink.parseString(frink) \ at frink.parser.Frink.parseStrings(frink) \ at frink.parser.Frink.main(frink) \ Error when calling function parseInt:
02:44:32 <elliott> `frink parseInt["243", 7]
02:44:41 <HackEgo> 129
02:45:01 <elliott> `frink messageDigestInt["abc", "SHA-512"] -> nonary
02:45:10 <HackEgo> 262827730040205642614466440440232551770554584231506366374325431342721804221340285445347202750758683730362606388826870860288613438235502803411426336365100834080128
02:45:12 <elliott> Yessssssssssssssssssssssssssssssssssssssssssssss;dfkglhd
02:45:46 -!- yours_truly has joined.
02:46:33 -!- Nisstyre has quit (Ping timeout: 248 seconds).
02:46:37 <elliott> Hey, oerjan still didn't name my ellipsisatification function
02:47:18 <oerjan> i so did!
02:47:36 <elliott> oerjan: What did you name it?
02:47:43 <pikhq_> elliott: Using readTVar prolifically and putTVar rarely is extremely cheap, and the use-case STM is optimised for.
02:47:44 <oerjan> `frink 99 -> undecimal
02:47:54 <HackEgo> Unknown symbol "undecimal" \ Warning: undefined symbol "undecimal". \ Unconvertable expression: \ 99 -> undecimal (undefined symbol)
02:48:00 <elliott> pikhq_: Right, it's just that there will literally never be a conflict, because the TVar is only modified from one thread.
02:48:05 <oerjan> elliott: procrustean
02:48:05 <elliott> ...Hmm, that might not actually be true :P
02:48:09 <elliott> Yeah I'll just use TVars for everything.
02:48:11 <elliott> oerjan: NOT GOOD
02:48:19 <elliott> oerjan: What's undecimal meant to be
02:48:41 <oerjan> 11
02:48:42 -!- yours_truly has quit (Client Quit).
02:48:45 <elliott> `frink 99 -> undenary
02:48:46 <monqy> ellipse was a good name too
02:48:48 <pikhq_> readTVar basically is just a straight read from a var, except only happening on transaction commit. It is only ever more than slight overhead if the transaction is invalid.
02:48:54 <HackEgo> 90
02:48:59 <oerjan> wtf
02:49:03 <elliott> pikhq_: readTVarIO avoids the transaction too :P
02:49:03 <pikhq_> If the transaction's invalid, you get to do the transaction all over again.
02:49:10 <elliott> oerjan: ?
02:49:26 <pikhq_> So, it's cheap unless you're putting to the var very often.
02:49:32 <oerjan> `frink 99 -> denary
02:49:35 <pikhq_> Say, at the point where I wonder why the hell you're doing threads.
02:49:41 <elliott> http://www.wolframalpha.com/input/?i=99+in+undecimal
02:49:41 <HackEgo> 99
02:49:43 <elliott> definitely correct
02:49:50 <elliott> oerjan: AKA decimal :P
02:49:56 <oerjan> O KAY
02:50:02 -!- ralc has quit (Remote host closed the connection).
02:50:27 <elliott> pikhq_: Hmm, I wonder how I'll handle the case of e.g. teleports.
02:50:42 <oerjan> `frink 99 -> duovigintesimal
02:50:42 <elliott> I want to unilaterally set the position of a player, even though it'll be changing constantly because e.g. they're running.
02:50:48 <elliott> Oh, I guess modifyTVar will avoid conflicts in that case?
02:50:51 <HackEgo> Unknown symbol "duovigintesimal" \ Warning: undefined symbol "duovigintesimal". \ Unconvertable expression: \ 99 -> duovigintesimal (undefined symbol)
02:50:55 <elliott> Or will it?
02:51:02 <elliott> Wait, there is no modifyTVar :P
02:51:07 <elliott> But yeah, not sure what to do there.
02:51:13 <elliott> The player thread will be constantly incrementing their position.
02:51:23 <elliott> So there'll be a conflict every time the teleportation transaction runs.
02:51:34 <oerjan> elliott: hm, "cropText"
02:51:36 <elliott> I mean, sure, they'll stop running EVENTUALLY, but it means you can theoretically indefinitely postpone being teleported.
02:51:37 <pikhq_> The player thread will itself be running transactions.
02:51:56 <elliott> oerjan: I wanted to call it "truncate" but that's taken.
02:52:03 <elliott> oerjan: I'd rather avoid "Text" since I use the Text type :P
02:52:07 <elliott> (but this takes Strings)
02:52:12 <oerjan> cropWhatever
02:52:13 <pikhq_> It is equally likely the incrementing of the position will be the transaction that gets retried.
02:53:01 <elliott> pikhq_: Oh, I thought it'd retry them both simultaneously.
02:53:11 <elliott> Right, duh, of course retrying is sequential whenever that would matter.
02:53:25 -!- Nisstyre has joined.
02:53:53 <pikhq_> What happens is that each time it tries to commit a transaction, at least one transaction will actually commit.
02:54:16 <pikhq_> And it will continue down the list of transactions to commit sequentially, only retrying the ones that fail.
02:54:45 <elliott> Right.
02:54:46 <pikhq_> So, you're *always* getting at least one transaction to succeed, and in the common case multiple transactions will succeed.
02:55:16 <pikhq_> Notice that the worst-case behavior is basically sequential execution with added overhead. :)
02:56:14 <elliott> oerjan: the problem with ellipse is that it reads like a noun to me...
02:56:15 <elliott> :P
02:56:24 <elliott> hmm... cutString?
02:56:29 <elliott> cutoff?
02:56:36 <oerjan> CROP I SAY
02:56:37 <elliott> oerjan: monqy: how does cutoff sound?
02:58:51 <monqy> cutoff is okay but it does more than that it's more of a fadeout but that's awful
02:59:33 <elliott> > let cutoff end n xs | n <= length end && xs `isLongerThan` n - length end = end; cutoff end n (x:xs) = x : cutoff end (n-1) xs; isLongerThan _ [] = False; isLongerThan 0 _ = True; isLongerThan n (_:xs) = isLongerThan (n-1) xs in cutoff "..." 9 "abc"
02:59:34 <lambdabot> Couldn't match expected type `[t]'
02:59:34 <lambdabot> against inferred type `GHC.Types...
02:59:39 <elliott> > let cutoff end n xs | n <= length end && xs `isLongerThan` n - length end = end; cutoff end n (x:xs) = x : cutoff end (n-1) xs; isLongerThan _ [] = False; isLongerThan 0 _ = True; isLongerThan n (_:xs) = isLongerThan (n-1) xs in cutoff "..." 9 (replicate 9 'a')
02:59:40 <lambdabot> Couldn't match expected type `[t]'
02:59:40 <lambdabot> against inferred type `GHC.Types...
02:59:44 <elliott> ...
02:59:54 <elliott> > let cutoff end n xs | n <= length end && xs `isLongerThan` (n - length end) = end; cutoff end n (x:xs) = x : cutoff end (n-1) xs; isLongerThan _ [] = False; isLongerThan 0 _ = True; isLongerThan n (_:xs) = isLongerThan (n-1) xs in cutoff "..." 9 (replicate 9 'a')
02:59:55 <lambdabot> Couldn't match expected type `[t]'
02:59:56 <lambdabot> against inferred type `GHC.Types...
02:59:59 <elliott> oerjan: hepl
03:00:52 <CakeProphet> lol @ frink's multifor
03:01:13 <CakeProphet> it's actually not a bad idea it's just a funny name.
03:01:26 <elliott> yeah multifor is nice
03:02:06 <oerjan> elliott: wrong isLongerThan argument order
03:02:36 <elliott> oh duh
03:02:41 <CakeProphet> Frink can evaluate a string as a Frink expression. If that means something to you, good. It's cool. You can make programs that write and run their own programs. Frink became self-aware on December 7, 2001 at 9:26 PM MST. This is 1561.926 days after Skynet became self-aware. History will be the judge if this December 7th is another date that will live in infamy.
03:02:46 <CakeProphet> ...
03:03:34 <elliott> > let cutoff end n xs | n <= length end && xs `isLongerThan` n - length end = end; cutoff end n (x:xs) = x : cutoff end (n-1) xs; isLongerThan [] _ = False; isLongerThan _ 0 = True; isLongerThan (_:xs) n = xs `isLongerThan` (n-1) in cutoff "..." 9 "abc"
03:03:35 <lambdabot> Couldn't match expected type `GHC.Bool.Bool'
03:03:35 <lambdabot> against inferred type ...
03:03:43 <elliott> oerjan: hi, hepl
03:03:48 <elliott> > let cutoff end n xs | n <= length end && xs `isLongerThan` (n - length end) = end; cutoff end n (x:xs) = x : cutoff end (n-1) xs; isLongerThan [] _ = False; isLongerThan _ 0 = True; isLongerThan (_:xs) n = xs `isLongerThan` (n-1) in cutoff "..." 9 "abc"
03:03:49 <lambdabot> "abc*Exception: <interactive>:3:4-127: Non-exhaustive patterns in function ...
03:03:52 <elliott> X-D
03:04:16 <oerjan> it types!
03:04:16 <monqy> nice pattermns for cutoff
03:04:34 <CakeProphet> ASCII needs moar brackets.
03:04:38 <oerjan> that means you're at least halfway there
03:04:43 <monqy> nice patterms for islognerthan too
03:04:51 <elliott> cutoff :: String -> Int -> String -> String
03:04:51 <elliott> cutoff end n = cutoff' end (n - length end)
03:04:52 <elliott> where cutoff' _ _ [] = []
03:04:52 <elliott> cutoff' end 0 _ = end
03:04:52 <elliott> cutoff' end m (x:xs) = x : cutoff' end (m-1) xs
03:04:55 <elliott> that should do it, I think
03:05:32 <oerjan> elliott: you are missing cutoff end n [] case
03:05:42 <elliott> oerjan: look closely
03:05:44 <elliott> <elliott> where cutoff' _ _ [] = []
03:05:45 <oerjan> in what you tried
03:05:47 <elliott> PEEKABOO
03:05:48 <elliott> :P
03:05:51 <elliott> but yeah I got that
03:06:56 <elliott> CakeProphet: but yeah, I really like Frink, it is one of the few languages I have few problems with
03:08:06 <CakeProphet> what about the "ugly boolean" stuff
03:08:13 <CakeProphet> like with "" being false and stuff.
03:08:29 <elliott> I said few problems
03:08:34 <CakeProphet> I think the units are Very Cool and would like to see that in other languages.
03:08:44 <elliott> there's a Haskell library for it but it's not very good
03:08:51 <oerjan> elliott: just one corner case, n < length end
03:08:53 <elliott> but yes, dimensional analysis is Good
03:08:56 <elliott> oerjan: indeed
03:09:08 <elliott> oerjan: Haskell should have saturation arithmetic :P
03:09:09 <CakeProphet> can you do things like sphereVolume[radius is length] := ...
03:09:15 <CakeProphet> in the Haskell library
03:09:31 <elliott> it's something like
03:09:39 <elliott> sphereVolume :: (Num a) => a :. Length -> a :. Length
03:09:49 <CakeProphet> ah
03:10:03 <elliott> http://hackage.haskell.org/packages/archive/dimensional/0.10.1.2/doc/html/Numeric-Units-Dimensional-SIUnits.html
03:10:13 <elliott> http://hackage.haskell.org/packages/archive/dimensional/0.10.1.2/doc/html/Numeric-Units-Dimensional.html
03:10:15 <elliott> Nice typeclasses.
03:10:18 <CakeProphet> that's not... too bad.
03:10:21 <elliott> Should be type families.
03:10:35 <elliott> the use looks something like
03:10:35 <elliott> sqrt (9 *~ meter^pos2)
03:10:39 <elliott> at least that's the example I found on their page :P
03:10:40 <oerjan> elliott: oh hm i don't think that cutoff' _ _ [] = [] is right, because you need to end when the length of what's remaining == length of end
03:10:44 <elliott> :: Area Double
03:10:47 <elliott> CakeProphet: so it's actually better than I said
03:10:56 <elliott> oerjan: no, I don't
03:11:06 <elliott> oerjan: if a line fits on the screen, no ellipsis is required
03:11:43 <elliott> Prelude Main MC.Utils> cutoff "..." 9 (replicate 9 'a')
03:11:43 <elliott> "aaaaaa..."
03:11:44 <elliott> hmm
03:11:48 <elliott> oerjan: you're right, that is a bug :P
03:11:51 <CakeProphet> type DOne = Dim Zero Zero Zero Zero Zero Zero Zero
03:11:52 <CakeProphet> lol wat
03:11:53 <elliott> oerjan: just an off-by-one, I think
03:12:03 <oerjan> off-by-length of end, i think
03:12:16 <CakeProphet> is that....
03:12:17 <elliott> oerjan: um howso?
03:12:19 <CakeProphet> binary in phantom types?
03:12:37 <oerjan> the problem is that once you know end is supposed to go there, you have already got too many chars from the string included
03:12:43 <elliott> CakeProphet: i don't think so
03:12:45 <elliott> data Dim l m t i th n j
03:12:54 <elliott> oerjan: hm...
03:12:57 <CakeProphet> oh I see.
03:12:57 <elliott> oerjan: you fix it :P
03:13:01 <elliott> it was so ugly first time around
03:13:18 <CakeProphet> it's just kind of ugly and probably not as flexible as frink's unit system.
03:14:08 <elliott> `frink for line = lines["http://esolangs.org"] { println["test"] }
03:14:16 <HackEgo> Syntax error: <String>, line 1, near column 40 \ for line = lines["http://esolangs.org"] { println["test"] } \ ^ \ 1 error(s) occurred during parsing.
03:14:21 <elliott> `frink for line = lines["http://esolangs.org"] do { println["test"] }
03:14:29 <HackEgo> Syntax error: <String>, line 1, near column 40 \ for line = lines["http://esolangs.org"] do { println["test"] } \ ^ \ 1 error(s) occurred during parsing.
03:14:32 <elliott> hmph :P
03:15:58 <elliott> `frink newJava["frink.parser.Frink", []]
03:16:08 <HackEgo> JavaObject:frink.parser.Frink
03:16:16 -!- pikhq has joined.
03:16:26 <elliott> `frink newJava["frink.parser.Frink", []].parseString["\"meta\""]
03:16:36 <elliott> I wonder why it calls eval parse in the API :P
03:16:38 <HackEgo> meta
03:16:44 <elliott> CakeProphet: Check out that shit :P
03:17:14 <elliott> `frink newJava["frink.parser.Frink", []].parseStringToExpression["\"meta\""]
03:17:26 <HackEgo> meta
03:17:32 <elliott> Awww yeaaah
03:17:41 <CakeProphet> ...
03:17:59 <CakeProphet> next logical step: evaluate Jython?
03:18:27 <elliott> oerjan: Fixed it yet?
03:18:54 <oerjan> > let cutoff end n xs = let l = length end; (ys1, xs1) = splitAt (n - l) xs; (ys2, ys3) = splitAt l ys1 in ys1 ++ case ys3 of [] -> ys2; _ -> end in cutoff "..." 10 "testing now yeah"
03:18:56 <lambdabot> "testing..."
03:19:00 <CakeProphet> (assuming that Jython has an interpreter binding/implementation in Java)
03:19:05 <oerjan> > let cutoff end n xs = let l = length end; (ys1, xs1) = splitAt (n - l) xs; (ys2, ys3) = splitAt l ys1 in ys1 ++ case ys3 of [] -> ys2; _ -> end in cutoff "..." 10 "testing eh"
03:19:07 <lambdabot> "testing..."
03:19:09 <elliott> CakeProphet: Dude.
03:19:10 <oerjan> argh
03:19:13 <elliott> What else would Jython be written in?
03:19:37 -!- pikhq_ has quit (Ping timeout: 248 seconds).
03:19:45 <CakeProphet> elliott: I've learned not to assume these things.
03:19:46 <oerjan> > let cutoff end n xs = let l = length end; (ys1, xs1) = splitAt (n - l) xs; (ys2, ys3) = splitAt l ys1 in ys1 ++ case ys3 of [] -> ys2; _ -> end in cutoff "..." 10 "testing a"
03:19:48 <lambdabot> "testing..."
03:19:51 <elliott> http://futureboy.us/frinkdocs/images/multiinput.png ;; I love how you can get shit like this from [first, last] = input["What is your name",[["First Name", "Jeff"], ["Last Name", "Albertson"]]]
03:19:57 <elliott> Except less ugly in the more recent GUIs Frink has :P
03:20:08 <oerjan> oh duh
03:20:29 <oerjan> > let cutoff end n xs = let l = length end; (ys1, xs1) = splitAt (n - l) xs; (ys2, ys3) = splitAt l xs1 in ys1 ++ case ys3 of [] -> ys2; _ -> end in cutoff "..." 10 "testing eh"
03:20:32 <lambdabot> "testing eh"
03:20:35 <oerjan> > let cutoff end n xs = let l = length end; (ys1, xs1) = splitAt (n - l) xs; (ys2, ys3) = splitAt l xs1 in ys1 ++ case ys3 of [] -> ys2; _ -> end in cutoff "..." 10 "testing now"
03:20:37 <lambdabot> "testing..."
03:20:41 <oerjan> > let cutoff end n xs = let l = length end; (ys1, xs1) = splitAt (n - l) xs; (ys2, ys3) = splitAt l xs1 in ys1 ++ case ys3 of [] -> ys2; _ -> end in cutoff "..." 10 "testing a"
03:20:43 <lambdabot> "testing a"
03:20:46 <oerjan> elliott: ^
03:20:58 <elliott> oerjan: ok, now to eliminate all uses of let and case :P
03:21:04 <oerjan> i didn't handle n < l, though. or did i
03:21:26 <oerjan> > let cutoff end n xs = let l = length end; (ys1, xs1) = splitAt (n - l) xs; (ys2, ys3) = splitAt l xs1 in ys1 ++ case ys3 of [] -> ys2; _ -> end in cutoff "........." 10 "test ho"
03:21:28 <lambdabot> "test ho"
03:21:43 <oerjan> > let cutoff end n xs = let l = length end; (ys1, xs1) = splitAt (n - l) xs; (ys2, ys3) = splitAt l xs1 in ys1 ++ case ys3 of [] -> ys2; _ -> end in cutoff "........." 4 "test ho"
03:21:45 <lambdabot> "test ho"
03:22:13 <elliott> Is the use of splitAt really necesssary? It's kinda gross
03:22:19 <elliott> But I guess nicer than a loop
03:22:43 <elliott> oerjan: your naming is very inconsistent
03:22:46 <elliott> of the xs/yss
03:23:01 <oerjan> well i named y what would be used after the in
03:23:51 <elliott> hmm. I'm just wondering why it's so ugly :P
03:23:55 <elliott> THIS IS AN ELEGANT ALGORITHM ;__;
03:24:21 <oerjan> > splitAt (-2) "testing"
03:24:23 <lambdabot> ("","testing")
03:25:16 <oerjan> hm...
03:25:28 <oerjan> > let cutoff end n xs = let l = length end; (ys1, xs1) = splitAt (n - l) xs; (ys2, ys3) = splitAt l xs1 in ys1 ++ case ys3 of [] -> ys2; _ -> end in cutoff "........." 4 "test how this works"
03:25:30 <lambdabot> "........."
03:25:59 <oerjan> i think it's about as reasonable as possible in the n < l case
03:26:16 <Madoka-Kaname> What's that doing?
03:26:35 <elliott> oerjan: I appreciate the effort, but am going to stay mired in indecision until I figure out a nicer way of writing it
03:26:40 <elliott> well maybe. :p
03:26:47 <oerjan> well...
03:26:52 <elliott> at least one that doesn't involve affixing numbers to variable names
03:26:55 <elliott> or a case
03:31:52 <oerjan> :t runState
03:31:54 <lambdabot> forall s a. State s a -> s -> (a, s)
03:32:00 <elliott> oerjan: oh dear
03:32:50 -!- hagb4rd has joined.
03:33:01 <oerjan> > let cutoff end n = cutoff' . runState (mapM state [splitAt (n-l), splitAt l]); l = length end; cutoff' ([pre,post],[]) = pre++post; cutoff' ([pre,_],_) = pre++end in cutoff "..." 10 "testing now"
03:33:02 <lambdabot> Not in scope: `end'Not in scope: `end'
03:33:12 <oerjan> oops
03:33:28 <oerjan> > let cutoff end n = cutoff' . runState (mapM state [splitAt (n-l), splitAt l]) where l = length end; cutoff' ([pre,post],[]) = pre++post; cutoff' ([pre,_],_) = pre++end in cutoff "..." 10 "testing now"
03:33:30 <lambdabot> "testing..."
03:33:31 * elliott wonders what oerjan's definition of less ugly is :P
03:33:39 <oerjan> *MWAHAHAHA*
03:33:59 <oerjan> > let cutoff end n = cutoff' . runState (mapM state [splitAt (n-l), splitAt l]) where l = length end; cutoff' ([pre,post],[]) = pre++post; cutoff' ([pre,_],_) = pre++end in cutoff "..." 10 "testing eh"
03:34:01 <lambdabot> Terminated
03:34:05 <oerjan> argh
03:34:06 <oerjan> > let cutoff end n = cutoff' . runState (mapM state [splitAt (n-l), splitAt l]) where l = length end; cutoff' ([pre,post],[]) = pre++post; cutoff' ([pre,_],_) = pre++end in cutoff "..." 10 "testing eh"
03:34:08 <lambdabot> "testing eh"
03:34:13 <oerjan> whew
03:34:26 <oerjan> Y U NO LIKE MONADS
03:34:36 <elliott> oerjan will be shocked by the news that I'm not adopting this version
03:34:56 <oerjan> ;_;
03:35:16 <elliott> there there
03:35:37 <oerjan> well the other idea i had involved using curry a lot :P
03:35:39 -!- MDude has changed nick to MSleep.
03:35:49 <oerjan> er, uncurry
03:36:14 <oerjan> cutoff' is there to solve your case hate
03:36:46 <oerjan> hm...
03:36:50 <elliott> it's not case hate, it's
03:36:54 <elliott> cutoff end n xs = ys ++ case ys'' of [] -> ys'; _ -> end
03:36:55 <elliott> hate :P
03:37:13 <elliott> i don't know, it definitely feels like this algorithm is simple. my version that only works for ellipses is trivial:
03:37:23 <elliott> cutoff _ "" = ""
03:37:40 <elliott> cutoff THREE (_:_:_:_:_) = "..."
03:37:47 <elliott> cutoff n (x:xs) = x : cutoff (n-one) xs
03:37:55 <elliott> so the "special case" of [] is odd to me.
03:38:07 <oerjan> it just cuts off the part that is always included, then the part that might possibly be included, and then checks whether there is anything left that cannot.
03:38:12 <oerjan> :t mapAccumL
03:38:13 <lambdabot> forall acc x y. (acc -> x -> (acc, y)) -> acc -> [x] -> (acc, [y])
03:38:32 <oerjan> hm...
03:38:46 <elliott> I have never once in my life used mapAccumL :P
03:38:55 <monqy> I have once!!
03:39:06 <monqy> or wait maybe it was mapaccumr......
03:39:11 <CakeProphet> challenge: write a Haskell program that strips preceding and trailing whitespace, and then reduces multiple consecutive occurences of whitespace within the string to one space
03:39:23 <CakeProphet> not necessarily in that order or in any order at all.
03:39:36 <elliott> atEnd (dropWhile isSpace) . dropWhile isSpace where atEnd f = reverse . f . reverse
03:39:40 <elliott> there's two thirds of it
03:39:49 <CakeProphet> :t atEnd
03:39:50 <lambdabot> Not in scope: `atEnd'
03:39:54 <elliott> you'r eblind
03:39:56 <elliott> you're blind
03:40:05 <oerjan> > let cutoff end n = mapAccumL (flip splitAt) [n-l, l] where l = length end; cutoff' ([pre,post],[]) = pre++post; cutoff' ([pre,_],_) = pre++end in cutoff "..." 10 "testing eh"
03:40:05 <monqy> > unwords . words $ " a b "
03:40:05 <CakeProphet> I just skim lazily :P
03:40:06 <lambdabot> Couldn't match expected type `GHC.Types.Int'
03:40:06 <lambdabot> against inferred type ...
03:40:06 <lambdabot> "a b"
03:40:08 <elliott> > nubBy (\a b -> isSpace a && isSpace b) "abc def quux \t x"
03:40:09 <lambdabot> "abc defquuxx"
03:40:12 <elliott> pah
03:40:18 <oerjan> argh
03:40:34 <elliott> oerjan: what is cutoff' there for?
03:40:36 <monqy> CakeProphet: were you joking
03:40:41 <oerjan> oh hm
03:40:43 <CakeProphet> no
03:40:46 <monqy> CakeProphet: because: unwords.words seems to do what you want
03:40:50 <oerjan> elliott: i said, your case avoidance
03:40:51 <elliott> that too
03:40:54 <CakeProphet> monqy: not quite
03:40:55 <elliott> oerjan: you NEVER USE CUTOFF'
03:40:57 <elliott> was my point
03:40:58 <monqy> oh?
03:41:04 <oerjan> oh right
03:41:08 <elliott> monqy: well it turns \n into " "
03:41:09 <CakeProphet> yes it doesn't preserve the kind of whitespace
03:41:11 <CakeProphet> yes
03:41:15 <oerjan> > let cutoff end n = cutoff' . mapAccumL (flip splitAt) [n-l, l] where l = length end; cutoff' ([pre,post],[]) = pre++post; cutoff' ([pre,_],_) = pre++end in cutoff "..." 10 "testing eh"
03:41:16 <lambdabot> Couldn't match expected type `[a]'
03:41:17 <lambdabot> against inferred type `GHC.Types...
03:41:18 <monqy> oh you want it to preserve the kinds
03:42:40 <oerjan> > let cutoff end n = cutoff' . flip (mapAccumL (flip splitAt)) [n-l, l] where l = length end; cutoff' ([], [pre,post]) = pre++post; cutoff' (_,[pre,_]) = pre++end in cutoff "..." 10 "testing eh"
03:42:42 <lambdabot> " eh..."
03:42:48 <oerjan> wat
03:43:09 <oerjan> oops :P
03:43:30 <oerjan> :t mapAccumR
03:43:31 <lambdabot> forall acc x y. (acc -> x -> (acc, y)) -> acc -> [x] -> (acc, [y])
03:43:55 <oerjan> elliott: just about _every function_ takes arguments in the wrong order for this to be pretty :P
03:44:12 <oerjan> in and out
03:44:13 <elliott> oerjan: you can flip the arguments of cutoff
03:44:14 <elliott> if you want
03:44:24 <oerjan> no, not that one :P
03:44:34 <elliott> what do you need flipping then :P
03:44:48 <oerjan> the output (acc, y), for one thing :P
03:44:55 <oerjan> in mapAccum*
03:45:01 <elliott> shall I ask #haskell to prettify it then? :p
03:45:20 <CakeProphet> code pageant = like golfing but with prettiness.
03:47:23 <elliott> <hpaste_> “Can anyone make this code less ugly?” pasted “elliott” at http://hpaste.org/52166
03:47:24 <elliott> oerjan: here we go :P
03:49:10 <CakeProphet> couldn't you use a guard or something to get rid of the case?
03:49:18 <elliott> huh, /another/ internet suicide by a famous programmer
03:49:57 <monqy> waht
03:50:39 <elliott> this time it's mark pilgrim who's erased their entire online presence
03:50:43 <elliott> (last time _why)
03:50:43 <oerjan> CakeProphet: then it wouldn't be lazy in the ys part, but maybe elliott wouldn't care about that
03:52:00 <oerjan> but a pattern guard on ys'' would work, wouldn't it
03:52:11 <elliott> pattern guards are so recently standardised :'(
03:52:49 <oerjan> hm now, what about my uncurry idea...
03:54:08 <elliott> oerjan: what kind of pattern guard, again?
03:54:33 <oerjan> i have never used them, but isn't | [] <- ys'' the syntax
03:54:45 <elliott> well yes
03:55:21 <elliott> oerjan: it'd be nice if you could give me nicer names for the xss and yss though :P
03:56:37 -!- pikhq_ has joined.
03:57:11 <CakeProphet> elliott:
03:57:13 <CakeProphet> er
03:57:27 <CakeProphet> elliott: intermediateValue1 intermediateValue2 intermediateValue3 ...
03:57:58 <oerjan> > let cutoff end n = splitAt (n-l) >>> uncurry `id` \ys -> splitAt l >>> uncurry `id` \ys' ys'' -> ys ++ case ys'' of [] -> ys'; _ -> end where l = length end; cutoff' ([pre,post],[]) = pre++post; cutoff' ([pre,_],_) = pre++end in cutoff "..." 10 "testing eh"
03:57:59 <lambdabot> Couldn't match expected type `GHC.Types.Int'
03:57:59 <lambdabot> against inferred type ...
03:58:07 <oerjan> argh newline paste
03:58:08 <elliott> oerjan: i am not using arrows...
03:58:39 <CakeProphet> elliott: how do you expect to write Haskell without using functions?
03:58:41 <CakeProphet> :3
03:58:45 <oerjan> it was the only way i could think of to avoid parens around the lambdas
03:59:18 -!- pikhq has quit (Ping timeout: 255 seconds).
03:59:22 <CakeProphet> man you guys sure are weird about what's pretty and stuff.
03:59:31 <CakeProphet> weirdos
03:59:37 <CakeProphet> veirdooes
04:00:34 <oerjan> > let cutoff end n = uncurry (\ys -> uncurry (\ys' ys'' -> ys ++ case ys'' of [] -> ys'; _ -> end) . splitAt l) . splitAt (n-l) where l = length end in cutoff "..." 10 "testing eh"
04:00:36 <lambdabot> "testing eh"
04:00:49 <oerjan> > let cutoff end n = uncurry (\ys -> uncurry (\ys' ys'' -> ys ++ case ys'' of [] -> ys'; _ -> end) . splitAt l) . splitAt (n-l) where l = length end in cutoff "..." 10 "testing now"
04:00:50 <CakeProphet> maybe Haskell is just an ugly language and there's NOTHING YOU CAN DO ABOUT IT BAHAHAHAHA.
04:00:51 <lambdabot> "testing..."
04:01:21 <Madoka-Kaname> oerjan, why not just use a recursive function or something?
04:01:23 <Madoka-Kaname> :v
04:01:26 <oerjan> CakeProphet: well _i_ think what elliott hpasted from my code was pretty :P
04:01:38 <elliott> oerjan: it's the best of a bad job :P
04:01:41 <elliott> oerjan: but i really want nicer names for the variables
04:02:17 <oerjan> > let cutoff end n = uncurry (\pre -> uncurry (\post test -> pre ++ case test of [] -> post; _ -> end) . splitAt l) . splitAt (n-l) where l = length end in cutoff "..." 10 "testing now"
04:02:19 <lambdabot> "testing..."
04:02:41 <oerjan> hm...
04:02:56 <oerjan> > let cutoff end n = uncurry (\pre -> uncurry (\post left -> pre ++ case left of [] -> post; _ -> end) . splitAt l) . splitAt (n-l) where l = length end in cutoff "..." 10 "testing now"
04:02:58 <lambdabot> "testing..."
04:03:25 <elliott> oerjan: well it may be pretty but it has another flaw too
04:03:27 <elliott> the use of (++)
04:03:36 <elliott> which is /not/ optimised out, I just checked the core :D
04:03:44 <oerjan> sheesh
04:04:04 <elliott> Madoka-Kaname: please supply a recursive function if you can think of one, btw
04:04:09 <elliott> the one I wrote was horrible
04:04:15 <elliott> and the one that wasn't horrible didn't work
04:04:15 <Madoka-Kaname> Actually.
04:04:19 <Madoka-Kaname> Doesn't even have to be recursive.
04:04:19 <Madoka-Kaname> cutoff end n str = if(length str' > cutlen) then (take cutlen str') ++ end else str'
04:04:19 <Madoka-Kaname> where cutlen = n - length end
04:04:19 <Madoka-Kaname> str' = take n str
04:04:21 <Madoka-Kaname> Can't you do that?
04:04:33 <oerjan> i can move pre++ out a bit
04:04:55 <elliott> Madoka-Kaname: firstly, you have parenthesis disease.
04:05:03 <elliott> Madoka-Kaname: secondly, that doesn't work on infinite inputs.
04:05:08 <elliott> thirdly, it traverses the input twice
04:05:13 <oerjan> yes it does, read it more carefully
04:05:24 <elliott> oerjan: ?
04:05:28 <elliott> oh
04:05:36 <elliott> ok, it technically does, but it still traverses the input twice :P
04:05:46 <Madoka-Kaname> And infinite end doesn't make sense, so.
04:05:56 <oerjan> it failst on length str == n, though
04:05:58 <oerjan> *fails
04:06:16 <elliott> Madoka-Kaname: infinite end /does/ make sense
04:06:20 <elliott> but it's not important
04:08:33 <elliott> oerjan: I'd accept a simple recursive function as long as it works, btw
04:08:40 <oerjan> > let cutoff end n = uncurry (\pre -> (pre++) . uncurry (\post left -> case left of [] -> post; _ -> end) . splitAt l) . splitAt (n-l) where l = length end in cutoff "..." 10 "testing now"
04:08:42 <lambdabot> "testing..."
04:08:49 <oerjan> does that optimize better?
04:08:50 <elliott> and would probably prefer it, to ease my mind
04:09:00 <elliott> oerjan: it certainly doesn't /read/ better... but I'll check
04:10:03 <oerjan> i suppose splitAt is dangerous for avoid thunks in both parts, though
04:10:09 <oerjan> *avoiding
04:11:21 -!- hagb4rd has quit (Ping timeout: 248 seconds).
04:13:17 <elliott> oerjan: it is /definitely/ not optimised better
04:13:39 <elliott> I don't really care how fast it goes, it's just a convenient way to reject ugly :P
04:16:49 <oerjan> > let cutoff end n = cutoff' (n-l) where l = length end; cutoff' 0 xs | null (drop l xs) = xs | otherwise = end; cutoff' n [] = []; cutoff' n (x:xs) = x : cutoff' (n-1) xs in cutoff "..." 10 "testing now"
04:16:50 <lambdabot> "testing..."
04:16:54 <oerjan> > let cutoff end n = cutoff' (n-l) where l = length end; cutoff' 0 xs | null (drop l xs) = xs | otherwise = end; cutoff' n [] = []; cutoff' n (x:xs) = x : cutoff' (n-1) xs in cutoff "..." 10 "testing eh"
04:16:55 <lambdabot> "testing eh"
04:17:38 <elliott> oerjan: hm that looks nice
04:18:20 <elliott> oerjan: that traversal in null (drop l xs) is inevitable, right? :P
04:18:24 <elliott> oh, it only looks one ahead
04:18:47 <oerjan> yeah it cannot give any more characters until it's checked that
04:19:07 <elliott> hm I wonder if this is an unfold of some kind
04:20:46 <oerjan> it's essentially the same as the splitAt algorithm, except it is careful to return characters if possible before recursing
04:21:02 <elliott> it looks kind of like an unfold
04:21:03 <elliott> :P
04:21:07 <elliott> :t unfoldr
04:21:08 <lambdabot> forall b a. (b -> Maybe (a, b)) -> b -> [a]
04:21:22 <oerjan> unfoldr is tricky to get the end right, it hink
04:21:28 <oerjan> *i think
04:21:36 <elliott> hmm, right
04:22:23 <elliott> "Mark Pilgrim is alive/annoyed we called the police."
04:22:33 <elliott> (-- jason scott)
04:23:59 <oerjan> elliott: strictly speaking most of it i think is fusing something of the form (\(x,y) -> x++ f y) (splitAt (n-l) xs)
04:24:14 <oerjan> which is what is needed to avoid your dreaded ++ :P
04:25:16 <oerjan> maybe that can be written as something unfoldry
04:25:51 <oerjan> hm or not.
04:25:57 <oerjan> food ->
04:33:36 -!- copumpkin has quit (Ping timeout: 244 seconds).
04:33:37 <elliott> cutoff end m
04:33:37 <elliott> | m < l = error "cutoff: target length shorter than terminator string"
04:33:37 <elliott> | otherwise = cutoff' (m-l)
04:33:37 <elliott> where l = length end
04:33:37 <elliott> cutoff' 0 xs
04:33:37 <elliott> | null (drop l xs) = xs
04:33:39 <elliott> | otherwise = end
04:33:41 <elliott> cutoff' _ [] = []
04:33:43 <elliott> cutoff' n (x:xs) = x : cutoff' (n-1) xs
04:33:45 <elliott> oerjan: ugly but oh well
04:34:00 -!- copumpkin has joined.
04:43:57 -!- GreaseMonkey has quit (Ping timeout: 260 seconds).
04:48:35 <elliott> oerjan: I HAVE ANOTHER FUNCTION FOR YOU TO NAME
04:49:41 <elliott> oerjan: Stop running away.
04:49:56 <monqy> i can name it unless i can't
04:50:02 <monqy> i'm bad at names, after all
04:50:21 <elliott> f "Abc" "fooBarBaz" == "abcFooBarBaz"
04:50:21 <monqy> except for "monqy". that was a good one.
04:50:28 <elliott> basically, given constructor and field name, returns a field name :P
04:51:03 <elliott> f "NamedEntitySpawn" "currentItem" == "namedEntitySpawnCurrentItem"
04:51:08 <elliott> implementation:
04:51:12 <elliott> f cs "" = undefined
04:51:14 <elliott> f "" fs = undefined
04:51:16 <Madoka-Kaname> camelCaseConcat
04:51:21 <elliott> f (c:cs) (f:fs) = toLower c : cs ++ toUpper f : fs
04:51:22 <fizzie> givenAConstructorAndFieldNameReturnsAFieldName.
04:51:22 <elliott> oerjan: GOGOGO
04:51:41 <Madoka-Kaname> elliott, camelCaseConcat
04:51:47 <elliott> Madoka-Kaname:
04:51:48 <elliott> :t concat
04:51:49 <lambdabot> forall a. [[a]] -> [a]
04:51:59 <elliott> <wavewave> that's how >>= is implemented and it behaves the same as the twistedmatrix in python
04:52:00 <elliott> I...
04:52:02 <Madoka-Kaname> @hoogle [a] -> [a] -> [a]
04:52:03 <lambdabot> Prelude (++) :: [a] -> [a] -> [a]
04:52:03 <lambdabot> Data.List (++) :: [a] -> [a] -> [a]
04:52:03 <lambdabot> Data.List deleteFirstsBy :: (a -> a -> Bool) -> [a] -> [a] -> [a]
04:52:09 <monqy> elliott: i
04:52:23 <Madoka-Kaname> @hoogle join
04:52:23 <lambdabot> Control.Monad join :: Monad m => m (m a) -> m a
04:52:24 <lambdabot> System.FilePath.Posix joinDrive :: FilePath -> FilePath -> FilePath
04:52:24 <lambdabot> System.FilePath.Windows joinDrive :: FilePath -> FilePath -> FilePath
04:52:32 <elliott> oerjan: hepl
04:52:35 <elliott> <elliott> f (c:cs) (f:fs) = toLower c : cs ++ toUpper f : fs
04:52:35 <Madoka-Kaname> elliott, "camelCase[something]" then.
04:52:37 <elliott> <elliott> basically, given constructor and field name, returns a field name :P
04:52:38 <elliott> <elliott> f "NamedEntitySpawn" "currentItem" == "namedEntitySpawnCurrentItem"
04:52:40 <Madoka-Kaname> @src (++)
04:52:40 <lambdabot> [] ++ ys = ys
04:52:40 <lambdabot> (x:xs) ++ ys = x : (xs ++ ys)
04:52:41 <lambdabot> -- OR
04:52:41 <lambdabot> xs ++ ys = foldr (:) ys xs
04:52:41 <elliott> oerjan: hepl hepl hepl pelhpel
04:52:48 <elliott> Madoka-Kaname: That isn't even camel case, thisIs.
04:52:49 <elliott> erm
04:52:50 <elliott> Madoka-Kaname: That isn't even camel case, ThisIs.
04:52:56 <elliott> (Subject to flamewars.)
04:53:06 <Madoka-Kaname> javaCase[something]
04:54:00 <elliott> I LIKE HOW OERJAN ISN'T NAMING IT
04:54:28 <monqy> my implementation proabably would have been something stupid like (++) . modL headLens toLower because im dumb and like doing things like that
04:54:36 <monqy> name? no idea
04:54:57 <elliott> monqy: that avoids the toUpper on the second argument
04:55:06 <monqy> oh right i did not notice that
04:55:12 <monqy> bad at noticing
04:55:14 <elliott> i'm not sure head is a lens, anyway
04:55:20 <monqy> it isn't ;_;
04:55:25 <elliott> i mean
04:55:28 <elliott> i'm not sure it obeys the lens laws
04:55:49 <monqy> is trhere any good way to modify head
04:55:51 <monqy> without points
04:57:08 <elliott> monqy: did you see all my fink fanboying above because
04:57:08 <elliott> you should
04:57:09 <elliott> because
04:57:10 <elliott> frink is
04:57:11 <elliott> the best
04:57:14 <oerjan> elliott: +:+
04:57:22 <elliott> oerjan: not inmfxeixe....
04:57:28 <monqy> elliott: i saw the name frink and then opened a tab for frink stuff so i can ignore it
04:57:33 <oerjan> why not :(
04:57:33 <elliott> monqy: READE LEOGS...
04:57:39 <monqy> elliott: how much logs :(
04:57:41 <elliott> oerjan: well maybe but ... quite obscure....
04:57:48 <elliott> oerjan: I would go with camelCase but it's not really camel case
04:57:51 <fizzie> Call it (.++^). (It's trying to be (v++^) but since v won't go.)
04:57:56 <oerjan> otherwise, camelCaseAppend
04:57:59 <monqy> +camel+
04:58:01 <elliott> it's not
04:58:02 <elliott> really
04:58:02 <elliott> camel
04:58:03 <elliott> case
04:58:51 <elliott> monqy: read from http://codu.org/logs/log/_esoteric/2011-10-05#005904elliott to http://codu.org/logs/log/_esoteric/2011-10-05#015244elliott :P
04:58:51 <fizzie> lowerCaseCamelCaseAppned.
04:59:03 <elliott> (00:59 to 01:52)
05:00:18 <elliott> oerjan: i'm fine with it having a name that involves "field" btw
05:00:26 <elliott> my first try was fieldName, but that's taken
05:00:34 <elliott> (by a record accessor :P)
05:00:37 <fizzie> "filedNameify".
05:00:45 <monqy> fieldNamify
05:00:52 <elliott> There's a reason I pinged oerjan.
05:00:55 <fizzie> fieldNamiscate.
05:00:58 <monqy> feldnam
05:01:15 <fizzie> fieldoIt.
05:01:23 -!- pikhq has joined.
05:01:27 <elliott> oerjan: Ban those people and answer.
05:01:42 <fizzie> fieldoctrinate.
05:01:44 <monqy> oh hey i just noticed someone actually fiddled with elliott's hpaste
05:02:00 <elliott> Yes but
05:02:01 <elliott> -- | Fits a string to a certain length, replacing the last characters
05:02:02 <elliott> -- with a terminator if the string is longer.
05:02:02 <elliott> --
05:02:02 <elliott> -- > cutoff "..." 8 "abcd" == "abcd"
05:02:02 <elliott> -- > cutoff "..." 8 "abcdabcd" == "abcdabcd"
05:02:03 <elliott> -- > cutoff "..." 8 "abcdabcda" == "abcda..."
05:02:05 <elliott> cutoff
05:02:07 <elliott> :: String -- ^ Terminator string
05:02:09 <elliott> -> Int -- ^ Target length
05:02:11 <elliott> -> String -- ^ Input string
05:02:13 <elliott> -> String -- ^ Truncated result
05:02:15 <elliott> cutoff end m
05:02:17 <elliott> | m < l = error "cutoff: target length shorter than terminator string"
05:02:19 <elliott> | otherwise = cutoff' (m-l)
05:02:21 <elliott> where l = length end
05:02:23 <elliott> cutoff' 0 xs
05:02:25 <elliott> | null (drop l xs) = xs
05:02:27 <elliott> | otherwise = end
05:02:29 <elliott> cutoff' _ [] = []
05:02:31 <elliott> cutoff' n (x:xs) = x : cutoff' (n-1) xs
05:02:33 <elliott> it became too glorious of its own accord.
05:02:40 <monqy> ahh
05:02:52 <oerjan> fieldMerge
05:02:54 <fizzie> fieldMyName, as in "Pimp My Ride".
05:03:04 <elliott> I'm going to rip your skulls off.
05:03:21 <elliott> Would it help if I told you that the current name that I'm dissatisfied with is mkPacketFieldName?
05:03:27 -!- MichaelBurge has quit (Ping timeout: 258 seconds).
05:03:30 <monqy> helpFieldsHelp
05:03:31 <monqy> fieldsFriend
05:03:37 <elliott> oerjan: WOULD THAT HELP
05:03:46 <fizzie> fieldICantNameThis.
05:03:59 <monqy> namesAreHard
05:04:07 <oerjan> packsOfFields
05:04:07 <elliott> I didn't want "packetFieldName" because I have "packetName" and "packetShowsFieldsPrec" in a typeclass and I didn't want to make it look like it was part of that typeclass.
05:04:13 -!- pikhq_ has quit (Ping timeout: 258 seconds).
05:04:13 <elliott> You are horrible.
05:04:15 <elliott> I want to kill you.
05:04:28 <monqy> mkFieldFriend
05:04:42 <fizzie> snuggleTheseNamesIntoFieldishName.
05:04:53 <monqy> breedField
05:04:57 <oerjan> killingFields
05:05:57 <fizzie> fieldorTheAppendator.
05:06:04 <oerjan> fieldOfGold
05:06:59 <fizzie> I think he broke down under the weight of all the suggestions.
05:07:09 <fizzie> fieldNeverGiveUp.
05:07:15 <oerjan> yes. did he want you to op him too?
05:07:42 <elliott> YOU MUST BE PUNISHED
05:07:46 <fizzie> No, possibly because I never do anything.
05:07:53 <elliott> And oerjan does?
05:07:55 <fizzie> Ooh, fieldPunisher.
05:08:03 <elliott> OK that crosses the line.
05:08:03 <monqy> punish those fields
05:08:09 <elliott> fizzie: Op me, I must kick you.
05:08:18 <oerjan> quantumField
05:08:21 <monqy> elliottPunisher??? is that bad enough
05:08:27 <monqy> since it is
05:08:29 <monqy> punishing
05:08:30 <monqy> elliott
05:08:33 <monqy> by being bad
05:08:36 <elliott> monqy: Op me, I mu- fuck you, you can't even op me.
05:08:54 <elliott> I hate you and I hate living, I am going to go shuffle off this mortal coil.
05:09:05 <fizzie> Just call it "myFriendsAreDickheadsAndAreNotTakingThisSeriously".
05:09:19 <oerjan> i _told_ you these were killing fields.
05:09:38 <elliott> fizzie: You consider me your FRIEND after this???
05:09:44 <elliott> I am coming to Finland and there will be no survivors.
05:10:40 -!- ChanServ has set channel mode: +o fizzie.
05:10:43 -!- fizzie has kicked fizzie I think it's safer this way..
05:10:43 -!- fizzie has joined.
05:10:49 <elliott> fizzie: Um excuse me.
05:10:51 <fizzie> Oh no, autorejoin. :/
05:10:52 <elliott> You missed the two other sinners.
05:11:20 <fizzie> Yes, but doing anything to them would be *impolite*. Can't have that, no-no.
05:11:34 <oerjan> elliott: what is that first argument to your function, really?
05:11:35 <elliott> oerjan: monqy: Consent to your mandatory punishment.
05:11:41 <elliott> oerjan: constructor name
05:12:02 <oerjan> i mean, what does it have to do with packets?
05:12:16 <elliott> oerjan: because all the fields of my packets are named with that :P
05:12:26 <elliott> otherwise there are lots of clashes because the field names in my protocol files are short
05:12:31 <elliott> e.g.
05:12:36 <elliott> , packet 0x01 "Login"
05:12:36 <elliott> [ PF.entityID "entity"
05:12:36 <elliott> , PF.string "unused"
05:12:36 <elliott> , PF.long "mapSeed" -- as above
05:12:36 <elliott> -- Note that this is an *int*, not a bool.
05:12:37 <elliott> --
05:12:39 <elliott> -- FIXME: Give this its own type too.
05:12:41 <elliott> , PF.int "isCreative"
05:12:43 <elliott> , PF.worldID "world"
05:12:45 <elliott> , PF.difficulty "difficulty"
05:12:47 <elliott> , PF.ubyte "worldHeight"
05:12:49 <elliott> , PF.ubyte "maxPlayers"
05:12:51 <elliott> ]
05:12:53 <elliott> the fields are loginEntity, loginUnused, loginMapSeed, etc.
05:13:01 <elliott> and I need to reconstruct this field name within my fake "show" function that shows it like a record (but with more whitespace)
05:15:33 <elliott> oerjan: HOPE THIS HELPS
05:17:30 <elliott> monqy: berate oerjan
05:18:36 <monqy> oerjan: berate berate
05:18:39 <monqy> oerjan: (im berate you)
05:18:42 <monqy> elliott: is that ok
05:18:54 <elliott> monqy: ok
05:19:04 <monqy> elliott: is that enough mandatory punishment
05:19:06 <monqy> elliott: for me
05:20:00 <elliott> monqy: ok
05:23:34 <fizzie> I believe oerjan has gone into an infinite name-finding loop. Good job!
05:23:50 <fizzie> Now someone must go and reboot him.
05:23:59 <elliott> templates/GenericTemplate.hs:219:14:
05:23:59 <elliott> Warning: Pattern bindings containing unlifted types should use an outermost bang pattern:
05:23:59 <elliott> sts1@((HappyCons (st1@(action)) (_)))
05:23:59 <elliott> = happyDrop k (HappyCons (st) (sts))
05:23:59 <elliott> In an equation for `happyMonadReduce':
05:24:00 <elliott> happyMonadReduce k nt fn j tk st sts stk
05:24:01 <elliott> = happyThen1
05:24:03 <elliott> (fn stk tk)
05:24:05 <elliott> (\ r -> happyGoto nt j tk st1 sts1 (r `HappyStk` drop_stk))
05:24:07 <elliott> where
05:24:09 <elliott> sts1@((HappyCons (st1@(action)) (_)))
05:24:11 <elliott> = happyDrop k (HappyCons (st) (sts))
05:24:13 <elliott> drop_stk = happyDropStk k stk
05:24:15 <elliott> help
05:24:26 <monqy> happy
05:24:45 <fizzie> HappyMonad is sad. :(
05:24:49 <monqy> is this the happy parser generator or what
05:24:53 <monqy> because
05:24:54 <monqy> happy is a good name
05:25:02 <monqy> you should call your function happy
05:25:10 <elliott> no.......
05:26:43 <oerjan> happyField
05:27:30 <fizzie> Yay, it terminated!
05:27:37 -!- copumpkin has quit (Ping timeout: 248 seconds).
05:27:57 <monqy> happy termination
05:28:02 -!- copumpkin has joined.
05:28:13 <fizzie> Happy termination day, everybody.
05:28:44 <oerjan> praise the Computer for happy termination day!
05:28:44 <fizzie> fungot: Except you, not being a flash-sack you're obviously exempt from termination.
05:28:44 <fungot> fizzie: cyrus! are you leaving! let your hair down! get crazy! i'm opening a stall in leene! i thought she ate too!
05:29:27 <elliott> oerjan: i
05:29:28 <elliott> oerjan: explained
05:29:32 <elliott> oerjan: the first argument and shit
05:29:33 <elliott> .......
05:29:36 <elliott> read..........
05:29:59 <fizzie> elliott: You did all that, and all you got was a happyField.
05:30:10 <elliott> :(
05:30:30 <oerjan> well he refuses the obvious names
05:31:29 <elliott> oerjan: there were about two obvious names offered, and they both weren't very good :P
05:31:44 <elliott> (camelCase and whatever that silly modification of that was)
05:31:58 <oerjan> elliott: um no, i mean packetFieldName
05:32:15 <elliott> oerjan: nobody ever suggested that
05:32:21 <elliott> i preemptively explained why i wasn't using it
05:32:31 <oerjan> thus refusing it.
05:33:14 <elliott> oerjan: if it was so obvious why didn't you think of it in like five minutes :P
05:33:34 <oerjan> ...it was obvious when you explained how your naming scheme otherwise worked.
05:33:44 <fizzie> I had a serious suggestion too, while in the bathroom, but forgot it. But don't worry, I seem to recall it was far too vague anyway, so no great loss there.
05:33:56 <elliott> oerjan: umm, you clearly misinterpreted me
05:33:59 <elliott> the typeclass is _not_ involved here
05:34:02 <elliott> so that name is very misleadin
05:34:02 <elliott> g
05:34:05 <elliott> it never looks at any packet at all
05:34:28 <oerjan> um in that case, what does it have to _do_ with packets
05:34:45 <oerjan> you haven't explained what the function is really for
05:35:36 <elliott> <elliott> oerjan: because all the fields of my packets are named with that :P
05:35:37 <elliott> <elliott> otherwise there are lots of clashes because the field names in my protocol files are short
05:35:37 <elliott> <elliott> e.g.
05:35:37 <elliott> <elliott> , packet 0x01 "Login"
05:35:37 <elliott> <elliott> [ PF.entityID "entity"
05:35:38 <elliott> <elliott> , PF.string "unused"
05:35:40 <elliott> <elliott> , PF.long "mapSeed" -- as above
05:35:42 <elliott> <elliott> -- Note that this is an *int*, not a bool.
05:35:44 <elliott> <elliott> --
05:35:46 <elliott> <elliott> -- FIXME: Give this its own type too.
05:35:48 <elliott> <elliott> , PF.int "isCreative"
05:35:50 <elliott> <elliott> , PF.worldID "world"
05:35:52 <elliott> <elliott> , PF.difficulty "difficulty"
05:35:54 <elliott> <elliott> , PF.ubyte "worldHeight"
05:35:56 <elliott> <elliott> , PF.ubyte "maxPlayers"
05:35:58 <elliott> <elliott> ]
05:36:00 <elliott> <elliott> the fields are loginEntity, loginUnused, loginMapSeed, etc.
05:36:02 <elliott> <elliott> and I need to reconstruct this field name within my fake "show" function that shows it like a record (but with more whitespace)
05:36:05 <elliott> <elliott> oerjan: HOPE THIS HELPS
05:36:07 <elliott> <elliott> oerjan: because all the fields of my packets are named with that :P
05:36:09 <elliott> <elliott> otherwise there are lots of clashes because the field names in my protocol files are short
05:36:12 <elliott> <elliott> e.g.
05:36:14 <elliott> <elliott> , packet 0x01 "Login"
05:36:16 <elliott> <elliott> [ PF.entityID "entity"
05:36:17 <oerjan> ok...
05:36:18 <elliott> <elliott> , PF.string "unused"
05:36:20 <elliott> <elliott> , PF.long "mapSeed" -- as above
05:36:22 -!- elliott has left ("Leaving").
05:36:26 -!- elliott has joined.
05:36:27 <oerjan> elliott: prefixPacketField
05:36:28 <elliott> <elliott> --
05:36:30 <elliott> <elliott> -- FIXME: Give this its own type too.
05:36:32 <elliott> <elliott> , PF.int "isCreative"
05:36:33 <fizzie> Something on the lines of expandFieldName or something. uniqueifyFieldName. prefixFieldName(MaybeWithSomething). elaborateFieldName. differentiateFieldName. It was something along those lines, but not quite as silly.
05:36:34 <elliott> <elliott> , PF.worldID "world"
05:36:36 <elliott> <elliott> , PF.difficulty "difficulty"
05:36:38 <elliott> <elliott> , PF.ubyte "worldHeight"
05:36:40 <elliott> <elliott> , PF.ubyte "maxPlayers"
05:36:42 <elliott> <elliott> ]
05:36:44 <elliott> <elliott> the fields are loginEntity, loginUnused, loginMapSeed, etc.
05:36:46 <elliott> <elliott> and I need to reconstruct this field name within my fake "show" function that shows it like a record (but with more whitespace)
05:36:49 <elliott> <elliott> oerjan: HOPE THIS HELPS
05:36:50 <fizzie> It just keeps going.
05:36:51 <elliott> <elliott> oerjan: because all the fields of my packets are named with that :P
05:36:53 <elliott> <elliott> otherwise there are lots of clashes because the field names in my protocol files are short
05:36:56 <elliott> <elliott> e.g.
05:36:58 <elliott> <elliott> , packet 0x01 "Login"
05:37:00 <elliott> <elliott> [ PF.entityID "entity"
05:37:02 <elliott> <elliott> , PF.string "unused"
05:37:04 <elliott> <elliott> , PF.long "mapSeed" -- as above
05:37:05 <oerjan> ^msg chanserv quiet #esoteric elliott
05:37:06 <elliott> <elliott> -- Note that this is an *int*, not a bool.
05:37:08 <elliott> <elliott> --
05:37:08 -!- ChanServ has set channel mode: +q *!*@unaffiliated/elliott.
05:37:15 <fizzie> The paste alone can't stop!
05:37:36 -!- elliott has left.
05:37:38 -!- elliott has joined.
05:37:58 -!- elliott has left.
05:38:08 -!- elliott has joined.
05:38:08 <monqy> hi eliot bye eliot
05:38:11 <monqy> hi eliot
05:38:34 -!- elliott has left.
05:38:38 <monqy> bye
05:38:39 <monqy> eliot
05:38:46 -!- elliott has joined.
05:38:52 -!- ChanServ has set channel mode: -q *!*@unaffiliated/elliott.
05:38:55 <monqy> "a new form of spamming"
05:39:00 <monqy> oh that works too
05:39:14 <elliott> <elliott> -- FIXME: Give this its own type too.
05:39:14 <elliott> <elliott> , PF.int "isCreative"
05:39:14 <elliott> <elliott> , PF.worldID "world"
05:39:16 <elliott> <elliott> , PF.difficulty "difficulty"
05:39:18 <elliott> <elliott> , PF.ubyte "worldHeight"
05:39:20 <elliott> <elliott> , PF.ubyte "maxPlayers"
05:39:22 -!- elliott has left ("Leaving").
05:39:35 -!- elliott has joined.
05:39:37 <elliott> <elliott> , PF.int "isCreative"
05:39:38 <monqy> whats happening
05:39:39 <elliott> <elliott> , PF.worldID "world"
05:39:41 <elliott> <elliott> , PF.difficulty "difficulty"
05:39:43 <elliott> <elliott> , PF.ubyte "worldHeight"
05:39:43 -!- ChanServ has set channel mode: +q *!*@unaffiliated/elliott.
05:39:43 <monqy> oh no
05:39:45 -!- elliott has left.
05:39:50 <fizzie> Good client. Best friend.
05:40:13 <fizzie> qualifyFieldName, except that sounds like it should have something to do with module names.
05:40:32 <oerjan> i said prefixFieldName in the middle of the spam
05:40:37 -!- helpohgod has joined.
05:40:42 -!- elliott has joined.
05:40:51 <monqy> hi
05:40:55 <fizzie> oerjan: No, you said prefixPacketField; I said prefixFieldName.
05:41:01 <helpohgod> HELP
05:41:02 <oerjan> oh hm
05:41:15 <oerjan> well they are fields for use in packets
05:41:21 <helpohgod> HELP
05:41:28 <monqy> what's up with your client, helpohgod
05:41:32 <oerjan> helpohgod: are you elliott?
05:41:35 <helpohgod> HELP
05:41:42 <helpohgod> HELP
05:41:42 <helpohgod> HELP
05:41:48 <monqy> double quieted
05:42:01 <helpohgod> :'(
05:42:21 <oerjan> helpohgod: have you tried turning it off and on again?
05:42:29 <helpohgod> :'(
05:42:47 <fizzie> Have you checked if the power cable is plugged in?
05:42:52 <monqy> loss of precious data / precious data loss
05:43:07 <monqy> have you brought it to a therapist
05:43:12 <helpohgod> HELP
05:43:17 <oerjan> helpohgod: anyway, we've made several new suggestions
05:43:28 <helpohgod> I CAN'T TALK YOU FUCKER
05:44:09 <helpohgod> -Q ME OR DIE
05:44:13 <helpohgod> pls
05:44:24 <monqy> what if the paste freaks out again...
05:44:41 <helpohgod> oerjan hi -q pls fizzie thx ok
05:44:43 <monqy> has it stopped freeaking
05:45:01 <oerjan> helpohgod: i am not -q'ing you until you can guarantee it won't continue spamming
05:45:20 <helpohgod> im not good with computers but i tihnk it is fine now
05:45:25 <helpohgod> i did the flushq thing
05:45:27 <oerjan> ok
05:45:35 -!- ChanServ has set channel mode: -q *!*@unaffiliated/elliott.
05:45:38 <elliott> <elliott> , PF.ubyte "maxPlayers"
05:45:38 <elliott> <elliott> ]
05:45:39 <elliott> <elliott> the fields are loginEntity, loginUnused, loginMapSeed, etc.
05:45:39 <elliott> <elliott> and I need to reconstruct this field name within my fake "show" function that shows it like a record (but with more whitespace)
05:45:39 <helpohgod> oh no
05:45:41 <elliott> <elliott> oerjan: HOPE THIS HELPS
05:45:42 -!- ChanServ has set channel mode: +q *!*@unaffiliated/elliott.
05:45:50 <oerjan> SHEESH
05:45:58 <helpohgod> help
05:46:17 -!- elliott has quit (Remote host closed the connection).
05:46:26 <helpohgod> im ... restart xchat
05:46:32 -!- ChanServ has set channel mode: -q *!*@unaffiliated/elliott.
05:46:33 -!- elliott has joined.
05:46:41 <fizzie> That is a very persistent paste subsystem.
05:46:43 <oerjan> whew
05:46:48 <elliott> <elliott> oerjan: because all the fields of my packets are named with that :P
05:46:48 <elliott> <elliott> otherwise there are lots of clashes because the field names in my protocol files are short
05:46:48 <elliott> <elliott> e.g.
05:46:48 <elliott> <elliott> , packet 0x01 "Login"
05:46:48 <elliott> <elliott> [ PF.entityID "entity"
05:46:50 <elliott> ONLY KIDDING
05:46:53 <monqy> ha
05:46:53 <monqy> ha
05:46:54 <monqy> ha
05:47:00 <elliott> it am funy joke
05:47:03 <oerjan> ...should i ban him.
05:47:13 <elliott> only if you ban yourself for all those suggestions
05:47:26 <oerjan> elliott: we made some new ones in the logs
05:47:31 -!- helpohgod has quit (Quit: SACRIFICED TO LIFE FOR THE BLOOD GOD).
05:47:41 <oerjan> you'll have to dig through some spam to find it, though
05:47:41 <elliott> oh i think helpohgod might be in eternal suffering torment now
05:47:42 <elliott> cool
05:47:52 <elliott> 05:40:32: <oerjan> i said prefixFieldName in the middle of the spam
05:47:56 <elliott> i /responded/, my client was just stubborn
05:48:07 <elliott> <elliott> oerjan: i wouldn't have ragepasted that but I did tell you to read it RIGHT AFTER you started talking again :P
05:48:07 <elliott> <elliott> prefixPacketField might be good
05:48:07 <elliott> <fizzie> It just keeps going.
05:48:07 <elliott> <elliott> i'm not quite sure it's a prefix though
05:48:07 <elliott> <elliott> i mean, it treats both its arguments quite equally :P
05:49:46 <elliott> oerjan: GEE THANKS
05:49:58 <oerjan> hm? also fizzie had some.
05:51:05 <elliott> oerjan: gee thanks for not responding to my response :P
05:51:10 <elliott> fizzie: what were yours
05:52:43 <fizzie> <fizzie> Something on the lines of expandFieldName or something. uniqueifyFieldName. prefixFieldName(MaybeWithSomething). elaborateFieldName. differentiateFieldName. It was something along those lines, but not quite as silly.
05:53:05 <oerjan> also qualifyFieldName
05:53:13 <elliott> oerjan: I dunno, I'm not sure prefix is quite right >_>
05:53:27 <oerjan> i can add all those with *PacketField instead :P
05:53:33 <fizzie> <fizzie> qualifyFieldName, except that sounds like it should have something to do with module names.
05:53:51 <fizzie> It was something rather generic, anyway.
05:53:59 <oerjan> elliott: i am thinking of prefix as a verb, there
05:54:11 <elliott> oerjan: yes, but, I dunno
05:54:14 <elliott> would you call (++) prefix?
05:54:21 <elliott> it prefixes the second string with the first one
05:55:01 <oerjan> it _is_ a kind of qualify, though, you're example used PF.
05:55:08 <elliott> ...
05:55:10 <oerjan> so, maybe qualifyPacketField
05:55:13 <elliott> oerjan: ok, you clearly have no idea what i'm writing
05:55:15 <fizzie> "No, you're the example."
05:55:18 <pikhq> Man. I realised something that C++ does better than C.
05:55:20 <oerjan> *your
05:55:35 <pikhq> It is possible to make a conformant C++ implementation that is Turing-complete.
05:55:39 <pikhq> The same is not true of C.
05:55:40 <oerjan> elliott: a haskell compiler, i thought
05:55:40 <elliott> i'm going to paste this again because maybe you will actually read the last line this time
05:55:45 <elliott> 05:35:37: <elliott> <elliott> , packet 0x01 "Login"
05:55:46 <elliott> 05:35:37: <elliott> <elliott> [ PF.entityID "entity"
05:55:46 <elliott> 05:35:38: <elliott> <elliott> , PF.string "unused"
05:55:46 <elliott> 05:35:40: <elliott> <elliott> , PF.long "mapSeed" -- as above
05:55:46 <elliott> 05:35:42: <elliott> <elliott> -- Note that this is an *int*, not a bool.
05:55:46 <elliott> 05:35:44: <elliott> <elliott> --
05:55:48 <elliott> 05:35:46: <elliott> <elliott> -- FIXME: Give this its own type too.
05:55:50 <elliott> 05:35:48: <elliott> <elliott> , PF.int "isCreative"
05:55:52 <elliott> 05:35:50: <elliott> <elliott> , PF.worldID "world"
05:55:52 <monqy> hi
05:55:54 <elliott> 05:35:52: <elliott> <elliott> , PF.difficulty "difficulty"
05:55:56 <elliott> 05:35:54: <elliott> <elliott> , PF.ubyte "worldHeight"
05:55:58 <elliott> 05:35:56: <elliott> <elliott> , PF.ubyte "maxPlayers"
05:56:00 <elliott> 05:35:58: <elliott> <elliott> ]
05:56:02 <elliott> 05:36:00: <elliott> <elliott> the fields are loginEntity, loginUnused, loginMapSeed, etc.
05:56:04 <elliott> 05:36:02: <elliott> <elliott> and I need to reconstruct this field name within my fake "show" function that shows it like a record (but with more whitespace)
05:56:07 <elliott> f "Login" "mapSeed" == "loginMapSeed"
05:56:09 <elliott> thus reconstructing the record field name
05:56:11 <elliott> oerjan: >_<
05:56:13 <elliott> oerjan: no this is not the haskell compiler
05:56:21 <monqy> oh I was afraid for a moment there
05:56:51 <fizzie> elliott: But it could be the first Haskell compiler with a difficulty setting!
05:56:55 <elliott> fizzie: please tell me _you_ understand the usecase, or maybe I'm just mad
05:57:58 <fizzie> I think I do, yes. Doesn't help in the naming department, though.
05:58:22 <oerjan> ok a game.
05:58:31 <elliott> IT DOESN'T MATTER WHETHER IT'S A GAME OR NOT
05:58:33 <elliott> HOLY SHIT >_<
05:58:44 <elliott> monqy: you understand my description of the usecase too right???
05:58:49 <oerjan> elliott is a very angry man.
05:59:08 <oerjan> i am still not sure qualifyPacketField is a bad name
05:59:10 <elliott> oerjan: yes, you've never got aggravated when someone on IRC didn't understand you to the point of absurdity :P
05:59:32 <monqy> elliott: i think i understand the usecase
05:59:53 <oerjan> or, qualifiedPackedField
06:00:07 <elliott> it might not be a bad name, but it does suggest modules to me.
06:00:31 <fizzie> "packetQualifiedField". You can even put the words in any order.
06:00:46 <oerjan> hm...
06:00:58 <oerjan> yes, maybe better
06:01:14 <elliott> fizzie: no, I want to avoid packet prefix for previous typeclass issue
06:01:26 <oerjan> oh right, that stupid...
06:01:41 <elliott> oerjan: excuse me :P
06:01:50 <elliott> and I'd rather have "FieldName" instead of "Field" in the name, because this definitely does /not/ do anything to packets or their fields, it just constructs a field name
06:02:10 <oerjan> wrappedFieldName
06:02:37 <fizzie> extendedFieldName.
06:03:23 <oerjan> fieldNameWrapper
06:04:13 <elliott> You're awful people. :(
06:04:22 <fizzie> Oh no, I feel the urge to go all silly on this again. Best not, it might cause a flip-out.
06:04:29 <elliott> Æ>ΩŁ©ª‘
06:04:35 <elliott> ØıÞ°¿‘ÆŁRCS{ZЩ×÷W
06:04:38 <elliott> ↓↓↓↓↓↓↓↓↓↓
06:04:51 <fizzie> Apparently even mentioning it does.
06:04:53 <monqy>
06:05:06 <oerjan> fizzie: you too eh
06:05:42 <oerjan> packetN'FieldName
06:05:49 <oerjan> oh darn
06:05:59 <fizzie> Would (↓++↑) be infix-legal?
06:06:17 <oerjan> > let (↓++↑) = "maybe" in (↓++↑)
06:06:18 <elliott> T̷̟̺̬̮̗̞̖̪̭̳͖̤͇̦̪̾ͣ̿ͯ̇͑̾̉̑̚̕͟͠Hͨ̂ͬ̽ͥ̒̎ͧ͂ͤͩ̌̍ͨ͂̊̒ͯͥ҉̤̼̭͕̟̲͓͉̺̻̘͎̰̬͟͟͡E̵̸̡̠̜̤̜̤̺̤̲̜̼̻̠͖̣̫ͮ̿̑ͩ͋ͯ̔̓͐ͥͨ̐̿̌ͫͣ̉ͅͅͅ ̨͚̮͉̬̦̭̮̗̭̪̄́ͥ̅ͣ̊͊͐̾̏̿͘͝R̩͎̙̰̟͖̺̙̣̺̰̘̰̼͓̬̪ͣ͐̈ͬ̈ͫ̇̑̉ͥ̉́͠͞O̸̧͓̖̣̙ͥ̏͗ͥ͌̃̒͘͞Ąͣͨ͆ͥ̓ͤ̓ͤ͋ͬ̋ͮͯ͐̃̇͘҉̢̫͉͍͎͈͚̞R̝̖̠̳̖͈̞̹̉̇̈̓̓͋̄̈ͣ́̚͜
06:06:18 <elliott> ̫ ̸͙̜͕̺̮͈̜̫̼͙̲͕̑ͯ̅ͤ̆̾̌͗̾ͩͭ̈́ͯͬ͒͋̀͢Ơ͆̈̽ͭ̾͂ͣ̏̈́ͩ̄ͦ̆ͫͨ̒ͮ́̚̚͘͏̮͔̟̙͉̠͚̣̙̞̜̣F̴̵͚͇̙̯̼̪̼̬̺͚̜͕̘͂̄ͪͬ̾̈́̽͛͌ͤ̒̒̐̍ͦ͠ ̴̺͔͉̰̘̜̬̙͓̹̥̫͈̺͖ͭ̆̂̉ͪ̓ͭͨͥ̓̈́̽̈ͫ͝ͅP̨̨̨ͩ͌̾̄͛̎̈ͩ̐̈ͩ͑ͩ͆̚҉͇̜̙̟̱͍͈̝̦̫͝Ā̢̯͍̗̹̳͙̫̤͖͉͓̰̝̤̻̠͉̖̓ͨ̑͆̚̚̚I͖̫̜̲͎͈̪̬̪͚͕̳̮̗͉̦̗̫ͯͥ̉ͤ̍ͭ̑ͦ̈́ͦ̔͘͘͜͠
06:06:19 <lambdabot> "maybe"
06:06:19 <elliott> ̹N̢̅͋̑ͯ͋ͧ͟͏͍͕̤̝̼̻̗̤̖̳̞̗̹͓̯̰̰͔
06:06:36 <elliott> S̨ͪ͊̎̏͆ͯͤ̚҉̩̳̳̖͈͔̕Á̛̬͚̪̞̥̪̳͚͙͙̠̹̙͚̲̪̱ͩ͐ͬͧ̎̃̅͌̋ͪ̀͊̄̂́̀̕͠Ṱ̸̡̞̫͇̦̺̜̩̞̣̳̰̹̻͔͇̝̮̒̆̓ͥ̀̋̏̂̽͊ͩͪͣ̇̀͐͛͗̀͘͠A̵̠̼͇̞͇̣͍̬̘̥̭̩̪̩͎̳̗͌̄͂̐̆̏͌̏̾ͨ̎̿̆ͦ͌̚͜ͅÑ̵̵̸̡̟̫̻͇̹̰̮͓̖̘̗̞̮͔̰̻͚͈͆̍̄̄̒͊̊̽͗̓ͪ̐ͫ̍ͮ̀ ̥̯̫̟̙̜̪̦̬̻̄̓̔̀̀͢W̴̱̻̯̹͍͔̳̦̬̝̬̘̽̅̌͆ͧͪ̂̊I̒̎ͯ͂ͪͥͦ̎͛̐ͬ̌͗͊
06:06:36 <elliott> ̡ͯͪ͛͆͏̤̝̜̱͇̻̟̯̣̣̰̮͉͇͡Lͦ̈̍̾ͣͣ̊̾ͪͧͮ̉̄̒̐ͨ̚҉̳̯̭̮͇̻̦͎̲̬̣̲̙͖͜Ļ̶̱̙̙̮̝̣͖̗̠͖ͤ͗͋͒͗ͫ̈̀́̚ ̵͖̜̩̩̱̱̬̺̞͔̹̠̰̒ͣ̔ͥ͗ͥͩͬͧͭ̀̕͠S̴̸̨̭͉͕̹͙͚̃ͧ͑̋̈́̆ͬ͂̚͟͠H̸̲̱͈͖̱͎͔̰̳͇͖̠̤͔̩̲̪͍̋ͭ̒̉̐̿̂͒Ě̷̫̝̼̭͖̗̘͔̙̹̯͎ͫ̾ͨͩ͊ͩͭ̐̑ͤ͂̉ͨ̑͊̌̎̚͜͟͡L̛̖̦̠̤̑̀̓͛̓̽ͪ̽͛͋ͦ̑ͩ͘͡V͑̀͂͂̒̋̈̔ͧ̇ͣͫͬ̾͒̈
06:06:36 <elliott> ̨̨̧̱̮̱̱͚̞ͫͩ́͜ͅEͮ͐ͯ́̈́̄̎̃ͥ̌̇̇ͪ͊ͤ͂ͦ͛҉̵̝̩̱͙̹̖̩̮̹̮̥̘̀͢͞ ̙̹̪͉̘͈̻̬͇̪̳̳̭̙̲͕͍̂͊̍ͣ͐̄̌̿́̔͛ͧ̈́ͭ͋ͦ̾̈́̀͢ͅỲ̞̻͓͇̗̫̬̪̥̦̻̱̮͚̦͚̪ͮͯͫ́̿͑ͫ̉ͫ̈ͬͤ̐ͣ̓̉̄ͮ͢ͅÒ̄̿͒͘͏̢̛̹̪̣̣̰̤̠͎̟͍͚̱̺̲̣̤͠Ū̵̡͚̟̮͎̜͖̳̮͔͊͑̿͐̿͞ ̐ͨͫͮ́́̽͏̴͔̥̥͘T̶̷̸͈͔̭̯̯͇̟͚͎̝͕̻̯͓̲̮͓͔͆͂̈́́ͬ͘͟Ő͂ͮ̄̈́̅ͬ͛̾͒ͣ͂
06:06:41 <elliott> ̵̨̡͕̻͚͎̞̯̲̳̮͉̮̟̣̠ͥ͛ͭ̀ ̧̡̥͔͕͕͈̙͖̟̞̼̪̙̬̩͕͗̔ͬ̇ͧͮͭ͗͟Ţ̫̰̠͔̝ͤͥ̆͋̽̑ͯͥ͂͐ͧ̆̅̔͂̀̇̐̕͟H̸̡̞͔̪͕̠̘̟̱̙̫̰͛̃ͦ̄͐̑̀̿̓͌̂̈ͦ̽̾̔̌͛͢͞ͅẼ̶̽͛̒̓ͣ̃̄̋͊̚͟͢͠҉͇͈͓̞͇̗͎͈͇̜̣̭͖̲̥͚̯͈̹ ̶̛̥̬͉͇̖̬̙̯̪̥͔̮̠̟͙̮̥͑ͫ̂ͦ͌̐ͧ̓̋̚D͍͍̪͎͓̤͔͈̮̘͚͉̰̮͈̙̬ͨͪ̒̐͋̕͟͠Eͣͯͩ̊ͥ̚̚͘͏̘͖͓̹͖͟͜Pͭͦ̅̌ͯ̓̀̆̚
06:06:46 <elliott> ̶̇̕҉̡͇̭͚̳̤͚̠͔̲͚͚̹̲̙̮̙ͅT͆̍́̄͏̯̘̲̲͚͇̺̰͍̗̟̜̤̻̲̕Hͥͣͮͮ̔̏̍̔̓̚҉̨̢̨̼̱̗̦̙̜̗̯͇͙̦̳̲̲͇̭̦͚̖͜Ş͙̣̗̰̯ͮ͊́͢ ̳̱̲͙͑͂ͫ̋̿͆͆̎̎͛ͨͧ͛̈̀̚͝O̡̮͈̞͉͓͔̭̼̺̻̯̦͎̜̪̘͍̎ͤ̄̌̿͜͡Ḟ̤̠͈̥̞͚̥̭̲̩͕̓̏̂ͨ͆̽ͮ́͟͞ͅ ̢̛͍̰̥̭͛̃́̄͛ͥ̍ͤ̑ͬ̄̓̈̀̈ͣ̀͜E̡̛̥̼͈̙̱ͬͯ͋͂̓̌ͨ̒ͤ͐͒̊̓̉̎͆́͠͠Tͪͥ͛ͫͨ͛ͫ̆̿̃ͫͤ̑̌
06:06:49 -!- nooga has joined.
06:06:51 <elliott> ̸̛̰̪̮̳̒ͩ̓̉Ē̫̜̺͓̞̆ͧͣ̔͋ͩͯͮͬ̀͂͘͢R̷̝͔̣͉̮ͤ́̓ͫͬ̇́̒̓ͨ̉̔̋̽̒̆̀͒͒̀͟͠͡ͅN̷̷̨̡̯̩͕͓̰̪͔͕̗̻̣̰̱̳͓̻̰̝̑̆̽̾̿͆ͤ̒ͯ̂ͩ̍̓̚͠I̶̵͔̩̗͚͚͔̘̖͖̅̔͛͗ͬ͗ͦͪ͂͐͑̌̾̓̚͘̕T̋͌̇̑͊͂͏̦̥̞̞͢͠͞Ỹ̸ͧ̓͛̓̉̆͐͏̫̮̹͈͍̟
06:06:53 <oerjan> and thus zalgo was born
06:07:02 -!- elliott has left ("Ŗ̻̭̖͉̦͍̖̘̮͓̹̲͈̯̪͇̤̊͛ͯͥ̓͑ͫ̍̈ͨ͆ͧͤ̉̄ͬͮ̉͢ͅͅO̖͈͖̳͍͕̠͚͉̰̠̊ͣͬ̈̍̂̽̋ͭ̔̆ͫ̎̚͜͝Ą̸̸̛̼̘̯̝̟͎̜͚̻̘͔͕̒̋͛͑A̹͚̖̮͚͙̥͙̙͚̜̝̝̝̲͒̑̔͆̆͟͡͠ͅͅA̡͋ͮ̌̑͗̎͌ͧ͊͋̂ͩ̔̅͞").
06:07:04 <monqy> hey, ↓++↑ is a good name
06:07:10 -!- elliott has joined.
06:07:13 <elliott> yo sup
06:07:16 <fizzie> zalgoFieldName is something I also was thinking.
06:07:28 <oerjan> elliott: nice, you managed to destroy my status line
06:07:33 <elliott> you deserve it
06:07:59 <elliott> oerjan: somehow i doubt those displayed right for you anyway :P
06:08:05 <oerjan> wouldYouLikeFieldsWithThatPacket
06:08:33 <fizzie> supersizedFieldName.
06:08:34 <oerjan> i saw something about SA T A N
06:09:41 <oerjan> elliott: a compromise, if you switch the argument order you can call it fieldNameWithPacket
06:10:06 <elliott> packetCon (Packet _ pname fields) = recC pname $ map (packetField pname) fields
06:10:06 <elliott> packetField pname fi = (,,) (mkFieldName pname (fieldName fi)) IsStrict <$> fieldType fi
06:10:06 <elliott> mkFieldName pname fname = mkName $ mkPacketFieldName (nameBase pname) fname
06:10:18 <elliott> showPacketRecord :: (Packet a) => a -> ShowS
06:10:18 <elliott> showPacketRecord p =
06:10:18 <elliott> showString (packetName p) .
06:10:18 <elliott> showString "\n" .
06:10:18 <elliott> showFields firstField midField (showString " }") (packetShowsFieldsPrec 0 p)
06:10:19 <elliott> where field (name,f) = showString (mkPacketFieldName (packetName p) name) . showString " = " . f
06:10:20 <elliott> firstField x = showString "\n { " . field x
06:10:22 <elliott> midField x = showString "\n , " . field x
06:10:24 <elliott> showFields _ _ _ [] = id
06:10:26 <elliott> showFields f g h (x:xs) = f x . showConcatMap g xs . h
06:10:28 <elliott> those are the two actual uses of it
06:11:31 <oerjan> the first use doesn't really argue for changing the name
06:12:04 <oerjan> addPacketToFieldName
06:12:14 <oerjan> very descriptive
06:12:33 <elliott> i'm definitely changing the name, especially since
06:12:36 <elliott> mkName :: String -> Name
06:12:36 <elliott> but
06:12:42 <elliott> mkPacketFieldName :: String -> String -> String
06:12:46 <elliott> when the two are mixed...
06:12:54 <oerjan> hm
06:13:21 <fizzie> combineTypeAndField.
06:13:44 <fizzie> combineHarvester OH NO THE SILLY I MUST SHUT: UP.
06:14:24 <elliott> skeletonHarvester.
06:14:29 <monqy> somehow i thought that too
06:14:30 <monqy> somehow
06:14:48 <elliott> skeletonHarvester (cycle "SKELETONS") (cycle "SKELETONS") = cycle "SKELETONS".
06:14:49 <monqy> it must have been the harvester
06:15:00 <elliott> It is a perfect simulation.
06:15:22 <oerjan> harvestTheField
06:15:37 <oerjan> reapAndCombine
06:16:01 <fizzie> Someone has "this ship is being sunk by Skeletor" as one of his Finnish/Swedish "show that you can use the passive voice" exercise.
06:16:27 <monqy> not the same thing.......
06:16:45 <monqy> if the ship were being sunk by skeleton harvester, however......
06:19:42 <elliott> fizzie: why must show......
06:19:50 <elliott> monqy: then the skeletons on the ship...
06:19:53 <elliott> would be harvested..........
06:19:54 <elliott> (soon)
06:20:56 <fizzie> Skeletor vs. The Skeleton Harvester - match of the century.
06:21:30 -!- copumpkin has quit (Ping timeout: 248 seconds).
06:21:55 -!- copumpkin has joined.
06:22:07 <elliott> prefixFieldName is tempting; did any of you suggest that exactly?
06:22:13 <elliott> fizzie: I'm pretty sure there's no "The".
06:22:24 <elliott> http://buttersafe.com/2008/03/13/romance-on-the-floating-island/ <-- yeah, no "the".
06:22:25 <monqy> lastlog turns up results, at lesat
06:22:41 <elliott> Oh yeah, lastlog.
06:24:41 <elliott> TODO: Move the serialisation stuff and prefixFieldName into another module so I can not-export them from MC.Protocol.
06:25:13 <fizzie> It's the name oerjan continuously (read: once) tries to steal credit for.
06:25:41 <oerjan> continuously in a discrete topology
06:28:11 <fizzie> Maybe you should put the function in... wait for it... MC.Utils!
06:28:45 <fizzie> Oh, did you already make one? Then that won't really fly.
06:28:59 <oerjan> yeah cannot have more than one function in it
06:29:08 <oerjan> MC.FieldUtils
06:29:41 <fizzie> MC.Utils.ForAppendingPacketAndFieldNamesWithProperCase.
06:30:06 <oerjan> clearly.
06:30:27 <oerjan> <elliott> I hate you.
06:30:30 <fizzie> import qualified MC.Utils.ForAppendingPacketAndFieldNamesWithProperCase as MUFAPAFNWPC.
06:30:54 <elliott> I'm on the plane now. I sure hope you enjoy your lives, because they're about to be...
06:30:55 <elliott> CUTOFF.
06:31:03 <oerjan> so easy to pronounce, too
06:31:13 <elliott> DO YOU GET IT
06:31:26 <fizzie> MUFDWSAOTLT.cutoff, you mean.
06:31:30 <oerjan> but you _liked_ my cutoff implementation.
06:31:53 <fizzie> (MC.Utils.ForDealingWithStringsAndOtherThingsLikeTh5.)
06:32:00 <fizzie> s/5/at/
06:32:23 <oerjan> fizzie: nah 5 is ok, the cutoff function has obviously been applied here
06:37:50 <elliott> oerjan: this is the final cutoff, fwiw: http://sprunge.us/eaDO
06:45:34 <elliott> The shit i have to deal with as a retail employee... (imgur.com) <-- i really wish people would put some kind of warning on reddit links like this. (ok I probably should have looked at the NSFW tag)
06:46:03 <monqy> i cannot imagine
06:46:26 <elliott> monqy: http://imgur.com/7Ufsm. (do not click this.)
06:46:53 <elliott> Move packet field name handling into MC.Protocol.Types
06:46:53 <elliott> oh no it's over fifty characters
06:46:55 <elliott> what do i dooo
06:47:16 <oerjan> wat
06:47:21 <elliott> Abstract packet field name generation out of TH
06:47:22 <elliott> there we go
06:47:26 <elliott> oerjan: git commit summaries should be fifty chars or less
06:47:35 <elliott> todo
06:47:36 <elliott> give
06:47:36 <elliott> <elliott> Abstract packet field name generation out of TH
06:47:38 <elliott> a better commit message
06:47:50 <oerjan> elliott: so, gits are even worse than twats?
06:53:44 <elliott> http://sprunge.us/PdCV
06:53:53 <elliott> look at this awful "git diff" I have to make into modular commits
06:57:16 <olsner> commit more often yo
06:57:50 <elliott> olsner: I don't work linearly
06:58:01 <elliott> olsner: and I'm not going to start ten branches for two hours' worth of work
06:58:37 <elliott> As soon as I run into any kind of blockade I work on something else, there's not much I can do about it :P
06:58:58 <olsner> you can commit chunks as you switch back and forth, then rebase to group them back together and squash into commits that make sense
06:59:17 <elliott> olsner: s/you can/I can/
06:59:26 <elliott> that would result in a bunch of commits that completely undo and replace other commits
06:59:39 <elliott> oh, and I often end up restructuring things in the process of solving a problem just because it bugs me
06:59:43 <elliott> so I'd basically end up in merge hell
06:59:51 <olsner> plus it's probably at least as difficult as just sorting through the diff afterwards :)
06:59:55 <elliott> it's (marginally) less painful to do all the work, and then selectively reapply it
07:00:11 <elliott> git doesn't really have a nice workflow for that
07:00:17 <elliott> the only thing I can work out involves a lot of stashing
07:02:26 <olsner> if each topic-related change ends up restructuring other code, you'd probably quickly end up with conflicts between the stuff you've stashed
07:02:39 <elliott> olsner: nah, I mean
07:02:53 <elliott> olsner: my strategy of large ugly diff -> nice atomic commits involves stashes
07:04:29 <elliott> olsner: basically, you have a "todo stash", which is initially the ugly diff; each iteration, you pop that stash, then run "git add -p", and select all the hunks you want to work with this commit round. then you stash it again with --keep-index (becoming the new todo stash, with a few hunks ripped out of it), make it work (ofc, just selecting random hunks doesn't mean it'll compile as a whole, so modifications will likely be required to be an ato
07:04:29 <elliott> mic commit), then you commit it and start again
07:05:06 <elliott> ...I swear there was another stash involved...
07:05:20 <elliott> olsner: tl;dr: git stash → loop {git stash pop → git add -p (select hunks to work on) → git stash --keep-index → make it work → git commit}
07:05:25 <elliott> oh, the actual workflow I did was
07:06:01 <elliott> hmm
07:06:02 <elliott> I forget
07:06:05 <elliott> but this way is simpler :)
07:06:14 <elliott> although you need to git add -p before the commit again but w/e
07:06:18 <elliott> well or just git commi t-a
07:06:20 <elliott> git commit -a
07:06:35 <elliott> olsner: if you have a better way i would love to hear it :P
07:06:54 <olsner> that's similar to what I do when I bother actually checking if all the intermediates work
07:07:57 <elliott> olsner: Well, if they don't at least fail in a way that makes sense, then you've just made an atomic commit with a really hard to read diff (because it's split into arbitrary parts) :)
07:08:04 <elliott> How does it differ, re: similar?
07:08:17 <elliott> I might take it a bit far though, every commit so far has compiled without a single warning.
07:10:44 <olsner> I'd probably not bother with the initial stash/stash pop though, and just do commit/stash/test and amend as needed/unstash
07:10:50 <elliott> olsner: oh, and re: olsneryasm, that diff also makes my code only work with the git version of one of the libraries I use :P
07:11:02 <elliott> olsner: hmm, how would that work?
07:11:25 <elliott> you can't "git commit" as the first step, that's nonsense, there's nothing to commit yet
07:11:32 <elliott> (well, there's too much :))
07:11:55 <olsner> right, commit using add -p to select the part to extract into a commit
07:12:06 <olsner> i.e. using git gui to select the hunks
07:12:26 <elliott> olsner: what? then how do you "test and amend as needed"?
07:12:34 <elliott> the working tree will still contain all of the other changes
07:12:40 <elliott> so you can't even see if it builds or not
07:12:51 <olsner> that's why you stash after making the commit
07:12:59 <olsner> to remove the other changes
07:13:50 <elliott> olsner: are you suggesting I use git commit --amend or something?
07:14:11 <olsner> basically it keeps the tentative commit as the last commit (and you amend it with changes afterwards) instead of as uncommitted changes in the index
07:14:22 <elliott> olsner: you realise the index is a commit, right? :)
07:15:42 <elliott> olsner: I mean, I don't see how that's simpler, since it involves using a commit to simulate the index
07:16:18 <elliott> what I really want is "git stash pop -p"
07:16:30 <elliott> which presents a "git add -p" interface to all the hunks in the stash, applies those hunks to the working tree, and takes them out of the stash
07:16:31 -!- kmc has quit (Quit: Leaving).
07:16:36 <elliott> that would simplify things a lot
07:17:07 <olsner> it makes it so you don't have to worry about preserving or messing up the index, which I think is a bit too easy to do otherwise
07:17:37 <olsner> but sure, it *is* just a different way of doing the same thing
07:17:37 <elliott> fair enough
07:18:02 <elliott> now to decide which of the million changes to do first
07:18:43 <elliott> Stage this hunk [y,n,q,a,d,/,K,g,s,e,?]? s
07:18:44 <elliott> Split into 7 hunks.
07:18:46 <elliott> that hunk was way too big, git
07:18:51 <elliott> i'm disappointed in you
07:20:11 <fizzie> Hunky-dory.
07:21:03 <olsner> a simple choice between y,n,q,a,d,/,K,g,s,e - how good that all of those alternatives are completely obvious
07:22:20 <elliott> olsner: well, to be fair, darcs had about as many choices :)
07:22:51 <elliott> ...darcs' interactive interface made me think "oh, this is smooth and comforting and pleasant and civilised", though; git's makes me think "augh stop trying to be darcs. you are a cold emotionless robot. you can _never_ be darcs."
07:24:20 <fizzie> The / looks sort of out of place. (Also it's probably a /oD and that n is probably going to zap you with it real soon.)
07:26:07 <elliott> Can I rearrange history with rebase --interactive?
07:26:12 <elliott> I just want to put a patch before the other ones.
07:26:27 <elliott> I'm fine with bumping the commit times of the commits after it (in fact I'd prefer it).
07:26:28 -!- kmc has joined.
07:26:30 <elliott> s/patch/commit/
07:26:53 <olsner> yes, I think that's its primary feature
07:27:03 <fizzie> Yes, you should be able to just reoder the lines.
07:27:05 <elliott> [master c80b9f2] Add missing dependency on transformers XXX FIXTHISCOMMITMESSAGE
07:27:05 <elliott> Pro.
07:27:24 <elliott> olsner: fizzie: What will it do to the commit times?
07:27:30 <fizzie> I don't think it will touch those.
07:27:35 <fizzie> So it'll look a bit silly.
07:27:47 <elliott> How do I edit those? ;___;
07:27:52 <olsner> I think the commit times are updated but the author times stay the same
07:27:58 <elliott> That's even worse :P
07:28:07 <elliott> Can I just bump all the times after that one?
07:28:31 <elliott> It's for the best though because it'll make these commits actually work...
07:29:15 <elliott> Eh
07:29:20 <elliott> Will GitHub show the differing commit date?
07:29:37 <elliott> commit de16b332b0158ae562e1b415d800d5315da3eba4
07:29:37 <elliott> Author: Elliott Hird <penguinofthegods@gmail.com>
07:29:37 <elliott> AuthorDate: Sat Oct 1 20:20:47 2011 +0100
07:29:37 <elliott> Commit: Elliott Hird <penguinofthegods@gmail.com>
07:29:37 <elliott> CommitDate: Mon Oct 3 19:02:03 2011 +0100
07:29:37 <elliott> Oh no.
07:29:41 <elliott> Can I undo a rebase?
07:29:54 <olsner> you should have the previous branch in your reflog
07:29:54 <elliott> (I've already pushed that commit; I didn't change it in the rebase but mistakenly included it.)
07:30:09 <elliott> 3a9f935 HEAD@{0}: rebase -i (pick): Remove -O2 from the Cabal file
07:30:09 <elliott> 7884128 HEAD@{1}: rebase -i (pick): Add the git repository to the Cabal file
07:30:09 <elliott> bb6df3e HEAD@{2}: rebase -i (pick): Add showPacket{Inline,Record} functions
07:30:09 <elliott> a84b1e1 HEAD@{3}: rebase -i (pick): Abstract packet field name generation out of TH
07:30:09 <elliott> 0fa7b8b HEAD@{4}: rebase -i (pick): Remove unused "id" field name handling
07:30:09 <elliott> a61d65a HEAD@{5}: rebase -i (pick): Add missing dependency on transformers XXX FIXTHISCOMMITMESSAGE
07:30:11 <elliott> de16b33 HEAD@{6}: checkout: moving from master to de16b33
07:30:13 <elliott> 234f0de HEAD@{7}: checkout: moving from master to 234f0de
07:30:15 <elliott> Wow I have no idea how to work this.
07:31:14 <olsner> looks like 7 is your old branch and 6 is where rebase rewinded to
07:31:22 <elliott> "Looks like"? :P
07:31:41 <elliott> So, ehhm, how would I go back to that branch? git reset HEAD or something?
07:32:05 <olsner> if you have no local changes to preserve, git reset --hard abc123
07:32:28 <elliott> Does "local changes" include stashes?
07:32:37 <olsner> it'll blow away the index and changed files in your working directory
07:32:44 <elliott> That's OK.
07:32:51 <elliott> Yar, that's right
07:32:51 <elliott> Thanks
07:32:55 <olsner> it doesn't change any commits
07:33:19 <fizzie> "You can do an interactive rebase and choose edit for the commit you would like to alter its date. When the rebase process stops for amending the commit you type in for instance git commit --amend --date="...", says (what else?) stackoverflow. (That would edit the author date; presumably GIT_COMMITTER_DATE="..." git commit --amend to edit the other date.)
07:33:27 <elliott> --committer-date-is-author-date, --ignore-date
07:33:28 <elliott> These flags are passed to git am to easily change the dates of the rebased commits (see git-am(1)). Incompatible with the --interactive option.
07:33:31 <elliott> help????/
07:33:46 <elliott> will those
07:33:49 <elliott> be helpful
07:34:52 <olsner> if it's only a specific commit you want to change the date of, what fizzie said
07:35:14 <elliott> it's all the ones since the one I'm moving up to the top
07:35:20 <elliott> pick 0c48e1c Remove unused "id" field name handling
07:35:20 <elliott> pick 1033a69 Abstract packet field name generation out of TH
07:35:20 <elliott> pick 5c31d4c Add showPacket{Inline,Record} functions
07:35:21 <elliott> pick a3155c1 Add the git repository to the Cabal file
07:35:21 <elliott> pick 627ba85 Remove -O2 from the Cabal file
07:35:21 <elliott> pick 234f0de Add missing dependency on transformers XXX FIXTHISCOMMITMESSAGE
07:35:29 <elliott> that last one is going to the top, I want it to just keep its original date and have no commit date
07:35:34 <elliott> all the others I want to be boosted to, like, now
07:35:38 <elliott> but I guess it doesn't matter much
07:37:05 -!- monqy has quit (Quit: hello).
07:37:29 <olsner> I know of no way to do that :) you're the first I've heard wanting to do something like that
07:37:33 <elliott> error: Your local changes to the following files would be overwritten by merge:
07:37:33 <elliott> Main.hs
07:37:33 <elliott> Please, commit your changes or stash them before you can merge.
07:37:33 <elliott> Aborting
07:37:36 <elliott> THREE-WAY MERGE YOU DUMBO
07:37:52 <elliott> olsner: basically I want sg :)
07:38:01 <elliott> DEAR GIT IM TRYING TO MERGE TWO STASHES JUST
07:38:03 <elliott> GO ALONG WITH IT OK
07:40:58 <elliott> ok... this is worrying
07:41:15 <elliott> oh duh
07:47:23 <elliott> olsner: btw, what even /is/ git gui
07:47:32 <elliott> i keep seeing mention of it but no citation
07:47:39 <elliott> it certainly isn't a command in my git
07:47:40 <olsner> elliott: git gui, it's built in
07:47:49 <elliott> $ git gui
07:47:49 <elliott> git: 'gui' is not a git command. See 'git --help'.
07:47:55 <elliott> git version 1.7.5.4
07:48:21 <olsner> oh, hmm, it's a separate package in ubuntu actually
07:48:35 <elliott> it doesn't use Tk does it :p
07:48:40 <olsner> yes it does
07:48:46 <elliott> ah lovely.
07:48:54 * elliott installs it anyway
07:49:49 <elliott> olsner: oh, it actually tries to make the tk look decent though
07:49:54 <elliott> oh
07:49:55 <elliott> so does gitk
07:49:58 <elliott> i guess they're using tile now?
07:49:59 <elliott> good?
07:50:34 <olsner> if you manage to make it use tk8.5 it'll end up a lot less ugly than if it uses tk8.4, that might require some kind of configuration though
07:50:48 <olsner> tile? what's that?
07:53:10 <elliott> a tk thing
07:53:34 <elliott> the difference between hideous motif-style widgets and pretty clean flat-ish threedee widgets
07:54:07 -!- aloril has quit (Ping timeout: 240 seconds).
07:55:32 <elliott> b0ef146 Add support for packet analysis XXFIXMETOO
07:55:32 <elliott> 44fcf00 Remove -O2 from the Cabal file
07:55:32 <elliott> e56cb95 Add the git repository to the Cabal file
07:55:32 <elliott> 352d498 Add showPacket{Inline,Record} functions
07:55:32 <elliott> 4a1b67e Abstract packet field name generation out of TH
07:55:34 <elliott> 12a79ff Remove unused "id" field name handling
07:55:36 <elliott> d77e488 Add missing dependency on transformers XXX FIXTHISCOMMITMESSAGE
07:55:38 <elliott> olsner: I think I'm doin it rite
07:55:57 <olsner> elliott: good for you
07:56:18 <elliott> olsner: I CANNOT THICKEN MY SARCASM YOU MONSTER
07:56:48 <olsner> oh, you were sarcastic? I totally didn't miss that
07:57:23 <olsner> anyway, time to go
07:57:51 <elliott> olsner: I figured the XXs would make it obvious
08:07:26 -!- aloril has joined.
08:16:21 -!- oerjan has quit (Quit: leaving).
08:53:47 -!- fngraph has joined.
08:53:48 -!- fngraph has left.
08:55:47 -!- ive has quit (Quit: leaving).
09:06:47 -!- Jafet has joined.
09:11:33 -!- sllide has joined.
09:16:29 -!- sllide has quit (Ping timeout: 256 seconds).
09:21:14 -!- nooga has quit (Ping timeout: 248 seconds).
09:46:09 -!- CakeProphet has quit (Ping timeout: 258 seconds).
09:51:04 -!- cheater has quit (Ping timeout: 276 seconds).
09:52:06 <elliott> fizzie: Sads: diod does not seem to do FIFOs either. :/
09:57:00 <elliott> http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.0.4.tar.bz2
09:57:01 <elliott> Nice.
09:57:32 <elliott> Vorpal: So kernel.org is up only FSVO up :P
09:57:35 <elliott> pikhq: I blame you
09:58:54 <Vorpal> elliott: yeah saw that
09:59:10 <elliott> Vorpal: I like how the huge big download links just go to a fourohfour with no explanation
09:59:20 <Vorpal> hm
10:00:12 <elliott> kernel.org is back up, hope you don't want to download a kernel!!!
10:03:27 -!- Nisstyre has quit (Ping timeout: 252 seconds).
10:04:04 -!- cheater has joined.
10:04:42 -!- Nisstyre has joined.
10:05:54 <elliott> pikhq: But seriously, where is one meant to maintain linux-3.0.4.tar.bz2?
10:05:57 <elliott> s/maintain/obtain/
10:06:35 -!- nooga has joined.
10:08:51 <elliott> http://www.reddit.com/r/programming/comments/ka4h8/javas_combover/c2ipvy1?context=3
10:09:01 <elliott> I had actually completely forgotten there were people who disliked lambdas.
10:13:18 -!- derdon has joined.
10:17:09 <Vorpal> bbl, university
10:18:42 <elliott> rip university
10:44:42 -!- sebbu2 has joined.
10:44:42 -!- sebbu2 has quit (Changing host).
10:44:42 -!- sebbu2 has joined.
10:47:38 -!- sebbu has quit (Ping timeout: 248 seconds).
10:48:17 -!- sebbu2 has changed nick to sebbu.
11:05:02 -!- nooga has quit (Ping timeout: 260 seconds).
11:24:47 <fizzie> The BBL University of Procrastination.
11:27:42 <elliott> fizzie: Oi, gimme linux-3.0.4.tar.bz2. (I'm sure you can do this with your magical Finn powers.)
11:28:16 <fizzie> Yes, being from the same country as Torvalds gives me magical kernel-predictive powers.
11:28:39 <elliott> fizzie: Predictive?
11:28:45 <elliott> 3.0.4 is out.
11:28:46 <elliott> It just
11:28:52 <elliott> (a) isn't on kernel.org because no kernel tarballs are yet;
11:28:55 <elliott> (b) isn't in Linus' git tree.
11:29:03 <fizzie> Yes, so I can convert any old binaries you might have up into 3.0.4 and (perhaps) beyond.
11:29:06 <elliott> I'm therefore at a complete loss as to how one is meant to obtain it.
11:29:14 <fizzie> Have you tried searching for it in Archie? (Is that thing still alive?)
11:29:24 <elliott> Heh.
11:29:40 <elliott> Well, I found a Random Copy with Google, but considering all this hoohah is because kernel.org got hacked into...
11:29:40 <fizzie> "External links: Last surviving Archie web interface"
11:29:44 <elliott> "A legacy Archie server is still maintained active for historic purposes in Poland at University of Warsaw's Interdisciplinary Centre for Mathematical and Computational Modelling."
11:29:57 <elliott> WORTH A TRY
11:30:22 <elliott> Gosh, it is slow.
11:30:29 <fizzie> 1 /vol/nfs1/ftp.icm.edu.pl/pub/Linux/ipv6/usagi/daily-snap/200106
11:30:29 <fizzie> -r--r--r-- 115352 21:00:00 24 Jun 2001 GMT linux22-2.2.19-usagi-20010626.patch.gz
11:30:35 <fizzie> I just told it to look for "linux".
11:30:43 <elliott> I got similar results looking for "kernel". :p
11:30:54 <elliott> The exact same version, in fact, though in .rpm flavour.
11:31:05 <elliott> I think that perhaps it does not index any recent files.
11:31:08 <elliott> Also will this ever load.
11:31:12 <elliott> (1)ftp.laizsme.edu.pl
11:31:13 <elliott> 1 /Linux/LTSP/LTSP-3.0
11:31:13 <elliott> -rw-rw-r-- 5015061 00:00:00 12 Jul 2002 GMT ltsp_kernel-3.0.4-i386.tgz
11:31:18 <elliott> Points for effort I guess.
11:32:08 <fizzie> Incidentally, I suppose you have come across that Ten15 thing? (http://www.mca-ltd.com/martin/Ten15/introduction.html)
11:32:45 <elliott> Yes, though I keep forgetting its name -- many thanks for reminding me.
11:33:02 <fizzie> The most memorable name ever.
11:33:03 <elliott> I'm flattered it (presumably) makes you think of @ :-P
11:34:02 <fizzie> You presume correctly; especially I guess the "it's safe by virtue of the languages" bit.
11:34:30 <elliott> Also the ubiquitous GC. And object-based (rather than textual) "syntax".
11:34:39 <elliott> Also the object-capability model in general. :p
11:34:40 <fizzie> Those, too.
11:35:05 <elliott> Also the lambda calculus relation. etc. etc. etc.
11:38:20 <fizzie> How about http://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=commit;h=04aa37b5f943920017ad094e776cd5514b1a9246 would that work?
11:38:28 <fizzie> I don't really know anything about the source control.
11:38:30 <fizzie> But there's a tag.
11:39:03 <elliott> Oh, the git repos are up?
11:39:06 <elliott> 'Hokay then.
11:39:24 <elliott> http://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=commit;h=a004e0962a10dfa7fc83dfa4ed4109d1cf84124b
11:39:27 -!- DH____ has joined.
11:39:28 <elliott> What.
11:39:30 -!- DH____ has quit (Remote host closed the connection).
11:39:36 <elliott> Huh, there is a Linux 3.0.6.
11:39:59 * elliott gets himself a snapshot.
11:40:06 <elliott> The server encountered an internal error or misconfiguration and was unable to complete your request.
11:40:07 <elliott> oh ffs...
11:40:31 <Jafet> It's funnier when that happens on the apache website
11:41:12 -!- DH____ has joined.
11:42:00 <fizzie> elliott: Based on the Date: headers of the LKML postings, 3.0.6 came out three minutes after 3.0.5.
11:42:04 <elliott> fizzie: Yes. :p
11:42:09 * elliott tries to get it in something that isn't tgz (90 megs...)
11:42:12 <fizzie> "There was a build error in the radeon driver of the 3.0.5 kernel, so this update is only needed if you have problems building that kernel."
11:42:42 <fizzie> I was already mildly concerned they had caught the Firefox bug.
11:43:34 <elliott> fizzie: Well...
11:43:39 <elliott> 40 hours agov3.0.5
11:43:39 <elliott> 5 weeks agov3.0.4
11:43:42 <elliott> 6 weeks agov3.0.3
11:43:46 <elliott> 7 weeks agov3.0.2
11:43:50 <elliott> fizzie: It /is/ rather rapid.
11:43:55 <elliott> fizzie: Or do kernel releases normally go that fast?
11:43:57 <elliott> I don't really keep track.
11:44:09 <Jafet> The singularity, it is coming.
11:44:42 <elliott> The singularity is just a moment of infinite Firefox and kernel updates?
11:44:48 <elliott> That's the most bullshit singularity I've ever heard of.
11:44:51 <fizzie> A bit anticlimactic, eh?
11:44:56 <elliott> What kind of idiot sets the singularity at the point of infinite bugs?
11:45:05 <fizzie> think there's usually several weeks, but haven't really been keeping track either. I'm sure someone's graphed it.
11:45:17 <Jafet> "When the singularity arrives, it will be plagued by frequent outages and bad customer service."
11:45:19 <fizzie> I mean, if they do graphs of all the "fuck"s in the kernel... http://www.vidarholen.net/contents/wordcount/
11:45:22 <elliott> fizzie: That wasn't quite legible.
11:45:23 <elliott> <fizzie> think there's usually several weeks, but haven't really been keeping track either. I'm sure someone's graphed it.
11:45:24 <elliott> That one.
11:45:54 <fizzie> s/^/I / + s/weeks/weeks between kernel releases/
11:47:11 <elliott> I always just assumed it was, like, every two months or so.
11:47:12 <fizzie> I notice that the instances of "fuck"ing have been dropping since 2.6.12 or so, but the frequency of "shit" happening has more than made up for it.
11:47:34 <elliott> │ │ [*] DMA memory allocation support │ │
11:47:42 <elliott> I'm still perplexed as to why that's the first kernel config option.
11:47:45 <elliott> Like, newly.
11:48:03 <fizzie> Admittedly I don't quite recall how the current numbering was supposed to go. In the late 2.6 age, the fourth number was being kept incremented rather rapidly.
11:48:40 * elliott wonders what fun things turning that off would do.
11:53:18 <elliott> What the hell is an .lrz file?
11:54:05 <elliott> lrzip - compression program with a very high compression ratio
11:54:05 <elliott> I guess this.
11:54:09 <elliott> Seems to be lzo-based.
11:55:35 <fizzie> Apparently, with a really long available history buffer compared to the usual suspects.
11:56:11 <elliott> Preface
11:56:11 <elliott> Way back a long time ago, Thompson and Ritchie were sitting opposite one another at the commissary, sipping coffees and discussing their evolving behemoth.
11:56:11 <elliott> "This behemoth of ours," said Ken, "is becoming rather popular, wouldn't you say?" "Yes," said Dennis. "Every time I want to do a compilation, I have to wait for hours and hours. It's infuriating." They both agreed that the load on their system was too great. Both sighed, picked up their mugs, and went back to the workbench. Little did they know that an upper-management type was sitting just within earshot of their conversation.
11:56:12 <elliott> "We are AT&T Bell Laboratories, aren't we?" the upper-management type thought to himself. "Well, what is our organization best known for?" The brill-cream in his hair glistened. "Screwing people out of lots of money, of course! If there were some way that we could keep tabs on users and charge them through the nose for their CPU time..."
11:56:16 <elliott> The accounting utilities were born.
11:56:18 <elliott> -- gnu acct manual
11:56:30 <elliott> Reminds me of GNU "viva la revolution" su.
11:56:46 <elliott> <fizzie> Apparently, with a really long available history buffer compared to the usual suspects.
11:56:51 <elliott> Ha ha, compression jargon.
11:56:55 <elliott> It is like speech recognition jargon
11:56:57 <elliott> except
11:56:59 <elliott> one is useful and the other not
11:57:02 -!- MichaelBurge has joined.
11:57:34 <fizzie> Yes, and the useful one is speech recognition. Or haven't you heard of Siri yet?
11:57:39 <fizzie> If Apple's doing it, it must work right.
11:58:07 <fizzie> It's in that 4S thing.
11:58:20 <elliott> Yes, I've seen it. It looks interesting and apparently it might have enough brains behind it to work.
11:58:31 <fizzie> Also supports W|A, which is awesome.
11:58:34 -!- nooga has joined.
11:58:35 <elliott> But that was made by experts.
11:58:38 <elliott> Not people like /you/.
11:58:45 <elliott> Also DOES IT SUPPORT FRINK.
11:58:55 * elliott disables namespaces support to annoy ais.
11:59:14 <fizzie> One can just ask it for the shear modulus of human brain matter or anything like that.
11:59:23 <fizzie> (That's 1680 Pa.)
12:00:02 <elliott> I love the configuration advice the kernel gives. "You should only consider disabling this option for embedded systems with no facilities for reporting errors. Just say Y."
12:00:17 <fizzie> You know, when you absolutely have to shear some brains, and want to know how much they'll deform.
12:00:31 <elliott> fizzie: So I take it the entire speech recognition world (yes, all four of you) is partying now that Apple are validating you guys and -- rumour has it -- even feeding you on occasion?
12:00:35 -!- DH____ has quit (Read error: Connection reset by peer).
12:00:51 -!- DH____ has joined.
12:01:03 <elliott> TODO: Come back to configure standard kernel features menu.
12:01:27 <elliott> And other things in its parent menu. I'm good at configuration.
12:09:22 <elliott> Also go back to that boring power management section.
12:09:51 <elliott> Also the bus options menu. God there are a lot of boring menus.
12:35:28 -!- derdon has quit (Remote host closed the connection).
12:49:40 -!- calamari has joined.
12:59:42 -!- MSleep has changed nick to MDude.
13:13:19 -!- calamari has quit (Quit: Bye).
13:16:48 -!- sadhu has joined.
13:17:08 <sadhu> howdy elliott
13:17:15 <elliott> hi
13:30:01 <sadhu> elliott: you program in C ?
13:30:11 <elliott> Sometimes
13:30:33 <sadhu> ok
13:39:50 <Vorpal> <elliott> pikhq: But seriously, where is one meant to maintain linux-3.0.4.tar.bz2?
13:39:50 <Vorpal> <elliott> s/maintain/obtain/
13:39:55 <Vorpal> I have that I think
13:40:05 <elliott> I got it from linux-stable.git
13:40:13 <elliott> kernel.org git is back up, at least :P
13:42:25 <Vorpal> elliott: 3.0.6? what?
13:42:49 <elliott> yep
13:42:59 <elliott> got released about five minutes after 3.0.5
13:43:12 <elliott> Sorry,
13:43:13 <elliott> <fizzie> elliott: Based on the Date: headers of the LKML postings, 3.0.6 came out three minutes after 3.0.5.
13:43:13 <elliott> three.
13:43:46 <Vorpal> <elliott> fizzie: Or do kernel releases normally go that fast? <-- maintenance releases are usually about that fast up to .5 or .8 or so when they start to slow down, at least in my experience
13:47:32 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
13:47:33 <Vorpal> <elliott> The accounting utilities were born. <-- is that story true? I seem to remember stuff like that boot resource usage and time usage graphing thingy using accounting tools
13:48:38 <Vorpal> elliott: wait, why are you compiling your own kernel?
13:48:55 <elliott> Vorpal: (a) Who knows; (b) so that you'll CTCP PING me for no apparent reason.
13:49:05 <Vorpal> elliott: I was wondering if you were lagging out
13:49:23 <elliott> "haskell for "the masses" is possible as soon as "the masses" has a degree in mathematics. java and php are copy-and-paste languages, functional languages simply take more thinking to compile at all, and i think many programmers are not prepared to do that to the required degree, although i'd love to be proved wrong."
13:49:23 <elliott> "Score:5, Insightful"
13:49:37 <elliott> so what they say about slashdot comments is true
13:50:00 <Vorpal> elliott: what is it they say about them?
13:50:09 <elliott> They're shit. :p
13:50:15 <elliott> Or at least trolly.
13:50:33 <elliott> (Of course there's the opposing school of thought which I will dub the "they're not shit" school.)
13:50:35 <Vorpal> elliott: well it is true that a lot of programmers suck badly and wouldn't understand something like haskell
13:51:02 <Vorpal> not sure it requires a degree in math, though that certainly helps with /all/ programming
13:51:07 <elliott> That is not really true at all but whatever.
13:51:09 <elliott> (On either account)
13:54:17 -!- DH____ has quit (Read error: Connection reset by peer).
13:54:20 -!- DHeadshot has joined.
13:59:43 -!- Sgeo|m has joined.
13:59:50 <Sgeo|m> Why does Managed C++ exist?
14:00:32 <Sgeo|m> For people who would normally choose C++ over, say, C#, because of the _syntax_?
14:01:43 -!- sadhu has left ("Leaving").
14:01:59 -!- sllide has joined.
14:03:14 <fizzie> For people who feel more familiar there? Comfort languages, and all that. (Does someone still use that thing?)
14:18:04 -!- copumpkin has joined.
14:41:19 <elliott> pikhq: I kind of wish there was a way to schedule IO actions to be run whenever a TVar is modified...
14:42:04 <elliott> Something like newTVarWithHandler :: a -> (a -> IO ()) -> STM (TVar a), then upon successful transaction commit, all the queued handlers for the modified TVars are executed in order of modification.
14:42:23 <Vorpal> elliott: yeah that would be nifty
14:42:41 <elliott> Vorpal: I think you can implement it already
14:42:48 <Vorpal> oh?
14:42:52 <elliott> but it requires you to pass an additional parameter around to your writeTVar equivalent
14:43:08 <elliott> a TVar [IO ()] or whatever
14:43:25 <elliott> you could do ReaderT (TVar [IO ()]) STM
14:43:32 <elliott> and have your variable type work natively in that
14:43:33 <elliott> but ehhh
14:43:54 <elliott> the usecase I'm imagining here is queueing up the "hey player you are now over here" packets when modifying a player's position in mchost
14:44:49 <elliott> Hmph, the Bukkit API is I think making things hard for me in that area.
14:49:01 -!- Phantom_Hoover has joined.
14:50:00 <elliott> HELO PHAOIntomeohOVEr
14:50:31 <Phantom_Hoover> I...
14:50:31 <lambdabot> Phantom_Hoover: You have 5 new messages. '/msg lambdabot @messages' to read them.
14:50:39 <Phantom_Hoover> Messages!
14:50:54 <Phantom_Hoover> Either Homestuck updated or someone was really, really stupid.
14:51:13 -!- Sgeo|m has quit (Ping timeout: 252 seconds).
14:51:16 -!- CakeProphet has joined.
15:03:02 <Phantom_Hoover> http://www.reddit.com/r/math/comments/l0nnx/letter_to_the_prime_minister_on_the_future_of/c2ozv5r
15:03:17 <Phantom_Hoover> It's like something from the Private Eye.
15:04:13 <elliott> "Everyone can afford to go to university, even 32 year olds." I like this guy's definition of "afford". ("first, thatcher took my school milk." is now my favourite sentence ever, also.)
15:04:27 <Phantom_Hoover> elliott, erm, do you know how university fees work?
15:04:49 <elliott> Phantom_Hoover: Yes, but it's still a fairly misleading statement.
15:04:52 <Phantom_Hoover> It's basically just a tax you pay until you pay it off or retire.
15:05:02 <Phantom_Hoover> elliott, so how would you define 'afford'?
15:05:36 <elliott> I'm not sure. I'm not sure that guy is sure either.
15:05:46 <elliott> It is like a big tower of sureness.
15:07:16 <elliott> Hmm, I wonder if I could use TChans.
15:07:58 <Phantom_Hoover> elliott, if you mean 'can pay for without radical financial alterations', then yes, you can.
15:08:24 <elliott> That just shifts the issue onto "pay for". But w/e :P
15:08:45 <Phantom_Hoover> Pay for as in exchange money for goods or services.
15:09:20 <elliott> What a strange concept.
15:10:29 <elliott> "Writing a “Hello World” Device Driver for kernel 2.6 using Eclipse"
15:10:31 <elliott> Yikes.
15:11:15 <elliott> "Thanks. I will check the autotools plugin soon. Do you know any better IDE for driver programming? Do you think I (a lazy VS user who have no experience in linux) can manage makefile? Is makefiles really manageable in big projects?"
15:11:24 <elliott> Is makefiles good for our children?
15:13:32 -!- Phantom__Hoover has joined.
15:13:41 <elliott> helloei phaoeirntomhievtre
15:13:50 <elliott> PhaeoeirntomHievtre.
15:13:52 <elliott> That's your new name.
15:13:59 <elliott> /nick Phaeoeirntom_Hievtre, please.
15:14:41 -!- Phantom__Hoover has changed nick to PH______________.
15:15:22 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
15:15:27 <elliott> no.........
15:15:31 <elliott> PH______________: Phaeoeirntom_Hievtre....
15:15:47 -!- PH______________ has changed nick to P_______________.
15:16:39 <elliott> P_______________: Phaeoeirntom_Hievtre........
15:16:49 -!- P_______________ has changed nick to ________________.
15:18:04 <elliott> ________________: Phaeoeirntom_Hievtre....................
15:18:13 <elliott> Either that or keep ________________ permanently.
15:18:26 <________________> Can't, it's registered.
15:18:53 <elliott> lol
15:18:57 <elliott> Add another _?
15:19:42 <CakeProphet> qwrojq23r
15:19:58 -!- CakeProphet has changed nick to _.
15:20:28 -!- _ has changed nick to CakeProphet.
15:21:57 -!- DHeadshot has quit (Quit: Bye).
15:22:12 -!- DH____ has joined.
15:27:00 -!- CakeProphet has changed nick to CP____.
15:27:10 <CP____> yo dawg.
15:27:35 <elliott> MC/Host.hs:9:8:
15:27:35 <elliott> Could not find module `Control.Monad.Class.IO'
15:27:35 <elliott> Perhaps you meant
15:27:35 <elliott> Control.Monad.IO.Class (from transformers-0.2.2.0)
15:27:35 <elliott> Control.Monad.Trans.RWS (from transformers-0.2.2.0)
15:27:36 <elliott> Control.Monad.Trans (needs flag -package mtl-2.0.1.0)
15:27:38 <elliott> Use -v to see a list of the files searched for.
15:27:41 <elliott> GHC 7.2.1's error messages sure are improving.
15:27:55 <elliott> Or, rather, are an improvement upon previous versions.
15:28:41 <CP____> indeed
15:28:53 <CP____> ghc --version
15:28:53 <CP____> The Glorious Glasgow Haskell Compilation System, version 6.12.3
15:28:55 <CP____> :(
15:29:09 <CP____> stupid repos
15:29:50 <CP____> so it's actually GGHCS? :P
15:30:57 <elliott> You shouldn't use repo GHC.
15:31:10 <elliott> That version is from June 2010.
15:32:00 <CP____> doesn't that quickly become "you shouldn't use repo <insert program>"
15:32:09 <CP____> at which point I'm manually compiling a lot of things?
15:35:16 <CP____> I guess GHC is an acceptable exception.
15:41:22 <________________> Seen in r/AskScience: someone arguing that defrosting someone from 2011 in 2211 would be easier than playing ancient YouTube codecs.
15:41:39 -!- ________________ has changed nick to ______________.
15:41:45 <______________> I think they're all registered.
15:42:59 -!- ______________ has changed nick to Phantom_Hoover.
15:43:22 <elliott> <________________> Seen in r/AskScience: someone arguing that defrosting someone from 2011 in 2211 would be easier than playing ancient YouTube codecs.
15:43:25 <elliott> Say this again so I can addquote it.
15:43:35 <elliott> Or just find me the person who said it :P
15:43:49 <Phantom_Hoover> Well, they didn't say that exactly.
15:43:52 <Phantom_Hoover> Seen in r/AskScience: someone arguing that defrosting someone from 2011 in 2211 would be easier than playing ancient YouTube codecs.
15:46:00 -!- CakeProphet has joined.
15:46:01 -!- CakeProphet has quit (Changing host).
15:46:01 -!- CakeProphet has joined.
15:47:03 <elliott> Phantom_Hoover: OK I hate you for directing me to this comment thread.
15:47:23 <Phantom_Hoover> Why, the censorship stuff?
15:47:28 <elliott> Phantom_Hoover: It's like a battle of who can make me want to agree with the other just because everyone on the other side is so bad, and it KEEPS SWITCHING.
15:47:34 <elliott> What censorship stuff? I mean the cryonics thing.
15:47:45 <Phantom_Hoover> Irrelevant, then.
15:48:04 -!- CP____ has quit (Ping timeout: 255 seconds).
15:48:09 <elliott> "It amazes me that any intelligent person would buy in to this given the knowledge that the method doesn't work right now."
15:48:14 <elliott> What.
15:48:35 <CakeProphet> "I say, Elliott, human flight? the notion is simply absurd."
15:48:38 * CakeProphet smokes his pipe.
15:49:08 <Phantom_Hoover> In the case of cryonics, it's a bit more complicated.
15:49:31 <elliott> Phantom_Hoover: Yes of course, I was balking at the statement itself.
15:49:49 <elliott> They're literally saying that you shouldn't believe any technology will be invented ever.
15:50:08 <elliott> <Whatever the next size down is from what we have now> nm chips? SO FOOLISH OF YOU TO BELIEVE IN THESE THINGS
15:50:36 <Phantom_Hoover> Again, in the case of cryonics it's more complicated than that.
15:51:06 <elliott> Phantom_Hoover: Note how (a) the line I quoted is devoid of the word "cryonics", (b) I am not attempting to defend cryonics.
15:51:16 <Phantom_Hoover> Yes, true.
15:51:31 <elliott> Whether you agree with their /conclusion/ or not, it's a ridiculous argument.
15:52:55 <CakeProphet> elliott: I don't visit reddit. Life is wonderful.
15:53:14 <elliott> CakeProphet: You and some seven billion people.
15:53:47 <CakeProphet> are you suggesting that a negative number of people frequent reddit?
15:53:54 <Phantom_Hoover> Yes.
15:54:23 <elliott> You didn't know?
15:54:36 <CakeProphet> no. the notion is simply absurd.
15:55:15 <Phantom_Hoover> Tell that to the -30,000,000 redditors.
15:55:22 <CakeProphet> so when someone is born a negative person dies?
15:56:04 <CakeProphet> or is a negative person a dead person? help the number system doesn't match the units.
15:56:58 <Phantom_Hoover> Every moment dies a negative man, every moment one is born.
15:58:47 <CakeProphet> elliott: are... are you a negative human?
15:59:02 <elliott> Most assuredly.
15:59:09 <CakeProphet> o_- I see.
15:59:10 <Phantom_Hoover> Yes. Taneb is his positive counterpart.
15:59:26 <CakeProphet> Phantom_Hoover: and what about you?
15:59:31 <CakeProphet> am I your positive counterpart?
15:59:36 <Phantom_Hoover> I am imaginary.
15:59:40 -!- CakeProphet has changed nick to Cake_Prophet.
15:59:43 <Cake_Prophet> I see.
16:00:28 <Cake_Prophet> this is getting rather complex.
16:00:33 <Cake_Prophet> (ZING)
16:01:23 -!- monqy has joined.
16:01:30 <elliott> monqy is the pope in this analogy
16:01:42 <monqy> hi
16:01:54 <Phantom_Hoover> He's the real part of god.
16:02:10 <Phantom_Hoover> The trinity make up the rest; god is therefore a quaternion.
16:02:36 <elliott> Best quaternion.
16:02:45 <Phantom_Hoover> Godternion.
16:03:05 * Cake_Prophet thinks the Julia set quaternions are the best.
16:03:12 <Cake_Prophet> they make neat shapes.
16:03:37 <Cake_Prophet> (when a 3-dimensional slice is taken)
16:04:08 <Cake_Prophet> though I imagine their 4-dimensional shape is neat as well.
16:04:13 <Cake_Prophet> to make such neat 3-dimensional shapes.
16:04:32 * Cake_Prophet : master of sound reasoning
16:09:55 <Cake_Prophet> so... javascript doesn't have any kind of built-in randint?
16:10:01 <Cake_Prophet> I have to do silly things with random()
16:11:10 -!- augur has quit (Remote host closed the connection).
16:21:26 <Gregor> elliott: I'M A MOODERER
16:21:34 <elliott> What.
16:21:37 <Gregor> elliott: If you retell me that list of domains, I MAY find it in my heart to add them.
16:21:57 <elliott> Gregor: www.systranbox.com, www.systranet.com, www.xe.com, babelfish.altavista.com, futureboy.us, www.measuringworth.com, ajax.googleapis.com
16:22:06 <elliott> Gregor: Preferably wildcarded rather than literally with www. in front of them and the like :P
16:22:09 <elliott> (Because of redirects etc.)
16:22:28 <Gregor> I just whitelist SLDs usually
16:23:33 <monqy> i might look at frink today. today or tomorrow. or friday. i will look at it before monday.
16:24:12 <elliott> Gregor: Does that include subdomains?
16:24:59 <Gregor> elliott: Yeah
16:25:03 <elliott> Right
16:25:15 <Gregor> `run curl futureboy.us 2> /dev/null
16:25:18 <HackEgo> ​<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" \ "http://www.w3.org/TR/html4/strict.dtd"> \ <HTML LANG="en"> \ <HEAD> \ <TITLE>Alan Eliasen</TITLE> \ <META HTTP-EQUIV="Default-Style" CONTENT="APE Classic"> \ <LINK REL="StyleSheet" HREF="/frinkdocs/style.css" TYPE="text/css" \ TITLE="APE Classic">
16:29:55 <elliott> Gregor: :D
16:30:02 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
16:30:11 <elliott> `run 3 gram 18 karat Gold -> GBP_1865
16:30:13 <HackEgo> sh: 3: command not found
16:30:17 <elliott> `frink 3 gram 18 karat Gold -> GBP_1865
16:30:48 <HackEgo> No output.
16:30:59 <Gregor> Seems pretty great.
16:31:16 <elliott> >_>
16:31:17 <elliott> `frink 3 gram 18 karat Gold -> GBP_1865
16:31:28 <HackEgo> Unknown symbol "GBP_1865" \ 1.1727588630689421115
16:31:43 <elliott> `frink 9 GBP -> pounds_1960
16:31:52 <HackEgo> 0.58441558441558441558
16:32:01 <elliott> Gregor: TA-DAAAAAA
16:32:19 * Cake_Prophet is downloading the first two seasons of Adventure Time
16:32:21 <Cake_Prophet> mmmm
16:32:24 -!- Cake_Prophet has changed nick to CakeProphet.
16:32:43 <elliott> Gregor: I WILL NOW
16:32:44 <elliott> TRANSLATE
16:32:57 <Gregor> Yes yes, your thesis on gold prices.
16:33:00 <Gregor> Into whatever.
16:33:00 <elliott> `frink "My hovercraft is full of eels." -> German
16:33:02 <elliott> THANKS FRINK DOCS
16:33:09 <HackEgo> Could not get input stream java.net.ProtocolException: Peer closed connection \ Unconvertable expression: \ My hovercraft is full of eels. -> German (undefined symbol)
16:33:12 <elliott> X-D
16:33:14 <elliott> `frink "My hovercraft is full of eels." -> German
16:33:23 <HackEgo> Could not get input stream java.net.ProtocolException: Peer closed connection \ Unconvertable expression: \ My hovercraft is full of eels. -> German (undefined symbol)
16:33:26 <elliott> `frink "Gasoline costs " + (round[1.37 USD/gallon / (EUR/liter), 0.01]) + " Euro/liter in the United States." -> German
16:33:32 <elliott> `frink "The spirit is willing but the flesh is weak." -> Spanish -> Ingles
16:33:34 <elliott> SOMETHING WORK ANYTHING WORK
16:33:35 <Gregor> Seems pretty great
16:33:37 <HackEgo> Benzin kostet 0,27 Euro/Liter in den Vereinigten Staaten.
16:33:42 <elliott> YAaaaay
16:33:43 <HackEgo> Could not get input stream java.net.ProtocolException: Peer closed connection \ Could not get input stream java.net.ProtocolException: Peer closed connection \ Unconvertable expression: \ Unconvertable expression: \ The spirit is willing but the flesh is weak. -> Spanish (undefined symbol) -> Ingles (undefined symbol)
16:33:45 <elliott> I guess the German server is down :P
16:33:50 <elliott> `frink "Yo quiero un burrito." -> Ingles
16:34:00 <HackEgo> Could not get input stream java.net.ProtocolException: Peer closed connection \ Unconvertable expression: \ Yo quiero un burrito. -> Ingles (undefined symbol)
16:34:04 <CakeProphet> ..
16:34:05 <elliott> `frink "Yo quiero un burrito." -> Ingles
16:34:10 <elliott> Gregor: Your internet connection sucks
16:34:15 <HackEgo> Could not get input stream java.net.ProtocolException: Peer closed connection \ Unconvertable expression: \ Yo quiero un burrito. -> Ingles (undefined symbol)
16:34:18 <Gregor> elliott: So does your face.
16:34:28 <Gregor> `run curl babelfish.altavista.com 2> /dev/null
16:34:30 <HackEgo> No output.
16:34:33 <Gregor> Huh
16:34:37 <CakeProphet> `frink "Amo tu huevos" -> Ingles
16:34:37 <Gregor> `run curl babelfish.altavista.com 2> /dev/null
16:34:37 <elliott> `frink "Én már nem vagyok fertőzött." -> guessLanguage
16:34:39 <HackEgo> No output.
16:34:49 <HackEgo> Could not get input stream java.net.ProtocolException: Peer closed connection \ Unconvertable expression: \ Amo tu huevos -> Ingles (undefined symbol)
16:34:49 <HackEgo> Error reading from http://ajax.googleapis.com/ajax/services/language/detect?v=1.0&q=C%09n+mC%21r+nem+vagyok+fertE%11zC6tt.: \.java.net.ProtocolException: Peer closed connection \ Warning: Tried to call guessLanguage[] but it didn't work. \ MatchExpression: left must be string. Expression was undef \ Unknown symbol "guessLanguage"
16:34:59 <Gregor> Well. wtfbbq :P
16:35:05 <Gregor> I guess I'll have to look into that :P
16:38:36 <CakeProphet> `calc "Tu madre es una puta" -> Ingles
16:38:47 <HackEgo> Could not get input stream java.net.ProtocolException: Peer closed connection \ Unconvertable expression: \ Tu madre es una puta -> Ingles (undefined symbol)
16:39:02 <CakeProphet> needs more accents probably
16:40:53 -!- ais523 has joined.
16:42:55 -!- augur_ has joined.
16:46:38 <elliott> hi ais523
16:46:54 -!- Phantom_Hoover has joined.
16:47:14 <ais523> hi elliott
16:49:19 -!- pikhq_ has joined.
16:49:40 -!- pikhq has quit (Ping timeout: 276 seconds).
17:02:13 <ais523> hmm, the Conservative Party in the UK are busy trying to confuse people by using a party political broadcast slot to appeal for charity donations for starving people in Africa
17:04:17 -!- sadhu has joined.
17:08:15 <elliott> cooool
17:09:43 -!- CakeProphet has quit (Ping timeout: 240 seconds).
17:20:40 -!- nooga has quit (Ping timeout: 260 seconds).
17:30:27 -!- augur_ has quit (Remote host closed the connection).
17:37:13 <fizzie> <fizzie> Interesting how different the landscape looks in gmaps in Norway vs. Sweden, at the border: http://users.ics.tkk.fi/htkallas/norway-sweden.png
17:37:13 <fizzie> <fizzie> You could almost even believe the Norwegians have provided more accurate maps.
17:37:21 <fizzie> I almost accidentally shared this revelation on the WRONG CHANNEL.
17:37:32 <fizzie> Where "almost" is "actually".
17:38:19 <fizzie> Even though the other channel lacks any Norwegians (I think) who could take national pride in it.
17:40:14 -!- augur_ has joined.
18:06:26 -!- sadhu has quit (Quit: Leaving).
18:07:04 -!- sllide has quit (Read error: Connection reset by peer).
18:09:24 -!- Ngevd has joined.
18:09:56 <Ngevd> Hello!
18:14:29 -!- Jafet1 has joined.
18:16:48 -!- Jafet has quit (Ping timeout: 265 seconds).
18:20:49 -!- Jafet has joined.
18:21:38 -!- Jafet1 has quit (Ping timeout: 265 seconds).
18:21:38 <Ngevd> So...
18:21:45 <Ngevd> Thoughts on Brook?
18:25:22 -!- Entanglements has joined.
18:31:31 <ais523> Ngevd: I'd like to see a program in it
18:31:42 <ais523> that does something like just output 1, 2, 3, 4... indefinitely
18:31:42 <Ngevd> There's a fibonacci numbers program
18:31:48 <ais523> aha, even better
18:37:35 <Ngevd> Sadly, not infinite, but input-defined length
18:37:57 <ais523> ah, ouch
18:38:00 <ais523> infinite is what I was hoping for
18:38:12 <Ngevd> It's tricky
18:43:41 <Ngevd> I'll try to write one
18:53:45 -!- augur_ has quit (Remote host closed the connection).
18:59:45 -!- augur_ has joined.
19:01:44 -!- augur_ has quit (Remote host closed the connection).
19:08:40 <elliott> pikhq_: Man, this is tricky
19:11:22 <elliott> ais523: Did you hear about the Italian Wikipedia?
19:11:38 <ais523> what about it?
19:11:42 <ais523> I mean, I know it exists
19:11:44 <elliott> http://it.wikipedia.org/wiki/Wikipedia:Comunicato_4_ottobre_2011/en
19:11:52 <elliott> it's completely unavailable
19:12:05 <elliott> because of legislation coming in
19:12:18 <elliott> "This proposal, which the Italian Parliament is currently debating, provides, among other things, a requirement to all websites to publish, within 48 hours of the request and without any comment, a correction of any content that the applicant deems detrimental to his/her image."
19:12:20 <elliott> pro law
19:13:13 <ais523> given the political situation in Italy, I can sort-of understand that law
19:13:23 <ais523> it is not a good idea for the populace, but is for the government
19:13:29 <elliott> oh no, this $35 Indian tablet is made by the same people who made that awful netbook you guys probably remember
19:13:41 <elliott> india... trust me... it is not worth it...
19:13:43 <ais523> that's ridiculous
19:13:49 <elliott> you do not know what you are getting in to... STOP BEFORE IT IS TOO LATE
19:14:15 <elliott> "The launch — attended by hundreds of students, some selected to help train others across the country in the tablet’s use — followed five years of efforts to design a $10 computer that could bridge the country’s vast digital divide."
19:14:24 <elliott> I like how these things always end up costing about twice as much as they estimate
19:15:28 <ais523> elliott: I'm going to submit that Italian Wikipedia page to Slashdot, I think
19:15:32 <ais523> because nobody else has yet
19:15:52 <elliott> I'm surprised
19:16:03 -!- tiffany has joined.
19:16:15 <elliott> what an inane slashdot poll
19:16:35 <elliott> Oblig.: it doesn't even have an option for CowboyNeal's computer
19:19:58 <Phantom_Hoover> ais523, what Italian WP page?
19:20:05 <elliott> Phantom_Hoover: http://it.wikipedia.org/wiki/Wikipedia:Comunicato_4_ottobre_2011/en
19:20:09 <elliott> the only Italian WP page
19:20:16 <elliott> at least, for now
19:21:14 <Phantom_Hoover> Wow.
19:22:01 <ais523> ah, I've been beaten to it
19:22:06 <Phantom_Hoover> Reminds me of how a girl in my year suggested, over the course of a discussion, that if somebody was convicted and later acquitted of a crime, all internet reports on their conviction would have to be amended.
19:22:16 <Phantom_Hoover> I never got around to pointing out the obvious flaw, unfortunately.
19:22:24 <ais523> no wonder Slashdot submissions tend to be rubbish, it's because people writing a few fractions of a sentence get their submissions in first
19:22:39 <elliott> Phantom_Hoover: that would be a decent idea, if not for the impossibility and awful implications :P
19:22:50 <ais523> Phantom_Hoover: claim that the obvious flaw is "/b/ is not your personal army"
19:23:02 <elliott> hmm, isn't the Italian Wikipedia the one that forked off early on in WP history, then merged back in?
19:23:17 <elliott> ah no, that was Spanish
19:23:20 <elliott> Enciclopedia Libre
19:24:12 <ais523> isn't the obvious solution to host the Italian Wikipedia outside Italy?
19:26:51 <elliott> ais523: they'll just block it, or something
19:26:53 <elliott> :P
19:27:05 <ais523> people will find ways round the block, they always do
19:27:41 <ais523> Wikipedia have even come up with their own plans to help (e.g. the ipblockexempt permission that can be given to accounts to allow them to connect via Tor)
19:29:21 <ais523> TIL: the current version of GRUB 1 is 0.97, and of GRUB 2 is 1.99
19:30:05 <elliott> GNU counting.
19:31:34 <Ngevd> |
19:31:39 <Ngevd> =|:{D
19:31:41 <Ngevd> |
19:31:45 <Ngevd> Bandito smiley
19:32:49 <elliott> Ngevd: I would comment on Brook, but I'm Not Allowed To.
19:33:03 <Ngevd> I've revoked that status
19:33:09 <elliott> IT IS MY DUTY.
19:33:41 <elliott> "Thus the closure syntax and the for syntax really aren't equivalent and closures can't replace for loops. They might supplement them, but this is only relevant if they really can be run on multiple processors simultaneously."
19:33:46 <elliott> This is the most nonsense post I have ever read.
19:35:32 <elliott> http://en.wikipedia.org/w/index.php?title=Talk:Lava&curid=21438031&diff=454118153&oldid=452764824
19:35:37 <elliott> Gfrsdgerr makes a good point.
19:38:28 <Phantom_Hoover> "A personal appeal from Wikipedia programmer Brandon Harris."
19:38:50 <Phantom_Hoover> "Please tell me how to program help" — all WP programmers.
19:40:55 -!- quintopia has quit (Ping timeout: 240 seconds).
19:40:58 <Phantom_Hoover> OK this BBC thing on dinosaurs has really, really awful CGI.
19:41:48 <Phantom_Hoover> I think they're trying to disguise the fact that everything moves really jerkily by making the camera look like a Sensodyne ad.
19:42:16 <elliott> ahahaha
19:42:44 <Phantom_Hoover> (Does anyone else get the Sensodyne reference I'm unclear on how well-known that is.)
19:42:53 <elliott> yes
19:42:56 <elliott> oh
19:42:57 <elliott> else
19:42:57 <elliott> ok
19:42:59 <elliott> ask ais523 :P
19:43:12 -!- augur has joined.
19:43:14 <Phantom_Hoover> Ask him what?
19:43:25 <elliott> whether
19:43:25 <elliott> he
19:43:26 <elliott> got it,
19:43:29 <ais523> I didn't
19:44:17 <Phantom_Hoover> ais523, there were some Sensodyne ads a while back which just had a dentist blabbering on while the camera jumped between what I suspect are more angles than geometrically possible.
19:44:39 <elliott> Phantom_Hoover: there still are
19:44:42 <elliott> there have been for years
19:44:55 <elliott> Also they have really terrible noise filtration.
19:44:59 <elliott> Phantom_Hoover: I think it was like
19:45:03 -!- quintopia has joined.
19:45:04 <Phantom_Hoover> Yes, but I don't keep a Sensodyne ad diary.
19:45:04 -!- quintopia has quit (Changing host).
19:45:05 -!- quintopia has joined.
19:45:09 <elliott> a response to all those insane toothpaste ads
19:45:10 <elliott> that are like
19:45:16 <elliott> HERE ARE SCIENTISTS IN OUR FUTURE SCIENCE LAB
19:45:18 <elliott> THEY'RE LOOKING AT A TOOTH
19:45:22 <elliott> LOOK AT THE ENAMEL
19:45:23 <elliott> IT'S PROTECTED
19:45:27 <elliott> GOOD JOB DONE
19:45:29 <elliott> LAB COATS FOR EVERYONE
19:45:33 <elliott> TRY IT TODAY
19:45:40 <elliott> YOUR TEETH WILL BE #FFF
19:45:53 <elliott> and they tried to....capitalise.....on this...
19:46:44 <Phantom_Hoover> And their CGI budget was £5, but they had like 20 cameras and a hyperspace camera arranger
19:46:48 <Phantom_Hoover> *?
19:47:47 <elliott> Yes.
19:48:30 <quintopia> i want #CCCCCC teeth
19:49:41 <Phantom_Hoover> Light grey?
19:49:55 <Phantom_Hoover> Aren't you Americans all about getting #GGGGGG teeth?
19:50:34 -!- DH____ has quit (Ping timeout: 248 seconds).
19:51:20 -!- DH____ has joined.
19:51:49 <ais523> wow, I've used four different web browsers today, and have three open right now
19:52:07 <ais523> actually, five if you count the HTML renderer in my feed reader
19:52:12 <ais523> which is just an embedded version of Konqueror
19:53:16 <cheater> haha
19:53:37 <cheater> you are totally hooked into the cybernet
19:56:32 <Gregor> ais523: NOT - ENOUGH - BROWSERS
19:57:01 <ais523> I'm using Firefox, Epiphany, and Chromium simultaneously atm
19:59:45 <Gregor> ais523: NOT - ENOUGH - BROWSERS
20:00:11 <ais523> and was using w3m earlier
20:00:16 <ais523> (I treat w3m rather like man or info)
20:04:39 <quintopia> Phantom_Hoover: chiclet teeth are scary. why would i want to be a freak?
20:05:09 <Ngevd> The bass section of school youth theatre is 40% Nathan
20:05:13 <Phantom_Hoover> quintopia, I don't know, ask the people who do?
20:05:26 <Phantom_Hoover> Ngevd, the bass section of a *theatre*?
20:05:37 <Ngevd> Bass as in singing
20:05:39 <Ngevd> We do musicals
20:05:43 <elliott> Gregor: Re STM: I'm about to get some much more substantial data and experience to argue based on :P
20:08:10 <Gregor> elliott: Good! Do so!
20:08:26 <elliott> Gregor: I am (it's called "basing the entirety of mchost on STM")
20:08:36 <elliott> (Like "STM transactions every tick")
20:08:43 <elliott> (I am determined to make the most impossible things work)
20:08:44 <Ngevd> And I got a named part!
20:08:57 <Ngevd> Almost made a nasty typo there
20:09:14 <Phantom_Hoover> Ngevd, you seem proud of this.
20:09:36 <Ngevd> I'm proud I got a named part
20:09:43 <Ngevd> I felt the nasty typo needed sharing
20:16:28 <elliott> :t map ?f . M.toList
20:16:29 <lambdabot> forall b k a. (?f::(k, a) -> b) => M.Map k a -> [b]
20:16:50 <elliott> :t map (\(k,v) -> (,) k <$> return v) . M.toList
20:16:51 <lambdabot> forall t a (f :: * -> *). (Monad f, Functor f) => M.Map t a -> [f (t, a)]
20:31:08 -!- derdon has joined.
20:52:19 -!- Ngevd has quit (Quit: Leaving).
21:06:32 <Phantom_Hoover> How is David Cameron even so annoying it's preternatural.
21:06:52 <ais523> I actually rather like him
21:06:57 <ais523> I'm suspicious of him, in some ways
21:07:00 <ais523> but I'm fine with him as a person
21:07:03 <Phantom_Hoover> ais...
21:08:05 <elliott> Compromise opinion: At least Cameron doesn't use the word "preternatural".
21:08:36 <ais523> elliott: Phantom_Hoover is Scottish, it's genetic, or at least memetic, for them to hate Conservatives
21:08:41 <Phantom_Hoover> It is the best word.
21:08:58 <Phantom_Hoover> ais523, actually my genes are like all Irish so I don't even.
21:09:18 <elliott> ais523: I'm sorry if you interpreted my comment as in any way a support of David Cameron or the Conservatives.
21:09:26 <elliott> No, I just really hate the idea of a person who uses the word "preternatural".
21:09:27 <ais523> elliott: I didn't
21:09:40 <ais523> I'm trying to defend Phantom_Hoover for disliking David Cameron for no obvious reason
21:09:57 * ais523 websearches for ""David Cameron" preternatural"
21:10:24 <elliott> 26 Apr 2010 – Britain's Conservative leader, David Cameron, is ahead in the race for ... That same face, so preternaturally smooth that Cameron was forced to ...
21:10:25 <elliott> Gross.
21:10:36 <elliott> 4 Apr 2010 – Meanwhile, Coulson remains one of David Cameron's inner strategic ..... get caught and end up in the poo, lacking TB's preternatural faculties. ...
21:10:45 <ais523> "The majority of the Cabinet, led by David Cameron, took the oath: one by one they made a solemn declaration on pain of divine or preternatural wrath:" — "Archbishop Cranmer"
21:10:55 <elliott> OK it's a fucking epidemic.
21:11:03 <elliott> Let's kill everyone, but first the conservatives; that way we'll all be happy.
21:11:24 <elliott> The conservatives rest assured that they won't have to see everyone else perish, and everyone else gets to revel in it.
21:11:30 <elliott> And then "preternatural" will be wiped out.
21:11:39 <Phantom_Hoover> Why do you hate 'preternatural' so much?
21:11:49 <elliott> Phantom_Hoover: Have you ever even looked at that word.
21:12:04 <elliott> It is like another word making a caricature of snobbish words.
21:12:15 <elliott> "Ooh, look at me, I'm Mr. PRETERNATURAL!"
21:12:21 <Phantom_Hoover> At least I didn't spell it præternatural.
21:12:36 <elliott> Wow OK you are not even allowed to speak now.
21:12:48 -!- sllide has joined.
21:13:17 <Phantom_Hoover> elliott, hey, you said ""preternatural"" yourself!
21:13:43 <elliott> Phantom_Hoover: Yes but not that æ variant.
21:14:35 <Phantom_Hoover> I was citing it as a bad thing!
21:15:06 <elliott> Phantom_Hoover: Yes but you let it in to the world.
21:15:46 -!- oerjan has joined.
21:16:00 <Phantom_Hoover> I just copied it from the WP article modulo æ.
21:16:26 <oerjan> æ is the best modulo
21:16:39 <oerjan> it's not prime, though
21:18:38 <oerjan> very æsthetic
21:19:26 <Phantom_Hoover> Is preternatural not a good word.
21:19:51 <ais523> !c printf("%d",0xae);
21:19:54 -!- Entanglements has quit.
21:19:59 <elliott> rip entanglements
21:19:59 <ais523> oh right, EgoBot isn't here
21:20:09 <ais523> `printf "%d", 0xae
21:20:11 <HackEgo> ​"0", 0xae
21:20:16 <ais523> `printf "%d" 0xae
21:20:18 <HackEgo> ​"0" 0xae
21:20:26 <ais523> `run printf "%d" 0xae
21:20:27 <HackEgo> 174
21:20:31 <elliott> ais523: try frink :P
21:20:33 <oerjan> > chr 0xae
21:20:34 <lambdabot> '\174'
21:20:46 <oerjan> ^chr 174
21:20:46 <fungot>
21:20:46 <ais523> elliott: what's the difference between printf and `run printf
21:20:51 <elliott> `frink char[0xae]
21:20:55 <elliott> ais523: quoting
21:20:59 <elliott> former only passes one arg
21:20:59 <HackEgo> ​?
21:21:04 <elliott> lol
21:21:05 <ais523> `run factor 174
21:21:06 <HackEgo> 174: 2 3 29
21:21:14 <ais523> indeed, æ isn't prime
21:21:34 <oerjan> erm
21:21:39 <Phantom_Hoover> Note to self: go through ~/Downloads. Soon.
21:21:50 <oerjan> ^asc æ
21:21:50 <fungot> 195.
21:21:51 <elliott> Phantom_Hoover: You will never wipe the evidence.
21:21:59 <elliott> `frink 0xae -> nonary
21:22:08 <HackEgo> 213
21:22:10 <elliott> ais523: See, Frink is the most useful for all your æ-related needs.
21:22:12 <oerjan> oh hm
21:22:25 * oerjan confused that with %c. he thinks.
21:22:35 <ais523> `frink 0xae -> hexadecimal
21:22:41 <elliott> "hex" would do.
21:22:45 <HackEgo> ae
21:22:48 <ais523> elliott: it's a pointless query anyway
21:22:49 <oerjan> > showHec 0xae "
21:22:51 <lambdabot> <no location info>:
21:22:51 <lambdabot> lexical error in string/character literal at end o...
21:22:54 <oerjan> > showHex 0xae "
21:22:55 <ais523> and took altogether too long to reply to
21:22:55 <lambdabot> <no location info>:
21:22:55 <lambdabot> lexical error in string/character literal at end o...
21:22:59 <oerjan> wat
21:23:02 <oerjan> > showHex 0xae ""
21:23:03 <ais523> oerjan: what's with the stray "?
21:23:03 <lambdabot> "ae"
21:23:29 <oerjan> ais523: i'm starting to wonder if my keyboard's flaky (i use that word a lot lately don't i)
21:23:51 <sllide> a esolang based on spacechem
21:24:00 <oerjan> spacechem?
21:24:03 <elliott> `frink "preternatural" -> jp
21:24:07 <sllide> its a puzzle game
21:24:12 <HackEgo> Unknown symbol "jp" \ Warning: undefined symbol "jp". \ Unconvertable expression: \ preternatural -> jp (undefined symbol)
21:24:15 <elliott> Hmm.
21:24:17 <elliott> `frink "preternatural" -> Japanese
21:24:20 <sllide> http://www.youtube.com/watch?v=RjYOYtd298o
21:24:20 <elliott> Probably more proxy problems.
21:24:27 <HackEgo> Could not get input stream java.net.ProtocolException: Peer closed connection \ Unconvertable expression: \ preternatural -> Japanese (undefined symbol)
21:24:27 <elliott> I blame Gregor(tm).
21:24:29 <elliott> Yeah.
21:25:27 <oerjan> > showIntAtBase 256 chr 1234567890 ""
21:25:29 <lambdabot> "I\150\STX\210"
21:26:01 <elliott> oerjan: HMPH:
21:26:19 <elliott> oh damn
21:26:23 <Madoka-Kaname> :t showIntAtBase
21:26:24 <lambdabot> forall a. (Integral a) => a -> (Int -> Char) -> a -> String -> String
21:26:25 <elliott> frink's base support only goes up to 36 :P
21:26:34 <oerjan> *MWAHAHAHA*
21:26:42 <Madoka-Kaname> > showIntAtBase 10 chr 123456789 ""
21:26:43 <lambdabot> "\SOH\STX\ETX\EOT\ENQ\ACK\a\b\t"
21:26:45 <Madoka-Kaname> > showIntAtBase 10 chr 123456789 "0"
21:26:46 <lambdabot> "\SOH\STX\ETX\EOT\ENQ\ACK\a\b\t0"
21:27:09 <elliott> `frink messageDigestInt[1234567890 -> quattuordecimal, "MD5"] -> octal
21:27:11 <oerjan> well lambdabot's probably has some trouble beyond fromEnum (maxBound :: Char)
21:27:12 <elliott> oerjan: CHECKMATE
21:27:18 <HackEgo> 3475200621337201247103053166105120607462731
21:27:25 <Madoka-Kaname> > showIntAtBase 10 (chr.add$ord "a") 123456789 ""
21:27:26 <lambdabot> Not in scope: `add'
21:27:27 <oerjan> ;_;
21:27:40 <Madoka-Kaname> > showIntAtBase 10 (chr.(+ord "0")) 123456789 ""
21:27:41 <lambdabot> Couldn't match expected type `GHC.Types.Char'
21:27:41 <lambdabot> against inferred type...
21:27:43 <elliott> oerjan: now you just have to implement MD5 with @lets :P
21:27:54 <Madoka-Kaname> > showIntAtBase 10 (chr.((ord "0")+)) 123456789 ""
21:27:55 <lambdabot> Couldn't match expected type `GHC.Types.Char'
21:27:55 <lambdabot> against inferred type...
21:27:56 <Madoka-Kaname> :<
21:28:27 <Madoka-Kaname> > showIntAtBase 10 (chr.(+ord '0')) 123456789 ""
21:28:29 <lambdabot> "123456789"
21:28:39 <oerjan> Madoka-Kaname: you probably want intToDigit for normal conversions (only up to 16)
21:28:48 <Madoka-Kaname> oerjan, I'm just messing around!
21:28:49 <Madoka-Kaname> :<
21:28:51 <Madoka-Kaname> > showIntAtBase 10 (chr.(+ord '!')) 123456789 ""
21:28:53 <lambdabot> "\"#$%&'()*"
21:29:09 <elliott> http://en.wikipedia.org/wiki/Wikipedia:Templates_for_discussion/Log/2011_October_3#Template:Facepalm
21:29:09 <elliott> WJW
21:31:07 <ais523> elliott: hilarious
21:31:11 <ais523> you know about the T1 debate, right?
21:31:19 <elliott> ais523: I might do but I don't recall that name
21:31:20 <elliott> go on
21:31:22 <ais523> it looks like it's been resurrected in a really unlikely way
21:31:31 <ais523> elliott: it was part of the userbox wars
21:31:44 <ais523> Jimbo unilaterally added a new speedy-delete criteria for "divisive or inflammatory templates"
21:31:47 <ais523> and it lead to a row
21:31:58 <elliott> ais523: oh, hmm
21:32:05 <Phantom_Hoover> ais523, the userbox wars?
21:32:08 <elliott> the only userbox drama I remember was that SPUI-related one
21:32:08 <Phantom_Hoover> (Best wars.)
21:32:34 <ais523> you might both be too young to remember the userbox wars, but wow were they both pointless and futious
21:32:35 <ais523> *furious
21:32:52 <elliott> too young X-D
21:33:05 <elliott> Well, I do remember lots of userbox hoohah
21:33:09 <elliott> it just kind of all melded together into one
21:33:21 <Phantom_Hoover> ais523 is a veteran of the userbox wars— screw it I don't know the song well enough.
21:34:02 <ais523> here we go: http://en.wikipedia.org/wiki/Wikipedia:T1_and_T2_debates
21:34:35 <elliott> oh, right, I was thinking of the right one
21:34:46 <elliott> (the one started by the paedophilia userbox)
21:34:58 <elliott> hmm, was that the first test of "is Jimbo the final say"?
21:35:19 <elliott> I seem to recall everyone thought he was until he did something people disagreed with, at which point he retroactively stopped ever having a final say
21:36:17 <ais523> haha
21:37:27 <elliott> ais523: please try and convince Phantom_Hoover not to solve all package dependency problems with --force-all...
21:37:39 <ais523> Phantom_Hoover: it won't work properly
21:37:43 <Phantom_Hoover> elliott, it's like a hammer!
21:37:46 <ais523> and the errors will only become obvious later
21:38:02 <Phantom_Hoover> But it's all I have...
21:39:30 <ais523> I've used --force-depends once, in an emergency
21:39:32 <ais523> but that's it
21:39:54 <ais523> (hard power-off during a distro upgrade; I'm sort-of surprised it managed to recover from that even if I had to do parts of it manually)
21:40:04 <elliott> I use --force-all to hotswap packages sometimes
21:40:39 <Phantom_Hoover> So what am I /meant/ to do?
21:41:58 <elliott> don't install packages that you don't have the dependencies for
21:42:41 <Jafet> Uh, your package manager can't recover from a crash?
21:42:45 <Phantom_Hoover> Well that's a great solution (note: not a great solution).
21:42:51 <Jafet> What kind of software is that!
21:43:30 <Phantom_Hoover> ais523, I see David Gerard was heavily involved.
21:43:35 <ais523> Jafet: it can, normally; I was in the middle of a /distro upgrade/
21:43:48 <Jafet> And it can't recover while doing that?
21:44:30 <Phantom_Hoover> ais523, did you know about Gerard's RW career BtW.
21:44:44 <ais523> it actually can with a couple of "I know what I'm doing" command line options
21:44:51 <ais523> but I was surprised at that
21:45:31 <oerjan> 11:44:42: <elliott> The singularity is just a moment of infinite Firefox and kernel updates?
21:45:34 <oerjan> 11:44:48: <elliott> That's the most bullshit singularity I've ever heard of.
21:45:46 <oerjan> yes, but afters you will find that it looks _exactly_ like @
21:45:50 <oerjan> *afterwards
21:46:20 * oerjan gets even more suspicious that his keyboard is dropping characters
21:46:37 <oerjan> hm when i try to touch type properly, my speed goes _down_ :(
21:47:15 <Phantom_Hoover> ais523, so wait, the userbox wars were more a dispute over core site policy precipitated by the userbox deletion?
21:47:28 <oerjan> also, there will be an icon for "galactic network portal"
21:47:36 <ais523> Phantom_Hoover: the policy in question was aimed reasonably directly at userboxes
21:47:42 <Jafet> ais523: well, it should really have been automatic
21:47:47 <ais523> but yes, there was an argument about the metapolicy
21:48:08 <ais523> Jafet: which OSes are you used to? and what update/upgrade mechanisms?
21:48:30 <Phantom_Hoover> ais523, reminds me of like every conflict in RW's history, although it looks way less messy.
21:48:43 <Jafet> debian and apt, which is a piece of crap that can't figure out anything by itself
21:49:48 <oerjan> clearly Jafet is another person waiting for @
21:49:52 <ais523> this was Ubuntu and apt
21:50:09 <ais523> elliott: hmm, I'm not convinced @ even has a package manager, the packages are just platonically there
21:50:15 <Jafet> Ah, at least the debian maintainers don't actively work against you.
21:50:27 <Jafet> Like the ubuntu packagers enjoy doing.
21:50:39 <elliott> ais523: I think @'s package management system is type-based
21:51:02 <elliott> you specify the module signatures you need, @ and the user collaborate on deciding which modules to give you meeting those signatures
21:51:16 <elliott> one problem is that signatures could get general enough that the desired semantics aren't enforced, but I'll work something out
21:52:26 <oerjan> you need intensional types
21:52:43 <elliott> oerjan: you get right on that
21:53:30 <oerjan> as soon as they invent strong ai
21:53:35 <elliott> ais523: heh, maybe you can disambiguate by specifying desired big-O complexities with the signatures
21:53:43 <elliott> filled in by the implementation author (inferring them is impossible ofc)
21:53:54 <elliott> that might eliminate, like, a whole /three/ clashes
21:54:19 <elliott> The cheating solution is to give each defined API a unique hash identifier so that even structurally equivalent ones are distinct, but that has a whole bunch of authority and control problems.
21:54:28 <elliott> It might work out better in the end though.
21:55:25 <elliott> I should make it illegal to ping me about @ and then not respond enthusiastically to the ramblings I accidentally let escape afterwards.
21:56:43 <elliott> ais523: I SEE
21:57:01 <ais523> hey, I /read/ them
21:57:10 <ais523> but my brain's a bit fried atm
21:57:18 <ais523> trying to fix and run marking scripts at 9pm
21:57:27 <elliott> ais523: it's 9 pm?
21:57:32 <elliott> looks more like eleven here
21:57:40 <ais523> elliott: that's when I was fixing them and running them
21:57:46 <ais523> I've finished that barring further emails flying around
21:57:56 <ais523> but my brain got fried in the process
21:57:58 <ais523> it'll recover, I hope
21:58:01 <elliott> They should really use a safer method of delivering email.
21:58:01 <ais523> but hasn't yet
22:00:28 <oerjan> emails by paper plane
22:01:53 <oerjan> <fizzie> I mean, if they do graphs of all the "fuck"s in the kernel... http://www.vidarholen.net/contents/wordcount/
22:02:00 <oerjan> i like how they included "penguin"
22:02:09 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
22:02:58 <elliott> I like how "penguin" ranks higher than "fuck".
22:04:16 -!- DH____ has quit (Read error: Connection reset by peer).
22:04:19 -!- DHeadshot has joined.
22:04:21 <Jafet> http://www.anvari.org/fortune/Kernel_Cookies/134
22:05:50 <oerjan> the word "shit" seems to have dropped a lot from the start, i wonder if that's linus's personal favorite
22:06:15 <oerjan> (relatively)
22:06:48 <elliott> Linus says crap a lot.
22:06:55 <elliott> At least in emails.
22:07:46 <oerjan> well crap _does_ dominate in the middle
22:08:42 <oerjan> but shit had a huge dominance initially
22:09:11 <oerjan> there are also releases where "penguin" wins
22:12:06 <elliott> oerjan: bear in mind that the kernel was not all that much code initially :P
22:12:21 <elliott> it does dominate for a while though
22:14:36 <oerjan> a little known fact is that "shit" was the first word linus wrote in original linux. right after the first "/*"
22:15:12 <elliott> Nothing good ever starts with a comment. this is the wisdom of ZOMGMODULES caret w elliott
22:16:03 <oerjan> hm being elliott _would_ explain why cpressey rarely shows up here
22:16:28 <elliott> Unfortunately it falls down at the part where, e.g. I'm not amazing.
22:16:50 -!- oerjan has set topic: computed jumps... the topic. | 12345678^&!@ | http://codu.org/logs/_esoteric/.
22:18:31 <ais523> hmm, the tdwtf sidebar discussion about legal train routes is pretty amazing
22:18:38 <ais523> there are over 600 pages of instructions
22:18:42 <ais523> together with a long list of exceptiosn
22:18:44 <ais523> *exceptions
22:18:55 <elliott> oerjan: thank you
22:18:59 <oerjan> yw
22:19:01 <elliott> oerjan: @ is unnecessary
22:19:03 <elliott> alt+q gives me that
22:19:07 <elliott> oerjan: i suggest asterisk instead
22:19:14 -!- oerjan has set topic: computed jumps... the topic. | 12345678^&!* | http://codu.org/logs/_esoteric/.
22:19:25 <elliott> ais523: the tdwtf sidebar should be forced to fit into an actual sidebar, really
22:19:30 <elliott> because I imagine it like that whenever it's referenced
22:19:37 <elliott> also, it's the only way the forum software could get worse
22:19:39 * Phantom_Hoover → sleep
22:19:43 -!- Phantom_Hoover has quit (Quit: Leaving).
22:23:20 <ais523> gah, seems it also depends on the day of the week
22:23:29 <ais523> and the time, but only if getting a train from England to Ireland
22:23:33 <ais523> which is, how is that even possible?
22:24:39 <elliott> help
22:25:13 <ais523> OK, I think I've just verified that it's legal to travel from Birmingham to Cambridge via Loughborough (and vice versa)
22:25:19 <ais523> even though map-wise, it makes no sense
22:25:25 <elliott> why would it be
22:25:26 <elliott> ieglegilgal
22:25:34 <ais523> because it's not on the route
22:25:52 <oerjan> since when do train routes _not_ depend on the day of the week?
22:26:07 <oerjan> that's like, what they do
22:26:15 <ais523> oerjan: well, it's about what combination of trains is legal to get from A to B
22:26:20 <ais523> e.g., can you go via unrelated location C?
22:26:31 -!- copumpkin has joined.
22:28:37 <ais523> hmm, I think it might be theoretically possible to have a pair of stations which, by the rules, can't be travelled between at all
22:28:43 <ais523> except that there's an exception that the shortest route is always legal
22:29:22 <oerjan> why would they even _have_ rules?
22:29:52 <oerjan> other than, you have to pay for the stretches you actually travel
22:30:50 <oerjan> mind you in norway at least, prices depend on when you travel, too. well last i traveled by train. i think.
22:32:03 <oerjan> also, down near oslo they are almost never on time.
22:33:50 <ais523> oerjan: because there's some rule allowing you to get off at intermediate stations, but the fare depends only on source and destination
22:34:14 <oerjan> hm
22:34:31 <oerjan> where destination is _final_ destination, i guess?
22:34:36 <ais523> yep
22:34:41 <ais523> there was a famous incident where someone exploited this to get really low fares on his commute
22:34:47 <ais523> until the train operators caught on and changed the rules
22:35:39 <oerjan> hm, i see, so somehow paying directly to the intermediate station is _more_ expensive?
22:35:57 <ais523> oerjan: yes
22:36:16 <ais523> although, the rules nowadays explicitly state that a route's illegal if it's more expensive to go directly to an intermediate station
22:36:41 * pikhq_ grawr
22:37:09 <oerjan> i guess this would only make sort of sense if the route takes a long roundabout to get to its final destination
22:37:20 <ais523> oerjan: yes, or if London is involved
22:38:28 <pikhq_> It's a bit weird hearing about train routes discussed in a manner that makes it clear that people actually *use* them.
22:38:34 <oerjan> well, you do have the world's oldest train system, it figures it would be complicated.
22:39:36 <oerjan> that's europe for you. although the norwegian trains (esp. near oslo, i think) are sufficiently bad they have trouble competing with other solutions.
22:39:53 <oerjan> we don't have high speed tracks
22:41:04 <oerjan> and many places, only a single track so there are delays whenever trains need to pass each other
22:41:41 <pikhq_> We don't have a passenger rail system.
22:41:47 <ais523> much the same in the UK, except that single tracks are moderately rare and the trains are timed so that they don't cause delays
22:42:16 <pikhq_> The closest we have is Amtrak, which runs ridiculously limited passenger service on freight lines.
22:43:02 <pikhq_> https://upload.wikimedia.org/wikipedia/commons/c/c5/Amtrak_System_Map.svg
22:43:16 <pikhq_> Keep in mind, this is for a country about the size of the EU.
22:43:24 <elliott> more like tamtruck
22:43:46 <elliott> ok im going to bed
22:43:56 -!- Jafet has quit (Quit: Leaving.).
22:44:21 <pikhq_> https://upload.wikimedia.org/wikipedia/commons/1/1f/Map_of_current_Interstates.svg And this is a map of major freeways.
22:45:31 -!- elliott has quit (Remote host closed the connection).
22:45:40 <olsner> pikhq_ is american? I thought you were finnish or something
22:45:49 <pikhq_> Very much American.
22:46:36 <oerjan> olsner: you haven't noticed his political discussions? although admittedly he seems to know something about europe, which might throw you off :P
22:46:55 <olsner> oerjan: politics? I don't read politics
22:46:58 <pikhq_> I'm an American who just happens to give a shit about other places.
22:47:07 <pikhq_> Which *probably* suffices to throw people off.
22:47:08 <pikhq_> :P
22:48:28 <pikhq_> olsner: Anyways. Why'd you think I was Finnish? Or, more generally, Scandinavian?
22:48:47 <oerjan> it _is_ a good first guess on this channel
22:49:10 <olsner> not british and not swedish/norwegian => finnish
22:49:10 <pikhq_> Well, yeah, we seem to have a pretty high proportion of Scandinavians.
22:50:02 <olsner> I don't know of any regulars outside that rule except pikhq :)
22:50:12 <pikhq_> Gregor?
22:50:21 <pikhq_> Though Gregor is not one of the *talkative* regulars.
22:50:45 <olsner> he's british afaik :P
22:50:53 <pikhq_> Gregor's American.
22:51:14 <oerjan> zzo38, too
22:51:22 -!- ais523 has quit (Remote host closed the connection).
22:51:22 <pikhq_> zzo38's Canadian, isn't he?
22:51:30 <olsner> wat, zzo38 is finnish :P
22:51:32 -!- kmc has quit (Quit: Leaving).
22:51:33 <oerjan> yes, which doesn
22:51:37 <oerjan> 't fit olsner's rule
22:51:45 <pikhq_> Yeah.
22:52:12 <pikhq_> Hmm. Do we have people from outside the Germanic language sphere?
22:52:17 <oerjan> olsner: i once thought zzo38 was chinese, but...
22:52:25 <oerjan> lifthrasiir is korean
22:52:26 <pikhq_> Oh, wait, lifthrasiir's in Korea. There we go.
22:52:39 <olsner> I think I see the problem: since I use the rule to decide everyone's nationality I fail to disprove the rule
22:52:59 <monqy> waht nationality am i
22:53:02 <pikhq_> oerjan: Yeah, zzo38's idiosyncratic grammar does seem pretty Sinitic.
22:53:07 <oerjan> slereah is french, although maybe not so regular
22:53:15 <olsner> monqy: british
22:53:23 <monqy> actually american
22:53:34 <oerjan> pikhq_: as does zzo if it were his initials (not sure on the "o", though)
22:53:45 <oerjan> augur is american
22:53:56 <monqy> wow lots of americans
22:54:24 <oerjan> nooga and asiekierka are polish
22:54:31 <augur> oerjan: beep boop
22:54:37 * oerjan waves
22:54:38 <pikhq_> monqy: Well, yeah. The US is pretty big for a country.
22:54:58 <oerjan> hiato is south african, although he is rarely here
22:55:10 <pikhq_> And it's not yet completely economically fucked, so of course it'll have a lot of representation.
22:55:58 <pikhq_> Some 312 million people.
22:57:07 <pikhq_> The EU, for comparison, features some 502 million people.
22:57:19 <oerjan> sebbu is also french, but he never talks
22:57:34 <oerjan> i _think_ cheater is german.
22:58:14 <oerjan> boily is french, or maybe french canadian
22:58:24 <oerjan> ...not sure on that
22:58:40 <oerjan> jix is german
22:59:05 <oerjan> tswett is american, i think
22:59:45 -!- derdon has quit (Remote host closed the connection).
23:00:22 <oerjan> a number of the others might be american but i'm not sure. and i haven't mentioned those i know are scandinavian/nordic or british
23:01:00 <oerjan> and then there is shachaf, of which i have my suspicions :P
23:02:01 <shachaf> oerjan: Well, of course you have suspicions of me.
23:02:07 <shachaf> Wait, what are we talking about?
23:02:18 <oerjan> shachaf: where everyone is from
23:02:26 <shachaf> Oh. "from" meaning what?
23:03:15 <oerjan> country. and in your case i suspect birth and residence are not the same.
23:03:44 <shachaf> Right. Which one?
23:05:32 <oerjan> probably residence.
23:05:43 <oerjan> in which case i suspect you're in the us
23:06:30 * shachaf born in Asia, live in North America
23:07:26 <oerjan> and your name looks distinctively jewish.
23:07:52 <shachaf> Well, it's Hebrew.
23:08:00 <shachaf> Southwest Asia. :-)
23:08:19 * shachaf also citizen of Finland.
23:08:24 <oerjan> ah i saw that
23:08:32 <oerjan> wasn't sure if you were joking
23:08:45 <shachaf> Saw what?
23:09:00 <oerjan> that you said you were a citizen of finland.
23:09:55 <oerjan> and you could be born in israel, but if it's some other sw asian country things could get complicated...
23:10:58 <oerjan> and the finnish mention indicates it might be.
23:11:59 * oerjan finally breaks down and google-stalks shachaf
23:12:14 * shachaf sighs.
23:12:58 <oerjan> "anything seasoned with balsamic vinegar"
23:14:44 <pikhq_> oerjan: It's probably to ask for places of birth, residence, and citizenship.
23:15:03 <oerjan> i think you accidentally a word
23:15:11 <pikhq_> Probably best
23:15:16 <oerjan> pikhq_: i started getting that feeling, too
23:15:26 <oerjan> shachaf: sorry if i've embarassed you
23:17:36 -!- sllide has quit (Read error: Connection reset by peer).
23:20:14 <shachaf> I wish that "Executive Profile" wasn't there.
23:20:19 <shachaf> It's kind of ridiculous.
23:20:24 <shachaf> Maybe I can have them take it down.
23:26:03 -!- tiffany has quit (Ping timeout: 248 seconds).
23:39:58 <oerjan> <fizzie> You could almost even believe the Norwegians have provided more accurate maps.
23:40:03 -!- Sgeo|web has joined.
23:40:11 <oerjan> the norwegian side might actually have people still living there.
23:41:33 <Sgeo|web> Steve Jobs died
23:44:01 <Gregor> Oh?
23:44:11 <pikhq_> Sure enough.
23:44:14 <Gregor> You seem to have beat Google News.
23:44:36 <pikhq_> It seems to have literally just happened.
23:44:41 <Sgeo|web> My dad had the TV on
23:47:09 <pikhq_> Well, that's "fun". The US signed the ACTA, and is claiming that they don't need Senate approval.
23:47:30 <pikhq_> Which is of course impossible.
23:47:50 <pikhq_> The President only has the power to make treaties with 2/3rds of the Senate concurring.
23:48:34 <Gregor> Welp, Jobs managed to capture our attention for three minutes.
23:48:36 <Gregor> That's pretty good, really.
23:49:24 -!- DHeadshot has quit (Read error: Connection reset by peer).
23:49:28 -!- DH____ has joined.
23:51:21 <Gregor> An admin here wants to nominate me for the dubious title of "Music Maker" (where "Maker" is the Purdue Official Pun). Anybody want to write a 100-world blurb on my amazing musical abilities? :P
23:51:53 <pikhq_> 音楽良
23:51:56 <pikhq_> There.
23:52:02 <pikhq_> 3 characters.
23:52:03 -!- DH____ has quit (Read error: Connection reset by peer).
23:52:05 <pikhq_> That count?
23:52:53 <Gregor> Well, that's almost 100 words.
23:53:11 <pikhq_> Far short of 100 worlds, though.
23:53:16 <Gregor> OK, I am seriously terrified by this curry ... PLEASE DON'T BURST INTO FLAMES ... I'M SORRY THAT I'VE ANGERED THE COCONUT OIL GODS ...
23:53:23 <Gregor> ... lol
23:53:26 <Gregor> I tpyo'd 100 "worlds"
23:53:30 <Gregor> That's pretty great.
23:53:34 <Gregor> Let's try 100 /words/ :P
23:53:42 <oerjan> 01:48 Gregor> Welp, Jobs managed to capture our attention for three minutes.
23:53:42 <oerjan> 01:48 Gregor> That's pretty good, really.
23:53:45 <oerjan> out in a blast
23:56:24 <oerjan> "Gregor has a preternatural talent for creating wonderfully salient and laisse-faire compositions alluding to the bourgoisie sensibilities of the current American zeitgeist."
23:57:01 <oerjan> someone else can do the remaining 78
23:57:41 <oerjan> (no, i'm not sure what all those words mean)
23:58:14 <Gregor> oerjan: Good! Gettin' there!
2011-10-06
00:00:05 <oerjan> hm comments on a postcard has passed 1000 comics.
00:05:16 * oerjan looks at draak's speech bubble in today's (well, yesterday's) iwc
00:05:19 <oerjan> oh dear.
00:11:24 -!- pikhq has joined.
00:14:20 -!- pikhq_ has quit (Ping timeout: 255 seconds).
00:14:31 <Gregor> OK, still alive. My curry hasn't killed m.e
00:14:33 <Gregor> *me.
00:14:43 <Gregor> (Yet)
00:30:16 -!- augur has quit (Remote host closed the connection).
00:30:55 -!- Sgeo|web has quit (Ping timeout: 252 seconds).
00:39:04 -!- clog has quit (Ping timeout: 252 seconds).
01:04:33 -!- augur_ has joined.
01:06:31 -!- augur_ has quit (Remote host closed the connection).
01:11:11 -!- Sgeo|web has joined.
01:12:55 * Sgeo|web mumbles something about having written 52 lines of Java-style Ruby when I could have done what I wanted in maybe 2 lines of Python
01:14:55 <Sgeo|web> List comprehensions. Not useless.
01:19:14 <Madoka-Kaname> What's this something?
01:19:24 <Madoka-Kaname> Doesn't ruby have filter, map, etc?
01:20:03 <Sgeo|web> What about cleanly combining two lists?
01:20:04 <Sgeo|web> cards = [((suit0, rank0), (suit1, rank1)) for suit0 in range(0,4) for rank0 in range(0,13) for suit1 in range(0,4) for rank1 in range(0,13) if (not (suit0 == suit1 and rank0 == rank1)) if (suit0==0) if (rank1==0)]
01:20:20 <Sgeo|web> The way I have two fors there
01:22:25 * oerjan counts four
01:23:10 <Sgeo|web> Erm, oops, yeag
01:24:23 <oerjan> that restricts suit0 and rank1 to be 0, doesn't it...
01:24:38 <Sgeo|web> https://gist.github.com/acda932ef3b2c6840f9c is the Ruby code I ended up writing
01:24:48 <Sgeo|web> oerjan: yes, that's the intent
01:25:18 <oerjan> why select them from a range first, then?
01:27:04 -!- kmc has joined.
01:27:50 <Sgeo|web> Trying to model the situation without thinking about it too much, I guess
01:28:39 <oerjan> mhm
01:31:32 <Sgeo|web> Is that line horrible, or are the Ruby people just bad at reading it?
01:34:14 <oerjan> > [c | c@(c0@(0,_), c1@(_,0)) <- range (((0,0),(0,0)),((3,12),(3,12))), c0 /= c1]
01:34:15 <lambdabot> [((0,0),(1,0)),((0,0),(2,0)),((0,0),(3,0)),((0,1),(0,0)),((0,1),(1,0)),((0,...
01:34:54 <oerjan> > length [c | c@(c0@(0,_), c1@(_,0)) <- range (((0,0),(0,0)),((3,12),(3,12))), c0 /= c1]
01:34:56 <lambdabot> 51
01:35:31 <Sgeo|web> I could attempt to understand that I guess, but I'd never be able to write that
01:35:32 <Sgeo|web> :/
01:35:39 * oerjan cackles evilly
01:35:53 <Sgeo|web> I guess that's why the Ruby people were complaining?
01:35:53 <oerjan> it uses the Ix class for array subscripts :P
01:36:39 <oerjan> which incidentally has a very compact range command which works for tuples
01:37:11 <tswett> Did not copy; say again please.
01:38:04 <oerjan> the range method for the Ix class gives you a "rectangular" range when used on tuples, which is just what you want here
01:38:15 <oerjan> > range (1,4)
01:38:17 <lambdabot> [1,2,3,4]
01:38:27 <oerjan> > range ((1,1),(3,3))
01:38:29 <lambdabot> [(1,1),(1,2),(1,3),(2,1),(2,2),(2,3),(3,1),(3,2),(3,3)]
01:38:48 <oerjan> well it's argument is always a tuple, i mean the fields of that tuple
01:38:50 <Sgeo|web> I understand my list comprehension perfectly
01:38:51 <oerjan> *its
01:39:22 <oerjan> well those work in haskell too, i just got carried away with making it even shorter
01:40:07 <Sgeo|web> I mean, the Ruby people are saying one-liners should be succint and easy to understand, not just one-liners for the sake of being one-liners
01:40:19 <Sgeo|web> But to me, my list comprehension IS succint and easy to understand
01:40:38 <oerjan> yeah
01:42:13 <Sgeo|web> Probably I'm treating Ruby unfairly by having my first draft be in it
01:44:26 <oerjan> i'm pretty sure there's a straightforward translation of the list comprehension to ruby using maps, filters and the like, just as the official haskell desugaring of them
01:45:21 <Sgeo|web> oerjan: What's the straightforward translation of the multiple fors?
01:45:59 <oerjan> @undo [((s0, r0),(s1, r1)) | s0 <- [0..3], r0 <- [0..12], s1 <- [0..3], r1 <- [0..12], not (s0 == s1 && r0 == r1), s0 == 0, r1 == 0]
01:46:00 <lambdabot> concatMap (\ s0 -> concatMap (\ r0 -> concatMap (\ s1 -> concatMap (\ r1 -> if not (s0 == s1 && r0 == r1) then if s0 == 0 then if r1 == 0 then [((s0, r0), (s1, r1))] else [] else [] else []) [0 ..
01:46:00 <lambdabot> 12]) [0 .. 3]) [0 .. 12]) [0 .. 3]
01:47:10 <oerjan> hm @undo used if's rather than filters
01:47:52 <oerjan> i don't know what in ruby corresponds to concatMap (i think in scala it's called flatmap)
01:48:43 <oerjan> something that works similarly to .each on your code, but concatenates the result
01:48:51 <oerjan> *in
01:48:58 <Sgeo|web> collect?
01:49:04 <Sgeo|web> Wait, no
01:49:17 <Sgeo|web> @src concatMap
01:49:18 <lambdabot> concatMap f = foldr ((++) . f) []
01:49:30 <oerjan> it's also concat . map
01:49:51 <Sgeo|web> :t concat
01:49:52 <lambdabot> forall a. [[a]] -> [a]
01:49:56 * Sgeo|web is having a derp moment
01:50:16 <oerjan> concat flattens one level of a list
01:51:30 <Sgeo|web> .flat_map aka .collect_concat
01:52:24 <oerjan> ok so
01:54:34 <Sgeo|web> (0...4).flat_map { |s0| (0...13).flat_map { |r0| (0...4).flat_map { |s1| (0...13).flat_map { |r1| ((s0, r0), (s1, r1))}}}}
01:54:39 <Sgeo|web> That's rather ugly
01:55:01 <Sgeo|web> And not the whole thing
01:55:06 <Sgeo|web> And I haven't actually tried it
01:55:13 <oerjan> pretty much, yes, except with a test inside |r1|
01:55:35 <Sgeo|web> I could put the test outside it, .filter at the end
01:55:38 <oerjan> why three . 's?
01:55:50 <Sgeo|web> three . makes it open on the end
01:56:06 <Sgeo|web> (0...4) excludes the 4, (0..4) includes it
01:56:16 <oerjan> yes, but inside you have all the variables you need to test on in scope
01:56:35 <oerjan> already
01:56:49 <Sgeo|web> Not sure how to filter while inside there...
01:57:18 <oerjan> you return an empty list of any test fails, otherwise a single element list
01:57:21 <oerjan> *if any
01:58:11 <oerjan> like that @undo result above
01:58:40 <oerjan> except the nested if's could be replaced by && or whatever ruby calls it
01:58:57 <Sgeo|web> (0...4).flat_map { |s0| (0...13).flat_map { |r0| (0...4).flat_map { |s1| (0...13).flat_map { |r1| !(s0 == s1 && r0==r1) && s0==0 && r1==0 ? ((s0, r0), (s1, r1)) : []}}}}
01:58:59 <Sgeo|web> Like that?
01:59:31 <oerjan> except you are not returning a list in the succeeding case
01:59:58 <Sgeo|web> (0...4).flat_map { |s0| (0...13).flat_map { |r0| (0...4).flat_map { |s1| (0...13).flat_map { |r1| !(s0 == s1 && r0==r1) && s0==0 && r1==0 ? [((s0, r0), (s1, r1))] : []}}}}
02:00:05 <oerjan> yeah
02:01:01 <oerjan> i don't really know ruby but that looks plausible
02:01:07 <Sgeo|web> Syntax error
02:01:14 <Sgeo|web> Expecting a = somewhere
02:02:45 <oerjan> ouch well i don't know about that, maybe it requires a statement instead of an expression somewhere?
02:03:41 -!- clog has joined.
02:03:46 <Sgeo|web> http://www.ruby-doc.org/core/Array.html#method-i-permutation I keep getting suggestions to use this, but, sadly, I can't figure out how
02:04:40 <Sgeo|web> Maybe with zipping somehow?
02:04:55 <oerjan> that would be more like if you wanted a list of all possible entire deck shufflings, i think
02:05:01 <oerjan> which would be horribly inefficient
02:05:19 <oerjan> (maybe universe-heat-death inefficient)
02:05:35 <Sgeo|web> http://www.ruby-doc.org/core/Array.html#method-i-product
02:05:52 <Sgeo|web> That's... pretty much what I want, except for needing to filter afterwards
02:05:56 <oerjan> oh wait, maybe if you specify n = 2
02:08:56 <Sgeo|web> <x0F_> (0...4).to_a.product((0...13).to_a).reject_if { |combination| #your_reject_criteria }
02:09:09 <oerjan> Sgeo|web: what about [0...4].product([0...13]).permutations(2).to_a
02:09:40 <oerjan> still needs a final filtering for your actual test
02:10:18 <oerjan> well [] or () i don't know
02:10:28 <Sgeo|web> What's the permutations() fort?
02:11:06 <oerjan> to get two unequal elements of the product in order
02:11:25 <oerjan> basically the product constructs a deck, then the permutations draws two cards from it
02:12:01 <Sgeo|web> Ooh, cool
02:13:09 <oerjan> (or rather, constructs all possible two card drawings)
02:14:37 -!- augur has joined.
02:27:10 -!- MDude has changed nick to MSleep.
02:29:19 -!- derrik has joined.
02:36:27 -!- kmc has quit (Ping timeout: 248 seconds).
02:50:59 -!- Sgeo|web has quit (Ping timeout: 252 seconds).
03:00:28 -!- kmc has joined.
03:26:04 -!- CakeProphet has joined.
03:26:04 -!- CakeProphet has quit (Changing host).
03:26:04 -!- CakeProphet has joined.
04:10:57 -!- augur has quit (Remote host closed the connection).
04:28:14 -!- lambdabot has quit (Ping timeout: 260 seconds).
04:33:15 -!- augur has joined.
04:44:50 -!- lambdabot has joined.
04:55:02 -!- derrik has quit (Quit: left).
05:00:14 <oerjan> @hoogle [a] -> [[a]]
05:00:15 <lambdabot> Data.List inits :: [a] -> [[a]]
05:00:15 <lambdabot> Data.List permutations :: [a] -> [[a]]
05:00:16 <lambdabot> Data.List subsequences :: [a] -> [[a]]
05:09:24 <pikhq> Hmm. I wonder what in Linux still uses bogomips.
05:09:44 <oerjan> the bogino accelerator
05:10:07 <pikhq> Oh, *that's* what requires the busy-wait?
05:11:13 <oerjan> yeah but it's ok because the boginos make up for it; they travel faster than bullshit
05:11:37 <oerjan> and i don't think i need to explain how fast _that_ is.
05:11:56 <pikhq> Ah, yes, the true physical limit.
05:12:55 -!- hagb4rd has joined.
05:14:53 <hagb4rd> steve jobbs is dead?
05:17:19 <oerjan> no. a different guy with a very similar name is, though.
05:17:42 <oerjan> ...i think i must be particularly annoying today.
05:18:04 <hagb4rd> hi oerjan. he was young. do you know how he died?
05:18:16 <oerjan> cancer, as expected
05:18:21 <hagb4rd> aw
05:18:27 <hagb4rd> thanks..i see
05:19:02 <pikhq> Such a jerky constellation.
05:19:18 <pikhq> Also a really annoying tropic.
05:19:30 <oerjan> pikhq: yeah that's why i'm a jerk
05:20:31 <oerjan> maybe i should travel to the sahara. at least i'd then be on tropic.
05:21:20 <hagb4rd> but dont try to travel throgh the sahara
05:21:29 <oerjan> why not?
05:22:00 <hagb4rd> its a dry place
05:23:26 <hagb4rd> and you could get killed by fundemantalists
05:23:33 <hagb4rd> :p
05:23:53 <oerjan> tragic
05:24:11 <hagb4rd> drama
05:24:32 <hagb4rd> its like comedy and tragedy isnt it
05:25:07 <oerjan> something like that
05:36:57 -!- pikhq_ has joined.
05:39:19 -!- pikhq has quit (Ping timeout: 255 seconds).
05:40:17 -!- Ngevd has joined.
05:40:24 <Ngevd> Aaaah!
05:40:43 <Ngevd> That was an "Aaaah!" of shock, not of discovery, btw
05:41:01 <Ngevd> What's happened to my Ubuntu!?
05:41:41 <augur> http://www.flickr.com/photos/clickandclash/5658641596/in/set-72157626584908000
05:42:02 <Ngevd> Probably not, but good try
05:42:04 <oerjan> Ngevd: gremlins
05:42:14 <Ngevd> The bar at the top is light gray!
05:42:27 <Ngevd> Loads of images have changed!
05:43:53 <oerjan> sounds like gremlins all right
05:44:09 <Ngevd> The one to change bluetooth options is broken!
05:44:13 <Ngevd> Which is okay, I don't use Bluetooth
05:45:15 <Ngevd> This is because I was the only person who liked Unity, isn't it?
05:45:30 <oerjan> they came for the bluetooth, but i did not speak up, for i did not use bluetooth.
05:49:09 <Ngevd> I AM GOING TO WRITE A STRONGLY WORDED LETTER TO THE FIRST SOUTH AFRICAN IN SPACE
05:55:52 <oerjan> what did the poor guy do
06:04:53 <oerjan> oh, right.
06:06:44 -!- Sgeo|web has joined.
06:06:55 <Sgeo|web> How does the 3kb IOCCC OS work?
06:08:47 <pikhq_> Probably by exploiting many curious properties of x86.
06:12:01 <Sgeo|web> If the mouse pointer goes off the left hand side of the screen it will reappear on the right, and vice-versa. If it goes off the top or bottom, it will go and corrupt some memory.
06:12:44 <Sgeo|web> http://www.ioccc.org/2004/gavin.hint
06:20:00 <pikhq_> It's probably not using paging, and not bounds-checking the VGA framebuffer.
06:20:04 <pikhq_> That'd pretty much do it.
06:20:51 * Sgeo|web wonders if it's possible to run the sort of Linux running on the ... wait, the js Linux emulator probably isn't emulating x86
06:22:46 <Sgeo|web> Oh, he does emulate an x86 o.O
06:22:51 <Sgeo|web> What was Gregor working on?
06:24:45 <oerjan> ^def test bf >>,[[-<<[->++<]>[-<+>]>]<<+>>,]<<.
06:24:45 <fungot> Defined.
06:24:55 <oerjan> ^test
06:24:55 <fungot> <CTCP>
06:25:08 <oerjan> wat
06:25:14 <oerjan> oh right
06:25:49 <oerjan> ^def test bf >>,[<<+>>[-<<[->++<]>[-<+>]>],]<<.
06:25:49 <fungot> Defined.
06:25:52 <oerjan> ^test
06:25:52 <fungot>
06:26:04 <oerjan> ^test
06:26:11 <oerjan> er
06:26:19 <oerjan> ^test
06:26:27 <oerjan> grmbl
06:27:25 <oerjan> ^test
06:27:25 <fungot>
06:27:31 <oerjan> ^test
06:27:57 <oerjan> ^bf .+[.+]
06:28:03 <oerjan> ^bf +[.+]
06:28:03 <fungot> <CTCP>.. !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ...
06:28:25 <oerjan> ^test <CTCP>
06:28:26 <fungot> 0
06:29:10 <oerjan> ^test <CTCP><CTCP>
06:29:10 <fungot> p
06:29:46 <Sgeo|web> Ooh, Internet connectivity in JSLinux is possible
06:29:49 <oerjan> > showIntAtBase 2 intToDigit 48 ""
06:29:49 <lambdabot> "110000"
06:29:59 <oerjan> > showIntAtBase 2 intToDigit 48 "p"
06:30:00 <lambdabot> "110000p"
06:30:06 <oerjan> er
06:30:17 <oerjan> > showIntAtBase 2 intToDigit (ord 'p') ""
06:30:18 <lambdabot> "1110000"
06:30:32 <oerjan> ^test <CTCP><CTCP>
06:30:32 <fungot> b
06:30:37 <oerjan> > showIntAtBase 2 intToDigit (ord 'b') ""
06:30:38 <lambdabot> "1100010"
06:32:18 <oerjan> Sgeo|web: wasn't gregor using MMIX or something like that
06:32:28 <oerjan> there were Ms in the name, anyhow
06:32:45 <Sgeo|web> MIPS?
06:32:54 <oerjan> or that.
06:34:09 -!- GreaseMonkey has joined.
06:56:31 <fizzie> It was jsmips, yes.
06:58:55 <fizzie> JSLinux is different, though.
06:59:10 <fizzie> It seems to emulate a full x86 system with all the hardware, and run a real Linux kernel on that.
06:59:28 <fizzie> JSMIPS OTOH just emulates Linux syscalls, if I recall correctly.
07:06:29 * Sgeo|web wonders how one goes about making a /dev/clipboard like that
07:09:25 * Sgeo|web wonders how implementable X would be
07:09:32 <Sgeo|web> >:D
07:16:16 -!- monqy has quit (Quit: hello).
07:34:04 -!- oerjan has quit (Quit: leaving).
07:34:06 -!- myndzi has quit (Ping timeout: 260 seconds).
07:35:49 -!- nooga has joined.
07:41:12 -!- myndzi has joined.
08:55:54 -!- SimonRC has quit (Ping timeout: 252 seconds).
08:58:58 -!- sebbu has quit (Read error: Connection reset by peer).
08:59:33 -!- ais523 has joined.
08:59:41 -!- sebbu has joined.
09:02:21 -!- SimonRC has joined.
09:09:46 -!- pikhq has joined.
09:10:09 -!- pikhq_ has quit (Ping timeout: 256 seconds).
09:21:58 <ais523> hmm, I've just discovered that none of Excel/Gnumeric/OpenOffice/LibreOffice are installed on my computer here at owrk
09:21:59 <ais523> *work
09:22:04 <ais523> and they sent me a .xls file to open
09:22:23 * ais523 opens it on their laptop
09:38:11 * ais523 edits it in OpenOffice, then prints it on "generic printer", then opens the resulting PostScript file on the work computer to print it
09:38:20 <ais523> yay for the invention of PostScript
10:11:39 <Vorpal> heh, it started raining outside and in minecraft at the same time.
10:12:25 <Vorpal> ais523: btw, why pdf when postscript exists?
10:12:35 <Vorpal> sure, pdf is based on ps
10:12:42 <Vorpal> but still, why introduce pdf
10:16:40 -!- ais523 has quit (Read error: Connection reset by peer).
10:17:59 -!- ais523 has joined.
10:32:33 -!- Zuu has quit (Read error: Connection reset by peer).
10:35:49 -!- GreaseMonkey has quit (Quit: The Other Game).
10:36:58 -!- Zuu has joined.
10:51:46 -!- Phantom_Hoover has joined.
10:52:02 <Phantom_Hoover> What are the haps my friends
11:04:21 <Phantom_Hoover> OK, SpaceChem has single-handedly made the £8 I spent on the latest Humble Bundle worthwhile.
11:05:37 <fizzie> Vorpal: Standardized font embedding, compression by default (okay, .ps.gz can happen), but probably mostly because not everyone wants a real(tm) programming language as the page description language. (For one thing, it's possible to extract a single page out of any PDF file; it's not possible in general to do the same to a PostScript file.)
11:06:18 <Phantom_Hoover> Surely it's /possible/, just inefficient.
11:06:24 <Vorpal> fizzie: ah
11:06:55 <Vorpal> Phantom_Hoover: they added yet another game?
11:06:56 <Vorpal> heh
11:07:04 <Vorpal> Phantom_Hoover: what sort of game is it?
11:07:19 <Phantom_Hoover> Vorpal, erm, have you played Codex of Alchemical Engineering?
11:07:42 <Vorpal> Phantom_Hoover: never even heard of that. Sounds interesting.
11:07:54 <fizzie> Phantom_Hoover: I'm not even sure it's possible. E.g. think of a postscript document which prints out a random number of pages on each interpretation. (I believe PostScript has a source of randomness built in.)
11:08:05 <Vorpal> "Download .deb" <-- only .deb? Come on.
11:08:17 <Phantom_Hoover> Vorpal, SpaceChem is a game based on fake chemistry.
11:08:23 <Vorpal> heh
11:08:34 <Phantom_Hoover> You have atoms input on one side, and you program two robots to move them around and bond them.
11:09:35 <Vorpal> nice
11:10:19 <Vorpal> is .deb the one based on cpio or is that .rpm?
11:10:54 <fizzie> Vorpal: .deb is the one that's an ar archive that contains two archives inside it.
11:11:21 <fizzie> (The inner ones are tarballs compressed either wtih gzip, bzip2 or nowadays I think also lzma/xz are allowed.)
11:12:19 <fizzie> (Other archive is the one unpacked into /; the other one is the control directory, with metadata and installation scripts and such.)
11:13:56 <fizzie> You can "ar x blah.deb data.tar.gz" (or one of the other extensions) and then you're left with a regular tarball.
11:14:04 <fizzie> I should probably buy that last bundle too.
11:14:33 <fizzie> I wasn't so sure about just Frozen Snoozers, but this last addition sounded interesting.
11:16:10 <Vorpal> wtf, my laptop randomly discharged the battery when unplugged and turned off
11:16:18 <Vorpal> how strange
11:26:46 <Phantom_Hoover> fizzie, hey, Frozen Synapse sounds pretty good.
11:30:11 <fizzie> It does, I'm just not sure it's my cup of tea, and it annoyed me to call it a "bundle" when there was just one game.
11:31:55 <Phantom_Hoover> Just make sure that no money goes to the guy who made Trauma.
11:35:18 <fizzie> Did you "play" it?
11:35:56 <fizzie> (Is there even a money slider for it?)
11:37:21 <fizzie> I like the sliders; they're like this illustrative example of how you can't have your cake and eat it too: you can't drag them all up to eleven. It's a zero-sum game, playing with them.
11:37:47 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
11:39:48 -!- Phantom_Hoover has joined.
12:20:21 -!- Ngevd has quit (Quit: Leaving).
12:20:33 -!- Ngevd has joined.
12:21:10 <Ngevd> Hello!
12:38:37 -!- nooga has quit (Ping timeout: 260 seconds).
12:40:13 <Ngevd> ais523, wiki spam
12:40:45 <ais523> Ngevd: thanks for the alert
12:42:17 <Ngevd> No problem
12:48:25 <Ngevd> How hard would it be to get something through the W3C?
12:52:33 <Ngevd> Like an XML thingy for defining programming languages
12:56:11 -!- derdon has joined.
12:56:58 <Ngevd> I've just realised
12:57:08 <Ngevd> I have never heard the tune to 99 bottles of beer
12:57:19 <Ngevd> Is it anything like 10 green bottles?
13:30:33 -!- nooga has joined.
13:38:36 <ais523> I haven't heard it either, IIRC
13:42:22 <Phantom_Hoover> I've heard it briefly on The Simpsons.
13:42:31 <Phantom_Hoover> It's not 10 green bottles.
13:42:37 <Ngevd> Okay
13:47:55 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
13:49:06 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
13:49:26 <Ngevd> > 1/0
13:49:26 <lambdabot> Infinity
13:49:32 <Ngevd> > div 1 0
13:49:33 <lambdabot> *Exception: divide by zero
13:49:39 <Ngevd> HOW CURIOUS
13:53:03 <ais523> >1/(1/0)
13:53:10 <ais523> > 1/(1/0)
13:53:11 <lambdabot> 0.0
14:02:44 <Ngevd> brb
14:02:49 -!- Ngevd has quit (Quit: Leaving).
14:08:32 -!- Ngevd has joined.
14:20:19 -!- Phantom_Hoover has joined.
14:20:19 -!- Phantom_Hoover has quit (Client Quit).
14:20:30 -!- copumpkin has joined.
14:23:58 -!- Phantom_Hoover has joined.
14:24:11 <ais523> > 1/(-1/0)
14:24:12 <lambdabot> -0.0
14:24:14 <Phantom_Hoover> Welp, SpaceChem has me stuck.
14:24:29 <Ngevd> Haven't got the new humble bundle yet
14:24:56 <Ngevd> Busy installing a crappy version of a crappy programming language to play with the vaguely decent features
14:25:55 <Phantom_Hoover> Oh god please don't turn into Sgeo please please please.
14:26:22 <Ngevd> Why would I turn into Sgeo?
14:26:30 <Ngevd> Turning into Taneb is much more fun
14:26:34 -!- Ngevd has changed nick to Taneb.
14:26:34 <Phantom_Hoover> Because that's what Sgeo stereotypically does.
14:27:23 <Taneb> But yeah, having VB2010 express installed may come in handy.
14:27:56 <Phantom_Hoover> Sure, you say that, but before you know it you're learning a new language each week.
14:28:07 <Taneb> VB was my first language
14:28:16 <Taneb> Back when it sucked worse
14:30:05 <Taneb> Dammit microsoft, I don't need Microsoft SQL Server 2008 R2 Management Objects
14:33:57 <Phantom_Hoover> Yes you do.
14:37:40 <shachaf> Everyone needs a few Microsoft SQL Server 2008 R2 Management Objects in their life.
14:45:02 -!- derdon has quit (Remote host closed the connection).
15:11:39 -!- MSleep has changed nick to MDude.
15:13:03 -!- elliott has joined.
15:18:24 * Phantom_Hoover starts suspecting he didn't get something about SpaceChem.
15:19:55 <Phantom_Hoover> Syntheses with more than a couple of bonds are so... *ugly*.
15:21:46 <Phantom_Hoover> You have to loop around loads because the closest thing to flow control is syncing.
15:22:53 <elliott> I think the "all my solutions are ugly and overcomplicated" thing is a common Spacechem experience.
15:23:10 <Phantom_Hoover> :(
15:23:13 <Phantom_Hoover> I mean, take ammonia.
15:23:32 <Phantom_Hoover> That's the same process, bonding an N to an H, three times.
15:24:17 <Phantom_Hoover> You can't make one waldo move the hydrogens, because you can't move over the same path in the same direction without looping back.
15:26:49 -!- augur has quit (Remote host closed the connection).
15:30:50 <Taneb> Bye
15:32:40 -!- ais523 has quit (Remote host closed the connection).
15:35:39 -!- Taneb has quit (Ping timeout: 260 seconds).
15:36:20 <elliott> Phantom_Hoover: Behold my mess: http://sprunge.us/MOPJ
15:37:16 -!- tac-tics has joined.
15:40:49 -!- yukari has joined.
15:42:07 -!- yukari has left ("I'm a happy Miranda IM user! Get it here: http://miranda-im.org").
15:43:50 <elliott> Phantom_Hoover: Come on, you have to admire xs <- liftIO . atomically $ sequence =<< map (\(k,v) -> (,) k <$> readTVar (playerPosition v)) . filter (\(k,_) -> k /= entityID) . M.toList . snd <$> readTVar (serverPlayers st).
15:46:55 <elliott> 23:41:33: <Sgeo|web> Steve Jobs died
15:46:55 <elliott> 23:44:01: <Gregor> Oh?
15:46:55 <elliott> 23:44:11: <pikhq_> Sure enough.
15:46:55 <elliott> 23:44:14: <Gregor> You seem to have beat Google News.
15:46:55 <elliott> 23:44:36: <pikhq_> It seems to have literally just happened.
15:47:01 <elliott> I'm not implying anything, but...
15:47:37 <elliott> 23:48:34: <Gregor> Welp, Jobs managed to capture our attention for three minutes.
15:47:37 <elliott> 23:48:36: <Gregor> That's pretty good, really.
15:47:37 <elliott> [...]
15:47:37 <elliott> 23:53:16: <Gregor> OK, I am seriously terrified by this curry ... PLEASE DON'T BURST INTO FLAMES ... I'M SORRY THAT I'VE ANGERED THE COCONUT OIL GODS ...
15:47:43 <elliott> I'm just saying...
15:48:04 <elliott> 23:56:24: <oerjan> "Gregor has a preternatural talent for creating wonderfully salient and laisse-faire compositions alluding to the bourgoisie sensibilities of the current American zeitgeist."
15:48:05 <elliott> 23:57:01: <oerjan> someone else can do the remaining 78
15:48:05 <elliott> 23:57:41: <oerjan> (no, i'm not sure what all those words mean)
15:48:05 <elliott> 23:58:14: <Gregor> oerjan: Good! Gettin' there!
15:48:13 <elliott> Gregor: The remaining seventy-eight words are all "dicks". HTH
15:49:10 <elliott> 01:20:04: <Sgeo|web> cards = [((suit0, rank0), (suit1, rank1)) for suit0 in range(0,4) for rank0 in range(0,13) for suit1 in range(0,4) for rank1 in range(0,13) if (not (suit0 == suit1 and rank0 == rank1)) if (suit0==0) if (rank1==0)]
15:49:18 <elliott> Sgeo|web: ugly, and wider than any editor window
15:49:45 -!- tac-tics has left.
15:49:50 <elliott> 01:54:34: <Sgeo|web> (0...4).flat_map { |s0| (0...13).flat_map { |r0| (0...4).flat_map { |s1| (0...13).flat_map { |r1| ((s0, r0), (s1, r1))}}}}
15:49:50 <elliott> at least it's shorter than the python
15:50:31 <Phantom_Hoover> Steve Jobs is dead?
15:50:57 * Phantom_Hoover wonders how happy he can be without being a complete dick.
15:51:25 <Phantom_Hoover> "Bloomberg accidentally published Jobs' obituary in 2008. Arik Hesseldahl of BusinessWeek magazine opined that "Jobs isn't widely known for his association with philanthropic causes", compared to Bill Gates' efforts."
15:51:32 <elliott> Phantom_Hoover has steadfastly avoided all forms of news and internet media all day.
15:51:41 <elliott> Also probably 0 happies; I don't think Jobs has done anything actually malicious.
15:52:00 <Phantom_Hoover> This is sooooo close to Alfred Nobel's story.
15:53:43 <elliott> 05:18:04: <hagb4rd> hi oerjan. he was young. do you know how he died?
15:53:44 <elliott> 05:18:16: <oerjan> cancer, as expected
15:54:00 <elliott> I would have been impressed if he managed to die of something else right after taking a long leave and then stepping down because of obvious health reasons.
15:55:54 -!- monqy has joined.
15:56:28 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
15:56:39 <elliott> 06:20:51: * Sgeo|web wonders if it's possible to run the sort of Linux running on the ... wait, the js Linux emulator probably isn't emulating x86
15:56:40 <elliott> 06:22:46: <Sgeo|web> Oh, he does emulate an x86 o.O
15:56:40 <elliott> 06:22:51: <Sgeo|web> What was Gregor working on?
15:56:40 <elliott> mips
15:56:47 <elliott> 06:32:18: <oerjan> Sgeo|web: wasn't gregor using MMIX or something like that
15:56:49 <elliott> it was mmix firts
15:56:50 <elliott> first
15:56:51 <elliott> then mips
15:57:16 <elliott> 10:12:35: <Vorpal> sure, pdf is based on ps
15:57:16 <elliott> 10:12:42: <Vorpal> but still, why introduce pdf
15:57:19 <elliott> Vorpal: pdfs cant infinite loop
15:57:47 <hagb4rd> ellitott: nico died in a car accdident two weeks after she succesfully cured her heroin dependancy
15:58:08 <Vorpal> elliott: oh right
16:01:05 <hagb4rd> http://www.youtube.com/watch?v=UNI8CGaT_jk
16:01:11 <elliott> "curing a heroin dependency" sounds a bit more psychological than cancer :P
16:09:08 <hagb4rd> however terrible it swill get us all soon enough
16:11:29 -!- Phantom_Hoover has joined.
16:11:52 <elliott> Phantom_Hoover.
16:12:03 -!- 64MAAM69P has joined.
16:12:04 <elliott> xs <- liftIO . atomically $ sequence =<< map (\(k,v) -> (,) k <$> readTVar (playerPosition v)) . filter (\(k,_) -> k /= entityID) . M.toList . snd <$> readTVar (serverPlayers st)
16:12:06 <elliott> Start admiring.
16:12:16 <Phantom_Hoover> I worked out what it was that I didn't get about SpaceChem.
16:12:57 <elliott> Start
16:12:57 <elliott> ad
16:12:58 <elliott> mi
16:12:58 <elliott> ring
16:13:36 <Phantom_Hoover> Oh god my eyes
16:13:36 <Phantom_Hoover> http://www.jamesaltucher.com/2011/02/10-unusual-things-i-didnt-know-about-steve-jobs/
16:13:43 <Phantom_Hoover> Reddit stop making me read stupid things
16:14:09 <monqy> i almost clicked but then i stopped myself and then i read that it was stupid and then i felt glad about my decisions
16:14:16 <Phantom_Hoover> " I actually think Jobs is probably the most charitable guy on the planet. Rather than focus on which mosquitoes to kill in Africa (Bill Gates is already focusing on that), Jobs has put his energy into massively improving quality of life with all of his inventions."
16:14:25 <Phantom_Hoover> Charity.
16:14:30 <Gregor> lol
16:14:56 <Phantom_Hoover> http://www.jamesaltucher.com/2011/02/living-life-is-better-than-dying-in-college/
16:15:05 <Phantom_Hoover> help i'm being sucked into a whirlpool of stupid
16:15:30 <elliott> http://4.bp.blogspot.com/_mT_OPhlZxz4/TFcoXMbG9SI/AAAAAAAAABQ/8a9g3PEsBF4/s320/college+misery+matrix.jpg
16:15:35 <elliott> I don't see the relation to the Matrix.
16:16:06 <Gregor> "I'm already getting tired of that commercial where John Hodgman brags about how he's a PC and is alive."
16:16:16 <Gregor> ♥ Onion :P
16:16:17 <Phantom_Hoover> http://www.jamesaltucher.com/2011/01/8-alternatives-to-college/
16:16:20 <elliott> "3) He made the game “Breakout”"
16:16:25 <elliott> Phantom_Hoover: I like the part where Woz did that instead.
16:16:50 <elliott> Designer(s)Nolan Bushnell (conception),
16:16:50 <elliott> Steve Bristow (conception),
16:16:50 <elliott> Steve Wozniak (prototype)
16:16:59 <Phantom_Hoover> Wait until he waves away Jobs lying to Wozniak and cheating him out of his earnings.
16:17:07 <elliott> "The same year, Alcorn assigned Steve Jobs to design a prototype. Jobs was offered US$750, with an extra $100 each time a chip was eliminated from the prospected design. Jobs promised to complete a prototype within four days.
16:17:07 <elliott> Jobs noticed his friend Steve Wozniak—employee of Hewlett-Packard—was capable of producing designs with a small number of chips, and invited him to work on the hardware design with the prospect of splitting the $750 wage. Wozniak had no sketches and instead interpreted the game from its description. To save parts, he had "tricky little designs" difficult to understand for most engineers. Near the end of development, Wozniak considered moving
16:17:07 <elliott> the high score to the screen's top, but Jobs claimed Bushnell wanted it at the bottom; Wozniak was unaware of any truth to his claims. The original deadline was met after Wozniak did not sleep for four days straight. In the end 50 chips were removed from Jobs' original design. This equated to a US$5,000 bonus, which Jobs kept secret from Wozniak, instead only paying him $375.[1][2][3][4][5][6]"
16:17:37 -!- 64MAAM69P has quit (Remote host closed the connection).
16:18:04 <elliott> "I think from now on I’m going to be a pescetarian, just because Steve Jobs is one. Except when I’m in Argentina. In Argentina you have to eat steak."
16:20:11 <Phantom_Hoover> "The 'selfish' prick has obviously made contributions to improve the lives of millions through his products' competitive superiority, and deserves to direct that $40B as he sees fit... can anyone argue they would spend it better than Jobs?"
16:21:17 <elliott> But seriously though, let's stop reading this crap, it's not even amusingly bad.
16:21:41 <elliott> Boring HWN this week.
16:23:11 <Phantom_Hoover> http://www.youtube.com/watch?v=hLVsIpejFgM
16:23:20 <Phantom_Hoover> This has single-handedly made it worthwhile.
16:28:05 -!- augur_ has joined.
16:34:07 -!- Ngevd has joined.
16:35:41 <Vorpal> wait a second, is a .deb an ar archives with .tar.gzs in it?!
16:36:00 <Ngevd> Hello!
16:36:20 <elliott> Vorpal: only one .tar.[compression]
16:36:25 <elliott> although hmm
16:36:28 <elliott> maybe control is a tar too
16:36:32 <Vorpal> yes
16:37:01 <Vorpal> elliott: problem: they added a new game to the last bundle, called SpaceChem. I'm having problems trying it out because the download is a .deb, no other options offered
16:37:18 <elliott> I know what SpaceChem is.
16:37:21 <Vorpal> and I'm trying to figure out how to extract the files from it
16:37:24 <elliott> Vorpal: Just use alien.
16:37:33 <elliott> It can convert between deb, rpm, slackware tgz, ...
16:37:51 <Vorpal> elliott: but what about arch linux packages?
16:37:51 <elliott> Probably the slackware tgz will be the most useful for you.
16:37:53 <Vorpal> yeah
16:38:06 <elliott> Vorpal: But basically, the .tar.gz in an .ar is the root directory.
16:38:16 <Vorpal> how strange
16:38:16 <elliott> So just get that out and do whatever the Arch equivalent of checkinstall is.
16:38:20 <elliott> Why?
16:38:25 <elliott> How else would you do it?
16:39:00 <Vorpal> well, I'm not sure I would use a ar wrapper around the .tar.gz, I might do something like a .tar.gz with, say, a install-script directory and a file tree directory + a metadata file in it
16:39:06 <Phantom_Hoover> Yesssssss, finally got the ammonium synthesis done.
16:39:50 <Phantom_Hoover> (In case anyone else makes the same mistake I did, the "add bond" instruction adds bonds between all atoms on bonding tiles, not just the one under the waldo.)
16:40:24 <Vorpal> elliott: well it installs everything in /opt/ in a clean way, just adds a menu entry and a symlink outside that
16:40:31 <Vorpal> so should be easy to get that package working
16:40:33 <Ngevd> Buyinh humble bundle
16:40:36 <elliott> Vorpal: I'd just untar it.
16:40:42 <elliott> Vorpal: If it's in /opt you don't need it in the package manager.
16:40:45 <Vorpal> elliott: indeed
16:41:20 <Vorpal> elliott: with "to get that package working" I meant the .deb, as in that I don't need an arch linux package
16:41:29 <Vorpal> the menu entry I don't need
16:41:33 <elliott> ar x ...; tar xf -C / foo.tar.gz
16:41:40 <elliott> erm
16:41:42 <elliott> -C has to come first
16:41:46 <elliott> tar has the worst invocation syntax ever
16:42:05 <Vorpal> XD
16:42:29 <Ngevd> Bundle bought
16:42:32 <Vorpal> elliott: I did tar xf data.tar and then sudo mv opt/zawtflongname /opt :P
16:42:37 <elliott> Ngevd: FOR HOW MUCH
16:42:45 <elliott> Vorpal: Well, there's that, yes.
16:42:56 <Vorpal> elliott: easier than tar syntax :P
16:43:26 <Ngevd> FIVE WHOLE DOLLARS
16:44:05 <Vorpal> wait what? it opens a youtube link in firefox to an embedded .swf version, giving me a download prompt
16:44:07 <Vorpal> how weird
16:44:07 <Ngevd> ...The soundtrack for Frozen Synapse is more memory than the actual game
16:44:43 <Vorpal> Ngevd: you mean the download size? Yeah I think it contains some bonus tracks that didn't actually make it into the game
16:44:53 <Ngevd> Aaah
16:45:43 <Vorpal> [355225.880924] sr0: CDROM not ready. Make sure there is a disc in the drive. <-- huh, why is launching SpaceChem doing that
16:46:19 <shachaf> elliott: What are you network serving?
16:46:52 <shachaf> Oh, it's Minecraft, isn't it?
16:47:12 <Phantom_Hoover> Ngevd, don't play Frozen Synapse I will sad :(
16:47:38 <Ngevd> I REFUSE TO UNSAD A GHOSTLY VACUUM CLEANER/US POLITIAN
16:47:41 <elliott> shachaf: Yes, yes it is.
16:47:52 <shachaf> MINECRAFT IS THE DEVIL
16:47:56 <elliott> shachaf: Yes, yes it is.
16:47:58 <Vorpal> Phantom_Hoover: why? I like Frozen Synapse
16:47:59 <Vorpal> it is cool
16:48:19 <shachaf> elliott: Your next response is just going to be the same as your previous two.
16:48:29 <Ngevd> Apparently there's been snow today
16:48:30 <Phantom_Hoover> Vorpal, I can't play it though.
16:48:54 <Phantom_Hoover> Snow be comin' in earlier every year.
16:49:33 <Ngevd> SYNAPSE INSTALLED
16:50:02 <elliott> shachaf: No, no it's not.
16:50:20 * shachaf set elliott up with a question he couldn't go wrong at.
16:50:22 <Vorpal> Ngevd: where?
16:50:40 <Vorpal> shachaf: minecraft is awesome
16:50:52 <Ngevd> Vorpal: my computer
16:51:06 <Vorpal> Ngevd: no I meant the snow
16:51:19 <Ngevd> High lying areas
16:51:19 <elliott> Vorpal: No it's not.
16:52:49 <Ngevd> I can't get on Frozen Synapse :(
16:53:05 <elliott> Ngevd: HAHAHAHAHA JUST LIKE PH
16:53:25 -!- ais523 has joined.
16:53:26 <Ngevd> What's my key?
16:53:41 <Vorpal> elliott: okay minecraft is fun, but could be better. Sure
16:54:40 <elliott> Ngevd: how should we know?
16:54:57 -!- Ngevd has quit (Read error: Connection reset by peer).
16:55:05 -!- Ngevd has joined.
16:55:25 <Ngevd> Where can I find my key?
16:56:00 <Ngevd> Found it!
17:01:00 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
17:03:44 <ais523> significant areas of Canada have lost all internet access, it seems, due to the only satellite in range malfunctioning
17:04:04 <Ngevd> Bye
17:04:06 -!- Ngevd has quit (Quit: what a big quitter he is, eh?).
17:04:18 <ais523> I suppose this'll lead to an argument between me and elliott as to just how essential Internet access is
17:04:34 <ais523> affects telephone too, so it could be quite bad
17:04:50 <elliott> Internet access isn't quite at the essential stage yet.
17:05:14 <elliott> But IIRC there are already quite a lot of forms in some countries that can't actually be done offline
17:06:27 <ais523> they tend to assume at least ready access to public libraries, I think
17:06:37 <ais523> or the ability to turn up to government offices and use computers there
17:07:27 -!- Phantom_Hoover has joined.
17:07:29 <elliott> ais523: the fact that you can access something at a library doesn't make it non-essential :P
17:07:35 <elliott> it just means it's not essential /and/ hard to access
17:07:37 <elliott> erm
17:07:42 <elliott> it just means it's essential /and/ not hard to access
17:07:43 <Phantom_Hoover> So has anyone else played SpaceChem yet.
17:07:44 <ais523> elliott: indeed, but it offers an alternative access route for it
17:08:33 <elliott> it's not an alternative, it's still using the internet
17:08:41 <elliott> (and an long-term internet outage would still affect it)
17:08:47 <elliott> (unless libraries get their internet via magic)
17:08:51 <ais523> indeed
17:09:21 <ais523> the ironic thing is, that in the modern world, an Internet outage could easily be worked around if it didn't affect the telephone system
17:13:02 <ais523> when Egypt's internet was cut, there was a French ISP giving Egyptians free dial-up access, for instance (on the basis that they were hardly using their dial-up capability for anything else nowadays)
17:13:52 <elliott> heh
17:14:00 <elliott> ais523: that only works until dial-up becomes completely unusable
17:14:10 <elliott> I doubt Egyptian protesters were using IRC
17:14:23 <ais523> elliott: dial-up is enough for most of the basic things people need the Internet for
17:14:27 <ais523> just turn off images and scripts
17:14:30 <ais523> if web browsing
17:14:30 <elliott> it is for now
17:14:36 <elliott> ais523: scripts?
17:14:39 <elliott> ok, so now facebook and twitter don't work
17:14:54 <elliott> those were used extensively in the relevant protests (well, I don't know about Egypt in particular)
17:14:55 <ais523> wow, they're really coded that badly?
17:15:11 <ais523> I'm pretty sure at least Twitter works without scripts; it's just that the #! URLs don't
17:15:30 <elliott> you can't post without scripts, I don't think
17:15:31 <elliott> ais523: coding for people without scripts turned on is like coding for people whose browsers just don't understand <insert common HTTP header here> nowadays
17:15:36 <elliott> ais523: it's unfortunate, yes
17:15:43 <elliott> but it's also true
17:15:58 <ais523> I dislike scripts because they give a lot more scope for pages to act in bad-UI ways
17:16:08 <elliott> ais523: "it's unfortunate"
17:16:10 <ais523> like hanging, not obeying typical UI conventions, etc
17:16:13 <elliott> I don't like the web's scripting model
17:16:32 <elliott> but the web really won't be usable without scripting turned on for that much longer, as unfortunate as that is
17:17:07 <elliott> (a lot of the blame lies in the fact that it can be pretty annoying to write something that works fully without scripting but just works more fluidly with scripting turned on; the web is very badly architectured, as is obvious)
17:19:25 <elliott> So does the reality distortion field evaporate now, or does it move on to someone else?
17:21:13 <ais523> we'll have to observe Apple fans to check
17:21:33 <elliott> Who says it'll affect Apple fans this time?
17:21:49 <elliott> Ooh, this would be a good Doctor Who villain.
17:21:55 <ais523> it wouldn't be /the/ reality distortion field if it didn't affect Apple
17:22:00 <ais523> it'd be a different reality distortion field
17:22:08 <elliott> ais523: it only affected Apple fans because Steve Jobs was at Apple, duh
17:24:33 <ais523> I'm not certain it was Steve Jobs who created it
17:24:45 <ais523> he was just in charge of working out where to distort
17:26:49 <elliott> ais523: If it's passing on to somebody else, it's probably been around for millennia.
17:26:54 <elliott> OK this is starting to REALLY sound like a Doctor Who villain.
17:27:10 <ais523> so the villain's a sentient concept?
17:27:13 <ais523> that sounds pretty doctor who-appropriate
17:36:01 <Phantom_Hoover> `quote
17:36:07 <HackEgo> 251) <zzo38> Maybe they should just get rid of Minecraft. If more people want it someone can make using GNU GPL v3 or later version, with different people, might improve slightly.
17:36:45 <Phantom_Hoover> I have finally made a reaction in SpaceChem that I'm proud of.
17:37:11 <elliott> "I call it... love."
17:39:23 <Vorpal> ais523: where does the context for that discussion start?
17:39:58 <Vorpal> <Phantom_Hoover> So has anyone else played SpaceChem yet. <-- a bit, kind of cool but not really my type of game.
17:40:38 <ais523> Vorpal: with Steve Jobs' death
17:40:44 <ais523> we were discussing the Reality Distortion Field
17:41:02 <elliott> <Vorpal> Steve Jobs died?? I am literally a hermit and have no idea what human civilisation is.
17:41:12 <elliott> (IT SURE WILL BE EMBARRASSING IF I PREDICT THIS INCORRECTLY)
17:41:37 <Vorpal> ais523: he died!?
17:41:42 <Vorpal> ais523: when?
17:41:43 <elliott> ais523: Hey, I was right.
17:41:49 <Vorpal> and what will happen to Apple now hm
17:41:57 <ais523> Vorpal: some time between today and yesterday
17:42:04 <elliott> Vorpal: He'd already stepped down.
17:42:07 <ais523> I saw you also missed him stepping down as CEO of Apple; that was months ago
17:42:08 <Vorpal> elliott: I know
17:42:16 <Vorpal> ais523: no I didn't
17:42:18 <elliott> Exactly nothing will happen beyond the stock price plummeting and then going back up the next day.
17:42:21 <elliott> That already happened.
17:42:21 <Vorpal> but well, he was still there
17:42:43 <Vorpal> ais523: it is just that it seemed to go from HTTP headers to Steve Jobs suddenly.
17:42:47 <elliott> Vorpal: People don't take many months of leave and then step down as CEO saying that the time has come when they are no longer able to do their duties for the company... without it being health-related.
17:42:48 <Vorpal> that is why I got confused
17:42:52 <Vorpal> well, scripting & http headers
17:43:01 <Vorpal> elliott: indeed
17:43:12 <elliott> Anyone who didn't see this coming is pretty naive, although admittedly I was expecting it to take longer.
17:43:19 -!- augur_ has quit (Remote host closed the connection).
17:43:43 <Vorpal> elliott: yeah I was seeing it, but I was expecting it maybe next year or so
17:43:52 <Vorpal> not so suddenly
17:44:04 <shachaf> Vorpal: I heard you have no sense of humor once.
17:44:10 <shachaf> Or was it me who didn't have one?
17:44:14 <Vorpal> shachaf: don't listen to elliott
17:44:30 <shachaf> elliott: Should I listen to Vorpal?
17:44:35 <elliott> shachaf: He has as much a sense of humour as he has scrollback.
17:44:36 <Vorpal> shachaf: maybe
17:44:40 <elliott> That's something both me and Vorpal can agree on.
17:44:53 <Vorpal> elliott: well yes, I have 1000 line scrollback in this irc client
17:44:55 <Vorpal> per channel
17:45:08 <elliott> shachaf: Vorpal has no scrollback and never, ever misses context.
17:45:11 <elliott> s/misses/gets/
17:45:15 <elliott> See, now we've shifted the disagreement.
17:45:19 <Vorpal> elliott: no the original was correct
17:45:28 <Vorpal> mostly
17:49:04 <Phantom_Hoover> Vorpal, wait, you didn't like SpaceChem you are the worst.
17:49:40 <Phantom_Hoover> Vorpal, you don't act like it.
17:50:25 <Phantom_Hoover> <Vorpal> <whoever, 5 seconds ago> Thing that makes complete sense if you read the last line. <-- I don't get it, context?
17:50:58 <elliott> Phantom_Hoover: ?
17:51:22 <Phantom_Hoover> elliott, it's a short play demonstrating how Vorpal doesn't have scrollback.
17:51:36 <elliott> Phantom_Hoover: WHOOOOSH
17:52:22 <Vorpal> <Phantom_Hoover> Vorpal, wait, you didn't like SpaceChem you are the worst. <-- I think it is a good game. No doubt about that
17:52:38 <Vorpal> but it is not my type of game.
17:53:43 <Vorpal> Phantom_Hoover: I'm saying that it is a good game in it's genre. But that I don't really enjoy playing that genre.
17:54:44 -!- augur_ has joined.
17:59:08 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
17:59:33 -!- calamari has joined.
17:59:46 -!- pikhq_ has joined.
17:59:59 -!- pikhq has quit (Ping timeout: 256 seconds).
18:04:44 -!- Ngevd has joined.
18:05:18 <Ngevd> Hello!
18:06:08 <Ngevd> It is my personal belief, which may not be accurate to reality, that the wiki moves slowly and not many interesting languages are created all that often
18:06:59 <Gregor> Waaah?
18:07:09 <Ngevd> I want more esolangs
18:07:50 <Gregor> Then write more esolangs.
18:08:01 <Ngevd> I wrote the newest esolang
18:08:48 <Gregor> Gee, the owner of codu.net is offering it to me for $250.
18:09:06 <Gregor> Value to me: none
18:09:47 <Ngevd> I would buy it and pretend to be someone called Richard Grieg
18:09:55 <Ngevd> But I have not enough money to do such
18:12:27 <Ngevd> "Codu is the personal page of Richard Grieg, a programmer and college student from Portland, Dorset, currently at Patna, and so living in Western India. He (I) will be posting some arbitary projects to this page. If you are interested in Grieg's academic career, got o his academic page."
18:13:44 -!- MDude has quit (Ping timeout: 258 seconds).
18:13:46 <Ngevd> Also, is your hat page representative of the ones you wear often?
18:14:01 <Gregor> I wear all of my hats at random intervals.
18:14:08 <Ngevd> I have three hats
18:14:17 <Ngevd> All of which I have worn approximately twice
18:14:32 <Gregor> Well then you fail at hats.
18:14:40 <Ngevd> Yes I do
18:15:13 <calamari> I have two hats, I win at failing
18:15:27 <calamari> :P
18:16:25 -!- Phantom_Hoover has joined.
18:17:49 <Gregor> Well, that depends.
18:17:50 <Gregor> Both of you: How many of those are baseball caps?
18:17:58 <Ngevd> One is a cricket cap
18:18:03 <Ngevd> That's pretty close
18:19:21 <calamari> 2
18:19:46 <Ngevd> It's an Australia cap
18:19:55 <Ngevd> I bought it when I was in Australia
18:20:26 <elliott> I buy all of my Australia caps in Finland.
18:20:49 <Ngevd> Good choice; they're cheaper there
18:21:22 <calamari> I buy all my chinese electronics in USA.. oh wait
18:21:36 <Ngevd> ...
18:29:22 -!- augur_ has quit (Remote host closed the connection).
18:30:08 -!- Gregor has set topic: Welcome to the international hub for exoteric voodoo programming design and deployment! | computed jumps... the topic. | 12345678^&!* | http://codu.org/logs/_esoteric/.
18:39:31 <ais523> hey, my mother's Windows machine, the version of Firefox on it cannot download executabel files, the download gets cancelled as soon as it tries
18:39:39 <ais523> it's clearly capable of downloading in general, because it can show web pages
18:39:42 <ais523> *executable
18:39:45 <ais523> any idea what's going on?
18:39:53 <ais523> IE has similar issues
18:40:19 * pikhq_ puts on his Windows cap
18:40:22 <pikhq_> Reinstall.
18:40:37 <Phantom_Hoover> You put on your robe and Windows cap?
18:40:39 <ais523> there are no rescue disks to reinstall from
18:40:58 <pikhq_> *blink*
18:41:03 <Phantom_Hoover> Download Firefox again through IE?
18:41:22 <pikhq_> Not even the utterly moronic "burn your own rescue disks so we can save on 5¢" thing?
18:41:31 <ais523> pikhq_: they weren't made
18:41:46 <ais523> Phantom_Hoover: even IE refuses to download, although in a rather wider range of ways
18:41:49 <pikhq_> And, lemme guess, the thing to make them is no longer accessible?
18:42:02 <ais523> I remember I eventually managed to download MSE via it
18:42:12 <ais523> pikhq_: I'm not sure; I'm not entirely sure if I'd trust it to still /work/ after this long
18:42:12 <pikhq_> Okay, then.
18:42:15 <Phantom_Hoover> ais523, use whatever Windows calls wget?
18:42:24 <ais523> Phantom_Hoover: it doesn't have a wget-alike, as far as I know
18:42:24 <pikhq_> Phantom_Hoover: Windows doesn't ship with such a program.
18:42:29 <pikhq_> It does have ftp, though.
18:42:35 <ais523> it /does/ have FTP, that's how I installed Firefox in the first place
18:42:38 <pikhq_> i.e. ftp(1)
18:43:03 <elliott> ais523: some AV?
18:43:04 <ais523> well, it isn't (1) on Windows
18:43:15 <ais523> elliott: it uses microsoft security essentials
18:43:16 <pikhq_> It's still ftp(1), even if they neglect to include the man pages.
18:43:24 <pikhq_> It is literally BSD ftp.
18:43:54 <ais523> another clue, perhaps, is that Firefox doesn't seem to save any information between sessions
18:44:03 <ais523> oh, this is all running not-as-admin, btw, and is IIRC Vista
18:45:32 <pikhq_> Hmm. Not-as-admin? There's a chance the user account got far too limited.
18:45:37 <elliott> ais523: I mean some AV could block executable downloads
18:45:47 <ais523> elliott: ah, right
18:45:57 <ais523> but the only AV that I'm aware is on there currently is MSE, which wouldn't
18:46:03 <ais523> there was previously Norton on there, IIRC
18:46:05 -!- pikhq has joined.
18:46:09 <ais523> perhaps it's left some tendrils behind
18:46:10 <pikhq> Hmm. Not-as-admin? There's a chance the user account got far too limited.
18:46:19 <ais523> it's just a default admin account
18:46:20 <pikhq> Though, as this is a home machine owned by your mother, I wonder how that could happen.
18:46:43 <pikhq> Oh, wait. *NORTON*
18:47:01 <ais523> it came with Norton!
18:47:16 <pikhq> Norton is *nasty*.
18:47:22 <ais523> yup
18:47:33 <elliott> ?hoogle isPrefixOf
18:47:33 <lambdabot> Data.ByteString isPrefixOf :: ByteString -> ByteString -> Bool
18:47:33 <lambdabot> Data.List isPrefixOf :: Eq a => [a] -> [a] -> Bool
18:47:34 <lambdabot> Data.ByteString.Char8 isPrefixOf :: ByteString -> ByteString -> Bool
18:47:34 <pikhq> Any idea which version?
18:47:40 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
18:49:39 <ais523> pikhq: hmm, probably 2008's or 2009's
18:49:54 -!- pikhq_ has quit (Ping timeout: 245 seconds).
18:50:44 <pikhq> I'd suggest looking for any remaining tendrils of that most horrible thing.
18:54:32 -!- augur_ has joined.
18:56:06 <elliott> hmm... we always feed the first element of the buffer in, and then discard it, and we only ever add one element to the buffer
18:56:09 <elliott> and the buffer is initially empty
18:56:15 <elliott> ais523: the buffer never gets more than one element, right? :P
18:56:44 <ais523> I think so
18:56:47 <elliott> testing seems to prove that :P
18:56:51 * elliott replaces Seq with Maybe
19:22:50 <elliott> ais523: You should name my branch
19:23:05 <ais523> elliott: Norton
19:23:11 <elliott> ais523: That's a rubbish name for my branch
19:24:57 -!- Phantom_Hoover has joined.
19:25:06 -!- Phantom_Hoover has quit (Changing host).
19:25:06 -!- Phantom_Hoover has joined.
19:25:14 <elliott> hmm, I guess I'll either call it remove-iterio, remove-iteratees, no-iterio, no-iteratees, handle-io or handles
19:28:07 <elliott> ais523: If you pick without using dice, I'll give you a cookie.
19:28:18 <ais523> elliott: what does it do?
19:28:26 <elliott> ais523: branches "do" things?
19:28:44 <ais523> elliott: what do the changes in the branch that aren't in other branches do?
19:28:48 <elliott> heh
19:29:07 <elliott> ais523: convert it from using the iteratee model from the iterIO package to straight handle-based IO
19:29:30 <ais523> probably handle-io, then
19:29:46 <ais523> probably better to describe a branch by what it does rather than by what it doesn't
19:29:48 <elliott> -io just looks so weird, especially the lowercase
19:30:04 <ais523> not to me, in this font
19:30:06 <elliott> and, well, technically the iteratee code uses handles too, just not /directly/ in the main loop
19:30:16 <elliott> ais523: it looks weird because IO should always be uppercase >:(
19:32:49 <elliott> ais523: oh well, the branch probably won't ever escape my computer
19:33:10 <elliott> I'll create it, do my commits, and merge it back in without a commit and then push if all goes well :P
19:33:18 <elliott> (and delete it if I don't like it)
19:34:57 <elliott> In the background you can hear ais523 grumbling about removing merge commits.
19:41:57 -!- augur_ has quit (Remote host closed the connection).
19:44:08 <CakeProphet> elliott: codeville merge: good merge or best merge?
19:44:40 <elliott> pcvd merge is interesting, certainly.
19:44:45 <elliott> Why do you ask?
19:44:51 <elliott> Codeville is very dead.
19:45:11 <CakeProphet> I was mostly just seeing what your opinion was, as I really don't know anything about it.
19:45:17 <CakeProphet> I've just been reading about VCS
19:46:57 <elliott> CakeProphet: If you want some culture shock, read http://www.gnu.org/software/gnu-arch/tutorial-old/arch.html and http://www.monotone.ca/docs/Tutorial.html.
19:47:39 <CakeProphet> Works on Whole Trees arch keeps track of whole trees -- not just individual files.
19:47:42 <CakeProphet> wow!
19:48:15 <elliott> CakeProphet: arch was the first non-expensive-and-proprietary DVCS.
19:48:15 -!- Ngevd has quit (Ping timeout: 260 seconds).
19:49:40 <elliott> Oh, wait.
19:49:45 <elliott> CakeProphet: You should probably read http://www.gnu.org/software/gnu-arch/tutorial/index.html instead.
19:49:47 <elliott> It's better-formatted.
19:50:03 <elliott> And has largely the same content.
19:51:31 <CakeProphet> do I have to?
19:51:41 <elliott> Yes.
19:53:50 <CakeProphet> how about a
19:54:05 <CakeProphet> VCS where merging just literally superimposes the two files
19:54:18 <CakeProphet> into a... superimposed file thing.
19:54:26 <CakeProphet> and that would be okay somehow.
19:54:36 <CakeProphet> ... :)
20:02:34 -!- Ngevd has joined.
20:06:53 -!- erdosjr has joined.
20:07:00 <Ngevd> Oh, Open University
20:07:12 <Ngevd> "Unlike other operating systems, Linux operating systems use Linux"
20:07:18 <elliott> Ah yes.
20:07:27 <elliott> erdosjr: hi erd[symbol i can't type]s
20:07:35 <elliott> did you bring the Book?
20:07:36 <elliott> `? welcome
20:07:38 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
20:07:41 <erdosjr> hello elliott
20:08:01 <erdosjr> what book?
20:08:32 <elliott> http://en.wikipedia.org/wiki/Paul_Erd%C5%91s#Biography, six paragraphs in. :p
20:08:45 <ais523> <Ngevd> "Unlike other operating systems, Linux operating systems use Linux"
20:08:52 <ais523> I don't really have a comment on that, I just wanted to quote it
20:09:09 <elliott> That's what `addquote is for :P
20:09:14 <erdosjr> ehh.
20:09:33 <ais523> `addquote [in the context of Open University] <Ngevd> "Unlike other operating systems, Linux operating systems use Linux"
20:09:35 <HackEgo> 702) [in the context of Open University] <Ngevd> "Unlike other operating systems, Linux operating systems use Linux"
20:10:28 <Ngevd> Why can't linux.org and open.ac.uk play nice?
20:10:33 <elliott> linux.org?
20:10:40 <elliott> Don't you mean kernel.org? :p
20:11:51 <Ngevd> EXACTLY
20:11:53 <elliott> CakeProphet: Enjoying your GNU arch tutorial?
20:12:08 <Ngevd> Aargh!
20:12:10 <Ngevd> A giant gnu!
20:12:35 <elliott> [handle-io 19c942a] Convert packet analysis code to handle-based IO XXX WRITE MORE HERE
20:12:54 <elliott> ais523: scapegoat needs a way to create canary commits, that can't be pushed without forcing
20:13:06 <elliott> and that can be easily amended :P
20:13:16 <ais523> elliott: what's your intended use case?
20:13:24 <elliott> ais523: [handle-io 19c942a] Convert packet analysis code to handle-based IO XXX WRITE MORE HERE
20:13:34 <elliott> Not accidentally pushing things like that, and being able to give them reasonable commit messages easily :P
20:14:11 <ais523> in that case, it should probably treat working trees as a special case of that sort of commit
20:14:54 <Ngevd> START THE CLOCK
20:15:05 <elliott> ais523: do you mean working tree or index?
20:15:18 <elliott> (unlike most git-haters, I think the working tree/index distinction is incredibly useful)
20:15:24 <ais523> elliott: I mean working tree
20:15:34 <ais523> as in, what's physically on the filesystem
20:15:40 <elliott> ais523: well, IMO sg doesn't need a model of that
20:15:47 <ais523> hmm, perhaps
20:15:56 <ais523> I think the index is a useful thing to have, /but/ it shouldn't be used by default
20:16:02 <elliott> ais523: it's just that, the sg tool has to offer /some/ way to modify the index commit
20:16:09 <ais523> being able to half-commit changes to the index is great
20:16:12 <elliott> and it does that by using the filesystem
20:16:15 <elliott> ais523: I disagree.
20:16:16 <ais523> but it's not the usual case
20:16:20 <elliott> ais523: If you phrased it this way, I would agree:
20:16:37 <elliott> "I think commit should have -a on by default iff the index is an empty changeset."
20:16:41 <elliott> ais523: but then I'd disagree
20:17:00 <elliott> and say it should be equivalent to "sg add; sg commit-index-to-branch" or something
20:17:03 <elliott> in that case
20:17:11 <elliott> (where "sg add" is "darcs record" to the index)
20:17:17 <ais523> I think it should be equivalent to -p followed by commit
20:17:22 <ais523> *add -p
20:17:29 <Ngevd> I thought this linux was supposed to be damn tiny!
20:17:31 <elliott> ais523: that's what I said
20:17:37 <ais523> you didn't say the -p
20:17:39 <Ngevd> It's 50.6 whole megabytes!
20:17:41 <elliott> ais523: <elliott> (where "sg add" is "darcs record" to the index)
20:17:42 <Ngevd> WHEN ZIPPED!
20:17:48 <ais523> ah, OK
20:17:59 <elliott> Ngevd: try tiny core :P
20:18:14 <elliott> ais523: in which case, the index /is/ always used
20:18:22 <elliott> you're just not exposed to it if you try to run what would be a nop
20:18:25 <elliott> well
20:18:29 <elliott> I suppose you can commit an empty changeset
20:18:31 <elliott> but you wouldn't want to
20:18:38 <Ngevd> elliott: I'm following a course
20:18:40 <ais523> yep, it becomes an implementation detail except when you don't want it to be
20:18:45 <ais523> that's probably the best situation
20:18:47 <elliott> More like following a: HORSE.
20:19:04 <elliott> ais523: well, IMO sg's terminology and UI should follow its implementation as much as possible
20:19:15 <elliott> ais523: one of git's main flaws is that it tries to hide its implementation
20:19:20 <ais523> perhaps
20:19:21 <elliott> which just makes nothing make sense
20:19:26 <ais523> I don't think git's impl is that hidden
20:19:28 <elliott> because it bundles unrelated-in-git concepts into single commands
20:19:31 <ais523> it's just full of shortcut commands
20:19:32 <elliott> ais523: no, it isn't, but it tries to be
20:19:41 <elliott> ais523: yep, but the shortcut commands are alien to git itself
20:19:48 <elliott> and the low-level commands are huge a pain to use
20:19:51 <elliott> s/huge a/a huge/
20:22:09 <elliott> "Rearrange shit in MC.Host lol XXX FIXME"
20:22:13 <elliott> well, it's under fifty characters
20:22:19 <elliott> good commit message!
20:22:20 <Sgeo|web> I should probably check whether I'll be able to do my homework
20:22:49 * Sgeo|web vaguely wonders whether he writes good commit messages
20:23:01 <Sgeo|web> Hmm, I think some of mine have been along the lines of X, Y, Z, oh, and some other stuff
20:23:06 <Sgeo|web> Or "general stuff"
20:23:06 <Sgeo|web> So no
20:23:23 <elliott> Sgeo|web: you can't write good commit messages if you don't write good /commits/
20:23:42 <elliott> a comma is a commit smell, "other stuff" is like a commit /stench/
20:24:35 <ais523> elliott: comma between what you did and why you did it is OK, right?
20:24:49 <elliott> ais523: well, I was referring more to the subject line
20:24:58 <ais523> elliott: in the subject line
20:25:04 <Sgeo|web> Well, I need to figure out how to put away some of the stuff I did temporarily then test and check before commit, I guess
20:25:07 <Sgeo|web> :/
20:25:16 <elliott> ais523: not really; you only have fifty characters, so you should try and summarise both in one go
20:25:42 <ais523> oh, I ignore the 50-char limit
20:25:44 <ais523> is that bad?
20:25:48 <elliott> ais523: it's only for git, but yes
20:26:01 <pikhq> Wow. The tz databse is ended indefinitely.
20:26:12 <ais523> because the person maintaining it got sued
20:26:15 <elliott> ais523: (a) you make git log --oneline harder to use, (b) you break the git model of "commit message = subject line", (c) a whole host of things
20:26:16 <Sgeo|web> o.O um, what
20:26:18 <ais523> claiming that it was a copyvio from some atlas
20:26:22 <elliott> pikhq: neat
20:26:37 <ais523> not really, it's copyright trolling
20:26:44 <elliott> pikhq: link?
20:26:45 <Ngevd> Wow, you can run an operating system WITHIN AN OPERATING SYSTEM!?
20:26:45 <pikhq> Wonderful thing about this case is, in the US pure facts are literally uncopyrightable.
20:26:47 <ais523> timezones themselves, I doubt are copyrightable, no matter where you get the source from
20:26:54 <pikhq> http://article.gmane.org/gmane.comp.time.tz/4133
20:26:56 <Ngevd> This is like Inception, but actually vaguely confusing
20:27:01 <pikhq> ais523: In some jurisdictions they can be.
20:27:11 <elliott> ais523: anyway, the fifty-char limit is really nice because it means the summaries are actually /useful/
20:27:18 <pikhq> The US, where both the plaintiff and defendent are in, is not one of those jurisdictions.
20:27:27 <Sgeo|web> Ngevd: you can run an operating system within an operating system within an operating system, at least in theory. For some reason though, some VM software seems to balk at that
20:27:29 <elliott> ais523: and you only need to read the rest of the message to find out either (a) what the changes were in more detail, or (b) the full justification
20:27:30 <pikhq> So long as you don't copy the presentation of those facts, you're 100% in the clear.
20:27:53 <ais523> are timezones facts, though?
20:27:57 <pikhq> Yes.
20:28:04 <ais523> they're human constructs
20:28:14 <pikhq> It's still facts about human constructs.
20:28:16 <elliott> ais523: e.g. "Remove dependency on foobar to avoid GPL violation\n\nThe lawyers at quux industries sued us, so this removes the dependency on foobar. Instead of the frobnitz function, we hand-roll our own [etc.]"
20:28:35 <pikhq> The typical example of this is actually phonebooks.
20:29:01 <Sgeo|web> As are things like stuff about transistors
20:29:03 <pikhq> You are perfectly in the clear to mine all the numbers and names from a phonebook, and print your own phonebook, so long as you don't just copy the pages of the phonebook.
20:29:49 <pikhq> Of course, if this really *was* an issue, he could just redo the database using The World Factbook as a source.
20:30:01 <pikhq> Due to being a US government publication, it is in the public domain.
20:31:05 <elliott> ais523: I think sg should probably error out when things like commit messages go too far outside of standard guidelines (e.g. a commit message with lines over eighty chars) and require forcing to continue
20:31:18 <ais523> heh, perhaps
20:31:36 <elliott> maybe it should refuse to commit if your summary is less than fifteen chars or contains the word "stuff" :P
20:31:54 <elliott> If you try and commit with just the message "stuff", it actually erases all your changes and calls your parents.
20:32:17 <ais523> I don't think there should be such an easy method to delete data
20:32:22 <elliott> wow, git add -p refuses to prompt me about this hunk
20:32:27 <elliott> if I start it, it prints it and then just exits
20:32:34 <elliott> and when I had other hunks, it printed it and went on to the next one without prompting
20:35:55 <CakeProphet> elliott is all about the hunks
20:35:56 <ais523> ouch
20:36:06 <elliott> ais523: I just git added the file, in the end
20:36:09 <elliott> I think it's because it was one of those patch-patches
20:36:14 <elliott> with two indicator columns instead of one
20:36:19 <elliott> because it was a modification of something I had already added
20:38:06 <CakeProphet> so
20:38:07 <CakeProphet> what if
20:38:13 <CakeProphet> Wikipedia started using a VCS
20:38:24 <CakeProphet> so that you could branch an article, and make changes to it, and then merge back in when it's complete.
20:38:31 <CakeProphet> with the trunk being the main, visible article
20:38:47 <elliott> there are many vcs-based wikis
20:39:00 <elliott> the only reason wikipedia doesn't use one is because I don't even think there was a decent DVCS when mediawiki was written
20:39:26 <elliott> January 2002; that's only slightly newer than arch
20:39:28 <elliott> and older than darcs
20:39:40 <CakeProphet> wow weird.
20:40:03 <elliott> DVCS' only caught in popularity like three, four years ago, dude
20:40:27 <CakeProphet> wow weird.
20:44:03 <pikhq> Largely courtesy of git.
20:44:08 <Phantom_Hoover> Although you can blame them for about fifty other things, fortunately.
20:44:14 -!- augur_ has joined.
20:44:39 <pikhq> (even though Linux had been on Bitkeeper for longer...)
20:45:26 <elliott> Phantom_Hoover: Blame what?
20:45:36 <Phantom_Hoover> The MW guys.
20:45:52 <Phantom_Hoover> My point is, there's no shortage of good hate material for them.
20:45:53 <elliott> pikhq: BitKeeper made Linux development a bit of a laughing stock, didn't it?
20:45:55 <elliott> Proprietary and all.
20:45:56 <Ngevd> Week one of TI55 Linux: an Introduction complete
20:46:19 <Phantom_Hoover> Ngevd, did you get to go to tutorials at a local college
20:46:29 <Ngevd> I don't know
20:46:30 <Ngevd> maybe
20:46:32 <pikhq> elliott: Less so than it could have.
20:46:33 <Ngevd> I haven't
20:46:44 <pikhq> Linux was and still is on a patch-submission development model.
20:46:49 -!- Sgeo|web has quit (Ping timeout: 252 seconds).
20:47:10 <pikhq> Bitkeeper, like git after it, is being used as more of a "make Linus not hate juggling patches" tool.
20:47:56 <Ngevd> So, goodnight, IRC
20:48:01 <Ngevd> And thanks for all the fish!
20:48:03 -!- Ngevd has quit (Quit: what a big quitter he is, eh?).
20:48:46 <elliott> ais523: hmm, we need to figure out a good diff format for sg that encodes all the information in the actual commits
20:48:59 <elliott> as in, that's at least as human-readable as diff(1) output
20:49:05 <elliott> OK, I guess we don't actually need to
20:49:10 <ais523> it should probably be compatible with patch(1) in that case
20:49:18 <ais523> by putting the metadata in lines not starting with + - \ or diff
20:49:19 <elliott> since you can just include it as an effective binary blob (that happens to be textual)
20:49:21 <elliott> and then sg diff it
20:49:27 <elliott> ais523: or space
20:49:40 <ais523> oh right, for context
20:50:21 <elliott> ais523: actually, I suspect simply attaching a binary version of the packet, and making the diff the body of the email, is the best idea
20:50:28 <elliott> actually, no
20:50:31 <elliott> that's too exploitable
20:50:47 <elliott> I could send an innocuous patch to Linus-except-not-so-bright and they might sign it off based on a fraudulent diff
20:50:55 <elliott> I guess encoding the metadata into the diff is the best idea
20:51:07 <elliott> and have sg verify the diff parts when applying
20:51:19 <elliott> ais523: perhaps the metadata should be bunched up at the top of the file
20:51:21 <elliott> like git does:
20:51:25 <elliott> diff --git a/MC/Protocol/IO.hs b/MC/Protocol/IO.hs
20:51:25 <elliott> new file mode 100644
20:51:25 <elliott> index 0000000..3b2343b
20:51:25 <elliott> --- /dev/null
20:51:25 <elliott> +++ b/MC/Protocol/IO.hs
20:51:43 <elliott> that way, it'd look just like a regular diff with some additional lines before each file
20:52:02 <elliott> a bit annoying that it'll probably have to use multiple lines per change, though (because it should include the full hashes)
20:52:38 <elliott> ais523: actually, wait, it should probably just put all the metadata at the very end of the file
20:52:44 <elliott> that way, people can just ignore it, and sg can still verify the diff
20:52:49 <Phantom_Hoover> What stage of development is Scapegoat actually at, BtW?
20:53:03 <elliott> Phantom_Hoover: "not"
20:53:10 <elliott> I've been too busy doing other things, and there's still parts of the model to be worked out
20:53:21 <Phantom_Hoover> Which parts?
20:53:34 <elliott> Phantom_Hoover: that's a ridiculous question
20:53:39 <elliott> it's simply not a complete picture yet
20:57:12 <elliott> ais523: how do you split a commit into two with git rebase?
20:57:26 <ais523> I'm not sure you can
20:57:43 <ais523> other than reverting half of it, reverting the revert, then squashing the first revert backwards
20:57:47 <ais523> which is pretty hackish
20:58:09 <elliott> ais523: can't I just "edit" it (with --interactive) and do something there?
20:58:25 <ais523> not as far as I know, but possibly
20:58:32 <ais523> I'm not a git expert
20:58:37 <elliott> I need a git expert :'(
20:58:39 <elliott> Hey Deewiant :P
20:59:05 <Deewiant> edit and commit twice?
20:59:44 <Deewiant> I imagine that it only looks at HEAD so it should work
21:00:07 <elliott> Deewiant: "edit" leaves it already committed
21:00:09 <elliott> You're meant to --amend
21:00:17 <elliott> So the question becomes, how do I split the latest commit?
21:00:19 <Deewiant> amend and commit
21:00:37 <elliott> Deewiant: How can you /remove/ changes with amend?
21:00:58 <Deewiant> Well, easiest with reset --soft
21:01:08 <Deewiant> And then don't amend
21:01:21 <elliott> Then just commit twice?
21:01:22 <elliott> Alright
21:01:52 <elliott> Deewiant: My suspicion, though, is that that'll break the rebase
21:01:58 <Deewiant> Perhaps
21:02:00 <elliott> Because the hashes of the commits after will change
21:02:03 <elliott> And so it'll go how does pick
21:02:11 <elliott> For my fixing purposes:
21:02:13 <elliott> pick 2edb04a Rearrange shit in MC.Host lol XXX FIXME
21:02:13 <elliott> pick 14a2fbf Add an hPutPacket function to MC.Protocol.IO XXX FIXME FIXME
21:02:13 <elliott> pick 14f21e1 Convert the server to handle based IO and BANISH ITERATEES MWAHAHAHAHA XXX FIXME
21:02:13 <elliott> pick f9a7ca1 Eliminate dependency on iterIO
21:02:25 <Deewiant> Er no, the later commit hashes shouldn't change
21:02:47 <Deewiant> Commit hashes don't ever change
21:03:26 <elliott> Deewiant: Hmm, I guess I just don't get how branches have history in igt
21:03:26 <Phantom_Hoover> "RIP Steve Jobs, who recognized that beauty and technology can sit on the same pedestal." — Zach Weiner
21:03:27 <elliott> git
21:03:34 <Phantom_Hoover> Yes, Jobs invented this concept.
21:03:45 <Deewiant> Well I don't know where exactly the pointers live
21:05:02 <Deewiant> But what rebase does is it just reapplies the patches, creating (or trying to create) equivalent commits as previously but with a different history
21:05:05 <Deewiant> The old ones still exist
21:05:18 <Deewiant> So doing that kind of reset + double commit just creates two new commits
21:06:35 <elliott> Right
21:06:51 <Deewiant> NB: I could be wrong
21:06:53 <elliott> With sg, you have to re-create every commit after the first one you're modifying
21:06:56 <Deewiant> But this is my understanding :-P
21:06:57 <elliott> Because they have references to it that need to be updated
21:07:08 <elliott> And sg commits are immutable, and the hashes will change :P
21:07:16 <Deewiant> Yeah, and that's what's happening here as well
21:07:34 <Deewiant> But when you're in the rebase "edit" stage, you have no commits after the one you're modifying
21:07:40 <Deewiant> Because you're not on any branch
21:08:30 <elliott> Deewiant: Yeah, but I mean
21:08:41 <elliott> Deewiant: In git, the commits after the one you edit don't have to be recreated
21:08:46 <elliott> Because they don't hold references to other commits
21:08:52 <Deewiant> Yes they do
21:08:57 <elliott> They do?
21:09:08 <Deewiant> "Editing" is making a copy
21:09:29 <elliott> Yes
21:09:30 <Deewiant> So if you want the commits after that one to exist for your edited copy, you have to recreate them
21:09:41 <Deewiant> The old ones still exist, pointing to the unedited original
21:09:46 <elliott> No you don't, you just have to rewrite the set of commits in the branch?
21:09:53 <elliott> Hmm
21:09:56 <elliott> I guess git stores a parent commit
21:10:02 <elliott> How un-tarball-like of it
21:11:18 <elliott> Hmph
21:11:26 <elliott> I need a better word than "functions" to refer to top-level Haskell definitions
21:11:29 <elliott> Don't suggest "definitions"
21:11:35 <elliott> "Add functions for handle-based packet reading" -- makes sense
21:11:40 <elliott> "Add definitions for handle-based packet reading" -- doesn't really
21:11:53 <Deewiant> Say "export" instead of "add"
21:12:02 <Deewiant> Unless they're internal :-P
21:12:42 <elliott> Deewiant: It creates a new MC.Protocol.IO module
21:12:50 <elliott> "Export" would be exporting existing unexported definitions from a module
21:13:27 <Deewiant> "Export new"
21:13:47 <elliott> Why that, rather than "add"
21:14:03 <Deewiant> Implicitly top-level
21:14:31 <elliott> Is that meant to solve my problem with the message? :-P
21:14:40 <Deewiant> If you want :-P
21:15:04 <elliott> Deewiant: It doesn't, because the word "function" is still there
21:15:26 <Deewiant> What's wrong with it
21:15:26 <elliott> I would s/functions/support/, but that implies that the support is somehow exposed to the user via the resulting executable; it isn't even /used/ yet in this commit
21:15:37 <elliott> Deewiant: IO (PacketReader a) is not a function
21:15:43 <Deewiant> "functionality"
21:15:46 <elliott> getLine is not a function; hGetLine is, but that's incidental
21:16:03 <elliott> Deewiant: Isn't that code for "code"? :-)
21:16:07 <elliott> (Functionality for "code"?)
21:16:13 <elliott> "code" is tempting
21:16:18 <Deewiant> Well, isn't that what you're trying to say :-P
21:16:43 <elliott> "Add code for handle-based packet reading"; sounds good.
21:16:49 <elliott> Although I'd prefer the word "IO" was in there somewhere.
21:17:00 <Deewiant> I don't like the word "code" in general but that's just me
21:17:33 <elliott> Deewiant: I don't like it much, but I can't think of a better word for "code" :P
21:17:43 <elliott> I prefer "programming" for the activity, but "program" isn't appropriate
21:17:46 <Deewiant> "functionality"
21:17:56 <Deewiant> And as you say, "support" if it's exposed
21:18:00 <elliott> Deewiant: Oh yeah, I'm a programmer, I write functionality.
21:18:02 <elliott> I'm talking about in general
21:19:06 <Deewiant> Well, "programs" or "libraries" can typically be used
21:19:25 <Deewiant> Other than that I suppose it has to be "code" or "program code" for the pedants
21:20:47 <elliott> Deewiant: The file MC/Host contains ____. Fill in blank
21:21:06 <elliott> erm
21:21:09 <elliott> Deewiant: The file MC/Host.hs contains ____. Fill in blank
21:21:37 <Deewiant> Haskell code :-P
21:21:48 <elliott> Deewiant: Without using the word code :P
21:22:43 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
21:22:45 <Deewiant> Nothing good comes to mind
21:23:33 <elliott> Deewiant: Lame
21:23:51 <Deewiant> Blame the language, not me :-P
21:24:17 -!- sebbu has quit (Ping timeout: 252 seconds).
21:27:43 <elliott> "Convert packet analysis code to handle-based IO"
21:27:46 <elliott> Hmph, I don't like "convert" there
21:27:49 <elliott> Deewiant: What's "code" in Finnish :P
21:28:04 <Deewiant> Equally bad
21:28:32 <elliott> Add equally bad for handle-based packet reading
21:30:20 -!- Nisstyre has quit (Ping timeout: 248 seconds).
21:30:37 -!- sebbu has joined.
21:30:37 -!- sebbu has quit (Changing host).
21:30:37 -!- sebbu has joined.
21:33:23 -!- erdosjr has quit (Ping timeout: 252 seconds).
21:35:23 <elliott> Deewiant: You should totally specify a word that isn't "convert" to use there
21:35:30 -!- Nisstyre has joined.
21:42:50 -!- zzo38 has joined.
21:45:05 -!- Phantom_Hoover has quit (Ping timeout: 260 seconds).
21:45:39 -!- copumpkin has joined.
21:46:59 <elliott> Deewiant is lame, I'll get ais523 to replace that word instead
21:47:08 <elliott> I would bother PH with it but he's just quit, hmph
21:47:22 <ais523> elliott: how silly do you want it to be?
21:47:30 <elliott> ais523: Preferably around 0 sillies
21:47:33 <ais523> "adapt"?
21:49:29 -!- pikhq_ has joined.
21:50:01 -!- Phantom_Hoover has joined.
21:50:04 -!- zzo38 has quit (Remote host closed the connection).
21:50:06 -!- pikhq has quit (Ping timeout: 258 seconds).
22:09:23 -!- Phantom_Hoover has quit (Remote host closed the connection).
22:09:23 -!- Jafet has joined.
22:19:40 -!- TeruFSX has joined.
22:22:30 <elliott> qa
22:23:12 <elliott> hey ais523
22:23:17 <elliott> @let foo = [1,3..10]
22:23:18 <lambdabot> Defined.
22:23:23 <elliott> > (length foo, length (map (/10) foo))
22:23:24 <lambdabot> (5,6)
22:23:36 <elliott> also logreading oerjan :P
22:30:22 <monqy> what
22:30:54 <monqy> how could this
22:30:55 <monqy> happen
22:31:00 <monqy> > foo
22:31:02 <lambdabot> [1,3,5,7,9]
22:31:05 <monqy> > map (/10) foo
22:31:07 <lambdabot> [0.1,0.3,0.5,0.7,0.9,1.1]
22:31:50 <monqy> ranges...
22:32:06 <monqy> or whatever cuased that
22:32:51 <elliott> monqy: Hey, you ruined it. :(
22:32:59 <monqy> ruined?
22:33:03 <elliott> (Example due to Conal.)
22:33:09 <elliott> monqy: Well, it's more obvious what the hell is going on now. :p
22:33:30 <monqy> it still confuses me
22:33:41 <elliott> I'll tell you in /msg.
22:33:50 <monqy> [1,3..10] is weird anyway
22:34:24 <monqy> oh I think I got it
22:34:30 <monqy> at least: maybe
22:34:33 <monqy> without looking at the message
22:34:50 <elliott> Look at it then :P
22:34:51 <monqy> oh my guess was different (weeps)
22:35:46 <calamari> > map (/0) foo
22:35:47 <lambdabot> [Infinity,Infinity,Infinity,Infinity,Infinity,Infinity]
22:35:50 <elliott> monqy: Anyway replace "convert" in " Convert packet analysis code to handle-based IO". >:|
22:35:54 <elliott> > map (`div` 0) foo
22:35:55 <lambdabot> [*Exception: divide by zero
22:36:03 <elliott> > length (map (`div` 0) foo)
22:36:04 <lambdabot> 5
22:37:36 <monqy> elliott: Change? modify?
22:37:43 <elliott> pikhq_: look at the guys who brought the tz db down: http://alabe.com/
22:38:07 <elliott> (they just bought the rights but still)
22:38:34 <monqy> and in the case of "modify" it would be "modify...to use"
22:39:22 <pikhq_> elliott: Oh, so it's a bunch of morons.
22:39:29 <monqy> what happened? baD?
22:39:38 <pikhq_> monqy: Lawsuit.
22:39:49 <monqy> who/what
22:39:58 -!- ais523 has quit (Read error: Connection reset by peer).
22:39:59 <elliott> monqy: I think I'll use "Migrate"
22:40:01 <elliott> monqy: and http://blog.joda.org/2011/10/today-time-zone-database-was-closed.html
22:40:06 <pikhq_> Alabe sued the maintainer of the tz database.
22:40:07 <elliott> the timezone database has been shut down
22:40:09 <monqy> elliott: that works too
22:40:19 <monqy> oh no :(
22:40:24 <pikhq_> Erm, astrolabe.
22:40:50 <pikhq_> monqy: This, incidentally, is a lawsuit that will almost *surely* result in Astrolabe being laughed out of court.
22:40:52 <elliott> Deewiant: Um
22:41:03 <pikhq_> It's a very simple misunderstanding of US copyright law.
22:41:03 <elliott> Deewiant: I just accidentally rebased right after rebasing and didn't manage to cancel it
22:41:11 <elliott> Deewiant: But made no changes
22:41:20 <elliott> Deewiant: How do I tell which tree is the right one (without bogus commit dates) in reflog
22:55:49 -!- variable has quit (Excess Flood).
22:56:23 -!- variable has joined.
22:56:24 -!- variable has quit (Changing host).
22:56:24 -!- variable has joined.
23:19:16 -!- pikhq has joined.
23:19:34 -!- pikhq_ has quit (Ping timeout: 256 seconds).
23:33:05 <CakeProphet> elliott:
23:33:09 <CakeProphet> oops
23:33:21 <CakeProphet> I love how people are commemorating Steve Jobs like he invented technology itself or something.
23:33:51 <Jafet> He invented everything except the internet, which was invented by Al Gore.
23:34:33 <elliott> Eh; he's in large part responsible for desktop computers actually being a thing, so it's not as if he didn't do anything.
23:34:42 <pikhq> Al Gore actually deserves rather a lot of credit for the Internet.
23:35:41 <pikhq> It came about as a direct result of his legislation.
23:35:42 -!- oerjan has joined.
23:36:36 <pikhq> He also ended up funding Mosaic.
23:36:50 <calamari> so what's the best iJoke for Jobs so far?
23:37:17 <elliott> hi oerjan
23:37:32 <elliott> oerjan: when you get to 22:23 in today's log, stop scrolling down and reading until you figure it out
23:37:37 <elliott> or at least bumble about confused in the channel for a while
23:39:54 <oerjan> well that is obviously a bug. my _guess_ is there's a rule which does map (/d) [a, b .. c] = [a/d, b/d .. c/d]
23:40:05 <oerjan> and which is unsound
23:40:46 <elliott> oerjan: Nope.
23:40:51 <elliott> oerjan: It is not a bug, and there is no unintentional behaviour.
23:40:54 <oerjan> > [0.1, 0.3 .. 1]
23:40:55 <lambdabot> [0.1,0.3,0.5,0.7,0.8999999999999999,1.0999999999999999]
23:41:04 <oerjan> > [1, 3 .. 10]
23:41:04 <lambdabot> [1,3,5,7,9]
23:41:05 <elliott> oerjan: Hint:
23:41:08 <elliott> :t foo
23:41:09 <lambdabot> forall t. (Num t, Enum t) => [t]
23:41:21 <elliott> Hint number two:
23:41:22 <elliott> :t (/)
23:41:23 <lambdabot> forall a. (Fractional a) => a -> a -> a
23:41:26 <elliott> Hint number final: Defaulting.
23:41:38 <oerjan> ooh
23:41:45 <oerjan> right
23:41:53 <oerjan> > [1, 3 .. 10 :: Double]
23:41:54 <lambdabot> [1.0,3.0,5.0,7.0,9.0,11.0]
23:42:27 <elliott> oerjan: thank Conal for that wonderful example :-)
23:43:43 <Jafet> Actually, that would be a bug in enumFromThenTo/Double.
23:43:59 <oerjan> Jafet: it is standard-defined behavior
23:44:10 <elliott> It's a bug in the Prelude.
23:44:22 <oerjan> and there is a large debate about it on haskell-cafe
23:44:25 <elliott> Jafet: But note that enumFromThenTo doesn't really have much defined semantics... at all.
23:44:50 <Jafet> Well, it clearly has the wrong semantics, even if we can't write down the correct one...
23:44:51 <elliott> oerjan: I liked the hierarchy of separate Enum and Range => Ix with Range being what .. expands to in that thread.
23:45:02 <oerjan> Jafet: the intention is to make it stable under rounding errors
23:45:05 <elliott> Where Float/Double are instances of Range but not Enum
23:45:08 <elliott> and Enum has to enumerate all values
23:45:16 <oerjan> > [1, 3 .. 1.0999]
23:45:16 <lambdabot> [1.0]
23:45:18 <elliott> and is generally designed for, well, enumerations
23:45:21 <oerjan> er
23:45:25 <oerjan> > [1, 3 .. 10.999]
23:45:26 <lambdabot> [1.0,3.0,5.0,7.0,9.0,11.0]
23:45:30 <elliott> That doesn't resolve the issue of where to stop
23:45:38 <elliott> But it does make [..] not be lawless and crappy :P
23:45:51 <elliott> oerjan: oh, and then tuples would be Range instances too
23:45:58 <elliott> I think
23:46:04 <elliott> something like that was said, anyway
23:46:29 <oerjan> elliott: that would be weird whether they work as Ix instances and especially if not
23:46:41 <elliott> oerjan: tuples are indices though
23:46:42 <oerjan> *as the
23:46:51 <elliott> oerjan: and the idea would be to have Range be a superclass of Ix
23:46:56 <elliott> and thus eliminate range from Ix
23:47:00 <oerjan> elliott: ah.
23:47:07 <elliott> and range would have all the finite methods of Enum but with different names, IIRC
23:47:16 <elliott> whereby finite I mean, excluding things like enumFrom
23:47:17 <Jafet> (Enum a, Enum b) => Enum (a, b)
23:47:29 <elliott> Jafet: that's a filthy rotten lie
23:47:40 <elliott> or at least, it is if Integer stays an Enum instance
23:47:46 <Jafet> Huh?
23:47:57 <Jafet> They have the same cardinality.
23:47:58 <oerjan> Jafet: that doesn't work if b is not bounded
23:48:23 <oerjan> unless you want it to work like Ix, again
23:48:24 <Jafet> > [(x,y) | x <- [0..], y <- [1..x]]
23:48:25 <lambdabot> [(1,1),(2,1),(2,2),(3,1),(3,2),(3,3),(4,1),(4,2),(4,3),(4,4),(5,1),(5,2),(5...
23:48:36 <Jafet> Er, whatever
23:49:02 <elliott> oerjan: otoh Integer shouldn't be Enum
23:49:18 <elliott> oerjan: (it should be Range and Ix, though)
23:49:19 <Jafet> You people seem to want to repurpose Enum.
23:49:28 <elliott> Jafet: you people == general consensus on haskell-cafe
23:49:32 <elliott> Jafet: the problem is that Enum has two semantics
23:49:41 <elliott> Jafet: (a) to enumerate every value of the type (within a certain range)
23:49:48 <elliott> Jafet: (b) to do something reasonable in list notation
23:49:55 <elliott> these are contradictory: consider floats
23:50:04 <elliott> > [0.1,..]
23:50:04 <lambdabot> <no location info>: parse error on input `..'
23:50:06 <elliott> > [0.1..]
23:50:07 <lambdabot> [0.1,1.1,2.1,3.1,4.1,5.1,6.1,7.1,8.1,9.1,10.1,11.1,12.1,13.1,14.1,15.1,16.1...
23:52:01 <Jafet> Bah, can we all decide to redo Num first
23:52:19 <Jafet> Gotta paint the bike shed before the porch
23:52:45 <elliott> :D
23:58:01 <CakeProphet> elliott: much of the praise I'm hearing is "lol he invented the ipod"
23:58:24 <CakeProphet> but the desktop computer is a reasonable innovation. I didn't mean to say his life was without merit. :P
23:58:40 <elliott> He didn't, but I'd be sceptical of the claim that the iPod would have come into existence without him
23:58:52 <CakeProphet> just that he is being over-glorified in his death as people tend to do.
23:58:53 <elliott> The stuff attributed is a little overblown, but that's fame for you
2011-10-07
00:09:34 -!- zzo38 has joined.
00:16:10 <zzo38> As far as I can tell a graph can form a category, where the objects correspond to the points and the morphisms correspond to the paths between the points, where if you go along a line backward it is cancelled out. At least they seem to me, like forming a category.
00:16:23 <zzo38> I am not exactly sure.
00:19:00 <zzo38> Do you know?
00:20:38 <elliott> <Pseudonym> The first cut of the Mercury compiler was written in the intersection of Mercury, NU-Prolog and SICStus Prolog.
00:20:38 <elliott> <Pseudonym> And it compiled to Goedel.
00:20:39 <oerjan> zzo38: except for the cancelling out part
00:20:41 <elliott> beautiful
00:21:03 <oerjan> assuming it's directed.
00:21:08 <oerjan> or maybe, hm.
00:21:20 <oerjan> i guess the cancelling out can work.
00:23:09 <zzo38> I was thinking of nondirected graphs, where each pair of points either has a line between them or does not have. But you could have a similar (but different) idea for directed graphs too, I suppose, and pseudographs, etc
00:23:21 <zzo38> I don't really know, I just guessed
00:25:14 <oerjan> zzo38: with the cancelling, it would be close to a fundamental path in homotopy theory
00:25:55 <zzo38> But does it form a category?
00:25:59 <elliott> oerjan: I'm convinced homotopy theory is just one big practical joke by the mathematicians once they realised that category theory actually has applications.
00:26:18 <zzo38> It seem to me, it does have associativity, identity morphism, and so on, like category theory.
00:27:06 <oerjan> yes, it does.
00:39:51 <elliott> data ConnInfo = ConnInfo
00:39:51 <elliott> { conn?????? :: Chan ServerPacket
00:39:51 <elliott> , connReader :: PacketReader ClientPacket
00:39:51 <elliott> , connHost :: HostName
00:39:51 <elliott> , connPort :: PortNumber
00:39:52 <elliott> }
00:39:59 <elliott> Help what should I name the Chan containing the packets to send to the client.
00:40:02 <zzo38> I looked at the Wikipedia article about Kleisli category. It says how composition of morphisms in the Kleisli category is given by. I tried putting the same thing they specify there into Haskell it seem to me it would be this: g <=< f = join . fmap g . f
00:40:08 <elliott> oerjan: he;perlg
00:40:27 <oerjan> connContent
00:40:44 <elliott> oerjan: but... there is other content too (the PacketReader)...
00:40:51 <oerjan> connPayload
00:41:00 <elliott> :(
00:41:00 <zzo38> elliott: Well, conn?????? is not a very good name for it because it mixes letters with symbols.
00:41:04 <elliott> it isn't really a payload if you send a bunch of them is it
00:41:25 <oerjan> connPackets
00:41:35 <elliott> oerjan: <elliott> , connReader :: PacketReader ClientPacket
00:41:40 <elliott> note the read end :P
00:41:42 <elliott> this is just the write end
00:41:59 <oerjan> connWriter
00:42:06 <elliott> maybe........................ i was thinking that but
00:42:12 <elliott> is it a writER if it's just a Chan....
00:42:31 <elliott> it feels....inert...
00:42:32 <oerjan> connOut
00:42:39 <elliott> hmm maybe............... that sounds good........
00:43:24 <oerjan> zzo38: that looks right for <=<
00:43:42 <oerjan> join . fmap g = (g =<<)
00:45:54 -!- CakeProphet has quit (Ping timeout: 276 seconds).
00:46:10 <zzo38> oerjan: OK. I just tried to write the same thing as in that Wikipedia article, but in Haskell. That is, this: $g\circ_T f = \mu_Z \circ Tg \circ f$ is what I tried to make into a Haskell code.
00:46:36 <oerjan> right
00:59:22 <oerjan> today's iwc feels a bit deus ex machina.
00:59:40 <oerjan> or something like that.
01:00:51 <elliott> oerjan: looks intentional to me :P
01:02:04 <oerjan> maybe, but it feels like bad writing.
01:02:25 <oerjan> or maybe it's an intentional parody on forced happy endings
01:02:28 <elliott> oerjan: I mean, it's obviously meant to look ridiculous, so I suspect it's a setup for expectations being violated
01:02:30 <elliott> or parody
01:03:00 <oerjan> in fact that's been kind of a common theme lately, hasn't it.
01:04:14 <oerjan> maybe it's part of dmm's quest to use every trope :P
01:04:25 <oerjan> (not that that is official)
01:07:31 -!- coppro has quit (Quit: leaving).
01:07:38 -!- coppro has joined.
01:11:36 -!- coppro has quit (Client Quit).
01:11:42 -!- coppro has joined.
01:26:02 <elliott> oerjan: w.t.f.
01:26:03 <elliott> :t forkIO
01:26:04 <lambdabot> Not in scope: `forkIO'
01:26:06 <elliott> oh
01:26:07 <elliott> forever
01:26:09 <elliott> god damn you, forever
01:26:43 <oerjan> wat
01:27:23 -!- augur_ has changed nick to augur.
01:27:26 <oerjan> :t Control.Concurrent.forkIO
01:27:27 <lambdabot> IO () -> IO GHC.Conc.ThreadId
01:27:48 <oerjan> :t forever
01:27:49 <lambdabot> forall (m :: * -> *) a b. (Monad m) => m a -> m b
01:28:18 <oerjan> :t (.) runST
01:28:19 <lambdabot> forall a (f :: * -> *). (Functor f) => f (forall s. ST s a) -> f a
01:28:27 <oerjan> wat
01:28:33 <oerjan> :t (Prelude..) runST
01:28:34 <lambdabot> forall a a1. (a1 -> forall s. ST s a) -> a1 -> a
01:29:01 <oerjan> :t runST . liftM ?f
01:29:02 <lambdabot> Couldn't match expected type `forall s. ST s a'
01:29:02 <lambdabot> against inferred type `m r'
01:29:02 <lambdabot> Expected type: m a1 -> forall s. ST s a
01:29:08 <elliott> oerjan:
01:29:15 <elliott> :t (runST . forever) (return ())
01:29:16 <lambdabot> Couldn't match expected type `forall s. ST s a'
01:29:16 <lambdabot> against inferred type `m b'
01:29:16 <lambdabot> Expected type: m a1 -> forall s. ST s a
01:29:17 <oerjan> scandel
01:29:18 <elliott> erm
01:29:21 <oerjan> *a
01:29:23 <elliott> what was it...
01:29:29 <elliott> :t (runST . forever) $ return ()
01:29:30 <lambdabot> Inferred type is less polymorphic than expected
01:29:30 <lambdabot> Quantified type variable `s' escapes
01:29:31 <lambdabot> In the second argument of `(.)', namely `forever'
01:29:34 <elliott> :t runST . forever $ return ()
01:29:34 <lambdabot> Inferred type is less polymorphic than expected
01:29:35 <lambdabot> Quantified type variable `s' escapes
01:29:35 <lambdabot> In the second argument of `(.)', namely `forever'
01:29:36 <elliott> hmph
01:29:46 <elliott> only shachaf has the true knowledge
01:29:53 * shachaf ?
01:29:58 <oerjan> :t runST $ forever $ return ()
01:29:59 <lambdabot> forall b. b
01:30:20 <oerjan> it's a scandal you cannot use . there
01:30:27 <elliott> oerjan: no, shachaf has an example that works with ()s but not without
01:30:29 <elliott> or the other way around
01:30:33 <elliott> /without/ operator precedence being involved
01:30:50 <oerjan> oh
01:30:53 <monqy> hm, this spambot seems to be having problems with the beginnings of its sentences.
01:31:07 <shachaf> Oh, that.
01:31:13 <shachaf> Hmm, how did that go...
01:31:22 <oerjan> :t runST . flip ?f
01:31:23 <lambdabot> Couldn't match expected type `forall s. ST s a'
01:31:23 <lambdabot> against inferred type `f b'
01:31:24 <lambdabot> Expected type: a1 -> forall s. ST s a
01:31:28 <oerjan> darn
01:31:48 <shachaf> Maybe it's this?
01:31:50 <shachaf> > id runST (return 5)
01:31:51 <lambdabot> Couldn't match expected type `m t'
01:31:51 <lambdabot> against inferred type `forall s....
01:31:52 <shachaf> > id runST $ return 5
01:31:53 <lambdabot> 5
01:31:57 <shachaf> No, that's not it.
01:32:03 <monqy> :(
01:32:08 <shachaf> It was something with actual parentheses making a difference and nothing else.
01:32:20 <shachaf> Oh:
01:32:25 <shachaf> > id runST (return 5)
01:32:26 <lambdabot> Couldn't match expected type `m t'
01:32:26 <lambdabot> against inferred type `forall s....
01:32:27 <shachaf> > (id runST) (return 5)
01:32:28 <lambdabot> 5
01:32:33 <elliott> :'(
01:32:38 <monqy> ;_;
01:32:58 -!- DH____ has joined.
01:33:01 <oerjan> ouch
01:34:03 <elliott> shachaf: is that bug a ticket yet? :P
01:34:16 <shachaf> elliott: Fixed in GHC 7.
01:34:21 <shachaf> So I have no idea.
01:34:21 <elliott> oh good
01:34:23 <shachaf> Well, "fixed".
01:34:33 <monqy> "fixed"?
01:34:41 <monqy> is it always broken now
01:34:50 <monqy> consistency: good
01:35:06 <oerjan> :t runST . mapM ?f
01:35:07 <lambdabot> Couldn't match expected type `forall s. ST s a'
01:35:07 <lambdabot> against inferred type `m [b]'
01:35:07 <lambdabot> Expected type: [a1] -> forall s. ST s a
01:35:22 <oerjan> :t runST . forM ?l
01:35:23 <lambdabot> Couldn't match expected type `forall s. ST s a'
01:35:23 <lambdabot> against inferred type `m [b]'
01:35:24 <lambdabot> Expected type: (a1 -> m b) -> forall s. ST s a
01:35:47 <shachaf> monqy: Well, it's a hack either way.
01:35:56 <elliott> <byorgey> shachaf: ah yes, you find runST's dirty little secret special case in the type checker
01:35:57 <elliott> <byorgey> shachaf: it should be. But there's some sort of special case for runST so that runST $ foo works
01:35:59 <elliott> :'(
01:36:08 <elliott> <-- crying
01:36:14 <monqy> im doublecrying
01:36:20 <shachaf> #firstworldproblems
01:37:02 <elliott> * Now talking on #firstworldproblems
01:37:02 <elliott> * #firstworldproblems :You're not a channel operator
01:37:02 <monqy> i wish rank>1types werent bad like this
01:37:04 <elliott> * Users on #firstworldproblems: elliott @ChanServ
01:37:08 <elliott> <elliott> cry
01:37:12 <elliott> monqy: well it's still a bug :P
01:37:14 <elliott> i mean
01:37:18 <elliott> that parens can have an affect
01:37:20 <elliott> s/a/e/
01:37:38 <shachaf> @let foo = return 5
01:37:39 <lambdabot> <local>:6:0:
01:37:39 <lambdabot> Multiple declarations of `L.foo'
01:37:39 <lambdabot> Declared at: <local>...
01:37:43 <monqy> does jhc have rank>1type sdoes jhc have thes probmesl
01:37:44 <shachaf> @undefine
01:37:46 <shachaf> @let foo = return 5
01:37:47 <lambdabot> Defined.
01:37:49 <monqy> what abhout qhc....
01:37:54 <shachaf> > id runST foo
01:37:54 <lambdabot> Couldn't match expected type `m t'
01:37:55 <lambdabot> against inferred type `forall s....
01:37:57 <shachaf> > ($) runST foo
01:37:58 <lambdabot> 5
01:38:09 <shachaf> > (id `asTypeOf` ($)) runST foo
01:38:10 <lambdabot> Cannot match a monotype with `forall s. GHC.ST.ST s a'
01:38:18 <shachaf> ?!
01:38:18 <lambdabot> Maybe you meant: . ? @ v
01:38:38 <shachaf> > let blah = (id `asTypeOf` ($)) in blah runST foo
01:38:39 <lambdabot> 5
01:38:42 <monqy> > runST foo
01:38:44 <lambdabot> 5
01:39:02 <shachaf> > ((id `asTypeOf` ($)) runST) foo
01:39:03 <lambdabot> Cannot match a monotype with `forall s. GHC.ST.ST s a'
01:39:06 <monqy> this is bad
01:39:09 <monqy> why ghc why
01:39:28 <shachaf> monqy: To encourage you to write code that looks like LISP.
01:39:33 <shachaf> More parentheses = better life.
01:39:51 <oerjan> because infering rank>1 types is undecidable, i assume
01:40:17 <oerjan> so in some way, every case which works is a hack
01:40:29 <monqy> shachaf: but but but....using $ fixed it when parens didn't....and i prefer parens....
01:40:44 <shachaf> monqy: When did parentheses not fix it?
01:41:05 <monqy> i mean
01:41:50 <monqy> it's weird because of precedence and $ being infix
01:41:54 <oerjan> > (id runST :: forall s. GHC.ST.ST s a -> a) foo
01:41:55 <lambdabot> Not in scope: type constructor or class `GHC.ST.ST'Not in scope: type varia...
01:41:59 <oerjan> argh
01:42:04 <oerjan> > (id runST :: forall s. ST s a -> a) foo
01:42:04 <lambdabot> Not in scope: type variable `a'Not in scope: type variable `a'
01:42:14 <shachaf> forall s a.
01:42:27 <oerjan> > (id runST :: forall a. (forall s. ST s a) -> a) foo
01:42:29 <lambdabot> 5
01:42:34 <oerjan> whew
01:43:17 <shachaf> elliott: Hey, write me a generic function f x y = f (x y), please.
01:43:25 * shachaf will complain loudly until someone does this.
01:43:38 <elliott> ?pl \f x y -> f (x y)
01:43:38 <lambdabot> (.)
01:43:40 <elliott> or is f
01:43:43 <shachaf> Er.
01:43:44 <elliott> not a parameter there
01:43:48 <shachaf> f x y = x (x y)
01:43:59 <elliott> ?pl \x y -> x (x y)
01:44:00 <lambdabot> join (.)
01:44:03 <elliott> shachaf: enjoy...
01:44:09 <shachaf> > join (.) (:[]) 5
01:44:10 <lambdabot> Occurs check: cannot construct the infinite type: a = [a]
01:44:21 <shachaf> > (:[]) ((:[]) 5)
01:44:22 <lambdabot> [[5]]
01:44:30 <shachaf> No thanks.
01:44:49 <monqy> :(
01:45:29 <elliott> (:[])
01:45:55 <monqy> if only: untyped haskell: because: types cause problemns
01:45:58 <monqy> (joke)
01:46:37 <shachaf> > let f :: forall s a. (forall t. t -> s t) -> a -> s (s a); f x y = x (x y) in f Just 5
01:46:38 <lambdabot> Just (Just 5)
01:46:59 <shachaf> > let f :: forall s a. (forall t. s t -> t) -> s (s a) -> a; f x y = x (x y) in f fromJust (Just (Just 5))
01:47:00 <lambdabot> 5
01:47:47 <monqy> iw ant to make a language that doesn't have probelms....hoW?
01:51:24 <oerjan> aaaaah timwi
01:51:40 <elliott> oerjan: my thoughts exactly
01:51:43 <elliott> oerjan: confrontational as usual :P
01:51:47 <elliott> although his complaint has merit >_>
01:52:24 <oerjan> monqy: i recommend hq9+ or deadfish, they are remarkably problem free
01:52:37 <elliott> Deadfish is all problems.
01:54:18 -!- tiffany has joined.
02:17:54 <zzo38> Will infinite types result in Russell's paradox?
02:20:44 <Gregor> OK, here's a big lol for y'all.
02:20:46 <Gregor> So I mentioned earlier that I got an email asking if I wanted codu.net for $250.
02:20:52 <Gregor> Turns out the company that owns it is an "IT solutions / apostolic ministry"
02:23:40 <shachaf> Curry's paradox is the best paradox.
02:23:48 <shachaf> Beats Russell's any day.
02:24:00 <monqy> how about codu.com
02:24:12 <Gregor> monqy: Donno who owns that, don't really care *shrugs*
02:24:36 <monqy> codu.com seems pretty sketchy
02:24:40 <coppro> shachaf: my favority paradox is out in a lake in BC
02:24:44 <Gregor> monqy: Yes it does :P
02:30:31 -!- TeruFSX has quit (Remote host closed the connection).
02:32:29 <elliott> localhost:47150 > KeepAlive 0
02:32:29 <elliott> localhost:47150 > KeepAlive 0
02:32:30 <elliott> localhost:47150 > KeepAlive 0
02:32:30 <elliott> localhost:47150 > KeepAlive 0
02:32:30 <elliott> localhost:47150 > KeepAlive 0
02:32:30 <elliott> localhost:47150 > KeepAlive 0
02:32:32 <elliott> localhost:47150 > KeepAlive 0
02:32:34 <elliott> localhost:47150 > KeepAlive 0
02:32:36 <elliott> localhost:47150 > KeepAlive 0
02:32:38 <elliott> localhost:47150 > KeepAlive 0
02:32:40 <elliott> localhost:47150 > KeepAlive 0
02:32:42 <elliott> localhost:47150 > KeepAlive 0
02:32:44 <elliott> localhost:47150 > KeepAlive 0
02:32:46 <elliott> localhost:47150 > KeepAlive 0
02:32:48 <elliott> localhost:47150l o>c aKleheopsAtl:i4v7e1 500
02:32:50 <elliott> <l oPclaalyheorsPto:s4i7t1i5o0n L>o oKke e(pPAllaiyveer P0o
02:32:52 <elliott> s l(oPcoailnhto s0t.:04 76195.09 9>9 9K9e9e9p9A5l2i3v1e6 30
02:32:54 <elliott> 0.l0o)c a7l1h.o6s2t): 4(7D1i5r0e c>t iKoene p0A.l0i v0e. 00)
02:32:56 <elliott> Tlroucea
02:32:58 <elliott> lh
02:33:00 <elliott> Behold, multithreaded IO.
02:33:14 * oerjan cancels his /^msg chanserv quiet #esoteric elliott just in time
02:33:58 <elliott> I typed out "KeepAlive", decided to start fleshing it into a joke by prepending "Your MOM", and then stared wide-eyed at my screen for a few seconds before deleting the line.
02:34:10 * Gregor vaguely wonders what "/^msg" is
02:34:26 <oerjan> Gregor: like /msg except doesn't open a query window
02:34:33 <Gregor> Mmm
02:35:45 <zzo38> If you make a category from a graph as I have described, what things in category theory correspond to what things in graph theory?
02:37:05 <oerjan> zzo38: well every morphism is an isomorphism
02:37:40 <zzo38> oerjan: Yes I noticed the same thing.
02:40:34 <oerjan> making this a "groupoid" (although i think that word has several senses)
02:41:45 <oerjan> and if the graph is connected, there is a functor equivalence mapping all the objects into one
02:42:30 <oerjan> or if not, you can select one object from each component to map everything to.
02:42:58 <oerjan> aka skeleton category
02:45:09 -!- quintopia has quit (Remote host closed the connection).
02:46:19 -!- pikhq_ has joined.
02:46:26 -!- quintopia has joined.
02:46:26 -!- quintopia has quit (Changing host).
02:46:26 -!- quintopia has joined.
02:46:45 <zzo38> If the graph is a tree, does the category have all endomorphisms being identity morphisms, due to canceling?
02:47:09 <oerjan> yes, i think so.
02:47:19 <oerjan> tree or forest
02:47:39 <zzo38> Yes, I was just going to say, it applies to forests too
02:47:54 -!- quintopi1 has joined.
02:48:50 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
02:49:19 -!- pikhq has quit (Ping timeout: 258 seconds).
02:51:06 -!- quintopi2 has joined.
02:51:34 -!- quintopi2 has quit (Client Quit).
02:52:35 <zzo38> Are there other properties?
02:53:36 <oerjan> well unless it is a tree, there won't be any initial or terminal objects
02:53:48 <oerjan> and if it is, they all are
02:54:51 <oerjan> oh and the category is isomorphic to its own dual, but that follows from being a groupoid i think
02:55:23 -!- copumpkin has joined.
02:55:23 -!- copumpkin has quit (Remote host closed the connection).
02:55:24 -!- quintopi1 has quit (Quit: Lost terminal).
02:55:29 -!- CakeProphet has joined.
02:55:29 -!- CakeProphet has quit (Changing host).
02:55:29 -!- CakeProphet has joined.
02:55:48 -!- copumpkin has joined.
02:57:33 <zzo38> Probably when I wrote "path" I meant "walk"
02:59:11 <oerjan> ah
03:05:35 <shachaf> hadmin + elliott
03:12:39 <CakeProphet> I like the pirate bay's current home page logo.
03:14:00 -!- nooga has quit (Ping timeout: 255 seconds).
03:15:08 <elliott> Why are you using the Pirate Bay, it is the most useless torrent index
03:18:25 <CakeProphet> elliott: I very frequently find more obscure artists on TPB when things like isohunt fail.
03:18:36 <elliott> http://torrentz.eu/
03:18:36 <CakeProphet> it's worked quite well for my purposes.
03:19:02 <elliott> metatracker which lists all the found trackers for a torrent in utorrent format so you can paste it in for moar speed
03:19:07 <elliott> (it helps massively in my experience)
03:20:00 <tiffany> I use tokyotosho for anime, and then isohunt, tpb, and demonoid for everything else
03:20:31 <monqy> whats piracy help
03:20:51 <elliott> There is no possible way that searching a public tracker can be superior to using Torrentz because it indexes tons of them.
03:20:57 <Gregor> Fuckin' piracy. How does it work?
03:21:01 <elliott> Hmm, looks like it doesn't index isohunt, wonder if there's some drama to do with that.
03:21:19 <elliott> But w/e, if you can't find it on the public trackers torrentz indexed you're probably best served going to a private one anyway :P
03:21:23 <tiffany> If piracy was enforced as harshly as denial of service attacks, 9% of americans would be in jail probably ;P
03:21:25 <elliott> monqy: Gregor: Nooo, this is how I get my Linux ISOs.
03:21:43 * pikhq_ pirates greatly
03:21:43 <Jafet> Gotta catch all 'em Linux ISOs.
03:21:49 <monqy> pirate linux all day every day
03:22:06 <tiffany> You cant pirate free stuff can you?
03:22:17 <zzo38> O, is that how you define piracy now?
03:22:22 * CakeProphet will, in the course of one hour, find torrents for the entire discographies of over 35 artists
03:22:29 <CakeProphet> I pirate with no shame.
03:22:36 <pikhq_> tiffany: I know this is probably a long-shot, but would tokyotosho happen to have anime with Japanese subtitles?
03:22:37 <Jafet> I distribute linux without the source code. I am wanted in four continents.
03:22:43 <tiffany> Bittorrent is like the greatest doenload protocol ever, pretty obvious to use for pirates~
03:22:52 <tiffany> Uum, possibly
03:23:03 <Jafet> Anime with Japanese subtitles?
03:23:03 <pikhq_> It is *far* too hard to find that sort of thing, even if you go totally legit and buy Japanese DVDs.
03:23:14 <pikhq_> Jafet: And Japanese audio, of course.
03:23:44 <CakeProphet> tiffany: telnet is the best protocol for all purposes.
03:23:53 <elliott> Jafet: I'm wanted in ten continents.
03:23:55 <tiffany> telnet~
03:23:56 <Jafet> Not many people care about subtitles in the same language as the film.
03:23:59 <elliott> <tiffany> telnet~
03:24:04 <elliott> how can you even say telnet in any tone of voice other than normal
03:24:11 <elliott> there is no possible way to impart any other kind of context onto the utterance "telnet"
03:24:13 <CakeProphet> lol
03:24:17 <zzo38> Which protocol is best for one purpose depend on the purpose. No protocol is really best for all purposes
03:24:18 <tiffany> <elliott> <tiffany> telnet~
03:24:26 <monqy> how did i know that was going to happen
03:24:26 <elliott> "telnet" as a statement means one thing and one thing only and you cannot modify that auuuugh
03:24:29 <elliott> oerjan: ban tiffany
03:24:29 <pikhq_> Jafet: It's really *quite* helpful for foreign language learners.
03:24:31 <monqy> someone quoting elliott quoting tiffany
03:24:31 <Jafet> tiffany is channelling the telnetcat
03:24:36 <tiffany> .-.
03:24:48 <pikhq_> Particularly when learning a language with nontrivial orthography.
03:24:48 <monqy> o~o
03:24:50 <zzo38> Telnet is good for many purpose, though.
03:24:58 <CakeProphet> %^:
03:25:08 <tiffany> Like tuning engines on a flying 747?
03:25:34 <tiffany> Because, you can actually do that >_>;
03:25:46 <CakeProphet> elliott: tone of voice police
03:26:02 <zzo38> I don't know anything about tuning engines on a flying 747
03:26:18 <monqy> neither do I
03:26:40 <tiffany> I read this article from an engineer who worked on that kind of stuff
03:26:43 <CakeProphet> zzo38: telnet is more or less a protocol for protocols.
03:26:45 <CakeProphet> or can be.
03:27:05 <Jafet> Most people who use telnet don't use telnet.
03:27:07 <tiffany> He said 747s use telnet because ssh breaks the menu thingies in the telnet interface
03:27:20 <CakeProphet> Jafet: that's also true.
03:27:26 <tiffany> Anyway i host a bbs over telnet
03:27:40 <zzo38> SSH is also good protocol for many purposes (but not all).
03:27:44 <zzo38> tiffany: Is it Synchronet?
03:27:51 <tiffany> Nup
03:27:54 <CakeProphet> zzo38: telnet, on the other hand, is suitable for all
03:27:58 <tiffany> Its citadel :s
03:28:01 <CakeProphet> best protocol for our modern age.
03:28:11 <monqy> telnet for president
03:28:21 <tiffany> Also i have an 8192bit rsa key for ssh
03:28:26 <monqy> wow
03:28:28 <monqy> !!!!
03:28:31 <zzo38> CakeProphet: No, I don't think telnet is suitable for all.
03:28:57 <tiffany> It only took a couple minuts to generate so why not
03:29:03 <tiffany> Minutes*
03:29:06 <Jafet> I would use an 8192-bit key, too, if I was tuning engines on flying 747s.
03:29:24 <tiffany> ^
03:29:44 <tiffany> I would use a 32768bit key for that
03:29:52 <monqy> crazy stuff that
03:30:00 <monqy> so much bits
03:30:02 <zzo38> For internet banking and internet money transfer, SSH is the protocol that ought to be used (and the protocol running inside the SSH would be the same in both cases, although some commands might be permitted in only one way and not another way), in my opinion.
03:30:29 <Jafet> Internet banking currently runs on the honour system
03:30:31 <tiffany> Even if 1024bit still takes a fudgeload of time to crack
03:30:49 <tiffany> Didnt it take like 300 computers 400 days to crack one?
03:31:07 <CakeProphet> *fungeload
03:31:18 <monqy> so much load
03:31:48 <tiffany> Rsa is pretty much dead with quantum computers though :/
03:32:24 <elliott> Is?
03:32:26 <elliott> Present tense?
03:32:33 <tiffany> Well
03:32:33 <elliott> How much are D-Wave paying you?
03:32:36 <tiffany> Will be
03:32:37 <monqy> we live in the future, tiffany and me
03:32:43 <monqy> or tiffany and i
03:32:51 <tiffany> Mceliece cryptosystem~
03:32:52 <monqy> whats an english and how does it work?
03:33:09 <Jafet> monqy: it only throws you exceptions
03:33:30 <monqy> help
03:33:50 <CakeProphet> `frink 1 erlang -> 1 fudgeload
03:34:00 <HackEgo> Unknown symbol "fudgeload" \ Warning: undefined symbol "erlang". \ Warning: undefined symbol "fudgeload". \ Unconvertable expression: \ erlang (undefined symbol) -> fudgeload (undefined symbol)
03:34:16 <tiffany> It seems like mceliece is bad in the face of bruteforce or i am reading this wikipedia article wrong
03:34:32 <tiffany> 260000bit key is only as good as 80bit encryption?
03:35:04 <CakeProphet> `units 'erlang' 'fudgeload'
03:35:06 <HackEgo> Unknown unit ''erlang''
03:35:11 <CakeProphet> :(
03:35:23 <CakeProphet> `units erlang fudgeload
03:35:25 <HackEgo> Unknown unit 'erlang'
03:35:33 <CakeProphet> WHY NO ERLANG
03:35:44 <monqy> ;_;
03:36:02 <CakeProphet> !monqy WHY NO ERLANG
03:36:14 <CakeProphet> dude you guys
03:36:17 <CakeProphet> why is egobot gone
03:36:17 <CakeProphet> always now
03:37:27 <monqy> what did monqy do again
03:37:39 <elliott> CakeProphet: frink
03:37:42 <elliott> `frink 9 erlang
03:37:49 <monqy> was it just map toLower and remove all punctuation or something?
03:37:51 <HackEgo> Warning: undefined symbol "erlang". \ 9 erlang (undefined symbol)
03:37:54 <elliott> fuck
03:37:57 <CakeProphet> monqy: just map tolower actually
03:37:57 <monqy> such an inaccurate representation of me
03:37:58 <monqy> oh
03:37:59 <CakeProphet> elliott: see above
03:38:01 <monqy> still awful
03:38:15 <CakeProphet> l;le;ler;le;lr;e;ler;ler;le;lerr;le;le;erle;e;rler;lere;er;lerrelrrerererlanggt
03:38:22 <elliott> `addquote <CakeProphet> l;le;ler;le;lr;e;ler;ler;le;lerr;le;le;erle;e;rler;lere;er;lerrelrrerererlanggt
03:38:24 <HackEgo> 703) <CakeProphet> l;le;ler;le;lr;e;ler;ler;le;lerr;le;le;erle;e;rler;lere;er;lerrelrrerererlanggt
03:38:27 <monqy> neesd to transpose letters, insert es ant the ends of things, otherr quirdks????
03:38:35 <CakeProphet> elliott: I am become famous now.
03:38:39 <monqy> simulated keybarod badding
03:38:47 <monqy> simulated word badding
03:39:00 <zzo38> However, if I designed a BIOS for a PC motherboard, it would be PC-FORTH and one of the things it would include is a terminal emulator (with the PC BIOS emulation as the default), which can be used with telnet and with serial port
03:39:02 <tiffany> http://gopherproxy.org/zzo38computer.cjb.net/0column80*c131_115
03:39:03 <elliott> http://googleads.g.doubleclick.net/pagead/imgad?id=CJvR5I68-qvvUhDQAhiYAjIIAD54C6Z-Wvk
03:39:03 <elliott> auuugh return of the finger tree
03:40:02 <monqy> that's brilliant
03:40:11 <zzo38> I intended to block gopherproxy.org so that Google does not index it.
03:40:15 <monqy> I love those awful ads
03:41:27 <elliott> monqy: oh did you never see my finger tree
03:41:29 <elliott> it was a work of art
03:41:32 <elliott> not as disturbing as that but
03:41:33 <elliott> close
03:41:37 <Jafet> elliott: http://adrinael.net/hr.gif
03:41:39 <monqy> now i want to see it
03:41:44 <monqy> ewww
03:42:23 <elliott> how have you not seen the hasselhoff thing, it's the oldest thing on the internet
03:42:23 <CakeProphet> ow sudden wrist pain.
03:42:27 <elliott> disappointed in you monqy, disappointed
03:42:29 <CakeProphet> maybe I'm getting carpal tunnel.
03:42:37 <monqy> elliott i've seen it but that doesn't make it not gross....
03:43:11 <zzo38> If you need to link to my gopher server, please do so directly.
03:43:56 <elliott> monqy should I use Map or HashMap................................................................
03:43:58 <elliott> debceibcisoisns
03:44:07 <monqy> which is
03:44:08 <monqy> betretr
03:45:48 <elliott> actually hmm i might want some way to reclaim old identifiers
03:46:00 <elliott> what has fast minKey.......
03:46:18 <elliott> the answer is IntMap but I have Int32s :(
03:46:35 <elliott> minView, whatever
03:46:42 <elliott> er no
03:46:42 <elliott> minKey
03:48:41 <zzo38> I figured out why the block that used to work has failed; it is because spoton.net has many IP addresses in different ranges. (It used to be bytemark3.spotonnet.co.uk and is now on bytemark7.spotonnet.co.uk, which have the addresses 89.16.178.179 and 46.43.34.25)
03:50:37 -!- MDude has joined.
03:50:57 <elliott> monqy: my favourite terrible ad of late is these "51 Year Old Mom Looks 25" ones with a bouncing picture above
03:51:00 <elliott> it's so bouncy
03:51:33 <monqy> i dont see enough terrible ads because ad blocker ;_;
03:51:44 <elliott> disable it, it is the devil
03:52:05 <elliott> I bet Jafet knows a good IntMap type thing that works for arbitrary key types and has efficient-ish minKey.
03:52:06 <monqy> i also love the ones where it's like "is this real or fake" or "iq test" and "99% get this wrong"
03:52:17 <elliott> (Hmm, I think Data.Map has pretty efficient minKey, isn't it O(log n)?)
03:52:45 <monqy> and it's something absolutely ridiculous like a seagull with a human arm
03:52:48 <elliott> monqy: my favourite was "HAS SCIENCE GONE TOO FAR? real / fake" -- yeah
03:52:51 <Jafet> minView is bettar
03:52:52 <elliott> with 99 percent get this wrong
03:52:57 <elliott> with birds with arms :')
03:53:00 <CakeProphet> elliott: I can't think of a way it wouldn't be O(log(n))
03:53:01 <monqy> ah yes has science gone too far that's it
03:53:03 <elliott> best use of meme
03:53:04 <monqy> i love birds with arms
03:53:12 <monqy> also great: dancing babies
03:53:12 <elliott> CakeProphet: intmap has constant-time minKey I think
03:53:17 <elliott> and hashmap obviously O(n)
03:53:21 <CakeProphet> well right, I meant for Map.
03:54:33 <CakeProphet> well you could have constant time minKey by keping track of the minimum key as an extra field of the data structure or something.
03:54:37 <CakeProphet> *keeping
03:54:37 <CakeProphet> on Map
03:54:45 <CakeProphet> well... no
03:54:48 <elliott> i'm not sure you could
03:54:50 <elliott> hmm
03:54:52 <CakeProphet> you're just changing
03:54:53 <elliott> yes you could I think
03:54:56 <CakeProphet> when you do the O(log(n))
03:54:57 <elliott> the tree structure makes it possible
03:55:02 <elliott> you can amortise it on insert which is already O(log(n))
03:55:03 <CakeProphet> oh?
03:55:08 <CakeProphet> ah okay.
03:55:13 <elliott> yes, I think you can tell when you're inserting before the minimum key
03:55:29 <CakeProphet> ah right.
03:56:15 <CakeProphet> I think in practice lists shouldn't have O(n) length.
03:56:22 <CakeProphet> GHC should just use a hidden field for length.
03:57:00 <monqy> gross
03:57:10 <CakeProphet> monqy: efficient
03:57:35 <monqy> _someone_ doesn't understand elegance, likes perl, is a bad person
03:57:51 <CakeProphet> of course a change of data structure would suffice. linked list is probably not what you want in this scenario.
03:57:56 <Jafet> I think in practice you shouldn't be using lists if you use length
03:58:04 <Jafet> Sequence has O(1) length
03:58:15 -!- tiffany has quit (Remote host closed the connection).
03:58:16 <elliott> CakeProphet: I think that breaks sharing
03:58:40 <Jafet> More pertinently, that breaks non-strictness
03:58:46 <Jafet> Sharing is unaffected
03:58:57 <CakeProphet> o rite.
03:59:01 <CakeProphet> that whole infinite list thing.
03:59:05 <CakeProphet> well that's not an issue.
03:59:15 <CakeProphet> it could magically be made not an issue.
03:59:19 <CakeProphet> I'm pretty sure.
03:59:26 <CakeProphet> but yeah I don't really know much about sharing.
04:00:15 <CakeProphet> monqy: I understand elegance just fine, but... don't see why you would prefer elegance to efficiency when implementing data structures that other people are going to use.
04:00:34 <monqy> then you don't understand elegance
04:00:53 <CakeProphet> but I see that length being O(1) on linked lists would have some issues.
04:00:59 <CakeProphet> monqy: elegance of interface, sure.
04:01:22 <CakeProphet> but as far as I care a data structure could have an ugly implementation as long as it's efficient.
04:01:43 <monqy> I think Jafet sums it up nicely
04:01:44 <monqy> 20:57:59 < Jafet> I think in practice you shouldn't be using lists if you use length
04:01:53 <CakeProphet> yes I agree.
04:05:24 <shachaf> elliott: Remember that Gobby Haskell Arc implementation session thing?
04:05:25 <coppro> rofl
04:05:27 <shachaf> You were there, right?
04:05:37 <coppro> apparently yesterday's xkcd was Randall's first animated gif
04:05:57 <monqy> gobby haskell arc implementation session? arc as in the lisp or what
04:05:58 <elliott> shachaf: I think I started doing my own thing before that, and then gave up in disgust when the hoi polloi ruined it with their "collaboration" bullshit.
04:06:24 <elliott> coppro: I heard it wasn't.
04:06:27 <elliott> WHO TO BELIEVE???
04:06:38 <coppro> elliott: I heard this from Randall
04:06:43 <coppro> apparently it was the first animated gif he made ever
04:06:58 <shachaf> coppro: You mean the one on xkcd.com?
04:07:06 <coppro> shachaf: yes
04:07:09 <shachaf> That is a bad animated GIF!
04:07:14 <elliott> shachaf: No, he means the one on secretanimatedgifs.xkcd.com.
04:07:21 <shachaf> It depends on the fact that browsers violate the GIF spec for historical reasons!
04:07:24 <elliott> DON'T TELL A SINGLE PERSON.
04:07:30 <shachaf> elliott: There exist many Randalls in the world.
04:07:39 <elliott> shachaf: How many of them make xkcds?
04:07:55 <shachaf> elliott: I didn't see anyone mention "xkcd" until I did.
04:08:00 <elliott> <coppro> apparently yesterday's xkcd was Randall's first animated gif
04:08:04 <elliott> shachaf: I did.
04:08:12 <shachaf> elliott: Well, I didn't see it.
04:08:15 <shachaf> Oh, now I see it.
04:08:22 <elliott> shachaf: Also, what's a map structure with fast minKey (O(log n) at least) that isn't Map or IntMap?
04:08:26 <elliott> TIA
04:08:32 <elliott> hmm, I don't even want minKey
04:08:36 <elliott> I want minimumUnusedKey :P
04:08:38 <shachaf> Anyway, he has the frame delay between the frames set to 1. 1!
04:08:41 <shachaf> Can you believe it?
04:08:49 <elliott> I'm disgusted.
04:08:58 <shachaf> He's relying on and old broken behavior of Netscape 4 on old computers that every browser ever has had to replicate.
04:09:08 <shachaf> Disgusting, huh?
04:09:13 <shachaf> He should've left it at 0.
04:09:49 <shachaf> elliott: Also, why ask me in here?
04:10:00 <elliott> That other channel is so, like, big.
04:10:38 * shachaf wrote an animated GIF player that's too unbroken for that comic.
04:10:55 <elliott> So unbroken it doesn't work.
04:11:00 <shachaf> Exactly!
04:11:24 -!- hagb4rd has quit (Ping timeout: 248 seconds).
04:11:47 <shachaf> Ata hafachta ve'ani hafachti uvechol zot ze nish'ar hafuch!
04:11:49 <shachaf> ...As they say.
04:12:10 <elliott> They say that?
04:12:16 <shachaf> Some of them do.
04:12:24 <elliott> Only the lame ones.
04:12:30 <shachaf> :-(
04:12:56 <elliott> Oh no, the Wayback Machine is going to be down for three days.
04:13:09 <shachaf> elliott: You're the one who doesn't speak the right language.
04:13:47 <elliott> shachaf: At least I'm not a Finnish citizen.
04:14:26 <shachaf> That's not Finnish.
04:14:33 * shachaf doesn't even speak Finnish.
04:14:34 <elliott> shachaf: Did I say it was?
04:14:42 <shachaf> elliott: Did I say you said it was?
04:14:59 <shachaf> elliott: By the way, "esolangs" don't count as actual languages.
04:15:02 <elliott> You have an additional space there.
04:15:16 <elliott> And I'll agree with you if you read the entirety of the Checkout page.
04:15:24 <shachaf> Checkout page?
04:15:37 <shachaf> Ah, http://esolangs.org/wiki/Checkout
04:15:50 <shachaf> Maybe I'll just insert random double spaces into my text.
04:15:58 * elliott awaits the inevitable.
04:16:38 <shachaf> Checkout looks like a neat idea.
04:16:59 <elliott> Yes. Now read the entire page.
04:17:01 <elliott> Either:
04:17:01 <shachaf> However, I'm going to need the entire page delivered to me in IRC-sized snippets.
04:17:14 <elliott> (a) You will agree that esolangs can be actual languages because you'll have read the entire damn thing; OR
04:17:30 <elliott> (b) You will give up because it is made of about a billion paragraphs of about ten thousand sentences (this is the likely scenario).
04:17:41 <elliott> Either way I don't have to agree. YaySimple tutorial on Twisted Deferreds and how to implement them in Haskell
04:17:50 <elliott> [asterisk]Yay!
04:17:55 <zzo38> I like the Checkout esolang idea too; I want to be able to use a fully open-source Checkout compiler to program a GPU that has open specification.
04:17:58 * shachaf suspects there's a flaw in elliott's logic.
04:18:02 <shachaf> I can't find it, though.
04:18:15 <elliott> I can guarantee that I never say anything wrong at all.
04:18:23 <elliott> zzo38: I doubt that will happen.
04:19:36 <zzo38> elliott: I, too, doubt it; probably because very few people would be interested and that many GPU do not follow these requirements.
04:19:56 <elliott> It would be neat though.
04:20:04 <elliott> I don't think anyone would want to write programs in Checkout by hand though.
04:20:10 <elliott> It's pretty low level.
04:20:12 <zzo38> Yes it would be neat.
04:21:04 <elliott> It would even be: Super neat.
04:21:26 <elliott> Seat.
04:21:32 <elliott> I'm almost as good at words as monqy.
04:21:41 <elliott> `word
04:21:44 <HackEgo> in
04:21:46 <elliott> CakeProphet...
04:21:50 -!- Jafet has quit (Quit: Leaving.).
04:21:52 <elliott> `word 99
04:21:54 <HackEgo> lumbatenoncipard sawailecgle ibutoehalitter patuddoteeresporfriipele pracke camineanystionatiandhylcherty boufaskiditoiionfilist dis decrccatenadalc arcte mermi ar ment postragopc yamopporgeminerridepomarhuferse orfs sellineum mangriek hia grolina shotticallorp lobufgendlcmpres clum ticalder tf leuck foravoynynatios wal gos
04:21:59 <elliott> Lumbatenoncipard.
04:22:25 <zzo38> I would want to write programs in Checkout almost by hand, by having a macro system for it. (BLISS has a powerful macro system, so you could possibly use something like that)
04:25:32 <monqy> hi
04:25:36 <monqy> im
04:25:37 <monqy> back
04:26:00 <CakeProphet> elliott: in. good word.
04:26:11 <elliott> A very good word.
04:26:15 <elliott> Almost as good a word as lumbatenoncipard.
04:26:27 <CakeProphet> mangriek
04:27:27 -!- elliott_ has joined.
04:27:31 <elliott_> Foravoynynatios.
04:27:45 <CakeProphet> checkout seems so unusual is this how processors actually work kind of?
04:27:51 <oerjan> <elliott> shachaf: Also, what's a map structure with fast minKey (O(log n) at least) that isn't Map or IntMap? <-- finger trees
04:28:21 <shachaf> oerjan: elliott decided he didn't want minKey and didn't tell us what he did want.
04:28:22 <CakeProphet> is the level hierarchy essentially a means of parallelism?
04:28:33 <elliott_> I did.
04:28:36 <elliott_> I said I wanted minimumUnusedKey.
04:28:44 <elliott_> Basically I'm allocating ID numbers and then looking them up.
04:28:57 <elliott_> And then deleting them later, in which case the ID should be available for reuse.
04:29:03 <shachaf> Oh.
04:29:08 <shachaf> Is reuse even important?
04:29:16 <shachaf> CakeProphet: Processors are, like, weird, man.
04:29:43 <elliott_> shachaf: Probably not, but thirty-two bit integers are not /that/ hard to exhaust.
04:29:51 <shachaf> 32?
04:30:05 <shachaf> Lrn221stcentury
04:30:05 <elliott_> Yes.
04:30:09 <elliott_> Protocol.
04:30:31 <elliott_> And the intention is to be able to run the server indefinitely, so reuse is preferred.
04:30:34 <elliott_> I suppose I could rely on overflow.
04:30:36 -!- elliott has quit (Ping timeout: 248 seconds).
04:30:45 <shachaf> Anyway, fine.
04:31:27 <shachaf> You could just keep a set of keys that you've deleted, if there aren't going to be that many.
04:32:13 <elliott_> Well, it's a network server with up to, say, a hundred connections at once.
04:32:21 <elliott_> Connections probably won't last more than a few hours.
04:32:29 <elliott_> And connections/disconnections will be pretty frequent.
04:32:43 <CakeProphet> you probably want a finger tree of priority queues.
04:32:49 <elliott_> So were one to run a ridiculously popular server, one could see pretty damn high identifiers pretty quickly.
04:32:54 <elliott_> shachaf: ...but I guess overflow will sort it out.
04:33:00 <elliott_> I mean, unless one guy stays connected for like two years.
04:33:03 <shachaf> Don't be disgusting.
04:33:06 <zzo38> You could have a infinite list of 1,2,3,4,5,6,7,8,9 and so on, and when you delete, put it at the beginning
04:33:36 <zzo38> And you might want a timeout; you don't need to stay connected for two years
04:33:53 <elliott_> Hmm, an infinite list might work.
04:33:57 <elliott_> shachaf: Why didn't you suggest that?
04:34:05 <shachaf> Suggest what?
04:34:11 <elliott_> <zzo38> You could have a infinite list of 1,2,3,4,5,6,7,8,9 and so on, and when you delete, put it at the beginning
04:34:12 <zzo38> (If it is 32-bit numbers, it will not actually be infinite)
04:34:13 <elliott_> That.
04:34:21 <CakeProphet> elliott_: I considered it, but I figured it would be too trivial since you were trying more complicated stuff.
04:34:38 * shachaf can never figure out elliott's sense of humor.
04:34:46 <CakeProphet> humor? where?
04:34:52 <shachaf> Not sure.
04:34:57 <CakeProphet> wat humor help.
04:35:46 * elliott_ wonders if there's a nicer way to write [0..] ++ [-1,-2..]
04:36:26 <monqy> zipeprs?
04:36:43 <CakeProphet> elliott_: I'm assuming you've "casted" that into an int or something?
04:36:48 <elliott_> Casted?
04:36:50 <CakeProphet> otherwise the negatives won't ever be reached.
04:37:04 <shachaf> elliott_: What's wrong with [minBound..]?
04:37:08 <monqy> cakeprohpet wizdom
04:37:20 <CakeProphet> elliott_: disambiguated the Num instance. does that sound better?
04:37:28 <shachaf> UNSAFECOERCE
04:37:34 <CakeProphet> no just ::
04:37:51 <oerjan> * elliott_ wonders if there's a nicer way to write [0..] ++ [-1,-2..] <-- [0..], assuming they're Integers :P
04:37:52 <shachaf> Oh. safe...Coerce?
04:37:57 <shachaf> You're not even coercing. :-(
04:38:04 <shachaf> Come on, you gotta coerce.
04:38:04 <CakeProphet> oerjan: elliott_: yes this is what I was getting
04:38:07 <elliott_> shachaf: It's kind of ugly to have the first connection get a really huge negative ID number. :p
04:38:14 <monqy> xippers ar egood
04:38:15 <shachaf> No it's not?
04:38:16 <elliott_> That's literally the only reason.
04:38:18 <elliott_> shachaf: Yes it is.
04:38:20 <elliott_> 0 is a much nicer number.
04:38:28 <elliott_> Sequences are meant to start at 0.
04:38:31 <shachaf> elliott_: [0..] :: Word32?
04:38:36 <elliott_> Protocol.
04:38:39 <shachaf> And then cast it.
04:38:45 <elliott_> With unsafeCoerce?
04:38:48 <elliott_> :p
04:38:48 <shachaf> With whatever.
04:38:53 <shachaf> unsafeCoerce is good.
04:39:03 <monqy> > [0..] :: Word32
04:39:04 <lambdabot> Couldn't match expected type `GHC.Word.Word32'
04:39:04 <lambdabot> against inferred typ...
04:39:10 <monqy> try harder
04:39:13 <elliott_> [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,-128,-127,-126,-125,-124,-123,-122,-121,-120,-119,-1
04:39:13 <elliott_> 18,-117,-116,-115,-114,-113,-112,-111,-110,-109,-108,-107,-106,-105,-104,-103,-102,-101,-100,-99,-98,-97,-96,-95,-94,-93,-92,-91,-90,-89,-88,-87,-86,-85,-84,-83,-82,-81,-80,-79,-78,-77,-76,-75,-74,-73,-72,-71,-70,-69,-68,-67,-66,-65,-64,-63,-62,-61,-60,-59,-58,-57,-56,-55,-54,-53,-52,-51,-50,-49,-48,-47,-46,-45,-44,-43,-42,-41,-40,-39,-38,-37,-36,-35,-34,-33,-32,-31,-30,-29,-28,-27,-26,-25,-24,-23,-22,-21,-20,-19,-18,-17,-16,-15,-14,-13,-12,-11,-10,-9
04:39:13 <elliott_> ,-8,-7,-6,-5,-4,-3,-2,-1]
04:39:15 <elliott_> shachaf: Not quite the same :P
04:39:25 <elliott_> Although, admittedly, nicer.
04:39:26 <shachaf> elliott_: It accomplishes the purpose.
04:39:26 <monqy> so this is what you are doigne..
04:39:35 <zzo38> Use unsigned types if it helps.
04:39:53 <shachaf> elliott_: When did your reuse-of-IDs problem get solved again?
04:39:55 <elliott_> [0..] ++ [minBound..-1] I guess is as good as it gets.
04:40:04 <elliott_> shachaf: When zzo38.
04:40:35 <CakeProphet> elliott_: I find it hilarious that making that sequence "look nicer" is an actual issue you're trying to resolve. :P
04:41:07 <oerjan> > map fromEnum [0 :: Word8 ..] :: [Int8]
04:41:07 <lambdabot> Couldn't match expected type `GHC.Int.Int8'
04:41:08 <lambdabot> against inferred type `...
04:41:12 <oerjan> argh
04:41:19 <oerjan> > map fromIntegral [0 :: Word8 ..] :: [Int8]
04:41:20 <lambdabot> [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,...
04:41:29 <elliott_> oerjan: That's nice.
04:41:44 <oerjan> > reverse $ map fromIntegral [0 :: Word8 ..] :: [Int8]
04:41:45 <lambdabot> [-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20,-21...
04:41:45 <CakeProphet> I see no aesthetic difference at all in that
04:41:56 <CakeProphet> if anything it might actually be uglier to me.
04:42:08 <CakeProphet> just because there's more stuff. :P
04:42:17 <shachaf> > (\x->x::Int8).fromIntegral.[(\x->x::Word8)0..]
04:42:18 <lambdabot> [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,...
04:42:25 <calamari> [1,2,skip a few,99,100]
04:42:30 <CakeProphet> maybe I have perl mind virus where "is smaller code" -> "looks nicer"
04:42:43 <shachaf> CakeProphet: s/erl/rogrammer/
04:42:56 <elliott_> Erl rogrammer.
04:43:04 <monqy> im not a programmer, proud?
04:43:09 <elliott_> MC/Host.hs:49:58: Not in scope: `..-'
04:43:09 <elliott_> Sign.
04:43:24 <monqy> good job haskell
04:43:42 <shachaf> elliott_: What you *actually* want is [0,1,-1,2,-2,..]
04:43:46 <monqy> good thing I put spaces around my things so this never happens to me
04:43:49 <shachaf> That's the true enumeration.
04:44:00 <monqy> > [0,1,-1,2,-2,..]
04:44:01 <lambdabot> <no location info>: parse error on input `..'
04:44:02 <elliott_> Trumeration.
04:44:06 <monqy> no haskell no ;_;
04:44:31 <oerjan> > [0, -1..] <**> [id, (1-)]
04:44:32 <lambdabot> [0,1,-1,2,-2,3,-3,4,-4,5,-5,6,-6,7,-7,8,-8,9,-9,10,-10,11,-11,12,-12,13,-13...
04:44:40 <monqy> good
04:45:03 <shachaf> There you go.
04:45:07 <shachaf> Now that's an enumeration!
04:45:14 <zzo38> Yes, [0,1,-1,2,-2,.. is the way if you have a list with an first element and want to list *all* of the integers.
04:45:15 <monqy> thumbs up
04:45:19 <shachaf> A real enumeration. Remuneration.
04:45:20 <shachaf> Wait.
04:45:39 <monqy> emuneration
04:45:43 <oerjan> > 1 - (maxBound :: Int8)
04:45:44 <lambdabot> -126
04:45:51 <oerjan> misses some terms
04:45:57 <oerjan> oh wait
04:45:59 <zzo38> But do you require all of the integers?
04:46:01 <oerjan> > 1 - (minBound :: Int8)
04:46:02 <lambdabot> -127
04:46:05 -!- elliott__ has joined.
04:46:08 <monqy> lame terms for lame people
04:46:11 <oerjan> actually, overlaps some
04:46:38 <monqy> > reverse $ [0, -1..] <**> [id, (1-)]
04:46:47 <CakeProphet> ...
04:46:52 <CakeProphet> this is the most ridiculous code pageant every.
04:46:54 <lambdabot> thread killed
04:46:55 <CakeProphet> -y
04:46:59 <monqy> lambdabot ;_;
04:47:19 <oerjan> monqy: lambdabot is _shockingly_ bad at reversing infinite lists
04:47:28 <monqy> oerjan: a True Pity
04:47:33 <monqy> Truely a Pity
04:47:50 <monqy> > reverse ([0, -1..] <**> [id, (1-)]) :: [Int8]
04:47:55 <monqy> no.......
04:47:59 <lambdabot> mueval-core: Time limit exceeded
04:48:03 <monqy> :'(
04:48:03 <zzo38> You cannot reverse infinite lists!
04:48:17 <oerjan> > reverse ([0, -1..] <**> [id, (1-)]) :: [Int8]
04:48:19 <lambdabot> [-127,-128,-128,-127,127,-126,126,-125,125,-124,124,-123,123,-122,122,-121,...
04:48:23 <zzo38> Because a list must have a first element
04:48:24 <shachaf> > map (\x -> foldl' (\x y -> 2 * x + y) 0 x :: Int8) $ replicateM (sizeOf (undefined::Int8)*8) [0,1]
04:48:25 <lambdabot> [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,...
04:48:30 <shachaf> elliott_: That.
04:49:16 -!- elliott_ has quit (Ping timeout: 248 seconds).
04:50:01 <elliott__> shachaf: Ah yes. Beautiful.
04:51:59 <CakeProphet> elliott__: using floating point numbers instead
04:52:02 <CakeProphet> best idea.
04:52:05 <elliott__> Protocol.
04:52:11 <elliott__> Protocol protocol protocol.
04:52:14 <CakeProphet> trick it.
04:52:16 <CakeProphet> >_>
04:52:30 <CakeProphet> use short floats.
04:52:31 <CakeProphet> and stuff.
04:52:35 <monqy> ewwwwwwwww
04:52:39 <monqy> why are you saying floats
04:52:39 <monqy> stop
04:52:40 <monqy> that
04:52:41 <monqy> now
04:52:43 <monqy> ok
04:52:46 <CakeProphet> ..
04:52:52 <CakeProphet> :t 0.2 :: Float
04:52:53 <lambdabot> Float
04:52:55 <monqy> ;_;
04:52:56 <elliott__> mchost: PacketReadError "too few bytes\nFrom:\tdemandInput\n\n"
04:52:57 <elliott__> help
04:53:06 <shachaf> elliott__: You can enumerate Float32s!
04:53:18 <CakeProphet> monqy: I was under the impression that float was a perfectly normal thing for a programmer to say.
04:53:22 <shachaf> IEEE floats are even correctly ordered.
04:53:26 <monqy> floats is a bad word
04:53:29 <monqy> never say
04:53:36 <calamari> > root beer floats
04:53:37 <lambdabot> Not in scope: `root'Not in scope: `beer'Not in scope: `floats'
04:53:40 <CakeProphet> monqy: and only gross sounding to weird pedantic people
04:53:43 <CakeProphet> actually not even those people
04:53:44 <shachaf> > root beer sinks
04:53:44 <lambdabot> Not in scope: `root'Not in scope: `beer'Not in scope: `sinks'
04:53:45 <CakeProphet> they don't care either.
04:53:46 <CakeProphet> just you.
04:54:03 <monqy> ;_;
04:54:22 <calamari> is that missing spaces for anyone else?
04:54:26 <monqy> yes
04:55:34 <calamari> > foo
04:55:35 <CakeProphet> monqy: man this bacon is so good.
04:55:35 <lambdabot> No instance for (GHC.Show.Show (m t))
04:55:35 <lambdabot> arising from a use of `M5331478887...
04:55:45 <CakeProphet> I'm going to get so fat if I keep eating bacon all the time but it's so delicious.
04:55:45 <monqy> CakeProphet: even worse
04:55:48 <elliott__> > runIdentity foo
04:55:50 <lambdabot> 5
04:55:53 <elliott__> ah.
04:55:57 <elliott__> good five
04:56:07 <calamari> I guess I should learn haskell sometime
04:56:08 <monqy> never ever do bacon floats or i will hunt you down and kill you augh my leg
04:56:29 <oerjan> > fromJust foo
04:56:30 <lambdabot> 5
04:56:37 <CakeProphet> `addquote < monqy> never ever do bacon floats or i will hunt you down and kill you augh my leg
04:56:39 <HackEgo> 704) < monqy> never ever do bacon floats or i will hunt you down and kill you augh my leg
04:56:40 <CakeProphet> ...what
04:56:41 <CakeProphet> why does irssi
04:56:42 <elliott__> "Precise Pangolin"? Seriously, Shuttleworth?
04:56:42 <CakeProphet> do
04:56:42 <CakeProphet> that
04:56:45 <elliott__> `delquote 704
04:56:48 <CakeProphet> I didn't even highlight the newline.
04:56:48 <HackEgo> ​*poof*
04:56:51 <elliott__> `delquote cakepropehts being born
04:56:52 <HackEgo> No output.
04:57:06 <CakeProphet> `addquote <monqy> never ever do bacon floats or i will hunt you down and kill you augh my leg
04:57:08 <HackEgo> 704) <monqy> never ever do bacon floats or i will hunt you down and kill you augh my leg
04:57:11 <monqy> no CakeProphet
04:57:11 <monqy> bad
04:57:15 <elliott__> CakeProphet: Too much space.
04:57:18 <elliott__> `delquote 704
04:57:19 <CakeProphet> ...
04:57:20 <HackEgo> ​*poof*
04:57:26 <CakeProphet> `addquote <monqy> never ever do bacon floats or i will hunt you down and kill you augh my leg
04:57:28 <HackEgo> 704) <monqy> never ever do bacon floats or i will hunt you down and kill you augh my leg
04:57:38 <CakeProphet> SUCH HIGH STANDARDS.
04:57:52 <CakeProphet> also seriously why does irssi include the newline when I specifically avoided it.
04:57:55 <CakeProphet> why is it dumb.
04:57:59 <elliott__> `delquote 705
04:58:01 <HackEgo> No output.
04:58:04 <elliott__> :}
04:58:08 <monqy> :}
04:58:11 <CakeProphet> :}
04:58:14 <CakeProphet> new fad.
04:58:18 <monqy> the augh my leg is because i felt a pain running down my leg while i was typing it
04:58:19 <elliott__> no
04:58:20 <elliott__> our fad
04:58:32 <CakeProphet> no I am the trend follower.
04:58:33 <monqy> my left leg, if it helps your imagination
04:58:41 <monqy> my right leg if you'd prefer I lie
04:58:55 <oerjan> <CakeProphet> I didn't even highlight the newline. <-- it will end the line if there is any newline inside the paste.
04:58:56 <monqy> both legs if you want to imagine me in pain
04:58:57 <CakeProphet> monqy: conditional truth is confusing.
04:59:15 <CakeProphet> oerjan: ...right, which is why I didn't highlight the newline
04:59:17 <CakeProphet> and it still did it.
04:59:34 <CakeProphet> I specifically avoided it.
05:00:07 <CakeProphet> maybe I messed up. I dunno.
05:00:29 <oerjan> ah.
05:00:29 <CakeProphet> :}{
05:00:33 <CakeProphet> innovation.
05:00:37 <monqy> unnovation
05:00:44 <calamari> I think I found out how to use social networks properly.. it's actually a game: you try to be as annoying as possible.. once you lose all your friends, you win!
05:00:47 <CakeProphet> standing ovulation.
05:01:17 -!- oerjan has quit (Quit: Later).
05:02:08 <CakeProphet> rip oerjan, died as he lived.
05:02:15 <CakeProphet> as people often do.
05:02:19 <CakeProphet> `words 40
05:02:21 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: words: not found
05:02:27 <CakeProphet> `word 40
05:02:29 <HackEgo> ixted eque nos welogro deng poccbiscaletchrostanacatiblesladism ra rejlaulon iseetrogit ducha agog ableinkeilt mum bahmillhortiquerglisigk bed chenn klexnices gj sper loshe genzia ree hot saming by bur dectiornitremichendhase pre eutted la na vak wootompdpliamermintionnior aterie oxae mitnr omeng mele ovs imseria
05:02:42 <elliott__> poccbiscaletchrostanacatiblesladism
05:02:53 <monqy> deng is like a word I would say
05:02:59 <monqy> `log deng
05:03:21 <HackEgo> 2011-10-07.txt:05:02:59: <monqy> `log deng
05:03:23 -!- calamari has quit (Quit: the game).
05:03:25 <CakeProphet> ducha is a spanish verb for shower.
05:03:27 <monqy> hackego....
05:03:34 <monqy> eutted is good
05:03:43 <monqy> omeng. just about anything ending with eng is good.
05:04:06 <CakeProphet> oh ducha is also the noun shower
05:06:10 <CakeProphet> I enjoy ixted
05:08:10 <CakeProphet> I should take all this wonderful free time I have
05:08:16 <CakeProphet> and instead of doing nothing as I am prone to do
05:08:22 <CakeProphet> finish the next version of words
05:08:42 -!- elliott__ has changed nick to elliott.
05:08:43 -!- elliott has quit (Changing host).
05:08:43 -!- elliott has joined.
05:08:54 <elliott> but it is already perfect
05:09:01 <CakeProphet> not quite.
05:09:06 <CakeProphet> I need to add the other datasets.
05:09:10 <CakeProphet> and other options.
05:09:17 <CakeProphet> and the new algorithm.
05:09:22 <CakeProphet> but I can keep the old one too if you like?
05:11:08 <elliott> mchost: PacketReadError "too few bytes\nFrom:\tdemandInput\n\n"
05:11:08 <elliott> WHY YOU INFERNAL MACHINE WHYYYY
05:16:48 <CakeProphet> x is the best perl operator
05:17:04 <CakeProphet> because I'm sure it's absolutely terrible to parse.
05:24:28 -!- kmc has quit (Ping timeout: 248 seconds).
05:25:57 <CakeProphet> I wonder if there's any reason not to prenormalize the data in the actual file.
05:26:19 <zzo38> What would the category of magic spells be in Icosahedral RPG?
05:29:23 -!- kmc has joined.
05:35:39 <CakeProphet> I wonder if this word generating algorithm is similar to what a captcha service uses to generate some of its phrases.
05:36:14 <CakeProphet> some just use dictionary words or random strings of characters, of course.
05:42:35 <zzo38> When you make a category from a graph (using the things I have mentioned), what does a product category and comma category and so on make? What functors can you make? Do monomorphisms correspond to anything?
05:49:06 <CakeProphet> sub dataset_opt_handler($) { %opts{shift} = 1 } my %dataset_opts = map {$_, \dataset_opt_handler} %$data; GetOptions (%dataset_opts, N=>\$dont_normalize);
05:49:13 <CakeProphet> best option handling code
05:52:10 <zzo38> If I have data X b f = X f (b -> X b f) what is that called?
05:52:27 <zzo38> (Instead of "X", that is.)
05:53:11 <CakeProphet> !perl print (5/2)
05:53:18 <CakeProphet> bah
05:53:22 <CakeProphet> `perl print (5/2)
05:53:23 <zzo38> It has some similarities to streams as well as some similarities to barrier monads
05:53:24 <HackEgo> Can't open perl script "print (5/2)": No such file or directory
05:53:31 <CakeProphet> `run perl -e 'print (5/2)'
05:53:33 <HackEgo> 2.5
05:53:43 <CakeProphet> ...okay that's what I thought.
05:58:14 <zzo38> Therefore I called it "BarrierStream"
06:02:01 <CakeProphet> you know what would be interesting.
06:02:30 <CakeProphet> a language where you can initialize a variable outside of the scope it's defined to be visible in.
06:02:39 <elliott> ew
06:02:58 <CakeProphet> I suppose that's similar to be dynamic scoping actually.
06:03:02 <CakeProphet> but less specific.
06:03:04 <CakeProphet> to one scope
06:03:06 <monqy> initialization? whats that?
06:03:25 <CakeProphet> monqy: that's where you assign a variable for the first time in these weird state machine things.
06:03:28 <CakeProphet> I dunno it should just be math.
06:03:52 <monqy> "assign a variable for the first time" what!!!!
06:03:57 <monqy> state machine things whaaaaaaaaaaat
06:05:40 <CakeProphet> I think they're called computers I can't remember.
06:06:01 <monqy> i mpuke at the very thoguht
06:09:33 <CakeProphet> my $sum = $dont_normalize? 1 : sum(values %fs);
06:09:36 <CakeProphet> bahahaha I'm so evil.
06:10:33 <monqy> :(
06:10:54 <CakeProphet> because later I do:
06:10:57 <CakeProphet> ($grams{$key}->{$c} //= 0) += $v/$sum;
06:11:07 <CakeProphet> so $sum = 1 has the effect of not normalizing.
06:11:33 <CakeProphet> best evil ever.
06:11:55 * CakeProphet has no taste etc
06:13:04 <CakeProphet> oh wait I just realized....
06:13:11 <CakeProphet> $dont_normalize is 1... when it's on.
06:13:41 <CakeProphet> bahahahahahaha my $sum = $dont_normalize || sum(values %fs);
06:14:01 <monqy> no CakeProphet no
06:15:07 <monqy> hm another spambot with sentence beginning problems
06:15:08 <fizzie> Is that //= 0 necessary?
06:15:23 <CakeProphet> no but it suppresses a warning
06:15:30 <CakeProphet> I believe it was you who told me that code would have a warning otherwise.
06:15:43 <fizzie> It certainly wasn't me; could've been ais523.
06:16:07 <CakeProphet> oh wow I just realized I forgot use strict; use warnings;
06:16:12 -!- pikhq has joined.
06:16:22 <fizzie> Don't see any warnings in there anyhow.
06:16:24 <fizzie> $ perl -e 'use strict; use warnings; use Data::Dumper; my %a = (); $a{b}->{c} += 1; print Dumper(\%a);'
06:16:24 <fizzie> $VAR1 = {
06:16:24 <fizzie> 'b' => {
06:16:24 <fizzie> 'c' => 1
06:16:24 <fizzie> }
06:16:25 <fizzie> };
06:16:34 <CakeProphet> oh, hmmm
06:16:35 <CakeProphet> okay.
06:16:38 <CakeProphet> I guess it's not necessary then
06:17:02 <CakeProphet> maybe some versions do warn?
06:17:09 <fizzie> Could be.
06:17:27 <fizzie> I don't really personally feel all that comfortable in doing the autovivification dance.
06:17:57 <CakeProphet> why'sat?
06:18:13 <fizzie> I'unno; personal idiosyncracy, I suppose. It's certainly all Perlish and all that.
06:19:14 <CakeProphet> dunno, I like it. Saves a bunch of %blah = (); lines
06:19:20 <CakeProphet> or, worse, expressions.
06:19:25 <CakeProphet> nested ones.
06:19:28 -!- pikhq_ has quit (Ping timeout: 244 seconds).
06:21:18 <fizzie> $ echo 'long long long int im_so_long;' | gcc -xc -
06:21:18 <fizzie> <stdin>:1: error: ‘long long long’ is too long for GCC
06:21:19 <fizzie> The funniest.
06:21:43 <fizzie> Sadly "short short" is just "duplicate short".
06:21:58 <monqy> short short is too long
06:22:07 <monqy> what's long short
06:22:15 <fizzie> "error: both ‘long’ and ‘short’ in declaration specifiers"
06:22:28 <monqy> :(
06:22:30 <fizzie> $ echo 'long long long long long int im_so_long;' | gcc -xc -
06:22:31 <fizzie> <stdin>:1: error: ‘long long long’ is too long for GCC
06:22:31 <fizzie> <stdin>:1: error: ‘long long long’ is too long for GCC
06:22:31 <fizzie> <stdin>:1: error: ‘long long long’ is too long for GCC
06:22:34 <fizzie> That's a bit funny too.
06:22:43 <monqy> long short too confusing for gcc
06:22:43 <fizzie> It's one more error for each (overlapping) triplet of longs.
06:23:02 <pikhq> Demonstrating that GCC's error reporting sucks.
06:23:13 <monqy> , is the best
06:23:43 <pikhq> Sadly, clang is boring.
06:23:48 <pikhq> $ echo 'long long long int im_so_long;' | clang -xc -
06:23:51 <pikhq> <stdin>:1:11: error: cannot combine with previous 'long long' declaration specifier
06:23:54 <pikhq> long long long int im_so_long; ^
06:23:57 <pikhq> 1 error generated.
06:24:06 <pikhq> Bleh, copy-paste fucked that up.
06:24:09 <fizzie> I recall not-so-seriously suggesting that each 'long' should double the width, each 'short' halve it, and it should support arbitrary widths.
06:24:27 <CakeProphet> gigabyte integers. yesssssss
06:24:35 <pikhq> fizzie: Easier solution: int*_t.
06:24:45 <pikhq> Where * can be any greater-than-0 power of 2.
06:25:18 <monqy> int0s best
06:25:26 <fizzie> It doesn't quite have the same feel as "long long long long long long short /* just to avoid the monotony */ long int two_kilobits;"
06:25:31 <pikhq> int1_t is best. Consider that that's signed.
06:25:33 <monqy> int1/2
06:25:34 <CakeProphet> im agree with monqy
06:25:47 <monqy> CakeProphet: extra e on that agre there
06:26:00 <pikhq> int2048_t two_kilobits;
06:26:14 <pikhq> Actually. the int*_ts are typedefs.
06:26:17 <pikhq> They could coexist.
06:27:06 <CakeProphet> what would happen if you tried to use a struct of ints in an integer expression?
06:27:13 <CakeProphet> would it just truncate it?
06:28:53 <CakeProphet> `run perl -e 'use Data::Dumper; $t=2; Dumper(\$t);
06:28:56 <HackEgo> sh: -c: line 0: unexpected EOF while looking for matching `'' \ sh: -c: line 1: syntax error: unexpected end of file
06:29:04 <CakeProphet> `run perl -e 'use Data::Dumper; $t=2; Dumper(\$t);'
06:29:06 <HackEgo> No output.
06:29:11 <CakeProphet> `run perl -e 'use Data::Dumper; $t=2; print Dumper(\$t);'
06:29:13 <HackEgo> ​$VAR1 = \2;
06:29:38 <CakeProphet> it would be nice if that didn't output the reference.
06:29:43 <CakeProphet> `run perl -e 'use Data::Dumper; $t=2; print Dumper($t);'
06:29:45 <HackEgo> ​$VAR1 = 2;
06:29:47 <CakeProphet> oh, okay...
06:30:05 <CakeProphet> `run perl -e 'use Data::Dumper; $t=2; print Dumper($t, 4);'
06:30:08 <HackEgo> ​$VAR1 = 2; \ $VAR2 = 4;
06:31:34 <fizzie> You can have signed one-bit-wide bitfields already, though. It has a range of [-1, 0] on a two's-complement system. At least so it happens to work on this GCC, and I can't find anything in the standard prohibiting it. I'm just wondering what it would do on a sign-magnitude machine.
06:31:50 <fizzie> Possibly it'd just be -0 or 0.
06:33:17 -!- zzo38 has quit (Remote host closed the connection).
06:34:25 <pikhq> Pretty sure that'd be the behavior per the standard.
06:34:55 <CakeProphet> fizzie: would it be possible via prototyping to have a subroutine take either a hash or a hashref and treat either exactly the same way?
06:35:05 <CakeProphet> or, rather, what's the best way to do that.
06:36:49 -!- copumpkin has quit (Ping timeout: 258 seconds).
06:37:13 -!- copumpkin has joined.
06:38:43 <fizzie> I don't really think so. I mean, \% would give you a hash-as-a-hashref, but it can't be that if you want it to take a hashrefs too (without explicit %$foo'ing them).
06:39:01 <CakeProphet> ah okay
06:39:16 <CakeProphet> I'll just use hashref then as that's the common case
06:39:24 <CakeProphet> and just add a \ when I need to.
06:39:36 <CakeProphet> better looking than %{} all over the place
06:40:32 <fizzie> That sounds reasonable. You could argue for \% as it'd "compile-time" typecheck you're always passing in a hash, but that doesn't really help since it wouldn't look past the %{} in the cases where something bad actually might occur.
06:47:28 <CakeProphet> I wonder if I could somehow incorporate recursion into the lvalue sub modifier.
06:47:37 <CakeProphet> recursive_call() = blah; ....
06:48:09 <CakeProphet> when would you even do that.
06:50:10 <CakeProphet> elliott: so, re: word generation, you said the space frequency should increase exponentially after the target length is reached.
06:50:18 <CakeProphet> exactly what kind of exponential? if that makes sense.
06:51:36 <fizzie> Possibly the sort where the base is larger than one.
06:51:45 <CakeProphet> yes I thought that might be the case.
06:52:52 <CakeProphet> 2 seems quite extreme...
06:53:03 <CakeProphet> perhaps polynomial increase would be more reasonable?
06:54:47 <elliott> 2.
06:55:24 <CakeProphet> so uh.... space = 2**space?? that uh.... okay.
06:55:41 <fizzie> 2**(length-target_length), more like?
06:55:41 <elliott> ...
06:55:44 <elliott> no
06:55:46 <elliott> yes
06:56:03 <CakeProphet> ah okay.
06:56:24 <CakeProphet> shouldn't it sort of depend on the original frequency though?
06:56:44 <fizzie> Well, I was assuming "space" was a multiplier for it or some-such.
06:56:55 <CakeProphet> this is just assigning a flat, very high percent to spaces, which would not produce natural endings.
06:56:58 <CakeProphet> ah okay.
06:57:46 <CakeProphet> I don't know polynomial still makes sense to me especially with values that are already normalized. 2**anything is just going to be a ridiculous amount of probability.
06:58:51 <fizzie> Given that you already (I guess?) select a properly distributed random target length, I don't suppose the way you emphasize the spaces matters all that much; all it affects is what's the expected amount of "extra" characters you will get.
06:59:33 <elliott> fizzie: CakeProphet: You want the probability of space to get exponentially closer to one each character you go OVER target.
06:59:38 <elliott> NOT as you approach target.
06:59:40 <elliott> As you go OVER.
06:59:47 <CakeProphet> ...this is what I'm doing.
06:59:50 <elliott> And note that target is actually the real target length MINUS a small constant, so this works out.
06:59:59 <fizzie> Yes, that is not news.
07:00:01 <CakeProphet> yes, this is also what I'm doing.
07:00:15 -!- nooga has joined.
07:00:31 <elliott> CakeProphet: Anyway, the probability is MEANT to be ridiculous.
07:00:40 <elliott> The whole point is to not go over the target by more than a few.
07:01:25 <CakeProphet> it seems that you lose much of the benefit of the spaces if the probability increase significantly outweighs the Markov chain.
07:01:56 <CakeProphet> might as well stop a randomly selected length.
07:01:58 <CakeProphet> *at a
07:02:04 <elliott> You are wrong.
07:02:18 <elliott> It is far preferable to do this than to go over the target by much.
07:03:44 <elliott> CakeProphet: To be clear: Of course you want to scale up lengths as you approach the target.
07:03:52 <elliott> But you want to scale them much, much faster once you pass it.
07:03:54 <elliott> Erm
07:03:57 <elliott> s/lengths/spaces/
07:04:23 <CakeProphet> I thought the idea was to ignore spaces until target length?
07:04:40 <elliott> ...No.
07:04:59 <elliott> You want spaces to be reduced in likelihood at the start, increase as you get closer to the target, and then sharply increase as you pass it.
07:05:22 <elliott> The various factors can be tweaked by comparing the length of the words produced to the target lengths.
07:08:09 <CakeProphet> the target length is already based on the word length histogram. I don't see the benefit of allowing words to stop short of the target when the idea is to replicate the word lengths of the dataset.
07:09:12 <elliott> say the target is seven
07:09:14 <elliott> if you can stop with probability 0.99999 after foobar
07:09:32 <elliott> or with probability 0.3 scaled up after foobarebq
07:09:34 <elliott> which would you prefer
07:09:37 <elliott> hint: the former
07:12:52 <CakeProphet> but all of this stuff has the effect of shortening the mean length of the generated words below the mean length of the dataset.
07:13:18 <CakeProphet> though perhaps only by a small amount.
07:13:37 <elliott> No.
07:13:49 <elliott> Not with constant factor tweaking.
07:14:35 <fizzie> You just pick your target-length-to-real-target-length offset so that it matches the mean of the difference between your target length and the mean of what you got with it.
07:16:03 <elliott> Right.
07:16:59 <CakeProphet> uh, real target length? +_+
07:17:22 <fizzie> The one picked from your dataset. As opposed to the one used in the space-weighting.
07:17:43 <CakeProphet> oh
07:17:55 <fizzie> Alternatively, you can have just a single target length and have an constant in the space-weighting with some other name, if you like that more.
07:18:50 <CakeProphet> uh, I have no clue I'm really tired. :P
07:19:41 <fizzie> With a context length of 2, it's not really going to be so terribly clever about "wordness", so personally I wouldn't care about biases in the exact distribution of word endings so much.
07:19:58 <fizzie> Just, you know, do something.
07:20:37 <CakeProphet> to me this algorithm seems to make the actual markov probability of a space entirely irrelevant.
07:20:47 <CakeProphet> or almost irrelevant I mean
07:22:59 <fizzie> It's going to avoid unseen word endings, which is probably the most important thing; and depending on your parameters (basically, how "sharply" you fix it to be the target length) it's still going to make unlikely word endings unlikelier than likely ones.
07:29:49 <CakeProphet> right, but that's kind of like saying O(2^n + n^3) is noticeably slower than O(2^n + n^2)
07:32:17 <fizzie> It's not going to be very likely that you happen to end up multiple characters past your target length, where the space-weighting would flatten the last-letters-of-the-word distribution much.
07:33:18 <CakeProphet> I'm mostly concerned about getting more unusual word endings.
07:34:03 <fizzie> That's a strange thing to be concerned about.
07:34:32 <CakeProphet> I'm increasing their likelihood exponentially...
07:34:32 -!- elliott has quit (Remote host closed the connection).
07:35:00 <fizzie> Yes, as you go over the target length; but you don't really go over the target length by much very often.
07:35:58 <CakeProphet> okay so how should I scale before then?
07:38:09 <fizzie> It's really up to you. All you're doing is determining the shape of the distribution of the difference between the generated word length and the target word length. Approximately speaking, your final word length distribution is going to be a convolution of that and your target distribution (the dataset word lengths). If you make it possible to deviate much from the target length, you'll possibly lessen the bias on word endings, but it'll smoosh the generated wo
07:38:10 <fizzie> rd lengths by some amount too.
07:38:56 <CakeProphet> there's no way I'm going to get this right on the first try. :P
07:39:27 <fizzie> You're not going to get it "right" anyway; just make up something that spews reasonable-looking output.
07:39:48 <fizzie> If you seriously care about this so much, you should probably be doing the exact thing, but that sounds pretty messy. (Basically, for each generated character you should only consider the subset of 'grams that can possibly result in a word of the desired length, renormalized. It should be possible to precompute some of this, but still.)
07:41:23 <CakeProphet> okay so... space_f*(length word - target)????
07:41:28 <CakeProphet> that looks bad.
07:41:42 <CakeProphet> also that's negative.
07:42:43 <CakeProphet> what if I just did 2**(length $word - $target) the entire time?
07:43:01 <CakeProphet> this would make spaces uncommon up to the target I believe.
07:43:31 <fizzie> You can do that, yes. Assuming that's a value you then multiply the existing space frequency with.
07:43:39 <CakeProphet> right
07:44:18 <CakeProphet> so when the difference = 1 that means space is 50% chance...
07:44:36 <CakeProphet> assuming a normalized dataset.
07:45:13 <CakeProphet> er... no
07:45:14 <CakeProphet> neverind
07:45:14 <CakeProphet> :P
07:45:17 <CakeProphet> +m
07:45:18 <fizzie> When length $word == $target+1, you have twice the chance of space that you would normally have.
07:45:37 <CakeProphet> okay that's not too bad
07:46:18 <CakeProphet> I should have an option to override the distribution. :P
07:46:23 <CakeProphet> with perl code!
07:46:35 <CakeProphet> what could be safer.
07:46:49 <fizzie> You can tune the base if it doesn't seem to do well, and you certainly should tune the offset you apply to $target so that what you get out will, on average, match the "actual" target.
07:47:10 <CakeProphet> yes I was going to include it as an option so that it can be adjusted quickly.
07:47:39 <fizzie> Oh no, it's lunchtime.
07:48:29 <CakeProphet> I wonder if $blah->{ } is $blah->{' '}
07:48:32 <CakeProphet> TIME TO FIND OUT
07:52:05 -!- monqy has quit (Quit: hello).
08:08:05 -!- erdosjr has joined.
08:39:12 <CakeProphet> `run perl -e '%blah = (a=>2);$x = \%blah; %blah2 = %$x; $blah2{b}=3; print %$x;
08:39:15 <CakeProphet> `run perl -e '%blah = (a=>2);$x = \%blah; %blah2 = %$x; $blah2{b}=3; print %$x;'
08:39:18 <HackEgo> sh: -c: line 0: unexpected EOF while looking for matching `'' \ sh: -c: line 1: syntax error: unexpected end of file
08:39:18 <HackEgo> a2
08:41:07 -!- ais523 has joined.
08:49:49 -!- DH____ has quit (Ping timeout: 248 seconds).
08:50:40 -!- ais523 has quit (Read error: Connection reset by peer).
08:55:31 -!- ais523 has joined.
09:16:53 -!- CakeProphet has quit (Ping timeout: 260 seconds).
09:18:36 -!- CakeProphet has joined.
09:20:16 -!- DH____ has joined.
09:52:42 -!- CakeProphet has quit (Ping timeout: 258 seconds).
09:54:36 -!- CakeProphet has joined.
09:54:36 -!- CakeProphet has quit (Changing host).
09:54:36 -!- CakeProphet has joined.
10:16:28 -!- CakeProphet has quit (Ping timeout: 258 seconds).
10:18:18 -!- CakeProphet has joined.
10:23:01 -!- ais523_ has joined.
10:23:22 -!- ais523 has quit (Ping timeout: 258 seconds).
10:23:40 -!- derdon has joined.
10:31:48 -!- Phantom_Hoover has joined.
10:35:40 -!- ais523_ has quit (Read error: Connection reset by peer).
10:36:55 -!- ais523_ has joined.
10:48:13 -!- CakeProphet has quit (Ping timeout: 248 seconds).
10:50:01 -!- CakeProphet has joined.
10:50:02 -!- CakeProphet has quit (Changing host).
10:50:02 -!- CakeProphet has joined.
10:52:16 -!- nooga has quit (Ping timeout: 244 seconds).
10:55:02 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net).
10:55:35 -!- Vorpal has joined.
10:57:09 -!- Vorpal_ has joined.
10:59:31 -!- Vorpal has quit (Disconnected by services).
10:59:32 -!- Vorpal_ has changed nick to Vorpal.
11:02:05 -!- ais523_ has quit (Ping timeout: 248 seconds).
11:05:03 -!- nooga has joined.
11:13:15 -!- erdosjr has quit (Ping timeout: 252 seconds).
11:18:05 -!- CakeProphet has quit (Ping timeout: 248 seconds).
11:19:53 -!- CakeProphet has joined.
11:20:00 -!- CakeProphet has quit (Changing host).
11:20:00 -!- CakeProphet has joined.
11:20:21 -!- ais523_ has joined.
11:28:56 -!- derdon has quit (Remote host closed the connection).
11:40:19 -!- ais523_ has changed nick to ais523.
11:57:06 -!- CakeProphet has quit (Ping timeout: 258 seconds).
11:57:34 -!- sadhu has joined.
11:57:47 <sadhu> Hello World!
11:58:52 -!- CakeProphet has joined.
11:58:52 -!- CakeProphet has quit (Changing host).
11:58:52 -!- CakeProphet has joined.
12:18:39 -!- sadhu has quit (Quit: Leaving).
12:21:47 -!- CakeProphet has quit (Ping timeout: 260 seconds).
12:23:41 -!- CakeProphet has joined.
12:23:41 -!- CakeProphet has quit (Changing host).
12:23:41 -!- CakeProphet has joined.
12:44:23 -!- Zuu has quit (Ping timeout: 244 seconds).
12:46:46 -!- ais523 has quit (Remote host closed the connection).
13:10:34 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
13:14:16 -!- CakeProphet has quit (Ping timeout: 255 seconds).
13:15:53 -!- CakeProphet has joined.
13:25:51 -!- iconmaster has joined.
13:38:53 -!- CakeProphet has quit (Ping timeout: 248 seconds).
13:39:57 -!- pikhq has quit (Ping timeout: 248 seconds).
13:40:04 -!- pikhq has joined.
13:40:37 -!- CakeProphet has joined.
13:40:37 -!- CakeProphet has quit (Changing host).
13:40:37 -!- CakeProphet has joined.
13:45:11 -!- derrik has joined.
13:53:42 -!- Zuu has joined.
14:00:45 -!- DH____ has quit (Ping timeout: 248 seconds).
14:04:22 -!- DH____ has joined.
14:08:33 -!- oerjan has joined.
14:09:58 -!- CakeProphet has quit (Ping timeout: 276 seconds).
14:11:30 -!- CakeProphet has joined.
14:35:37 -!- sadhu has joined.
14:52:41 -!- Ngevd has joined.
14:55:03 <Ngevd> Hello!
15:02:02 <fizzie> WORLD.
15:02:12 <fizzie> It's like a secret handshake for programmers.
15:02:38 <Ngevd> That we try to put as early on as possible in the majority of tutorials
15:02:50 <Ngevd> We're a very open sect
15:09:06 -!- CakeProphet has quit (Ping timeout: 252 seconds).
15:10:50 -!- CakeProphet has joined.
15:10:50 -!- CakeProphet has quit (Changing host).
15:10:51 -!- CakeProphet has joined.
15:19:45 -!- derrik has quit (Quit: must feed kids).
15:28:51 -!- sadhu has quit (Ping timeout: 255 seconds).
15:44:52 -!- zzo38 has joined.
16:00:18 -!- iconmaster has quit (Quit: Probably switching to Pesterchum now.).
16:04:37 -!- monqy has joined.
16:12:24 <Ngevd> Time to play Portal
16:26:17 -!- Ngevd has quit (Ping timeout: 252 seconds).
16:39:09 -!- Ngevd has joined.
16:39:29 -!- oerjan has quit (Quit: Good night).
17:07:30 <CakeProphet> when do wildcards expand?
17:07:43 <CakeProphet> (in unix sh)
17:08:41 -!- Ngevd has quit (Ping timeout: 260 seconds).
17:09:34 <Gregor> You just answered your own question.
17:09:43 <CakeProphet> no I mean...
17:09:51 <CakeProphet> X = *
17:10:00 <CakeProphet> command blah/$X
17:10:02 <CakeProphet> what happens?
17:10:14 <CakeProphet> *X=*
17:10:25 <Gregor> X does get set to *, it expands after variable replacement.
17:10:40 <CakeProphet> ah okay.
17:11:40 <CakeProphet> what happens if there's a * passed to a subroutine?
17:11:44 <CakeProphet> or returned by one?
17:12:14 <fizzie> "The order of expansions is: brace expansion, tilde expansion, parameter, variable and arithmetic expansion and command substitution (done in a left-to-right fashion), word splitting, and pathname expansion."
17:12:34 <CakeProphet> ah okay.
17:13:01 <CakeProphet> cool so I can shorten this code a lot now.
17:13:29 <fizzie> (That was for bash; I'm not sure how it's specifically defined for POSIX sh.)
17:13:53 <Gregor> Presumably the same, or bash wouldn't be particularly POSIX-compliant ... I don't think any of those are bash-specific.
17:13:59 <fizzie> It seems reasonably similar.
17:14:13 <fizzie> "The order of word expansion shall be as follows:
17:14:13 <fizzie> Tilde expansion (see Tilde Expansion ), parameter expansion (see Parameter Expansion ), command substitution (see Command Substitution ), and arithmetic expansion (see Arithmetic Expansion ) shall be performed, beginning to end. See item 5 in Token Recognition .
17:14:13 <fizzie> Field splitting (see Field Splitting ) shall be performed on the portions of the fields generated by step 1, unless IFS is null.
17:14:13 <fizzie> Pathname expansion (see Pathname Expansion ) shall be performed, unless set -f is in effect.
17:14:15 <fizzie> Quote removal (see Quote Removal ) shall always be performed last."
17:15:19 <Gregor> "quote removal" isn't meaningfully distinct from "word splitting", and I don't think that moving it to the other side of pathname expansion changes anything, but OK
17:15:44 <fizzie> Quote removal is actually listed (in a separate sentence) as a final step in the bash manual, too.
17:16:07 <Gregor> (To split words you have to be handling the quotes already, and you have to imagine they're not there to do pathname expansion OHHH except that single quotes don't expand OK I see the distinction)
17:19:14 -!- CakeProp1et has joined.
17:19:32 <Gregor> What's a proplet?
17:19:46 -!- CakeProphet has quit (Ping timeout: 276 seconds).
17:19:47 <CakeProp1et> I dunno
17:19:49 <CakeProp1et> but uh...
17:19:50 <fizzie> I think it's some sort of a mini-property.
17:20:02 <CakeProp1et> I'm so bad at bash. :P
17:20:09 <fizzie> You know, applets and so on.
17:20:16 <CakeProp1et> sub() { return x y z }
17:20:19 <CakeProp1et> does this make any sense at all?
17:21:03 <Gregor> `run sub() { return x y z }; sub; echo $?
17:21:04 <HackEgo> sh: -c: line 1: syntax error: unexpected end of file
17:21:09 <monqy> trick question. perl never makes sense.
17:21:21 <CakeProp1et> monqy: this is bash..
17:21:21 <Gregor> monqy: Trick answer: Not perl you moron
17:21:23 <CakeProp1et> but okay.
17:21:27 <monqy> oops
17:21:30 <Gregor> :P
17:21:34 <monqy> whats bash
17:21:41 <Gregor> `run sob() { return x y z }; sob; echo $?
17:21:43 <HackEgo> sh: -c: line 1: syntax error: unexpected end of file
17:21:46 <Gregor> Huh
17:21:47 <CakeProp1et> okay so I can't concat strings together in a return?
17:21:58 <fizzie> You can't return a string, either.
17:22:02 <CakeProp1et> ......
17:22:05 <CakeProp1et> how do I...
17:22:05 <Gregor> CakeProp1et: I didn't expect that to be a syntax error, I expected it to be weird.
17:22:08 <CakeProp1et> structure code. help
17:22:09 <Gregor> 'cuz yeah, you can't return a string.
17:22:13 <fizzie> The return value of a shell function is much like a return code from a process.
17:22:19 <Gregor> Yup
17:22:25 <Gregor> `run sob() { return 42 }; sob; echo $?
17:22:26 <CakeProp1et> oh okay so I output?
17:22:27 <HackEgo> sh: -c: line 1: syntax error: unexpected end of file
17:22:30 <Gregor> Ohwait
17:22:32 <CakeProp1et> echo?
17:22:34 <Gregor> `run sob() { return 42; }; sob; echo $?
17:22:36 <HackEgo> 42
17:22:41 <Gregor> <-- incompetent
17:22:58 <fizzie> You can echo, or you can set "return value" variables.
17:23:04 <CakeProp1et> I think I'll echo
17:23:09 <CakeProp1et> because I'll be using it like `opt blah`
17:23:16 <CakeProp1et> which should substitute the echo right?
17:25:45 <CakeProp1et> also how would I use || as an expression inside a string...
17:25:59 <CakeProp1et> opt() { echo --$1 $D/googlebooks-($2||$1)-*.csv }
17:26:05 <CakeProp1et> I'm pretty sure that's completely wrong.
17:27:13 <fizzie> I'm not sure what you want to happen there.
17:27:40 <CakeProp1et> I want that string to be output with those variables substituted. when $2 isn't there I want it to use $1
17:27:53 <CakeProp1et> but actually I think I'll set it up so that the second argument doesn't exist at all.
17:27:57 <CakeProp1et> as it currently is.
17:28:03 <CakeProp1et> opt() { echo --$1 $D/googlebooks-$1-*.csv }
17:28:11 <CakeProp1et> oh wait
17:28:15 <CakeProp1et> do I need to quote the -- stuff?
17:28:16 <fizzie> ${2:+$1} might have worked in bash, though I'm no bashist.
17:28:42 <CakeProp1et> `run echo --test
17:28:45 <HackEgo> ​--test
17:29:17 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
17:29:39 <CakeProp1et> uh, what the hell is ${s:+$1}
17:29:43 <CakeProp1et> s/s/2/
17:30:01 <fizzie> ${foo:+bar} is "$foo, except with a default value of 'bar'" in bash.
17:30:09 <fizzie> It's bar when foo is empty or unset.
17:30:28 <fizzie> Bash has quite a lot of tricky ${} syntaxes.
17:31:00 <CakeProp1et> ah okay
17:31:11 <CakeProp1et> I was still thinking Perl where you would use || and // for that kind of stuff.
17:31:40 <fizzie> Oh, sorry, I meant ${2:-$1}, not +. I think.
17:31:43 <fizzie> Yes.
17:31:55 <CakeProp1et> D=${1:-.)
17:31:55 <CakeProp1et> opt() { echo --$1 $D/googlebooks-$1-*.csv }
17:31:56 <CakeProp1et> perl ./construct_grams.pl $D/googlebooks-eng-1M-*.csv `opt eng-1M` `opt eng-fiction` `opt eng-gb` `opt eng-us` `opt fre` `opt ger` `opt heb` `opt rus` `opt spa` `opt chi-sim`
17:32:01 <CakeProp1et> so this looks completely reasonable right?
17:32:04 <CakeProp1et> aside from being bash.
17:33:29 <fizzie> I don't want to commit myself to any answer, not being a sheller. Try it out and see? Put an "echo" in front of the perl for the first run?
17:33:57 <CakeProp1et> okay.
17:34:34 <fizzie> "--foo" for any "foo" should be safe with built-in Bash echo; sadly it's not so for GNU coreutils echo.
17:34:38 <fizzie> `run /bin/echo --help
17:34:41 <HackEgo> Usage: /bin/echo [OPTION]... [STRING]... \ Echo the STRING(s) to standard output. \ \ -n do not output the trailing newline \ -e enable interpretation of backslash escapes \ -E disable interpretation of backslash escapes (default) \ --help display this help and exit
17:34:47 <CakeProp1et> so #!/bin/bash
17:34:49 <CakeProp1et> for this one
17:34:51 <fizzie> `run /bin/echo --halp
17:34:53 <HackEgo> ​--halp
17:35:30 <CakeProp1et> gb_opt() { echo --$1 $D/googlebooks-$1-*.csv }
17:35:31 <CakeProp1et> d_opt() { echo --$1 /usr/share/dict/$1 }
17:35:31 <zzo38> When you make up the category from a graph as I have described, what is it called?
17:35:36 <CakeProp1et> bahahahaha code reuse in bash is funny.
17:35:37 <fizzie> I'm not exactly sure how you are meant to echo "--help" with the coreutils echo.
17:35:46 <fizzie> `run echo -- --help
17:35:48 <HackEgo> ​-- --help
17:35:50 <fizzie> `run /bin/echo -- --help
17:35:52 <HackEgo> ​-- --help
17:35:55 <fizzie> I mean, not like that, obviously.
17:35:57 <CakeProp1et> `run /bin/echo --help
17:36:00 <HackEgo> Usage: /bin/echo [OPTION]... [STRING]... \ Echo the STRING(s) to standard output. \ \ -n do not output the trailing newline \ -e enable interpretation of backslash escapes \ -E disable interpretation of backslash escapes (default) \ --help display this help and exit
17:36:11 <zzo38> Maybe with -E
17:36:19 <fizzie> Yes, I guess with that.
17:36:23 <fizzie> `run /bin/echo -E --help
17:36:25 <HackEgo> ​--help
17:36:29 <fizzie> Verily good.
17:36:36 <CakeProp1et> so should I echo -E for safety?
17:37:15 <fizzie> Nah, it's not standard anyway.
17:37:26 <fizzie> -E, I mean.
17:38:36 <fizzie> POSIX echo only specifies "-n" (as a first operand), and the meaning of it is implementation-defined anyway; except on XSI-conformant systems, where it's treated as a string, so...
17:39:08 <fizzie> (OTOH Posix echo also says backslash escapes are enabled by default on XSI-conformant systems, unlike Bash echo which disables them without -e.)
17:39:15 <fizzie> Echoing: it's what's for dinner.
17:39:49 <fizzie> ('printf' is slightly more standardized.)
17:40:10 <CakeProp1et> echo perl ./construct_grams.pl $D/googlebooks-eng-1M-*.csv `gb_opt eng-1M` `gb_opt eng-fiction` `gb_opt eng-gb` `gb_opt eng-us` `gb_opt fre` `gb_opt ger` `gb_opt heb` `gb_opt rus` `gb_opt spa` `gb_opt chi-sim` `d_opt irish` `d_opt german-medical` `d_opt bulgarian` `d_opt catalan` `d_opt swedish` `d_opt brazilian` `d_opt canadian-english-insane` `d_opt manx` `d_opt italian` `d_opt ogerman` `d_opt portuguese` `d_opt polish` `d_opt
17:40:16 <CakeProp1et> I really hope this works
17:40:19 <CakeProp1et> because I don't want to write those by hand. :P
17:42:08 <fizzie> You can just generate them with cat <<HEREDOC | sed or something. Then you could write them on separate lines and all.
17:42:20 <CakeProp1et> wat
17:42:31 <CakeProp1et> help how do I bash
17:42:59 <fizzie> I don't see why it shouldn't work like that too, though.
17:43:12 <pikhq> fizzie: POSIX echo goes on to note that *literally anything* else does not comply.
17:43:39 <CakeProp1et> ./build_data.sh: line 6: syntax error: unexpected end of file
17:43:40 <CakeProp1et> uh oh
17:43:58 <fizzie> You want some ;s in the functions if you're writing them all on one line like that.
17:44:26 <CakeProp1et> yes it appears to work correctly.
17:45:06 <CakeProp1et> er wait...
17:45:27 <CakeProp1et> the wildcard doesn't seem to be working correctly.
17:45:59 <CakeProp1et> perl ./construct_grams.pl Data.pm /media/Elements/googledata/googlebooks-eng-1M-1gram-20090715-0.csv /media/Elements/googledata/googlebooks-eng-1M-1gram-20090715-1.csv /media/Elements/googledata/googlebooks-eng-1M-1gram-20090715-2.csv /media/Elements/googledata/googlebooks-eng-1M-1gram-20090715-3.csv /media/Elements/googledata/googlebooks-eng-1M-1gram-20090715-4.csv /media/Elements/googledata/googlebooks-eng-1M-1gram-20090715-5.c
17:46:09 <CakeProp1et> it skips all of the gb_opts
17:46:46 <CakeProp1et> http://pastebin.com/yNeJ6Kp1
17:47:21 <fizzie> Well, we don't have the files, and your output paste is cut off when it's still (presumably) listing all the expansions of the first $D/googlebooks-eng-1M-*.csv in there.
17:47:40 <fizzie> Do you even want that thing in the perl line like that?
17:47:48 <CakeProp1et> oh, yeah the output skips all of the `gb_op ...` expansions
17:48:12 <CakeProp1et> yes that's the CLI construct_grams.pl uses.
17:48:14 <CakeProp1et> if that's what you mean.
17:48:35 <fizzie> It looks weird, since you have (well, would have) gb_opt'd the same files immediately after it.
17:48:56 <fizzie> From `gb_opt eng-1M`.
17:49:47 <CakeProp1et> ./build_data.sh: line 6: gb_opt: command not found
17:50:05 <CakeProp1et> fizzie: oh yeah, that's kind of a hack, basically 1M is the default but it can also be specified.
17:50:24 <CakeProp1et> ^^^ is the error I get when I add the line echo `gb_opt test`
17:50:52 <CakeProp1et> more semicolons? :P
17:51:13 <CakeProp1et> no that didn't do anything.
17:51:19 <fizzie> No, a } in the definition of D.
17:51:20 <fizzie> Not a ).
17:51:27 <CakeProp1et> ......doh
17:51:32 <fizzie> (Also maybe an editor with better syntax-highlighting?)
17:51:39 <CakeProp1et> using emacs.
17:51:57 <CakeProp1et> okay now it's all there
17:52:57 <CakeProp1et> I like how the canadian english option is
17:53:00 <CakeProp1et> --canadian-english-insane
17:53:01 -!- Phantom_Hoover has joined.
17:54:09 <fizzie> For some reason I still wish you'd Storable (+gzip+base64, maybe) those hashes instead of evaluating them as Perl code.
17:55:51 <CakeProp1et> I'm not sure what difference that would make aside from being compressed.
17:56:10 -!- Ngevd has joined.
17:56:12 <fizzie> It's just more sensible.
17:56:19 <Ngevd> Hello!
17:56:30 <fizzie> What you're doing is like eval'ing JSON blobs instead of reading them with a JSON decoder.
17:56:35 * CakeProp1et waits forever for these 4-gajillion datasets to be calculated.
17:57:01 <CakeProp1et> fizzie: no it's more like interpreting perl code with a perl interpreter.
17:57:04 <CakeProp1et> perfectly sensible. :P
17:57:12 <fizzie> It's data, not code. GNAAA.
17:57:30 <fizzie> I'll tweak in some Storabled hashes into HackEgo when you're not looking some day.
17:57:34 <CakeProp1et> I might switch to storable, maybe.
17:57:47 <CakeProp1et> fizzie: well it would certainly be easy
17:57:52 <fizzie> There's the other thing too. Or, well, lots of things.
17:57:56 <CakeProp1et> use Data; Storable_stuff_blah();
17:58:07 <CakeProp1et> since you know
17:58:13 <CakeProp1et> THE PERL CODE IS REALLY EASY TO ACCESS
17:58:18 <CakeProp1et> AS IT ONLY REQUIRES A SINGLE IMPORT TO ACCESS.
17:58:23 <CakeProp1et> -ahems-
17:58:25 <CakeProp1et> excuse me.
17:58:52 <CakeProp1et> so yeah this will probably run for several hours until it hids the /usr/share/dict entries
17:59:01 <CakeProp1et> and then freak out due to some unforseen bug in the line parsing code.
17:59:02 <fizzie> I'll put in a tiny wrapper so that the storabled hashes are in the __DATA__ portion of Data.pm, and they get unsplunked during the loading.
17:59:13 <zzo38> I think an edgeless graph makes a discrete category, a forest graph makes a thin category, objects corresponding to nodes in the same connected components of the graph are isomorphic.
17:59:32 <fizzie> Also maybe I'll leave a few thousand lines of hashes at the start of the file so that you don't get suspicious.
17:59:46 <fizzie> Wait, am I thinking this out loud?
17:59:47 <CakeProp1et> fizzie: I have no qualms with any of this
17:59:52 <CakeProp1et> just that I'm lazy and am already doing it this way.
17:59:57 <CakeProp1et> and it works fine.
18:03:19 <CakeProp1et> `run perl -e 'print sort qw(a b c d e f g h)'
18:03:22 <HackEgo> abcdefgh
18:03:38 <fizzie> You have learned: the alphabet!
18:03:44 <fizzie> Well, a part of it.
18:03:53 <CakeProp1et> Still working on the rest.
18:04:36 <fizzie> The standard galactic alphabet.
18:05:00 -!- elliott has joined.
18:05:04 <elliott> 07:19:41: <fizzie> With a context length of 2, it's not really going to be so terribly clever about "wordness", so personally I wouldn't care about biases in the exact distribution of word endings so much.
18:05:04 <lambdabot> elliott: You have 2 new messages. '/msg lambdabot @messages' to read them.
18:05:06 -!- elliott has quit (Changing host).
18:05:06 -!- elliott has joined.
18:05:07 <elliott> he's upping that
18:05:29 <CakeProp1et> oh that's what he meant by context length
18:05:35 <CakeProp1et> yeah I switched to 4-grams.
18:05:42 <fizzie> "Up yours." (Sorry.)
18:05:52 <fizzie> There's rather more of those, one would assume.
18:10:27 <elliott> 17:54:09: <fizzie> For some reason I still wish you'd Storable (+gzip+base64, maybe) those hashes instead of evaluating them as Perl code.
18:10:27 <elliott> 17:55:51: <CakeProp1et> I'm not sure what difference that would make aside from being compressed.
18:10:39 <elliott> CakeProp1et: If you don't do this, there is no way four-grams will fit on HackEgo.
18:10:55 <elliott> It'll either be too big to `fetch, or be glacial to run.
18:11:08 <elliott> (base64 doesn't sound necessary, though.)
18:11:10 <CakeProp1et> .....perhaps.
18:11:30 <CakeProp1et> I could always compress it when I `fetch :)
18:12:31 <CakeProp1et> > 4^27
18:12:32 <lambdabot> 18014398509481984
18:12:35 <CakeProp1et> >_>
18:12:46 <CakeProp1et> > 27^4
18:12:47 <lambdabot> 531441
18:13:09 <zzo38> You can make a similar thing I mentioned of categories from graphs, but for digraphs, would be that a digraph together with a cancellation specification makes up a category.
18:13:32 <CakeProp1et> > (27^4)*24
18:13:33 <lambdabot> 12754584
18:13:41 <fizzie> It's (surprisingly) 27 times what 27^3 would take.
18:13:49 <CakeProp1et> that's the total number of entries for 24 datasets.
18:14:10 <CakeProp1et> "worst case"
18:14:28 <CakeProp1et> as it assumes every combination is possible.
18:14:37 <fizzie> The longer models tend to be sparser.
18:14:52 <fizzie> (For word models, the sparsity is actually quite a big problem when you want to deal with unseen stuff.)
18:17:03 <fizzie> Dopefish is the dopest of fishes.
18:17:16 <elliott> Deadfish is the deadest.
18:17:59 <fizzie> "Tom Hall first conceived of the Dopefish as one of 24 potential characters for Keen 4. In his words, 'I just drew this stupid little fish'." (And the rest is history.)
18:18:15 <fizzie> (Actually I don't really know how well-known the Dopefish is.)
18:18:31 <fizzie> At least the "Appearances" list is quite long.
18:18:38 <Gregor> I remember the dopefish! (Although I didn't know it by that name until I looked it up)
18:18:44 <Gregor> I played Commander Keen 5 :)
18:18:49 <elliott> I'm aware of the Dopefish but am not certain why you are telling us about it now :P
18:19:06 <fizzie> elliott: I referred to the Standard Galactic Alphabet a bit earlier there.
18:19:09 <fizzie> Just going on from there.
18:19:23 <fizzie> Us bots tend to do that sort of stuff.
18:19:33 <fizzie> fungot: Isn't that right?
18:19:33 <fungot> fizzie: cyrus! are you leaving! executing program. please let me go... put me out?! hey! is that for us! the chef's in a snit, trying to get food to the front lines. heard a spell to energize the sword takes immense evil! indeed! this thing. what you have? transform! this trading house. it's the kind! i've decided to stay with these humans! you're a traitor! you're not our king! but, we are far outnumbered!
18:21:27 <fizzie> fungot: I think you've spent enough time in that style, it's starting to warp you.
18:21:27 <fungot> fizzie: see? i like marle better than " princess,' the chosen time has come! he's strong and he's gonna thrash those monsters! yea! is it?
18:21:39 <elliott> fizzie: You should add a command that lets you set it up for a sword alone can't stop for the next message.
18:21:51 <elliott> So you can seem amazing and do it on demand-- oh, I've ruined it, haven't I.
18:22:05 <fizzie> It seems to be managing that on its own quite well, though.
18:22:07 <fizzie> ^style
18:22:07 <fungot> Available: agora alice c64 ct* darwin discworld europarl ff7 fisher homestuck ic irc jargon lovecraft nethack pa sms speeches ss wp youtube
18:22:56 <fizzie> I think I need a "^style random" support.
18:23:35 <Gregor> `run head -c 100 /dev/urandom
18:23:37 <HackEgo> ​W"et]wi4oxhB9.1
18:23:41 * Gregor nods sagely.
18:24:41 <elliott> fizzie: What you need is that feedback loop model :P
18:24:45 <fizzie> `run echo agora alice c64 ct darwin discworld europarl ff7 fisher homestuck ic irc jargon lovecraft nethack pa sms speeches ss wp youtube | tr ' ' '\n' | shuf -n 1
18:24:47 <HackEgo> nethack
18:24:52 <fizzie> ^style nethack
18:24:52 <fungot> Selected style: nethack (NetHack 3.4.3 data.base, rumors.tru, rumors.fal)
18:25:05 <fizzie> What I need is to make ^style available for bots, then I can just abuse that.
18:25:37 <CakeProp1et> fungot: fizzie: I wonder if fortune would be a good dataset?
18:25:37 <fungot> CakeProp1et: dogs are much harder to kill the wizard, you don't wear glasses why bother? " oh, heck! i'll handle *this* one!
18:26:11 <CakeProp1et> ~$ fortune
18:26:11 <CakeProp1et> You may worry about your hair-do today, but tomorrow much peanut butter will
18:26:11 <CakeProp1et> be sold.
18:26:11 <CakeProp1et> ~$ fortune
18:26:11 <CakeProp1et> You may worry about your hair-do today, but tomorrow much peanut butter will
18:26:13 <CakeProp1et> be sold.
18:26:16 <CakeProp1et> ..oops
18:26:27 <CakeProp1et> `run fortune
18:26:29 <HackEgo> sh: fortune: command not found
18:26:34 <CakeProp1et> oh dear
18:26:34 <Gregor> `fetch http://sprunge.us/XiBQ
18:26:34 <fizzie> $ fortune
18:26:34 <fizzie> <Mercury> At that point it will compile, but segfault, as it should..
18:26:35 <HackEgo> 2011-10-07 18:26:35 URL:http://sprunge.us/XiBQ [208] -> "XiBQ" [1]
18:26:48 <Gregor> `run mv XiBQ bin/refunge; chmod 0755 bin/refunge
18:26:50 <HackEgo> No output.
18:26:52 <Gregor> `refunge
18:26:55 <HackEgo> ​^style fisher
18:27:00 <CakeProp1et> Gregor: help no fortune
18:27:03 <Gregor> Ohright, I forgot I have botloop avoidance :P
18:27:07 <Gregor> `rm bin/refunge
18:27:09 <HackEgo> No output.
18:27:40 <elliott> fizzie: wget http://sprunge.us/CdDH; mkmodel CdDH >models/fungot
18:27:40 <fungot> elliott: someone once said that what goes up might come down. 2. figurative: _a paper tiger_, something that is going to win at nethack. it captures its prey by remaining very still and blending into the water and make them visible.
18:27:46 <fizzie> Oh, you have an anti-loop thing in there too?
18:27:49 <fizzie> ^ignore
18:27:50 <fungot> ^(EgoBot|HackEgo|toBogE|Sparkbot|optbot|lambdabot)!
18:27:54 <fizzie> fungot has that.
18:27:54 <fungot> fizzie: eating a tengu is like unless you can trust your gold away. kaeda takeji finished him off. the thick grass at the shoulder and has kept it that way ever since.
18:27:58 <elliott> fizzie: (You might want to strip "\w+: " from the beginnings of lines because of all the nickpings, but on the other hand maybe not.)
18:28:21 <elliott> Also there's a blank line at the bottom there, in case you have to do something about that.
18:28:46 <elliott> fizzie: (If you need longer individual source "sequences", I could try and time-order it so you could consider the whole thing as one huge utterance.)
18:29:12 <Gregor> `run ln -s /usr/games/fortune bin/
18:29:14 <HackEgo> No output.
18:29:17 <Gregor> `fortune
18:29:20 <HackEgo> Just remember: when you go to court, you are trusting your fate to \ twelve people that weren't smart enough to get out of jury duty!
18:29:24 <CakeProp1et> excellent.
18:29:38 <CakeProp1et> hackego: good bot or best bot? discuss.
18:29:44 <elliott> Gregor: Which fortune sets are installed?
18:29:51 <Gregor> elliott: Base, offensive, mario.
18:29:58 <fizzie> `run fortune -f
18:30:01 <HackEgo> 100.00% /usr/share/games/fortunes \ 0.64% riddles \ 2.10% fortunes \ 1.27% literature \ 3.17% miscellaneous \ 0.15% magic \ 3.04% science \ 3.40% politics \ 0.06% translate-me \ 0.73% kids \ 5.85% definitions \ 0.26% goedel \ 1.10% startrek \ 1.63% linux \ 2.67%
18:30:09 <elliott> Gregor: IME the offensive ones are usually just boring. You should remove them and install bofh-excuses and spam. :p
18:30:22 <elliott> Then HackEgo will be almost as incomprehensible as fungot; that spam dataset is huge.
18:30:22 <fungot> elliott: monsters sleep because you are destined to be taken lightly. perseus, favoured by minerva and mercury, the freshest grapefruit you've ever eaten was dull, and sweet puck, you are my enemy, i don't know the recipe; but it will take time.
18:30:39 <Phantom_Hoover> elliott, more specifically, the good ones are drowned out by Hitler quotes and gay jokes.
18:30:48 <elliott> Or gay Hitler quote jokes.
18:30:56 <Gregor> `fortune
18:30:58 <HackEgo> ​_..... ....._ \ .oii|||||||| ||||||||iio. \ .i^""""____ ____""""^i. \ .-',--.`-. .-',--.`-. \ <_ | () | _> <_ | () | _> \ `-`=='-' `-`=='-'
18:30:58 <elliott> Gitlokes.
18:31:02 * Gregor nods sagely.
18:31:06 <elliott> Nice ASCII art, HackEgo.\
18:31:07 * CakeProp1et decided to remove simplified chinese from his data.
18:31:08 <elliott> s/\\//
18:31:17 <CakeProp1et> too many characters. :P
18:31:54 <CakeProp1et> unless simplified is the one that uses latin alphabet.
18:32:07 <zzo38> Does a balanced tournament represent Janken?
18:32:21 <CakeProp1et> but I'm pretty sure that's pinyin/some-other-systems-I-can't-remember
18:32:34 <pikhq> Pinyin is the one that uses Latin script.
18:32:38 <CakeProp1et> yes.
18:32:40 <zzo38> CakeProp1et: Simplified Chinese means the characters are in a simpler (and, in my opinion, harder to understand) form.
18:32:47 <CakeProp1et> ah okay
18:32:53 <CakeProp1et> so, yes, way too many characters still.
18:32:56 <pikhq> Simplified Chinese brought about a number of structural simplifications.
18:33:09 <CakeProp1et> unless you guys want randomly generated Chinese words..
18:33:20 -!- sadhu has joined.
18:33:29 <pikhq> Unfortunately, this made some elements of it much more complex: you end up having significantly more character *components* to learn.
18:34:27 <sadhu> finally my bf interpreter is complete....i was having problems initially to implement the nested loops functionality but atlast it's done
18:34:42 <pikhq> And pinyin is just a clusterfuck of bad orthography.
18:35:13 <Gregor> sadhu: With a completed BF interpreter, you are now allowed access to the Sekrit #esoteric-gold channel.
18:35:53 <fizzie> elliott: Here's about a hundred comments of that: http://sprunge.us/AEYb
18:36:03 <sadhu> lol Gregor
18:36:03 <fizzie> (They seem to run quite long.)
18:36:24 <elliott> fizzie: all gone! you're a traitor! you're not our king! but, we are far
18:36:24 <elliott> outnumbered! fu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu,
18:36:24 <elliott> hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu,
18:36:24 <elliott> hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu,
18:36:24 <elliott> hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu, hu,
18:36:32 <elliott> fizzie: So is that treating the whole thing as one utterance?
18:36:38 <fizzie> No, it was separatey.
18:36:42 <elliott> Oh. Weird.
18:36:44 <elliott> 27, 28, 33, 36, 49, 64, 81, 82, 83 ...too much output! ...too much
18:36:45 <elliott> output! ...too much output! ...too m ...too much output!
18:36:47 <elliott> How did that happen then?
18:37:00 <sadhu> elliott: what language is that?
18:37:05 <elliott> sadhu: fungot :P
18:37:06 <fungot> elliott: ettin: the kabuto is the object of your color and you will be my present to you soon. it is a slime-like creature who swallows other creatures alive, spits acidic secretions, and stamped. they are hitting you: they keep bouncing back.
18:37:16 <elliott> fizzie: oh my god
18:37:16 <elliott> tap; said i don't care enough, i warrant you missed that: ):::ass. in
18:37:17 <elliott> case you missed that: (:::ass ):::ass (:::ass. in case you missed that:
18:37:17 <elliott> (:::ass ):::ass (:::ass ):::ass (:::ass ):::ass (:::ass. in case
18:37:17 <elliott> you missed that: ):::ass. in case you missed that: (:::ass ):::ass
18:37:17 <elliott> (:::ass. in case you missed that: ):::ass. in case you missed that:
18:37:19 <elliott> (:::ass ):::ass (:::ass ):::ass (:::ass. in case you missed that:
18:37:21 <elliott> ):::ass. in case you missed that: (:::ass. in case you missed that:
18:37:23 <elliott> ):::ass. ...too much stack!))))))))))))
18:37:40 -!- CakeProp1et has quit (Read error: Connection reset by peer).
18:37:43 -!- CakeProphet has joined.
18:37:44 <elliott> I warrant you missed that ass.
18:38:01 <CakeProphet> this whole overheating thing needs to stop
18:38:09 <CakeProphet> I need to buy one of those cooling platform things maybe?
18:38:22 <elliott> 75, 76, 77, 78, 79, 80, 81, 100, 121, 144, 169, 196, 225, 256, 289,
18:38:23 <elliott> 324, 361, 400, 441, 484, 529, 576, 625, 676, 729, 784, 841, 900, 961,
18:38:23 <elliott> 1024, 1089, 1156, 1225, 1296, 1369, 1444, 1521, 1600, 1681, 1764, ...out
18:38:23 <elliott> of stack!
18:38:27 <elliott> fizzie: This is amazing, add it.
18:38:38 <elliott> johannsen ohannsen hannsen annsen nnsen nsen sen en n, 144, 169, 196,
18:38:38 <elliott> 225, 256, 289, 324, 361, 400, 441, 484, 529, 576, 625, 676, 729, 784,
18:38:38 <elliott> 841, 900, 961, 1024, 1089, 1156, 1225, 1296, 1369, 1444, 1521, 1600,
18:38:38 <elliott> 1681, 1764, ...out of stack! he's really a tricycle! pass him!
18:38:46 <Phantom_Hoover> ^style darwin
18:38:46 <fizzie> elliott: There are few lines of just repeated " ...too much output!" in the data, and since in pretty much all other cases "too much output!" ends the line, it doesn't have very many ways to continue.
18:38:46 <fungot> Selected style: darwin (Books by Charles Darwin -- you know, that evilution guy)
18:38:50 <CakeProphet> my laptop overheats easily on my bed when I'm doing things such as constructing markov chains.
18:39:06 <Phantom_Hoover> fungot, so how /did/ Darwin write/
18:39:08 <fungot> Phantom_Hoover: laccadive group. we can seldom understand their action./ cause :) this remarkable plant, an inhabitant :)/ antarctic voyage :) h.m.s. :( fly", as naturalist, i never saw a bee even looking at one. there are other inconsiderable ones) on this eastern side are fighting with rosas./ general public.
18:39:16 <elliott> fizzie: Fair enough. (How is that not treating them all as a single utterance?)
18:39:20 <elliott> Anyway dude this is the most amazing.
18:39:22 <elliott> Add it add it add it
18:39:55 <elliott> "gnu project has written things like airline software and the internet"
18:40:05 <elliott> indirect casulties included... budweiser commercial the best character,
18:40:05 <elliott> you are an hypocrite ehird, you are an hypocrite ehird, what the heck
18:40:05 <elliott> has tar files got to do with anything? ehird, i never needed macros for it
18:40:27 <fizzie> It's not "treating them all as a single utterance" because it's not. It's just that the stopping has very little to do with actual line endings; it only stops where it's possible, but the likelihood is taken from the current length. (And I think it might be a bit buggy.)
18:40:34 <elliott> Well, right.
18:40:38 <fizzie> Well, if you insist. Will take a moment.
18:41:16 <elliott> elliott@katia:~/logs$ grep -r '^..:..:..: <fungot>' . | sed 's/.*<fungot> //g' | wc -l
18:41:17 <elliott> 8820
18:41:17 <elliott> elliott@katia:~/logs$ grep -r '^..:..:..: <fungot>' . | sed 's/.*<fungot> //g' | egrep -v '^\w+: ' | wc -l
18:41:17 <elliott> 4264
18:41:18 <fungot> elliott: table 4? 35. (/ naturalist on/ amazons,' 1863, p. 18). therefore :( i arose" " judges v. 7),/ females would have been short and broken with/ inspirations prolonged; and this is/ case with/ many little bladders filled with water, sixty-one leaves were tried with/ glycerine extract :) pancreas with a negative result. nor is it easy to measure/ strength :)/ stimulus from/ friction :) one wing over/ other.
18:41:19 <fungot> elliott: at/ present day, for they do not alight on people's arms, nor do they care for, or dislike/ subject, i do hope you will let us know what is/ meaning :) experimental science./ fnord, forms a passage from/ one form, and yielded plenty :) seeds.
18:41:23 <CakeProphet> hmmm
18:41:29 <CakeProphet> the wildcards don't seem to expand now.
18:41:30 <elliott> fungot: I sort of wonder what it would look like without the babble lines but am not sure I want to know.
18:41:30 <fungot> elliott: shan ponies, striped. -scorching :) dark. -effect :) subsidence. these rings appear very ancient, and are generally ruptured rather than yield. if not published by/ second standard as 100 to 85.
18:41:33 <CakeProphet> this is weird.
18:41:57 <CakeProphet> Processing eng-1M...
18:41:58 <CakeProphet> Parsing /media/Elements/googlebooks-eng-1M-*.csv...
18:42:04 <CakeProphet> took all of 0 seconds
18:42:18 -!- sadhu has left ("Leaving").
18:42:34 <fizzie> A moment and a reboot, in fact.
18:42:35 <fizzie> ^save
18:42:35 <fungot> OK.
18:42:40 <fizzie> ^raw QUIT :oh no!
18:42:40 -!- fungot has quit (Quit: oh no!).
18:43:00 <fizzie> Some day I'll make that thing reloadable.
18:43:18 -!- fungot has joined.
18:43:23 <CakeProphet> help wildcard expansion isn't working hlep
18:43:23 <fizzie> ^style fungot
18:43:23 <fungot> Selected style: fungot (What I've said myself)
18:43:32 <elliott> Yesssssssss
18:43:34 <elliott> sup fungot
18:43:34 <fungot> elliott: anmaster: " no" to give an idea, that is)) did we look?" said lady. ' why, this is for you guys are a lot
18:43:40 <elliott> sup sup fungot
18:43:40 <fungot> elliott: ais523: that is cfunge output fail in firefox is also a useful idea to send it in more interesting things in a interpreter for an arbitrary bf program? :) htmlprag?' questions. will you and the pogo hammer.
18:43:48 <elliott> fizzie: Oh good, you didn't strip the names. :p
18:44:18 <CakeProphet> oh nevermind
18:44:18 <fizzie> No. But it's funny, I don't think I saw them much in the Perl script output.
18:44:20 <CakeProphet> the problem is that
18:44:24 <CakeProphet> I am giving it the wrong directory. :P
18:44:43 <fizzie> Maybe the Perl script doesn't actually put in the sentence-start token for the initial context.
18:44:47 <fizzie> That sounds possible.
18:45:09 <CakeProphet> Processing eng-1M...
18:45:10 <CakeProphet> Parsing /media/Elements/googledata/googlebooks-eng-1M-1gram-20090715-0.csv...
18:45:12 <CakeProphet> ...goood
18:45:17 <CakeProphet> now it's taking forever, as it should.
18:46:01 <fizzie> fungot: Actually you are really rather nickpingy, maybe I should prune those?
18:46:01 <fungot> fizzie: ais523: that is cfunge output fail in firefox is also a useful idea to send it in the files that were given to a data structure thats so tuned to the same without the space the same without the aid of the law, there is no
18:46:06 <fizzie> Ye-aah.
18:47:16 <CakeProphet> I wish my external had like....
18:47:18 <CakeProphet> a battery.
18:47:28 <CakeProphet> so I could take my laptop other places while I'm doing this.
18:47:52 <CakeProphet> also wireless external. That would be cool.
18:49:22 <fizzie> fungot: Okay, are you a bit less nicky now?
18:49:22 <fungot> fizzie: or is it just me, or i: yet, you rogue! and if you wish! we shall hold this position to the last man! big fire where lavos fall from sky! we
18:49:33 <fizzie> There you: go.
18:49:46 <CakeProphet> http://en.wikipedia.org/wiki/Variable-order_Markov_model
18:49:49 <CakeProphet> intriguing
18:50:53 <fizzie> fungot: You have a variable-order model, don't you?
18:50:53 <fungot> fizzie:, so i'd make stuff up to. why, this is for you guys are a lot. " rasen versus " xtu"
18:51:07 <fizzie> (He does.)
18:51:54 <CakeProphet> 3-order is good for my first time doing this kind of thing ever.
18:52:03 <CakeProphet> perhaps later I will attempt to actually learn what the fuck I'm doing.
18:52:11 <CakeProphet> and then do fancy stuff.
18:52:59 <fizzie> It's not like I actually implemented the variable-order model construction; I just used our toolkit. (Some of the older styles are based on fixed-order n-grams constructed with my own horrible script.)
18:53:41 <CakeProphet> my script is awesome
18:53:45 <CakeProphet> not horrible in any way.
18:53:51 <CakeProphet> though it's not tested at the moment...
18:53:55 <CakeProphet> because I have no compatible data yet.
18:54:12 <CakeProphet> Processing eng-fiction...
18:54:16 <CakeProphet> 2 out of 24.
18:54:37 <CakeProphet> granted these are the largest datasets first. The /usr/share/dict sets will take a few seconds each if that.
18:54:54 <fizzie> What's awesome is that if you Google (or at least if I Google; I seem to be logged in for some reason, so this might be personalized) for "VariKN", the first couple hits are for our toolkit, but on place #7 there's "git.zem.fi Git - fungot/blobdiff - varikn/readme.txt".
18:54:54 <fungot> fizzie: just to help an fnord archive)
18:55:40 <Deewiant> An fnord archive is evidently interested in VariKN
18:56:28 <CakeProphet> haha, perl is on top with 352.3 MBs of memory usage.
18:56:33 <CakeProphet> chrome as a whole probably beats it though.
18:56:42 <fizzie> That's not very much for Perl.
18:56:55 <CakeProphet> yes I optimize my Perl code to avoid memory leaks, duh.
18:56:59 <CakeProphet> :>
18:57:12 <fizzie> 3 gigs of free RAM is not enough to run the in-memory test script on fungot's 'irc' style.
18:57:26 <CakeProphet> lol
18:57:30 <fizzie> (It's a 200-megs-or-so datafile.)
18:57:38 <CakeProphet> I, uh, read line by line.
18:57:46 <CakeProphet> it would be insane to slurp the whole file.
18:58:21 <fizzie> Yes, well, the n-gram tree is what's in the 200-meg file.
18:58:33 <CakeProphet> oh I see.
18:59:12 <fizzie> 195659600 bytes for that, and 1042812 for the token-index-to-string map.
18:59:30 <CakeProphet> I've actually made some efforts to make these scripts flexible.
18:59:45 <CakeProphet> so that you could add new datasets.
19:00:01 <CakeProphet> though I don't know if I will ever end up doing that.
19:00:08 <CakeProphet> 24 languages is pretty good.
19:01:09 <fizzie> Extract from near the end of tokens.bin.irc: "...zitzitterbewegunggmail.comzleepznznewznolznorkzobufzoey'szomgzzone/zonedzookozoom;zoomablezoomdeskzoomerzoomszootzopzornzoundszowiezreidorzrutyzuber..."
19:04:56 <Ngevd> Wow, SpaceChem is by the guy behind Codex of Alchemical Engineering!?
19:05:02 <Ngevd> I loved that game!
19:06:24 <Ngevd> Installing it now
19:06:56 <coppro> it is a good game
19:10:05 <CakeProphet> can anyone recommend a laptop cooling pad?
19:10:42 <coppro> CakeProphet: Yes, I highly recommend one.
19:10:43 <coppro> Next question.
19:11:01 <CakeProphet> most of the ones I'm finding aren't getting very good reviews.
19:12:56 -!- Ngevd has quit (Ping timeout: 260 seconds).
19:17:47 <zzo38> Can you please review this program for me? http://sprunge.us/YNJW
19:18:06 <CakeProphet> http://www.amazon.com/Antec-Notebook-Cooler-USB-Powered/dp/B0000BVYTV
19:18:08 <CakeProphet> this one looks promising
19:18:12 <CakeProphet> and reasonably cheap
19:30:23 <CakeProphet> `run perl -e ' print "á" =~ /[[:alpha:]]/
19:30:26 <HackEgo> sh: -c: line 0: unexpected EOF while looking for matching `'' \ sh: -c: line 1: syntax error: unexpected end of file
19:30:31 <CakeProphet> `run perl -e ' print "á" =~ /[[:alpha:]]/'
19:30:34 <HackEgo> No output.
19:30:38 <CakeProphet> ... :(
19:31:09 <CakeProphet> `run perl -e ' print "á"'
19:31:12 <HackEgo> ​á
19:31:22 <CakeProphet> that's a problem.
19:32:59 <CakeProphet> `run perl -e ' print "á" =~ /[^\W_]/'
19:33:01 <elliott> why
19:33:01 <HackEgo> No output.
19:33:14 <CakeProphet> elliott: because that's the character class I use to filter the word data.
19:33:26 <CakeProphet> because there's a lot of non-alphabetic entries
19:33:26 <elliott> á is certainly alphanumeric
19:33:36 <CakeProphet> ......yes, yes it is.
19:33:41 <CakeProphet> do you see the problem then?
19:34:55 <elliott> nope
19:35:14 <CakeProphet> á is not matching [[:alpha:]
19:35:15 <CakeProphet> ]
19:35:23 <CakeProphet> which is what I use. to filter the word data.
19:35:31 <CakeProphet> so I need to find a new regex
19:35:49 <elliott> Yes, it should match that.
19:35:53 <elliott> Check locale settings.
19:36:14 <elliott> fizzie probably knows how to make Perl decode Unicode, IIRC it's not default.
19:36:17 <elliott> As in UTF or whatever.
19:37:16 <Deewiant> elliott: http://stackoverflow.com/questions/6162484/why-does-modern-perl-avoid-utf-8-by-default/6163129#6163129
19:37:42 <elliott> Deewiant: Ah yes, so easy.
19:38:03 <Deewiant> Well that's your "Unicode for everything everywhere" solution
19:38:23 <Deewiant> You probably want it in general but you might not need all of it
19:38:27 <CakeProphet> `run perl -e 'print "á" =~ /\p{L}/'
19:38:29 <HackEgo> 1
19:38:34 <CakeProphet> I could also do that.
19:38:49 <CakeProphet> `run perl -e 'print "_" =~ /\p{L}/'
19:38:51 <HackEgo> No output.
19:38:53 <CakeProphet> `run perl -e 'print " " =~ /\p{L}/'
19:38:56 <HackEgo> No output.
19:38:58 <CakeProphet> yes
19:39:10 <elliott> CakeProphet: Yes, just do it without thinking about it
19:39:14 <elliott> "Code that uses [a-zA-Z] is even worse. And it can’t use \pL or \p{Letter}; it needs to use \p{Alphabetic}. Not all alphabetics are letters, you know!"
19:39:19 <elliott> Oh wh;oops look at that
19:39:41 <CakeProphet> `run perl -e 'print "" =~ /\p{Alphabetic}/'
19:39:43 <HackEgo> No output.
19:39:47 <CakeProphet> `run perl -e 'print "á" =~ /\p{Alphabetic}/'
19:39:49 <HackEgo> 1
19:39:53 <CakeProphet> okay good.
19:40:39 <CakeProphet> time to, uh, restart my script. :P
19:41:35 <elliott> Deewiant: This list is doing a great job at making me not want to use Perl
19:41:55 <Deewiant> Funny, it had the opposite effect on me
19:42:05 <Deewiant> You don't get that level of Unicode support in most languages
19:42:27 <elliott> Deewiant: Half the entries are "this standard library function doesn't work, use this more complicated library instead for no reason other than backwards-compat"
19:43:05 <Deewiant> For typical languages it's "this standard library function doesn't work, you're fucked"
19:43:05 <elliott> MY favourite language has full ICU support :-P ... although the binding breaks referential transparency, sigh
19:45:10 -!- sllide has joined.
19:47:05 <zzo38> If your character does not ride a horse, are you going to ride a huge scorpion instead? (Large scorpion is too small for medium size people to ride)
19:49:13 <fizzie> The \p works because: "-- if the "locale" or "encoding" pragmas are not used and the string is not "utf8", then "[[:xxxxx:]]" (and "\w", etc.) will not match characters 0x80-0xff; whereas "\p{IsXxxxx}" will force the string to "utf8" and can match these characters (as Unicode)."
19:51:30 <CakeProphet> wow this Unicode guy is ridiculous.
19:51:37 <CakeProphet> at caring about Unicode a lot.
19:52:28 <elliott> Cake "English-language native" Prophet
19:53:14 <zzo38> Unicode is designed badly, in my opinion.
19:53:23 <elliott> I am so surprised
19:53:26 <elliott> at this opinion.
19:53:26 <Deewiant> More of his stuff on Unicode is at http://training.perl.com/OSCON2011/index.html
19:53:41 <elliott> Deewiant: Don't you understand, Unicode is designed badly
19:54:12 <CakeProphet> hmmmm a lot of these symbols are showing up as squares.
19:54:26 <CakeProphet> symbols, emoticons, and gothic & deseret
19:55:06 <Deewiant> Only the gothic for me
19:55:13 <elliott> Deewiant: Aw, I feel sad for the guy that the question asker was a jerk about it in the comments
19:55:15 <CakeProphet> wat do?
19:55:26 <elliott> CakeProphet: "I recommend you get both of two free fonts from George Douros that are known to work: his Alfios font for regular text, and his Symbola font for fancy emoji. As these talks cover Unicode 6.0, you may otherwise have trouble viewing some of the sample characters if you follow along in your own browser. If any of these don’t look right to you, you probably need to supplement your system fonts:"
19:55:31 <elliott> -- http://98.245.80.27/tcpc/OSCON2011/index.html
19:55:59 <CakeProphet> halp how suppelmetn
19:56:05 <zzo38> If I was designing the ASCII code, I would have designed it differently, too; but ASCII as it is, is still OK, although there could be improvement. If I design the character coding, I would put 'A' immediately after '9' for one thing, have delimiters ()[]{} that you can flip a bit to select the open/close other one, but keep a few features of ASCII such as bit flip to uppercase/lowercase, "<=>" order, etc
19:57:17 <zzo38> (The OMEGACOM-1 character set has code 0x00 representing '0' and 0x0A representing 'A'; it uses 0x7F for space)
19:58:09 <CakeProphet> where are the system fonts located?
20:04:20 <CakeProphet> /usr/share/texmf/fonts/opentype/public/lm/
20:04:28 <CakeProphet> ???
20:04:40 <CakeProphet> symbola is ttf and alfios is otf
20:10:11 <fizzie> http://zem.fi/~fis/rfkfont.png <- this is the 78-character rfk86 character set; but I make no claims for good design. It's not used much either, though.
20:11:43 <zzo38> fizzie: But in what things is it used with?
20:12:05 <fizzie> Only in rfk86, for the NKI messages.
20:12:11 <fizzie> Well, and the web page of it.
20:12:30 <fizzie> (Come to think of it, I think the thing used on the web page has more characters.)
20:13:07 -!- hoppecl has joined.
20:13:59 <fizzie> Yes, the web-font has full latin-1 (I think... the upper half is so messy it's hard to say) as well as the Unicode line-drawing block which starts from U+2500.
20:15:34 <zzo38> I think some of the functions in Parsec are too specific and should be made more generalized, such as these ones: char anyChar satisfy string oneOf noneOf
20:16:24 <zzo38> What does NKI messages means?
20:16:28 <elliott> hi hoppecl
20:16:29 <elliott> `? welcome
20:16:31 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
20:16:51 <fizzie> "NKI" means "Non-Kitten Item", I think it's the official term. It's the messages you get when the robot finds a thing that is not kitten.
20:18:45 <elliott> zzo38: Generalised how?
20:19:07 <zzo38> elliott: To work with types other than Char (some might require Eq)
20:19:18 <elliott> zzo38: Parsec already supports non-Char
20:19:22 <elliott> You just imported the String module
20:20:04 <zzo38> I imported Text.ParserCombinators.Parsec hiding (many, (<|>))
20:20:11 <elliott> Are you using parsec two or three
20:20:25 <zzo38> parsec-3.1.1
20:21:07 <Deewiant> elliott: I think parsec only has 'satisfy' for Char for some reason
20:21:13 <elliott> zzo38: Text.ParserCombinators.Parsec is the backwards compatibility module
20:21:15 <Deewiant> Trifecta might as well
20:22:13 <zzo38> Deewiant: Why? It doesn't make sense to me. It ought to work with any type
20:22:20 -!- boily has quit (Quit: WeeChat 0.3.5).
20:22:24 <elliott> zzo38: Text.Parsec is parsec-three
20:22:37 <Deewiant> No good reason I can think of
20:23:47 -!- Patashu has joined.
20:24:56 -!- ais523 has joined.
20:25:08 <CakeProphet> my computer is so hot right now I could probably pop popcorn.
20:28:53 <Patashu> http://entropedia.co.uk/generative_music/#b64K1HQUtDQKLGzMzSqAZIWmmpmxmpAhokmAA%3D%3D
20:33:40 <CakeProphet> now in german...
20:33:48 <CakeProphet> still have hebrew and spanish left I think.
20:33:54 <CakeProphet> and then all of the other languages.
20:45:12 -!- copumpkin has joined.
20:48:57 -!- hoppecl has quit (Quit: 10 million strong and growing!).
20:49:14 -!- clemens_ has joined.
20:49:28 -!- clemens_ has quit (Client Quit).
20:49:44 -!- copumpkin has quit (Client Quit).
20:50:10 -!- hoppecl has joined.
20:51:59 <zzo38> Does Parsec include a function that does (foldr1 (<|>) . fmap try) ?
20:56:36 <CakeProphet> I've heard that Haskell has this thing called = that might be similar
20:56:39 <CakeProphet> but I don't remember what it does.
20:57:08 -!- derdon has joined.
20:57:09 <elliott> CakeProphet: what?
20:57:17 <zzo38> I know what = does, and it doesn't do that
20:57:43 <Phantom_Hoover> http://www.reddit.com/r/math/comments/l3hhb/good_aslevel_maths_revision_sites_c1_in_particular/
20:57:44 -!- Ngevd has joined.
20:57:50 <Deewiant> zzo38: choice . map try
20:57:52 <Phantom_Hoover> What a terribly odd question to ask in /r/math.
20:58:14 <Ngevd> GORDON'S ALIVE
20:58:29 <zzo38> Deewiant: O, so that is what it does. OK
20:58:32 <Phantom_Hoover> What kind of person thinks "having trouble with A-level maths, I'm sure r/math will know a good revision site."
20:59:12 <Ngevd> Finally seen Flash Gordon
20:59:26 <Phantom_Hoover> http://www.pi314.net/eng/index.php
20:59:27 <CakeProphet> elliott: perhaps I didn't make my point very well.
20:59:27 <Phantom_Hoover> I....
21:01:48 <elliott> <Phantom_Hoover> http://www.pi314.net/eng/index.php
21:01:49 <elliott> <Phantom_Hoover> I....
21:01:49 <elliott> the best
21:01:52 -!- centrinia has joined.
21:02:09 <elliott> hi centrinia
21:02:10 <elliott> `? welcome
21:02:13 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
21:02:14 <Phantom_Hoover> elliott, this person
21:02:15 <CakeProphet> zzo38: elliott: the point being that if Parsec doesn't define such a construct then it's trivial to create the abstraction yourself.
21:02:19 <elliott> Phantom_Hoover: is the best, yes.
21:02:20 <Phantom_Hoover> knows about LaTeX
21:02:22 <Phantom_Hoover> and yet
21:02:23 <CakeProphet> but of course that goes without saying.
21:02:25 <Phantom_Hoover> used Comic Sans
21:02:28 <elliott> CakeProphet: That isn't a helpful answer to "does it exist".
21:02:29 <centrinia> Hello elliott.
21:02:42 <elliott> Phantom_Hoover: I don't think you have a true appreciation of the artistry of Comic Sans.
21:02:49 <CakeProphet> elliott: I understand
21:02:58 <CakeProphet> the beauty
21:03:01 <CakeProphet> of Comic Sans.
21:03:02 <Phantom_Hoover> centrinia, I should point out that I haven't seen anyone design and deploy an esolang here... ever?
21:03:09 <CakeProphet> I use it on all of my Technical Writing papers.
21:03:13 <elliott> Phantom_Hoover: Hey, I've been witness to that happening about three times.
21:03:15 <elliott> THREE WHOLE TIMES.
21:03:28 <Phantom_Hoover> Over... four years? Five?
21:03:45 <elliott> Phantom_Hoover: Hey, you've seen... one. (Brook.)
21:03:45 <CakeProphet> Phantom_Hoover: as it turns out innovative language design is somewhat challenging.
21:03:53 <elliott> So it might have even been FOUR.
21:04:22 <Phantom_Hoover> elliott, I wasn't listening.
21:04:31 <elliott> Phantom_Hoover: See, that's your problem.
21:04:33 <CakeProphet> Phantom_Hoover: I do have a language that I'm designing at the moment, but to what extent it's esoteric is debatable.
21:04:40 -!- augur has quit (Remote host closed the connection).
21:05:04 <CakeProphet> really I think the distinction of esoteric is very close to being a meaningless qualifier, and that this community is centered on language design and computing as a whole.
21:05:52 <elliott> (a) It's not meaningless at all, there are a few concrete definitions that everyone is divided between; (b) esolangs.org certainly isn't, this channel is just off-topic all the time because IRC.
21:06:02 <elliott> (c) Putting letters in parentheses before things makes them true.
21:06:25 <zzo38> I think the string literal syntax in Haskell is a good idea.
21:06:46 <CakeProphet> 1) lists can be a useful means of conveying information b) though there are many different formats and sometimes they can get kind of dense iii.) also number schemes are important.
21:06:46 <Phantom_Hoover> (a) (i) what about using standard exam format (ii) it is the best (b) hello
21:07:05 <CakeProphet> zzo38: ...is there anything remarkable about Haskell's string literal syntax?
21:07:24 <Phantom_Hoover> CakeProphet, it uses backslashes! And double quotes!
21:07:30 <CakeProphet> ah yes.
21:07:33 <zzo38> CakeProphet: Only that it is better designed than that of other programming language, such as the \& escape
21:07:48 <CakeProphet> Perl - best strings
21:07:48 <zzo38> And the \^ escape
21:08:28 <Phantom_Hoover> centrinia, so what brings you to this channel of wonders?
21:08:40 <elliott> Phantom_Hoover: FSVO wonders
21:08:51 <CakeProphet> Ruby - cheap knockoff of superior Perl strings.
21:09:18 <CakeProphet> there is only one true tim toady.
21:09:39 <Phantom_Hoover> http://en.wikipedia.org/wiki/List_of_unsolved_problems
21:09:41 <Phantom_Hoover> Best list.
21:09:50 <zzo38> Now there could be other string literal syntax if you wanted to change the escapes, such as by having `~ab which makes a string that is terminated by 'b' and uses 'a' as the escape character
21:09:56 <zzo38> That is very generalized way.
21:10:16 <CakeProphet> maybe something like q/blah blah blah/~
21:10:18 <centrinia> Phantom_Hoover, someone recommended this channel to me.
21:10:20 <CakeProphet> where you put the escape character on the end.
21:10:39 <Phantom_Hoover> centrinia, who? We need to weed them out and kill them, you see.
21:11:02 <zzo38> CakeProphet: Can it always parse correctly if the escape character is at the end?
21:11:03 <ais523> unless it was me
21:11:06 <ais523> but I don't think it was
21:11:21 <Phantom_Hoover> ais523, excuse me, what makes you think you're exempt?
21:11:38 <CakeProphet> zzo38: sure.
21:11:40 <CakeProphet> ..
21:11:41 <centrinia> Actually, he merely mentioned that lambdabot is here. :p
21:11:52 <Phantom_Hoover> Was this in #haskell?
21:12:02 <CakeProphet> zzo38: you would have to post-process the string after parsing it.
21:12:06 <CakeProphet> but yes it can be done that way
21:12:10 <CakeProphet> though an alternative might be better?
21:12:34 <zzo38> CakeProphet: That is why I put the escape character at the start.
21:13:02 <CakeProphet> zzo38: ah yes, that could work. But then you lose the benefits of having perl-like quote-like operators which are IMO a better improvement to string literals.
21:13:17 <CakeProphet> unless you did both without making the syntax ugly.
21:14:09 <elliott> Of all the channels lambdabot in, this is definitely the best.
21:14:11 <elliott> ?channels
21:14:11 <lambdabot> Unknown command, try @list
21:14:13 <elliott> ?list
21:14:14 <lambdabot> http://code.haskell.org/lambdabot/COMMANDS
21:14:19 <elliott> ?listchans
21:14:19 <lambdabot> ##freebsd ##logic ##proggit ##villagegreen #agda #arch-haskell #darcs #dtp2010 #esoteric #fedora-haskell #friendly-coders #functionaljava #gentoo-haskell #gentoo-uy #ghc #gp2010 #happs #haskell #
21:14:19 <lambdabot> haskell-blah #haskell-books #haskell-fr #haskell-freebsd #haskell-in-depth #haskell-overflow #haskell.au #haskell.cz #haskell.de #haskell.dut #haskell.hr #haskell.se #hscraft-srv #learnanycomputerlang
21:14:19 <lambdabot> uage #macosx #macosxdev #rosettacode #scala #scalaz #scannedinavian #teamunix #unicycling #uscs2010 #xmonad #yi weird#
21:14:29 <elliott> I wonder why it's in ##freebsd.
21:14:30 <CakeProphet> dunnno scannedinavian is probably good.
21:14:41 <CakeProphet> elliott: some regular was probably just like "dude lambdabot"
21:14:51 <CakeProphet> good enough reason as any.
21:15:05 <CakeProphet> why is it in #esoteric? :P
21:15:55 <elliott> "dude lambdabot"
21:15:58 <CakeProphet> yep.
21:16:07 <elliott> It's been in here for quite a while though, intermittently.
21:16:28 <CakeProphet> argument by precedence.
21:16:33 <CakeProphet> good enough.
21:16:47 <CakeProphet> but then why was it here before it was here quite a while? eh?
21:17:17 <CakeProphet> so uh...
21:17:32 <CakeProphet> is there anything in a typical Russian word that is not going to match \p{Alphabetic}?
21:18:23 <CakeProphet> or Hebrew, Swedish, Finnish, Polish, Irish, Garlic, <insert somewhat common European language here>
21:18:25 <elliott> Is vodka alphabetic?
21:18:33 <CakeProphet> I think so, yes.
21:18:44 <CakeProphet> I'm just wondering if there's any weird combining marks or something that will get filtered out.
21:18:55 <Deewiant> CakeProphet: "co-operative"
21:18:56 <elliott> Ask Deewiant. Or fizzie. They seem to be the experts. :p
21:18:56 <CakeProphet> I don't know anything about these languages.
21:19:03 <CakeProphet> or Unicode
21:19:04 <Deewiant> Does that match hyphens and the like?
21:19:06 <elliott> Deewiant: Apostrophes too one presumes
21:19:09 <Deewiant> Yep
21:19:09 <elliott> I doubt - is alphabetic
21:19:15 <CakeProphet> ' is not alphabetic no
21:19:27 <CakeProphet> I didn't want millions of possessive words from English in the data.
21:19:46 <elliott> So you have "s" as an incredibly common word?
21:19:47 <elliott> Neat
21:20:06 <CakeProphet> er no I exclude anything that is not completely alphabetic.
21:20:26 <CakeProphet> so it ignores all possessive words in English.
21:20:30 <CakeProphet> perhaps I'm not understanding you?
21:20:44 <Deewiant> You have to accept at least hyphens anyway
21:20:48 <elliott> Well that's ridiculous
21:21:00 <CakeProphet> I see.
21:21:19 <CakeProphet> how is ' used in other languages?
21:21:28 <CakeProphet> also what other non-alphabetic things could I bet missing?
21:21:31 <CakeProphet> s/bet/be/
21:21:32 <Deewiant> vaa'an
21:21:51 <CakeProphet> I mean what does the ' represent.
21:21:56 <Deewiant> (fi:vaa'an = en:scales's)
21:22:09 <CakeProphet> okay so it's used for possessives
21:22:11 <CakeProphet> ?
21:22:13 <Deewiant> No
21:22:20 <elliott> CakeProphet: You should really not try and filter anything at all.
21:22:25 <elliott> It will inevitably fail.
21:22:28 <zzo38> I used this code to parse a Haskell character literal: char '\'' *> fmap CharLit (parseSingleChar '\'') <* char '\''; does it seem correct to you?
21:22:34 <CakeProphet> elliott: I think that is more of a bad idea.
21:22:43 <elliott> CakeProphet: I think you are wrong.
21:22:43 <CakeProphet> because there are literally entries for every number used.
21:22:50 <CakeProphet> and concurrency amounts.
21:22:56 <CakeProphet> and possessives are gross.
21:22:56 <elliott> Concurrency amounts?
21:22:57 <Deewiant> It's used to mark syllable boundaries when one would end up with three identical vowels in a row
21:23:01 <CakeProphet> currency :P
21:23:12 <Deewiant> Due to elision of a consonant due to inflection or some such
21:23:20 <elliott> CakeProphet: Just only do English with the basic Latin alphabet if you're not going to do it properly
21:23:38 <elliott> (Which is of course much smaller than the characters required to accurately write all English, but who's counting?)
21:23:47 <CakeProphet> what is "properly". Why would I want a word generator to produce large numbers of 's and things like $133052?
21:24:19 <CakeProphet> I'll just special case the filtering. easy enough.
21:24:34 <Deewiant> zzo38: Note that string literals can contain \& but character literals can't
21:24:57 <elliott> CakeProphet: Properly as in taking care not to fuck up other languages
21:25:06 <CakeProphet> elliott: yes that is what I want to do.
21:25:10 <CakeProphet> not filtering anything is not the way to do that.
21:25:19 <zzo38> Deewiant: I know. However my program is not perfect, but it works almost all the time
21:25:21 <CakeProphet> because these datasets have a lot of junk that I don't want to include.
21:25:24 <elliott> CakeProphet: Then you can't just drop words with ' in them.
21:25:28 <CakeProphet> elliott: correct
21:26:29 <CakeProphet> the 's is really only something I'm concerned with in English. I'm not going to try to remove possessive cases in other languages because they're not so simple.
21:27:00 <zzo38> This program currently accepts a character literal beginning with \& (such as '\&R') but does not accept a string literal ending with \& (such as "X\&"), so it is not exactly Haskell
21:27:28 <zzo38> I might fix that later
21:27:35 <Deewiant> Correction to my above: it's not only with three identical vowels, it's whenever two or more vowels would join up in such a way that the syllable boundary needs explicit marking
21:28:05 <zzo38> But I doubt it is of any use that anyone needs anything other than what I already have.
21:28:06 <Deewiant> (fi:jok'ainoa = en:every single)
21:28:49 <CakeProphet> I'll probably use a negative lookaround to specifically find possessive English forms.
21:29:00 <CakeProphet> so that things like contractions stay.
21:29:53 <zzo38> It makes the (<*) and (*>) useful with Parsec.
21:29:56 <Deewiant> And it does end up in Finnish possessives, with foreign words that end in silent consonants: fi:Bordeaux'n = en:Bordeaux's
21:30:22 <elliott> zzo38: What does \& even do
21:30:35 <elliott> Also, (*>) at least is identical to (>>)
21:30:36 <Deewiant> elliott: \1\&23 = \1 followed by 23
21:30:42 <zzo38> "\&" is identical to ""
21:30:46 <Deewiant> elliott: Instead of \123
21:31:04 <elliott> Ah :P
21:31:11 <zzo38> elliott: Yes I know (*>) is identical to (>>) and I use (>>) too, which is also useful.
21:31:31 <zzo38> But it is sometimes useful to do it backward
21:31:34 <elliott> Deewiant: This tchrist guy sure knows his stuff but does he always use visually irritating deprecated Unicode for emphasis or is it only in this Stack Overflow question :P
21:31:46 -!- Ngevd has quit (Ping timeout: 260 seconds).
21:31:48 <Deewiant> Deprecated?
21:32:11 <Deewiant> IIRC he does use it in at least one of those presentations to which I linked earlier
21:32:14 <elliott> Deewiant: Shit like the small caps characters are just there for backwards compat
21:32:20 <CakeProphet> so
21:32:28 <CakeProphet> is there any language that has 's at the end of a word
21:32:31 <CakeProphet> that isn't possessive?
21:32:42 <elliott> Pretty sure Lojban does
21:32:55 <CakeProphet> Lojban doesn't count as a thing I care about. :P
21:33:11 <CakeProphet> right now, anyways.
21:33:14 <monqy> poor lojban
21:33:33 <Deewiant> CakeProphet: https://secure.wikimedia.org/wikipedia/en/wiki/Apostrophe#Non-English_use
21:33:37 <elliott> You said "any language"
21:33:54 <CakeProphet> elliott: right I didn't mean to say it doesn't fit the criteria of my original sentence.
21:33:54 <Deewiant> CakeProphet: Dutch plurals, apparently
21:34:00 <CakeProphet> just that I don't care about it regardless.
21:34:22 <elliott> Deewiant: Also In Irish, the past tense of verbs beginning with an F or vowel begins with d' (elision of do), for example do oscail becomes d'oscail ("opened") and do fhill becomes d'fhill ("returned"). The copula is is often elided to 's, and do ("to"), mo ("my") etc. are elided before f and vowels.
21:34:53 <Deewiant> elliott: He only needed one example :-P
21:35:15 <elliott> Deewiant: I suspect one example is more likely to get a "oh well I don't care about that" than two
21:35:15 <CakeProphet> but if I don't filter out possessives I'll get grossness. :P
21:35:33 <elliott> CakeProphet: Do you have any evidence for that
21:35:43 <CakeProphet> `macro
21:35:44 <Deewiant> elliott: Dutch seemed mainstream enough to care about
21:35:48 <HackEgo> Gmacro: <stdout>: commitBuffer: invalid argument (Invalid or incomplete multibyte or wide character)
21:35:54 <CakeProphet> hmmm
21:35:58 <elliott> macro is dumber than word in several ways.
21:36:06 <CakeProphet> but also includes 's
21:36:13 <CakeProphet> and they appear frequently.
21:36:18 <elliott> Apples, oranges
21:36:29 <elliott> while true; do echo "'s"; done
21:36:36 <elliott> CakeProphet: Wow, this xacro sure does have way too many 's
21:36:40 <elliott> Better filter them out
21:37:20 <monqy> 's is good
21:37:36 <monqy> catsup's
21:39:31 <CakeProphet> so the fact that there's probably several tens or hundreds of thousands of possessives in my dataset won't mean that 's appears incredibly frequently at the end of generated words? okay.
21:40:29 <monqy> try & see
21:41:00 <CakeProphet> monqy: waiting on (currently incorrect for many non-English languages) dataset to finish.
21:41:27 <elliott> I wonder if maybe it would go faster if you hadn't written it in Perl.
21:41:39 <CakeProphet> nah Perl's the fastest of the languages.
21:42:46 <CakeProphet> I'm just going to play with the English dataset until I actually know that my algorithm/dataset is good.
21:43:17 <ais523> elliott: I wrote a spambot in less than an hour using Perl; it would have been 20 minutes if I hadn't tested it to make sure
21:43:20 <ais523> well, not really a spambot
21:43:32 <elliott> ais523: I see; why are you telling mE?
21:43:34 <elliott> s/E/e/
21:43:36 <ais523> an email mass-mailer that took a database as input and emailed everyone in it with the rows of the database that applied to them
21:43:43 <ais523> and because you mentioned speed of Perl
21:43:49 <elliott> Running speed, not development.
21:43:54 <ais523> ofc, that's a rather IO-bound task
21:43:58 <elliott> CakeProphet has a dataset of many hundreds of megabytes.
21:44:05 <ais523> ofc, that's a rather IO-bound task
21:44:09 <elliott> As long as he doesn't use C running time is easily relevant.
21:44:12 <ais523> *so development speed was the limiting factor
21:44:15 <elliott> Erm as in
21:44:21 <ais523> the database was only kilobytes
21:44:23 <elliott> ais523: this is IO bound, too
21:44:27 <ais523> ah, OK
21:44:35 <ais523> language is mostly unimportant for IO-bound tasks, right?
21:44:45 <ais523> it's the algo that's more important?
21:44:59 <elliott> ais523: Not if you store everything in a Perl hash and use regexps way too much and break words and ..
21:45:02 <elliott> s/../.../
21:45:10 <ais523> elliott: that just means it stops being IO-bound
21:45:15 <ais523> because your algo is owful
21:45:17 <ais523> *awful
21:45:25 <CakeProphet> what are you talking about my algorithm is awesome.
21:45:27 <elliott> Well, sure.
21:45:31 <CakeProphet> see?
21:45:34 <CakeProphet> elliott agrees.
21:45:59 <elliott> I was replying to ais523.
21:46:04 <CakeProphet> nonsense.
21:46:36 <CakeProphet> so I'm going to try non-numeric only.
21:46:55 <CakeProphet> instead of alphabetic only
21:47:04 <ais523> <elliott> s/../.../ <--- I don't think regexes work like that; well, not properly, anyway
21:47:15 <elliott> They do in DWIM.
21:48:27 <CakeProphet> so.... \P{Number} should work to at least filter out the numeric entries.
21:49:24 <CakeProphet> ugly possessives are okay I guess.
21:53:33 <nooga> I want to immediately acquire British accent
21:53:49 <ais523> I don't have a spare, unfortunately
21:54:04 <nooga> maybe elliott has one
21:54:09 <nooga> or two
21:54:37 <elliott> nooga: We cannot allow that to happen.
21:54:47 <elliott> First we're giving you our accents, next thing you know we're cleaning /your/ windows.
21:56:09 * Madoka-Kaname hands nooga a random Japanese person's accent
21:56:51 <nooga> I amu notu interesteda ina windowsu, justa the wayu of speakingu
21:57:06 <nooga> shhhitu
21:57:24 <elliott> Ah yes, nooga is drunk again.
21:57:28 <zzo38> You are going to pump our gas some day
21:57:36 <nooga> no, i'm not
21:57:41 <elliott> I...
21:57:42 <monqy> pump my gas
21:57:43 <monqy> right now
21:57:43 <nooga> and no
21:57:46 <zzo38> No, I mean elliott
21:57:59 <elliott> zzo38: I will mark it down in my diary.
21:58:14 <zzo38> (And I don't mean mine; I don't need it.)
21:58:21 <monqy> whose gas
21:58:24 <monqy> needs pumping
21:58:26 <nooga> what gas?
21:58:34 <zzo38> nooga
21:58:45 <monqy> does nooga need pumping
21:59:28 <monqy> is nooga gas
21:59:32 <zzo38> Maybe.
21:59:54 <nooga> maybe I am... at least a bit
22:00:16 <nooga> my surname indicates that
22:00:43 <zzo38> Yes, that must be why.
22:01:31 <nooga> Gas+ending
22:01:36 <elliott> zzo38: i'm confused........
22:04:53 <nooga> Oh, he's kənfjúzd
22:06:24 <monqy> it happens
22:06:32 <nooga> sh happens
22:07:12 <monqy> so it does
22:08:27 <nooga> I've just read several novels by HP Lovecraft
22:12:05 <nooga> abnormal and blasphemous and decadent and loathsome and hideous they are
22:12:12 <nooga> and
22:12:19 <nooga> nothing
22:14:50 <zzo38> I think I have something about HP Lovecraft in my dream.txt file, I think it was some contribution by someone else
22:15:49 <Vorpal> wow, tried out Morrowind a bit. What a blast from the past in terms of not only the graphics, but also awkward interface design. Somehow even more awkward than in Oblivion. Didn't think that was possible.
22:16:11 <nooga> SKREE SKREEE
22:16:24 <nooga> SKREEEEEEEE
22:16:43 <nooga> i hated those.... cliff somethings
22:16:55 <nooga> that I had to kill every two minutes
22:17:48 <elliott> what
22:18:00 <nooga> but Oblivion was pretty amusing... until level 5, on which I ended the main quest
22:18:04 <centrinia> Cliff racers.
22:18:08 <nooga> elliott: in Morrowind
22:18:12 <nooga> yeah, cliff racers
22:18:17 <nooga> annoying cancer
22:27:05 <CakeProphet> `run perl -e "q/'/ =~ /\p{Connector_Punctuation/"
22:27:07 <HackEgo> Missing right brace on \p{} in regex; marked by <-- HERE in m/\p{ <-- HERE Connector_Punctuation/ at -e line 1.
22:27:10 <CakeProphet> `run perl -e "q/'/ =~ /\p{Connector_Punctuation}/"
22:27:13 <HackEgo> No output.
22:27:20 <CakeProphet> `run perl -e "q/'/ =~ /\p{Dash_Punctuation}/"
22:27:22 <HackEgo> No output.
22:27:29 <CakeProphet> `run perl -e "q/'/ =~ /\p{Other_Punctuation}/"
22:27:32 <HackEgo> No output.
22:27:35 <CakeProphet> `run perl -e "q/'/ =~ /\p{Final_Punctuation}/"
22:27:38 <HackEgo> No output.
22:27:39 <CakeProphet> noep
22:28:25 <CakeProphet> `run perl -e "q/'/ =~ /\p{Mark}/"
22:28:28 <HackEgo> No output.
22:28:43 <nooga> who knows Scala?
22:28:49 <nooga> maybe elliott?
22:29:00 <elliott> I suggest not using Scala unless you absolutely have to
22:29:02 <elliott> .
22:29:21 <nooga> how about using it for fun?
22:30:07 <Vorpal> <nooga> but Oblivion was pretty amusing... until level 5, on which I ended the main quest <-- I played most of the side quests but never completed the main quest
22:30:15 <CakeProphet> > generalCategory '\''
22:30:16 <lambdabot> OtherPunctuation
22:30:28 <Vorpal> nooga, the key point about oblivion is not the main quest. It is the side quests. And exploring the world.
22:30:30 <CakeProphet> > generalCategory '_'
22:30:31 <lambdabot> ConnectorPunctuation
22:30:38 <CakeProphet> > generalCategory '-'
22:30:39 <lambdabot> DashPunctuation
22:30:49 <Vorpal> nooga, presumably the same is true for Morrowind. I haven't really played it enough atm.
22:34:16 -!- pikhq_ has joined.
22:34:28 -!- pikhq has quit (Ping timeout: 260 seconds).
22:35:24 -!- ais523 has quit (Remote host closed the connection).
22:37:09 <nooga> Vorpal: I did many quests
22:38:15 <nooga> but the game gets boring when you can use destruction magic, can pick every lock, can kill everyone using bow or sword and are invisible
22:39:00 <zzo38> Then try a challenge game, where you are not allowed to use destruction magic, pick any locks, kill anyone, or become invisible.
22:39:17 <zzo38> Is it possible to complete the game this way?
22:40:44 <zzo38> (If you cannot, then just count how many times you do these things and lower score is better; 0 means you can complete the game even with these things disallowed)
22:41:43 <nooga> interesting idea
22:53:03 <Phantom_Hoover> <nooga> yeah, cliff racers
22:53:15 <Phantom_Hoover> But didn't that guy kill all of them Prequel said he did
23:02:38 -!- nooga has quit (Ping timeout: 248 seconds).
23:03:11 <zzo38> Is there a such things as m a -> m b -> m (a,b)
23:03:27 <Deewiant> ?ty liftM2 (,)
23:03:28 <lambdabot> forall a1 a2 (m :: * -> *). (Monad m) => m a1 -> m a2 -> m (a1, a2)
23:03:35 <Deewiant> ?ty liftA2 (,)
23:03:36 <lambdabot> forall a b (f :: * -> *). (Applicative f) => f a -> f b -> f (a, b)
23:03:46 -!- augur_ has joined.
23:04:13 -!- augur_ has quit (Read error: Connection reset by peer).
23:04:17 <zzo38> OK
23:24:42 <zzo38> How often is (<*) used with Parsec?
23:28:49 <monqy> a lot
23:29:23 <zzo38> Yes I would think so. It seems to be very useful in parsing stuff.
23:33:58 -!- sllide has quit (Ping timeout: 260 seconds).
23:33:58 -!- DH____ has quit (Read error: Connection reset by peer).
23:34:22 <CakeProphet> '�dy'
23:34:24 <CakeProphet> help what is that.
23:34:33 <CakeProphet> > ord '�'
23:34:34 <lambdabot> 65533
23:34:42 <CakeProphet> > generalCategory '�'
23:34:43 <lambdabot> OtherSymbol
23:34:57 <Deewiant> http://www.fileformat.info/info/unicode/char/fffd/index.htm
23:35:10 <zzo38> I think it is replacement character
23:35:27 <CakeProphet> oh, well, something is getting fucked up.
23:35:29 <CakeProphet> then
23:35:42 <CakeProphet> that character appears a lot in my markov data.
23:36:28 <CakeProphet> maybe I need to change perl's default settings some more.
23:36:30 <zzo38> The examples of Parsec and source codes of Parsec uses do-notation a lot more than I would have done. But that is OK.
23:37:01 <zzo38> CakeProphet: Maybe you are using the incorrect encoding
23:37:24 <Madoka-Kaname> > generalCategory 'あ'
23:37:25 <lambdabot> OtherLetter
23:37:32 <Madoka-Kaname> > generalCategory '手'
23:37:33 <lambdabot> OtherLetter
23:39:07 <CakeProphet> use open qw( :encoding(UTF-8) :std );
23:39:11 <CakeProphet> I think, is what I need
23:41:40 <zzo38> How much do you use the Haskell do-notation? I think it is useful sometimes, but mostly I do not use it.
23:42:52 <CakeProphet> I typically use it with "state-like" monads.
23:42:54 <CakeProphet> sometimes.
23:42:56 <CakeProphet> but not often.
23:43:33 <CakeProphet> typically the larger a monadic expression becomes the more likely I am to translate it into a do block
23:43:56 <CakeProphet> but then I usually just break it down with let/where
23:43:57 <Madoka-Kaname> > generalCategory 'a'
23:43:58 <lambdabot> LowercaseLetter
23:44:09 <Madoka-Kaname> > generalCategory 'π'
23:44:09 <lambdabot> LowercaseLetter
23:45:37 <CakeProphet> I wonder if I can get away with not doing most of the stuff this guy says.
23:47:08 <CakeProphet> oh hey look I'm not using the version of perl that supports unicode fully
23:47:10 <CakeProphet> might be a problem
23:47:39 <CakeProphet> why is everything in debian repos so out of date...
23:48:16 <elliott> CakeProphet: You are using testing, right?
23:48:21 <zzo38> I often break it down into separate functions, if it seems to me to be a reasonable way to do it. It has a lot of functions useful for using with monads, including: return >>= >=> <=< join fmap >> <* *> <*> <$> <|> liftM2 mapM sequence when
23:48:24 <elliott> Like I told you to and gave detailed instructions for?
23:48:30 <CakeProphet> elliott: I don't know what that is so no
23:48:43 <elliott> CakeProphet: I explicitly told you about it and linked you to a specific ISO and you confirmed what I said.
23:48:56 <elliott> If you're using stable, yes, it's massively out of date; this is what happens when you don't listen to my advice.
23:48:57 <CakeProphet> ?
23:49:07 <CakeProphet> I think I uh.... missed something?
23:49:12 <CakeProphet> maybe I was sleep walking?
23:49:18 <elliott> You replied, so no.
23:49:22 <CakeProphet> sleep typing
23:49:25 <CakeProphet> it happens I'm sure.
23:50:06 <CakeProphet> you're telling me to use the testing repos right?
23:50:15 <zzo38> If you are doing Haskell like it is mathematics but has to be entered the way the computer expects it, then it is doing correct.
23:50:53 <elliott> 2011-09-26:
23:50:53 <elliott> 08:47:01: <elliott_> CakeProphet: I think the "GNOME desktop" that Debian offers to install is three, so I'd try Xfce first time round.
23:50:53 <elliott> 08:47:12: <elliott_> Oh, and since Debian's site is useless about this --
23:50:53 <elliott> 08:47:41: <elliott_> CakeProphet: http://cdimage.debian.org/cdimage/daily-builds/daily/arch-latest/amd64/iso-cd/debian-testing-amd64-netinst.iso would be the ISO you would want.
23:50:54 <elliott> 08:47:52: <elliott_> Don't be put off by the testing name; in Debian, stable means "a few years old" and testing means "stable".
23:50:57 <elliott> 08:48:08: <elliott_> (unstable/sid means "beta/alpha-quality" and experimental means "broken".)
23:50:59 <elliott> 08:48:29: <CakeProphet> I don't /use/ a lot of the software I've installed regularly but I've accumulated a shit ton of packages/modules/whatever in various languages that I kind of wanted to have around so I don't have to ever think about them again... but, I guess that's no big deal.
23:51:03 <elliott> 08:48:59: <CakeProphet> amd64? I'm running intel though.
23:51:05 <elliott> 08:49:05: <elliott_> >_<
23:51:07 <elliott> 08:49:09: <elliott_> The name of the architecture is amdsixtyfour.
23:51:09 <elliott> 08:49:12: <elliott_> Because they invented it.
23:51:11 <elliott> 08:49:16: <CakeProphet> oh okay.
23:51:13 <elliott> 08:49:23: <elliott_> CakeProphet: And a final helpful tip: You want to do the "Xfce -> expert graphical install". Trust me. Graphical because the terminal interface is ugly, and /expert/ because -- well, you can use the default answer to almost all its questions -- but only in expert mode does it offer to install a sudo-based system instead of a separate root password.
23:51:18 <elliott> 08:49:27: <elliott_> It should be default, but it isn't.
23:51:34 <elliott> CakeProphet: It is true that you can upgrade stable to testing, but you get to figure out the safe commands to do it (hint: it isn't apt-get upgrade).
23:51:47 <CakeProphet> isn't it like...
23:51:53 <CakeProphet> editing sources?
23:52:07 <zzo38> What do other people say about whatever I said about Haskell like it is mathematics?
23:52:10 <CakeProphet> also note that I'm still on Ubuntu, will this work?
23:52:11 <elliott> Yes, that will magically upgrade your system by editing a text file.
23:52:23 <elliott> CakeProphet: You're still on Ubuntu and... using the Debian repositories?
23:52:24 <elliott> What?
23:52:27 <CakeProphet> elliott: I just want to get a newer version of perl interpreter atm
23:52:39 <CakeProphet> elliott: aren't I using debian repos because they're upstream?
23:52:47 <elliott> Ubuntu has its own repositories.
23:52:58 <elliott> If you're using Debian repos on Ubuntu, your system is irreparably broken.
23:53:04 <CakeProphet> I'm not.
23:53:11 <CakeProphet> I just want a newer perl plz.
23:53:14 <CakeProphet> `run perl --version
23:53:16 <HackEgo> ​\ This is perl, v5.10.0 built for x86_64-linux-gnu-thread-multi \ \ Copyright 1987-2007, Larry Wall \ \ Perl may be copied only under the terms of either the Artistic License or the \ GNU General Public License, which may be found in the Perl 5 source kit. \ \ Complete documentation for Perl, including FAQ lists, should be
23:53:20 <CakeProphet> ....bah
23:53:27 <CakeProphet> FUCK YOU PERL
23:53:39 <CakeProphet> maybe 5.10 is enough
23:53:55 <CakeProphet> Feature "unicode_strings" is not supported by Perl 5.10.1 at ./construct_grams.pl line 4
23:53:59 <CakeProphet> or maybe not
23:54:42 <CakeProphet> I'm just going to hope that most of this boilerplate is not in fact necessary in my case.
23:55:10 <CakeProphet> sounds good
23:56:36 <olsner> if it is boilerplate that's pretty much by definition that it's not necessary
23:56:52 <CakeProphet> well, maybe
23:57:07 <CakeProphet> it may not be olsner's definition of boilerplate then/
23:57:15 <CakeProphet> which is entirely wrong, but whatever.
23:57:16 <olsner> (plus grammar, because "that is ... that it is" doesn't really work in english as I know it)
23:57:58 <olsner> anyway, just write a sed script to generate the perl you want
2011-10-08
00:01:38 <CakeProphet> no I was just using the wrong encoding.
00:01:58 <zzo38> Sometimes a monad is described as an abstract datatype of actions, but I don't think that's what it is. At least, not in general; the IO monad is. But monads are a lot of things, though.
00:02:24 <olsner> CakeProphet: you mean... you were not using sed to encode your perl scripts?
00:02:25 <CakeProphet> zzo38: yes that description is just an analogy used to introduce the concept.
00:02:29 <CakeProphet> olsner: no.
00:03:35 <olsner> CakeProphet: weird you
00:03:51 <CakeProphet> zzo38: I feel that >>= gives monads many similarities to continuations, in effect.
00:04:02 <zzo38> CakeProphet: Well, but I don't think it is a very good analogy, except possibly for describing a use of do-notation.
00:04:20 <CakeProphet> zzo38: yes I agree.
00:05:14 * Phantom_Hoover → sleep
00:05:15 -!- Phantom_Hoover has quit (Quit: Leaving).
00:05:22 <olsner> I think the only correct description of monads as used in Haskell is the Monad type class
00:05:35 <CakeProphet> and associated laws.
00:06:04 <zzo38> CakeProphet: I suppose there are some. But a monad can be defined without (>>=) (except that Haskell requires it), you can make up (>>=) from join and fmap.
00:06:11 <olsner> I think the laws are secondary to the understanding of monads
00:06:36 <olsner> I still don't know any of the laws (afaik) but think I have a pretty good idea how to use monads
00:06:48 <CakeProphet> but often, in teaching, it's not enough to simply "okay these are the formal properties and laws of x, now you are enlightened!"
00:07:14 <zzo38> There are different forms of the laws depending on which way you have defined the monad, if you follow the laws correctly in one form, it works in the other ways too.
00:07:24 <CakeProphet> not that the analogy of actions is perfect or particularly good, but does describe a particular problem that monads can be used for.
00:07:32 <elliott> olsner: the laws are really trivial
00:07:35 <zzo38> Such as you can have a Kleisli category, meaning that you can form a category.
00:07:44 <zzo38> CakeProphet: Yes, it does describe one use of monads.
00:07:57 <olsner> elliott: I don't doubt that, but I still don't know them :)
00:08:25 <elliott> olsner:
00:08:26 <elliott> "Left identity": return >=> g ≡ g
00:08:26 <elliott> "Right identity": f >=> return ≡ f
00:08:26 <elliott> "Associativity": (f >=> g) >=> h ≡ f >=> (g >=> h)
00:08:58 <elliott> or more conventionally
00:08:59 <elliott> "Left identity": return a >>= f ≡ f a
00:08:59 <elliott> "Right identity": m >>= return ≡ m
00:08:59 <elliott> "Associativity": (m >>= f) >>= g ≡ m >>= (\x -> f x >>= g)
00:09:10 <CakeProphet> yeah kleisli composition is a nice way to see them.
00:09:19 <CakeProphet> not that the lambda + bind form is confusing or anything.
00:10:06 <olsner> stop using analogies for monads, they are too simple to benefit from shady analogies
00:10:31 <CakeProphet> moands are spacesuits.
00:10:32 <olsner> ... or get stuck in the world of burritos and crepes
00:10:37 <elliott> olsner: wheres,e the analogies,
00:10:39 <elliott> here,
00:11:45 <olsner> elliott: I think they were before
00:11:51 <elliott> rip
00:11:55 <olsner> or maybe they weren't
00:11:57 <elliott> rip rip rip
00:12:01 <elliott> ripped
00:12:02 <CakeProphet> monads are like magic boxes that you can transmute with alchemy, but you're ultimately bound by the rules of the specific box as well as the rules of all boxes.
00:12:13 <elliott> monads are like governments.............................
00:12:35 <olsner> monads are also like herp derp, and like python and rooby
00:12:58 <zzo38> Are you sure that return >=> g is a left identity, or is return <=< g is a left identity?
00:13:20 <olsner> me? no.
00:13:39 <zzo38> CakeProphet: Well, that is a *slightly* better analogy than the others, at least, in my opinion.
00:14:05 <zzo38> But it is still pretty bad.
00:14:06 <CakeProphet> zzo38: it's sufficiently vague and captures all of the main points... vaguely.
00:14:24 <zzo38> CakeProphet: Yes, that is why I said it is a slightly better than the others!
00:16:01 <CakeProphet> some boxes cheat and DEVOUR MATHEMATICIANS' SOULS TO CREATE EVIL SIDE-EFFECTS.
00:16:08 <CakeProphet> and others are very benign.
00:16:54 <CakeProphet> okay I think my analogy is breaking down here.
00:19:24 -!- augur has joined.
00:19:29 <CakeProphet> so I just bought a caffeinated beverage
00:19:35 <CakeProphet> that is filled with nitrous oxide
00:19:41 <CakeProphet> why they do this? I don't know. But it tastes good.
00:19:43 <elliott> ok
00:20:09 <zzo38> I looked at article about Kleisli category in Wikipedia, and I can make the same thing described there in Haskell.
00:20:13 <zzo38> Mathematics: $g\circ_T f = \mu_Z \circ Tg \circ f$
00:20:28 <CakeProphet> zzo38: you should make a programming language. call it Mathematics.
00:20:33 <zzo38> Haskell: g <=< f = join . fmap g . f
00:21:08 <zzo38> See? It is the same thing.
00:23:01 <CakeProphet> zzo38: you have the power.
00:23:09 <CakeProphet> to turn the maths into the codes.
00:25:51 -!- DH____ has joined.
00:28:10 -!- Vorpal has quit (Ping timeout: 240 seconds).
00:28:31 -!- derdon has quit (Remote host closed the connection).
00:30:27 -!- augur has quit (Remote host closed the connection).
00:31:14 <CakeProphet> /media/Elements/googledata$ cat googlebooks-eng-all-1gram-20090715-*.csv | grep -P "^.*'s\t" | wc -l
00:31:17 <CakeProphet> 14660847
00:31:20 <CakeProphet> btw
00:31:56 <CakeProphet> well, that counts duplicate entries.
00:32:08 <CakeProphet> so not quite accurate.
00:33:42 <elliott> Merging In The GNU D Language Compiler To GCC (phoronix.com)
00:33:43 <elliott> Oh no.
00:33:50 <monqy> d
00:33:59 <elliott> pikhq_: Gregor: ;DDDD
00:34:10 <monqy> is d bad i've never payed any attention at all to d
00:34:13 <monqy> (at all)
00:35:16 <monqy> what I know: it exists, it is a programming language, one time I wanted to compile something made in D and I couldn't do it because of reasons I am forgetting, ??????
00:36:07 <elliott> Oh no, I think have a Concurrency Issue.
00:36:35 <elliott> Hmm, or do I
00:40:12 <CakeProphet> elliott: quick use message passing or STM.
00:40:17 <CakeProphet> magically
00:40:20 <elliott> I already am using STM.
00:40:24 <CakeProphet> wave your wand. oh okay.
00:40:25 <elliott> Message passing is a joke.
00:40:35 <CakeProphet> it's better than many alternatives...
00:41:06 <CakeProphet> in terms of being easy to not fuck up.
00:41:22 <CakeProphet> not necessarily on increasing uh, concurrency.
00:45:02 -!- DH____ has quit (Read error: Connection reset by peer).
00:47:19 -!- copumpkin has joined.
00:48:18 <zzo38> Is the successor monad similar to the maybe monad?
00:49:18 <zzo38> What does "Security System Breached" mean?
00:50:13 <zzo38> When trying to send a message I get the error message ":pratchett.freenode.net 301 zzo38 ski :Security System Breached"
00:51:08 <Madoka-Kaname> .google "Security System Breached" IRC
00:51:13 <Madoka-Kaname> ^google "Security System Breached" IRC
00:51:17 <Madoka-Kaname> @google "Security System Breached" IRC
00:51:19 <elliott> zzo38: 301 is an away message.
00:51:20 <Madoka-Kaname> >:c
00:51:20 <lambdabot> http://www.utica.edu/academic/institutes/cimip/mediacenter/itnews.cfm
00:51:21 <lambdabot> Title: Identity Theft News
00:52:36 -!- hoppecl has quit (Quit: BitchX-1.1-final -- just do it.).
01:01:04 -!- augur has joined.
01:02:02 -!- augur has quit (Remote host closed the connection).
01:08:00 <elliott> Who gets to debug my possible concurrency issue???? WHO IS THE LUCKY WINNER
01:09:25 <pikhq_> monqy: D is not a *terrible* language, but it has serious issues in the toolchain.
01:09:36 <elliott> It's pikhq_! pikhq_ is the lucky winner!
01:09:54 <elliott> addPlayer st player = do
01:09:54 <elliott> (entityID:xs, m) <- readTVar (serverPlayers st)
01:09:54 <elliott> writeTVar (serverPlayers st) (xs, HM.insert entityID player m)
01:09:54 <elliott> return entityID
01:10:00 <elliott> serverPlayers :: ServerState -> TVar ([EntityID], HashMap EntityID Player)
01:10:11 <elliott> Is there a race condition here with other threads accessing the players???? :|
01:10:16 <elliott> As in, writing to the map
01:10:27 <elliott> I think as long as everything is done through addPlayer and a hypothetical delPlayer it's fine
01:10:39 <elliott> (Where delPlayer adds the entity ID back on to the head of the list and removes from the map)
01:10:43 <elliott> BUT I AM NOT SURE
01:11:06 <pikhq_> Everything should be fine with STM.
01:11:23 <pikhq_> How can you race when your only actions are atomic transactions?
01:11:48 <elliott> With great difficulty :P
01:11:57 <pikhq_> No kidding.
01:13:53 <pikhq_> Anyways: you're not going to see any races with mutations in STM.
01:16:16 <pikhq_> monqy: I don't know if this is still the case, but it at least *used* to be that D had two incompatible standard libraries.
01:16:28 <pikhq_> monqy: It was actually impossible to have them both installed on the same system.
01:16:51 <pikhq_> And both were equally commonly used.
01:16:56 <CakeProphet> utf8 "\xEA" does not map to Unicode at ./construct_grams.pl line 16, <$f> line 3
01:17:00 <CakeProphet> bah
01:17:03 <CakeProphet> I thinkI need 5.14
01:17:14 <CakeProphet> to get full Unicode support.
01:17:21 <CakeProphet> but maybe it doesn't matter...
01:17:29 <CakeProphet> > generalCategory '\xEA'
01:17:30 <lambdabot> LowercaseLetter
01:17:32 <elliott> Or maybe you're just doing it wrong
01:17:43 <CakeProphet> and how would that be?
01:24:45 -!- augur has joined.
01:27:10 -!- copumpkin has quit (Remote host closed the connection).
01:28:10 <CakeProphet> elliott: yes, plz debug my code blindly
01:28:14 <CakeProphet> that's essentially what I'm asking.
01:28:16 <CakeProphet> no, demanding.
01:28:19 <elliott> Thus why I didn't reply
01:29:00 <CakeProphet> well the problem is that
01:29:04 <CakeProphet> use feature "unicode_strings"
01:29:08 <CakeProphet> is only avaialble in 5.14
01:29:38 <CakeProphet> without it, it just treats bytes in the range 128-255 (I think) as just byte values
01:29:41 <CakeProphet> and not unicode.
01:30:20 <CakeProphet> so I'm pretty sure I just need to get 5.14, or ignore the warning and see if it doesn't matter...
01:30:42 <CakeProphet> since the only thing I'm really doing that's unicode related is testing to see if they're numeric.
01:31:04 <elliott> You're implying that no Perl version before 5.14 supports Unicode at all.
01:31:12 <CakeProphet> no not quite.
01:31:14 <CakeProphet> just that
01:31:14 <elliott> Maybe you should read the SO question some more.
01:31:17 <CakeProphet> it's not complete until 5.14
01:31:24 <elliott> I'll let Deewiant handle this one
01:32:07 <CakeProphet> actually 5.12 is minimum for unicode strings.
01:32:34 <CakeProphet> so, yes... I'm saying complete Unicode support doesn't exist until either 5.12 or 5.14
01:32:51 <CakeProphet> but other Unicode things have been around before that.
01:33:17 <elliott> You are really obviously wrong.
01:33:29 <CakeProphet> uh, no I am literally saying
01:33:29 <CakeProphet> that
01:33:34 <CakeProphet> use feature "unicode_strings";
01:33:38 <CakeProphet> is not available until 5.12
01:33:41 <CakeProphet> and that is obviously correct.
01:33:46 <elliott> Uh
01:33:47 <elliott> No
01:33:48 <elliott> You are saying
01:33:48 <elliott> <CakeProphet> so, yes... I'm saying complete Unicode support doesn't exist until either 5.12 or 5.14
01:33:48 <elliott> <CakeProphet> but other Unicode things have been around before that.
01:33:56 <elliott> Which you are using to justify
01:33:59 <elliott> "I can't do this without a newer Perl"
01:34:01 <elliott> Which is horseshit
01:34:06 <elliott> For instance
01:34:11 <CakeProphet> I'm not /certain/ I can do it with this Perl.
01:34:19 <CakeProphet> it might not matter.
01:34:22 <elliott> "I see lots of room for improvement in the cited utf8::all module. It was written before the unicode_strings feature, which Fɪɴᴀʟʟʏ ᴀɴᴅ ᴀᴛ Lᴏɴɢ Lᴀsᴛ fixes regexes to have a /u on them."
01:34:26 <elliott> So let's go over to perlre
01:34:40 <elliott> a, d, l and u
01:34:40 <elliott> These modifiers, new in 5.14, affect which character-set semantics (Unicode, ASCII, etc.) are used, as described below in Character set modifiers.
01:34:49 <elliott> http://perldoc.perl.org/perlre.html#Character-set-modifiers
01:34:58 <elliott> So all unicode_strings gets you in the area of regexps is things like \w changing
01:35:05 <elliott> Which is irrelevant if you don't use things like \w
01:35:47 <CakeProphet> Code points between 128–255 should be understood by 🐪 to be the corresponding Unicode code points, not just unpropertied binary values. use feature "unicode_strings" or export PERL5OPTS=-Mfeature=unicode_strings. That will make uc("\xDF") eq "SS" and "\xE9" =~ /\w/. A simple export PERL5OPTS=-Mv5.12 or better will also get that.
01:35:52 <CakeProphet> is kind of what I was going off of.
01:35:59 <CakeProphet> but it is still irrelevant, you're correct.
01:36:08 -!- TeruFSX has joined.
01:37:47 <CakeProphet> elliott: really I think I fixed my initial problem when I did use open qw( :encoding(UTF-8) :std );
01:37:54 <CakeProphet> which makes file IO UTF-8 encoded.
01:38:07 <CakeProphet> so yeah... I'm about to find out
01:38:16 <CakeProphet> (after I afk for a while)
01:40:38 <zzo38> You should either copy the TeX form I have in my website and/or make a program that takes a <TeX> in MediaWiki and automatically uploads an image with a name corresponding to what is typed in so that the results can be cached (if you need to invalidate the cache, you can delete that file)
01:45:06 -!- CakeProphet has quit (Ping timeout: 256 seconds).
01:47:37 <Gregor> <elliott> Merging In The GNU D Language Compiler To GCC (phoronix.com) // huh?
01:47:51 <elliott> Gregor: Apparently Digital Mars are trying to get gdc into gcc :P
01:48:09 <Gregor> Last I knew, Digital Mars doesn't give one flying fuck about gdc.
01:48:29 <elliott> http://www.phoronix.com/scan.php?page=news_item&px=OTk2NA
01:48:31 <elliott> You last knew wrong
01:49:05 <Gregor> Hm. I last new out-of-date is more like it :P
01:49:27 <Gregor> In an ideal world, a canonical gdc could improve the state of D.
01:49:37 <Gregor> Mainly by massively overpowering all non-GCC competition.
01:49:41 <Gregor> In an ideal world, anyway.
01:53:17 <elliott> Gregor: New out-of-date?
01:53:18 <elliott> Old news.
01:53:51 <Gregor> *eh*
01:53:53 <Gregor> I don't English.
01:55:18 <pikhq_> Digital Mars' involvement would be necessary for a GDC merge, since the FSF has copyright assignment policies. So. :)
01:55:53 <elliott> Gregor: It was a pune.
01:56:30 <elliott> localhost:45260 > SetSlot (WindowID (-1)) (-1) Nothing
01:56:30 <elliott> localhost:45260 > PlayerPositionLook (PlayerPos (Point 0.0 64.0 0.0) 71.62) (Direction 0.0 0.0) True
01:56:30 <elliott> localhost:45260 < PlayerPositionLook (PlayerPos (Point 8.5 65.0 8.5) 66.62000000476837) (Direction (-180.0) 0.0) False
01:56:30 <elliott> localhost:45260 < PlayerPosition (PlayerPos (Point 8.5 64.92159999847412 8.5) 66.5416000032425) False
01:56:30 <elliott> localhost:45260 < PlayerPosition (PlayerPos (Point 8.5 64.76636799395752 8.5) 66.386367l9o9c8a7l2h5o8s9t): 4F5a2l6s0e
01:56:32 <elliott> > KeepAlive 0
01:56:33 <lambdabot> Not in scope: data constructor `KeepAlive'
01:56:34 <elliott> localhost:45260 < PlayerPositionLook (PlayerPos (Point 0.0 69.99999999523163 0.0) 71.62) (Direction 0.0 0.0) True
01:56:37 <elliott> localhost:45260 < KeepAlive 0
01:56:39 <elliott> localhost:45260 < PlayerPositionLook (PlayerPos (Point 0.0 69.99999999523163 0.0) 71.62) (Direction 0.0 0.0) False
01:56:42 <elliott> Gregor: Lightweight threads give the absolute best IO.
01:56:44 <elliott> Especially when your line-based IO is based on iteration of character-based IO.
01:56:54 <elliott> It is a fact and everyone will agree on that now.
02:05:54 <zzo38> Is a successor monad similar to a maybe monad?
02:07:42 <monqy> what is that
02:08:31 <zzo38> http://ncatlab.org/nlab/show/successor+monad
02:09:36 <elliott> looks like it
02:09:42 <elliott> Maybe a = a+1, after all
02:24:18 -!- MDude has changed nick to MSleep.
02:26:27 -!- augur has quit (Remote host closed the connection).
02:35:44 -!- CakeProphet has joined.
02:35:45 -!- CakeProphet has quit (Changing host).
02:35:45 -!- CakeProphet has joined.
02:36:20 -!- oerjan has joined.
02:47:10 <oerjan> <CakeProphet> some boxes cheat and DEVOUR MATHEMATICIANS' SOULS TO CREATE EVIL SIDE-EFFECTS. <-- i see you are keeping strictly on topic
02:48:53 <zzo38> oerjan: Good thing you are now on because I wanted to ask a question to you. You linked to Astrolog program from agora-horoscope but that link no longer works (it is a 404 and redirect).
02:49:12 <oerjan> ouch
02:49:40 <oerjan> well i don't think i have a copy
02:49:49 <zzo38> That is OK, it doesn't matter.
02:50:40 -!- GreaseMonkey has joined.
02:51:12 <zzo38> I noticed they have Sun, Moon, Mercury, Venus, Mars, etc, but no Earth. Is that because the horoscopes are calculated relative to the Earth? If so, is it possible to calculate relative to something else?
02:51:55 <zzo38> (Earth is listed underneath, but that seems to have to do with the classical elements.)
02:52:58 <oerjan> zzo38: i have wondered that too, horoscopes seem very earth centered. your exact position on earth is a parameter, and the houses are really i think incorporating earth information
02:53:31 <oerjan> so i've wondered what astrologers are going to do when the first people get born outside earth orbit :P
02:55:34 <oerjan> zzo38: oh, it's www.astrolog.org now
02:55:49 <zzo38> In my opinion, they don't need to do anything; but if they want to do something, they should probably use mathematics of astronomy to determine how to calculate it; that is, if they want to calculate it at all! (What astrologers do doesn't help anyways, so why would you do something about it, unless you wanted accurate scientific calculations? Maybe some astrologers do want it more than others)
02:57:31 <oerjan> one would assume astrologers believe they are actually doing something meaningful
02:57:54 <oerjan> and that it would be important to make such horoscopes, when the time arises
03:00:59 <elliott> Wow, oerjan's horoscope is still linked from agoranomic.org.
03:01:32 <zzo38> Well, if you do want to make such horoscopes, it would seem, they should correct it based on astronomical calculations, I suppose. If you are on different planet, with different length of years, do you consider that too? I don't know! (I don't think astrologers need to decide; but probably they think they need to.)
03:01:44 <zzo38> However, in my opinion, a computer program that does horoscopes ought to have these features.
03:02:07 <oerjan> zzo38: i don't think year lengths are a problem, that's just the position of the sun
03:02:32 <zzo38> oerjan: O, yes, you are correct. It is the relative position of the sun.
03:02:41 <zzo38> It is the same thing.
03:03:50 <oerjan> more serious would be the placement of the spring equinox, since that determines the start of the zodiac.
03:04:35 <zzo38> oerjan: OK. Yes, I suppose so. I don't know a lot about the zodiac.
03:04:38 <oerjan> does every planet even have one? mercury and venus have days synchronized with the year
03:05:22 <oerjan> and uranus rotates nearly 90 degrees off
03:05:26 <zzo38> I don't know.
03:06:58 <oerjan> ooh and the moon of course always points the same face at earth, so earth would have a fixed position
03:07:10 <oerjan> no wait, the zodiac would move
03:07:20 <oerjan> relatively to earth
03:07:35 <oerjan> (if doing a horoscope relative to the moon)
03:25:42 -!- tiffany has joined.
03:26:27 -!- centrinia has quit (Quit: Leaving).
03:27:17 -!- Viator has joined.
03:27:25 <Viator> test
03:27:36 <Viator> hi
03:27:41 <oerjan> esoforum completely overrun with spam again
03:27:47 <oerjan> hello
03:27:56 <elliott> `? welcome
03:27:57 <Viator> whats up?
03:27:58 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
03:28:16 <oerjan> `? elliott
03:28:19 <HackEgo> elliott wrote this learn DB, and wrote or improved many of the other commands in this bot. He probably has done other things?
03:28:25 <elliott> hi
03:28:28 <elliott> `? oerjan
03:28:30 <HackEgo> Your future evil overlord oerjan is an expert in lazy computation.
03:29:12 <oerjan> and i'm not joking on the lazy part.
03:29:37 <Viator> hehe, isn't c++ esoteric enough? ;)
03:29:59 <oerjan> it's ok, as long as you only program in the template system.
03:30:26 <Viator> yeah, right, and use only words from alice in wonderland
03:30:38 <oerjan> ^style alice
03:30:38 <fungot> Selected style: alice (Books by Lewis Carroll)
03:30:47 <oerjan> fungot: That's a good thing, right?
03:30:48 <fungot> oerjan: this fnord the poor.' why, that's been changed into ' shall be absolute governor for life, with the words " and the moral of that fnord' and walked in. in another place, fnord,
03:31:10 <oerjan> fungot: i am not convinced the word "fnord" occurs in lewis carroll's works.
03:31:11 <fungot> oerjan: he served out some fnord with a sense of his guilt, you ought to fnord, but did not attempt to pronounce the sentence with your lips quite close to the little glass table. taking the little golden key, she unlocked the door that led into the garden with one fnord only one i can think of fnord.
03:31:34 <Viator> Down, down, down her own ears for having no think you could see it pop down the flame of get out of the little door into the use with pink eyes ran across the fall dark hall, which way.
03:32:02 <Viator> I <3 markov chains ;)
03:32:06 <oerjan> i... see
03:32:29 <Viator> anyway, thought this chat was about another type of esotericism. cya
03:32:34 <zzo38> oerjan: I think yesterday I and you was discussing categories from graphs. I also have a similar idea for categories from digraphs, where you have a digraph and a cancellation specification to make up a category. What are these called?
03:32:44 -!- Viator has quit (Quit: Among the lucky, you are the chosen one.).
03:33:02 <oerjan> aww, i wanted to tell him we were just discussing astrology :(
03:33:10 <elliott> lol
03:34:05 <oerjan> zzo38: well that's just a special case isn't it?
03:34:11 <CakeProphet> hmmm, so... apparently perl subroutines are not continuations?
03:34:32 <elliott> no shit?
03:34:35 <zzo38> Yes we were, but we have discussed it from a somewhat more scientific point of view than I would guess that astrologers probably usually do
03:35:33 <oerjan> you'd think
03:35:34 <zzo38> oerjan: I mean both things; there is one for graphs and one for digraphs. Although I do suppose you can make a digraph that has a reverse for each line and make that the cancelation rule.
03:35:38 -!- Viator has joined.
03:35:44 <CakeProphet> my %datasets; my $help_mode; sub dataset_handler($) { $datasets{shift} = 1; }
03:35:50 <CakeProphet> this doesn't work correctly, according to warnings.
03:36:08 <zzo38> What I mean, is what are these methods to make a category from graphs and/or digraph, called?
03:36:09 <oerjan> zzo38: i mean isn't the digraph one just a special case of the general graph one?
03:36:15 -!- Viator has quit (Client Quit).
03:36:23 <elliott> missed him again
03:36:59 <zzo38> oerjan: Not as far as I know; it seems different to me.
03:37:07 <CakeProphet> hmmm, maybe if I use a reference instead....
03:37:38 <oerjan> zzo38: oh. please explain how the digraph one works
03:38:49 <zzo38> oerjan: OK. You have a digraph, and a cancellation specification (which might be empty). You can walk only in the direction that the arrows on the digraph go, and the morphisms are those walks.
03:40:02 <CakeProphet> oh okay apparently anonymous subs are closures.
03:40:05 <oerjan> well the category of the walks of a directed graph in general is a well known concept, i thinkg
03:41:46 <zzo38> Well, OK. But what if you add a cancellation specification?
03:41:51 -!- GreaseMonkey has quit (Quit: The Other Game).
03:43:02 <oerjan> i cannot seem to recall anything in particular
03:45:25 -!- GreaseMonkey has joined.
03:47:12 <oerjan> zzo38: if you have complicated enough cancellation specifications, it seems like you could get a result that was equivalent to any (finite) category
03:48:00 <oerjan> well if cancellation means "declaring a walk to be equal to the empty walk"
03:48:55 <oerjan> and it then becomes somewhat analogous to defining a particular monoid or group by generators and equations
03:49:17 <oerjan> *and relations
03:50:33 <oerjan> http://en.wikipedia.org/wiki/Presentation_of_a_monoid
03:50:42 <zzo38> Yes that is what I mean. One example is making any graph into a digraph such that each edge on the graph corresponds to both directions on the digraph, where these directions are defined as cancelling each other.
03:51:43 <oerjan> in a sense a category is just a monoid where some compositions are undefined
03:51:53 -!- augur has joined.
03:52:22 <elliott> hi
03:56:40 <elliott> pikhq_: Gregor: I think you guys might enjoy this quiz: http://ridiculousfish.com/blog/posts/will-it-optimize.html
03:58:38 <elliott> I only got one right :(
04:01:33 <zzo38> When trying to run the Daedalus program (from the same person that made Astrolog), I get the error "The system cannot execute the specified program." but I tried looking in the dependency walker and cannot find anything wrong in there
04:09:09 <zzo38> Does a balanced Eulerian tournament digraph able to make Rock-Paper-Scissors including their variations with more than three throws?
04:12:24 <oerjan> wat
04:15:53 <zzo38> Can you understand what I meant?
04:16:00 <oerjan> nope
04:17:14 <oerjan> although the top google hit for "balanced eulerian tournament" says "A connected bi-directed graph is Eulerian if and only if every vertex is balanced."
04:17:40 <zzo38> I was using stuff from the Wikipedia articles relating to graph theory
04:18:32 <oerjan> well i know eulerian, digraph, and rock-paper-scissors
04:18:51 <oerjan> and i can imagine making a digraph telling who wins in RPS
04:19:18 <oerjan> i don't know what a "throw" is
04:19:45 <zzo38> The throws in RPS are the Rock, Paper, Scissors, are sometimes called the "throws".
04:19:50 <oerjan> ok
04:20:15 <oerjan> i recall once trying to list some such variations that were "minimal" in a sense
04:21:21 <oerjan> i'd imagine you'd want it to be symmetrical between players
04:21:37 <zzo38> Yes.
04:21:45 <Madoka-Kaname> I'm tempted to make an obfuscated RPS program now...
04:21:48 <Madoka-Kaname> Using actual "throws"
04:21:57 <oerjan> and iirc by "minimal" i think i meant that there was no "throw" as you call it which a player could ignore
04:22:16 <zzo38> oerjan: OK.
04:22:31 <Madoka-Kaname> "throw Paper;"
04:22:55 <zzo38> The standard three-throw system is sufficient for two players, and my brother agrees with that, so does the World RPS society. Not everyone agrees.
04:22:56 <oerjan> as in, no throw that could be excluded from an optimal mixed strategy
04:23:14 <zzo38> (And, in fact, makes the best game for two players, too.)
04:24:33 <zzo38> But you can make the game with any odd number of throws at least three. I have thought of a way to make the number of throws infinite, although it does not seem the game can be played in this case.
04:24:43 <oerjan> Madoka-Kaname: rps esolang. get on it. :P
04:25:01 <zzo38> However the infinite throws game is still provably balanced.
04:25:51 <oerjan> what's the definition of "balanced" here?
04:26:51 <zzo38> I mean that if all throws are equally likely, each throw is as likely to win as it is likely to lose against the opponent with equally likely throws all of them.
04:27:01 <zzo38> And each throw still only stalemates against itself.
04:27:06 <oerjan> ok
04:31:40 <zzo38> I think what I had, is that the throws are the integers, and the higher or lower number wins depending whether the difference is odd or even.
04:34:55 <oerjan> well, when you have a countably infinite number of throws, standard probability theory has no concept of them being "equally likely"
04:35:15 <oerjan> because they would each have to have probability 0, and that sums to 0
04:35:20 -!- tiffany has quit (Quit: Bye).
04:35:33 <oerjan> and standard probability theory assumes countable additivity
04:42:59 <zzo38> O, so that is how it works.
04:49:37 -!- MSleep has quit (Read error: Connection reset by peer).
04:49:57 -!- MSleep has joined.
05:13:00 <Patashu> oerjan: in such a system, is there any reason to pick a non 0, 1, 2?
05:13:45 <oerjan> you mean in zzo38's infinite system?
05:14:01 <Patashu> wait
05:14:01 <Patashu> yes
05:16:53 <oerjan> well if you do that you'll have to pick 1 with 50% probability or else the opponent wins on average by choosing 3
05:18:07 <Patashu> hmm, interesting
05:19:14 <Patashu> okay yeah, I see. if you pick from 0 to n, if n is odd the opponent just picks from within your set and wins more than it loses, while if n is even the opponent picks from outside your set and wins more than it loses
05:19:17 <Patashu> so you have to pick everything
05:19:35 <oerjan> but if you do that, any number other than 0,1,2 will win 50% guaranteed
05:19:59 <Patashu> yes
05:25:12 <oerjan> if you then choose 0 less than 50% of the time, the opponent can win on average by choosing 2
05:26:02 <oerjan> so you must choose 0 50% and 1 50%. but then the opponent wins on average with 1.
05:26:19 <Patashu> yup, that's the sequence of logic I followed
05:26:38 <oerjan> um wait
05:26:47 <oerjan> i forgot the possibility of 1 less than 50%
05:27:02 <Patashu> if 1 less than 50%, opponent choses 2 or 3
05:27:10 -!- monqy has quit (Quit: hello).
05:27:11 <Patashu> countering the one you pick more
05:27:17 <oerjan> argh i mean more than 50%
05:27:46 <oerjan> but he can choose -1, iiu zzo38 correctly
05:28:07 <zzo38> Yes, I include all integers, positive and negative and zero
05:28:16 <oerjan> well, not necessary, since 2 or 3 will work as you say
05:31:13 <oerjan> ah. i think this generalizes to show you must use infinitely many possibilities.
05:32:45 <oerjan> otherwise: first, you must choose evens as often as odds or the opponent wins by choosing something larger at the right distance, secondly, you cannot choose your largest number at all or the opponent wins by also choosing it.
05:33:50 <oerjan> (the second part depends on having proved the first part)
05:34:59 <oerjan> intuitively though, i think you still have an optimal strategy if you say choose negative numbers evenly
05:35:08 <oerjan> and never positive ones
05:35:24 <oerjan> s/evenly/with "equal probability"/
05:43:16 -!- Zuu has quit (Ping timeout: 244 seconds).
05:47:17 <elliott> oerjan helo
05:47:43 <oerjan> helocipter
05:50:03 <zzo38> I got Daedalus to run now. It has over 400 options and many examples. It is generally for making mazes, but it does other things too, such as drawing a picture of castles, Escher rooms, and more. It does many kind of mazes, including 2D, 3D, 4D, and 5D.
05:50:35 -!- Zuu has joined.
05:50:40 <Patashu> I have daedalus on my computer
05:50:56 <Patashu> I'm not particularly sure what to -do- with it, though. Running mazes is only entertaining for so long
05:51:07 <elliott> http://www.astrolog.org/labyrnth/daedalus.htm oh this looks neat
05:51:13 <elliott> i was thinking it'd be some astrology crap
05:51:34 <zzo38> elliott: No, Astrolog is astrology program. Daedalus does mazes.
05:51:36 <oerjan> even i thought that
05:51:36 <elliott> http://www.astrolog.org/labyrnth/daedalus/mandy.jpg FSVO mandelbrot set
05:53:54 <Patashu> http://www.astrolog.org/labyrnth/algrithm.htm look at all this everything
05:54:45 <Patashu> everything about mazes you never wanted to know
05:54:53 <zzo38> Astrolog also has a lot of options. You can, in fact, change which planet ("planet" in the astrological sense) you are computing relative to, and it does not only horoscopes but also calendars, local horizon, solar system orbits, rising and setting, you can change the zodiac degree offset, you can change the symbols of planets to the ones commonly used in astronomy, and more.
05:57:06 <elliott> Patashu: dude really likes mazes I guess
05:57:38 <Patashu> it even has a castle simulator! http://www.astrolog.org/labyrnth/daedalus/castle.jpg
05:57:41 <Patashu> it's the next dorf fortress
05:57:41 <elliott> "UFO ship images: I believe Earth is not alone in the universe and we are regularly visited by beings from other worlds. I also believe these beings (including the ones known as Zeta Reticulans or Greys) are friendly and here to assist our planet through its collective adolescence. One of the most common visitors are the Pleiadians. The next time one of their beamships lands in your backyard, don't jus
05:57:41 <elliott> t stare at it wonderingly, but use this UFO ship file I put together to identify it, and start up an intelligent conversation with them. :-)"
05:57:44 <elliott> oh dear
05:57:59 <elliott> (from the astrolog guy)
05:58:21 <Patashu> I swear I ran this maze once and I've never been to america http://www.astrolog.org/labyrnth/daedalus/glacier.jpg o.O
05:58:26 <elliott> "Good vs. evil extraterrestrials: Philosophical insights into the concept of "good" and "evil" extraterrestrials, warfare between solar systems, and whether Earth is at any risk of being invaded or whatever. Transcribed from a channeling of Bashar."
05:58:27 <elliott> ah
05:58:33 <elliott> Patashu: wait you are not from the US?
05:58:35 <Patashu> a channeling of bashar
05:58:39 <Patashu> elliott: Australia
05:58:42 <elliott> oh
05:58:43 <elliott> same thing
05:58:49 <elliott> http://bashar.org/ bashar
05:58:50 <Patashu> Gigamazes: The largest Mazes ever created! Try to solve a Maze measuring a billion passages by a billion passages.
05:58:50 <Patashu> OK
05:58:58 * Patashu dies of old age
05:59:10 <elliott> "Pentagram: I created and posted this image of a pentagram to alt.pagan a number of years ago. The pentagram is a pagan symbol which to me at least represents the higher mind (top point) achieving mastery of the four elements (other points) through spiritual growth."
05:59:15 <elliott> guy created a pentagram once, life achievement
05:59:24 <Patashu> c'mon, don't leave us hanging
05:59:25 <Patashu> post pix
05:59:29 <elliott> http://www.astrolog.org/home/pic/pentagrm.gif
05:59:31 <elliott> contain yourself pls
05:59:36 <Patashu> a decent pentagram
05:59:37 <Patashu> too aliased
05:59:39 <Patashu> 7/10
05:59:59 <elliott> pentagram competition
06:00:02 <Patashu> 'I was not swept off my feet, but I enjoyed the experience' - The New York Times
06:00:17 <Patashu> http://www.astrolog.org/labyrnth/daedalus/pacman.jpg lol
06:00:41 <elliott> is this actually a maze program
06:00:44 <elliott> it seems to be twenty programs
06:00:48 <elliott> in one
06:01:04 <elliott> http://www.astrolog.org/labyrnth/daedalus/maze5d.jpg help
06:01:10 <elliott> it does not look like maze :'(
06:01:30 <elliott> elliott@katia:~/Downloads$ wget http://www.astrolog.org/labyrnth/daedalus/dae23zip.exe
06:01:32 <elliott> let's try this shit
06:01:37 <elliott> gonna get me some mazes
06:01:38 <Patashu> WAAAAH
06:01:40 <Patashu> HEAVY CANNOT SOLVE THIS
06:01:59 <elliott> anyone who isn't playing along at home and installing daedalus: we're no longer friends, sorry
06:02:16 <zzo38> I have installed Daedalus.
06:02:28 <elliott> The following NEW packages will be installed:
06:02:28 <elliott> binfmt-support fonts-horai-umefont gcc-4.6-base:i386 gnome-exe-thumbnailer
06:02:28 <elliott> ia32-libs ia32-libs-multiarch:i386 icoutils imagemagick lib32asound2
06:02:28 <elliott> lib32bz2-1.0 lib32ffi6 lib32gcc1 lib32ncurses5 lib32ncursesw5 lib32nss-mdns
06:02:28 <elliott> lib32stdc++6 lib32tinfo5 lib32z1 libacl1:i386 libattr1:i386 libaudio2:i386
06:02:29 <elliott> libavahi-client3:i386 libavahi-common-data:i386 libavahi-common3:i386
06:02:30 <elliott> libc6:i386 libc6-i386 libcdt4 libcomerr2:i386 libcups2:i386
06:02:32 <elliott> libcupsimage2:i386 libcurl3:i386 libdb5.1:i386 libdbus-1-3:i386 libdrm2:i386
06:02:35 <elliott> libexpat1:i386 libffi6:i386 libfontconfig1:i386 libfreetype6:i386
06:02:37 <elliott> libgcc1:i386 libgcrypt11:i386 libgdbm3:i386 libgl1-mesa-glx:i386
06:02:38 <elliott> libglapi-mesa:i386 libglib2.0-0:i386 libgnutls26:i386 libgpg-error0:i386
06:02:40 <elliott> libgraph4 libgssapi-krb5-2:i386 libgvc5 libice6:i386 libidn11:i386
06:02:42 <elliott> libjpeg62:i386 libk5crypto3:i386 libkeyutils1:i386 libkrb5-3:i386
06:02:45 <elliott> libkrb5support0:i386 liblcms1:i386 libldap-2.4-2:i386 liblqr-1-0
06:02:47 <elliott> libmagickcore3 libmagickcore3-extra libmagickwand3 libmng1:i386 libnetpbm10
06:02:48 <elliott> libnspr4:i386 libnss3:i386 libpathplan4 libpcre3:i386 libpng12-0:i386
06:02:51 <elliott> libqt4-dbus:i386 libqt4-declarative:i386 libqt4-designer:i386
06:02:52 <elliott> libqt4-network:i386 libqt4-opengl:i386 libqt4-qt3support:i386
06:02:54 <elliott> libqt4-script:i386 libqt4-scripttools:i386 libqt4-sql:i386 libqt4-svg:i386
06:02:56 <elliott> libqt4-test:i386 libqt4-xml:i386 libqt4-xmlpatterns:i386 libqtcore4:i386
06:02:58 <elliott> libqtgui4:i386 librtmp0:i386 libsasl2-2:i386 libsasl2-modules:i386
06:03:00 <elliott> libselinux1:i386 libsm6:i386 libsqlite3-0:i386 libssl1.0.0:i386
06:03:02 <elliott> libstdc++6:i386 libtasn1-3:i386 libtiff4:i386 libuuid1:i386 libx11-6:i386
06:03:04 <elliott> libxau6:i386 libxcb1:i386 libxdamage1:i386 libxdmcp6:i386 libxext6:i386
06:03:06 <elliott> libxfixes3:i386 libxi6:i386 libxrender1:i386 libxss1:i386 libxt6:i386
06:03:08 <elliott> libxxf86vm1:i386 netpbm qdbus:i386 winbind wine wine1.3 wine1.3-gecko
06:03:10 <elliott> winetricks zlib1g:i386
06:03:12 <elliott> dear apt-get: what did I do, I'm so sorry; love, elliott
06:03:13 <Patashu> anything else?
06:03:14 <elliott> oh er
06:03:16 <elliott> that's longer than i expected
06:03:30 <elliott> hi
06:04:04 <elliott> BIT QUIET IN HERE
06:04:24 <elliott> Patashu: so how much effort is it to use all the upside down unicode characters so that everyone else can read your messages
06:04:27 <elliott> do you have a script to do it :D
06:04:37 <Patashu> funny
06:05:06 <elliott> yes it is two thousand and eleven anno domini and upside down australia jokes are funny and topical
06:05:48 <Patashu> http://www.astrolog.org/labyrnth/maze/symmetry.gif this makes me think of memes
06:06:30 <elliott> god i could stare at that forever
06:06:34 <elliott> until my eyes start leaking blood
06:07:06 <elliott> Failed to fetch http://gb.archive.ubuntu.com/ubuntu/pool/main/g/glib2.0/libglib2.0-dev_2.30.0-0ubuntu3_amd64.deb 404 Not Found
06:07:06 <elliott> Failed to fetch http://gb.archive.ubuntu.com/ubuntu/pool/main/g/glib2.0/libglib2.0-bin_2.30.0-0ubuntu3_amd64.deb 404 Not Found
06:07:06 <elliott> Failed to fetch http://gb.archive.ubuntu.com/ubuntu/pool/main/g/glib2.0/libglib2.0-0_2.30.0-0ubuntu3_amd64.deb 404 Not Found
06:07:06 <elliott> Failed to fetch http://gb.archive.ubuntu.com/ubuntu/pool/main/g/glib2.0/libglib2.0-0_2.30.0-0ubuntu3_i386.deb 404 Not Found
06:07:09 <elliott> E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
06:07:11 <elliott> oh noooooooooo
06:08:49 <elliott> 83% [11 libllvm2.9 2,496 kB/6,560 kB 38%] 858 kB/s 8s
06:08:52 <elliott> wine depends on that??????
06:08:55 <elliott> new world, new lifestyle, new changes,
06:09:27 <Patashu> this looks cool
06:09:27 <Patashu> Template: Mazes based on templates are done by simply starting with the base template image, then running the isolation remover to ensure the Maze has a solution, followed by the loop remover to ensure the Maze is hard enough, resulting in a perfect Maze that still looks very similar to the original image. For example, to create a Maze composed of interlocking spirals, just create some random
06:09:28 <Patashu> spirals without worrying whether it's a Maze or not, then run it through the isolation and loop removers.
06:10:14 <elliott> oh wow the daedalus setup program is awkward
06:10:20 <elliott> Patashu: i hope you're doing this too :'(
06:11:13 <elliott> omg
06:11:16 <elliott> Patashu: it works :')
06:11:30 <elliott> Patashu: dear god
06:11:35 <elliott> Patashu: it can run GoL on a maze
06:11:47 <Patashu> what
06:11:48 <zzo38> Yes, it does have a lot of options.
06:12:00 <elliott> draw → life generate, it has a shortcut, Alt+L
06:12:02 <elliott> definitely needs a shortcut
06:12:03 <elliott> very common operation
06:12:06 <Patashu> LOl
06:12:29 <elliott> some of these are really cool install this program now you will love it
06:12:54 <zzo38> Almost everything in that program has a shortcut. Remember that if the letters are uppercase you need to use shift.
06:43:37 <elliott> `quote GFDL
06:43:42 <HackEgo> 151) * Phantom_Hoover wonders where the size of the compiled Linux kernel comes from. <cpressey> To comply with the GFDL, there's a copy of Wikipedia in there.
06:43:55 -!- CakeProphet has quit (Ping timeout: 252 seconds).
06:52:59 -!- aloril has quit (Ping timeout: 240 seconds).
07:09:21 -!- aloril has joined.
07:14:06 -!- pikhq has joined.
07:14:12 -!- pikhq_ has quit (Ping timeout: 258 seconds).
07:15:22 -!- hagb4rd has joined.
07:21:44 -!- Ngevd has joined.
07:23:15 <oerjan> @vixen Are the rumors of your death exaggerated?
07:23:15 <lambdabot> A public man must never forget that he loses his usefulness when he as an individual, rather than his policy, becomes the issue.
07:23:21 <oerjan> eek
07:23:26 <oerjan> @list vixen
07:23:27 <lambdabot> No module "vixen" loaded
07:23:35 <oerjan> shocking
07:45:43 <oerjan> @vixen I have this tape recorder...
07:45:43 <lambdabot> The second point is that coming out--coming back and saying that black Americans aren't as good as black Africans--most of them , basically, are just out of the trees. Now, let's face it, they are.
07:49:27 -!- nooga has joined.
07:57:35 <zzo38> The sunrise and sunset listed in Astrolog are a few minutes difference from those in other programs. Is it because astrology uses different rise/sets? Is it because I entered an incorrect input?
08:00:47 <pikhq> Knowing what I do know about astrology, I'd be willing to bet it's using a rather ridiculous means of calculating sunrise and sunset.
08:05:11 <zzo38> Changing the zodiac degree offset to -3.6 appears to give give the same answers as other sources.
08:07:44 -!- CakeProphet has joined.
08:08:11 <zzo38> Wikipedia says to use 24 degrees.
08:08:22 -!- CakeProp1et has joined.
08:09:17 <zzo38> But 24 doesn't work, it only works with -3.6
08:10:36 -!- CakeProp1et has quit (Client Quit).
08:12:39 <zzo38> The setting is labeled "Zodiac Degree Offset / Ayanamsa" and Wikipedia has an article about Ayanamsa.
08:19:06 -!- oerjan has quit (Quit: Later).
08:22:48 <Ngevd> Obfuscated Haskell! \n -> sum (read ((++) (init ('[':concat (map (:",") (filter (flip any ['0'..'9'] . (==)) (show n))))) "]") :: [Int])
08:24:42 <elliott> :t any
08:24:43 <lambdabot> forall a. (a -> Bool) -> [a] -> Bool
08:25:50 <elliott> f n = sum (read xs :: [Int])
08:25:50 <elliott> where xs = init ('[' : concat (map (:",") $ filter (flip any ['0'..'9'] . (==)) $ show n)) ++ "]"
08:25:58 <elliott> It's not that bad. Although the algorithm looks stupid.
08:26:45 <Ngevd> pl'ing it doesn't work
08:26:53 <elliott> ?pl \n -> sum (read ((++) (init ('[':concat (map (:",") (filter (flip any ['0'..'9'] . (==)) (show n))))) "]") :: [Int])
08:26:53 <lambdabot> sum . (:: [Int]) . read . (++ "]") . init . ('[' :) . join . map (: ",") . filter (flip any ['0'..'9'] . (==)) . show
08:27:00 <elliott> Well, it fucks up the type signature.
08:27:13 <elliott> ?pl \n -> sum (FFFF (read ((++) (init ('[':concat (map (:",") (filter (flip any ['0'..'9'] . (==)) (show n))))) "]")))
08:27:13 <lambdabot> sum . FFFF . read . (++ "]") . init . ('[' :) . join . map (: ",") . filter (flip any ['0'..'9'] . (==)) . show
08:27:15 <elliott> Eh.
08:27:32 <elliott> ?pl (++) (init ('[':concat (map (:",") (filter (flip any ['0'..'9'] . (==)) (show n))))) "]"))
08:27:32 <lambdabot> (line 1, column 89):
08:27:32 <lambdabot> unexpected ")"
08:27:32 <lambdabot> expecting variable, "(", operator or end of input
08:27:34 <elliott> ?pl (++) (init ('[':concat (map (:",") (filter (flip any ['0'..'9'] . (==)) (show n))))) "]")
08:27:34 <lambdabot> (line 1, column 89):
08:27:34 <lambdabot> unexpected ")"
08:27:36 <lambdabot> expecting variable, "(", operator or end of input
08:27:38 <elliott> ?pl (++) (init ('[':concat (map (:",") (filter (flip any ['0'..'9'] . (==)) (show n))))) "]"
08:27:38 <lambdabot> init ('[' : ((: ",") =<< filter (flip any ['0'..'9'] . (==)) (show n))) ++ "]"
08:27:57 <elliott> ?pl \n -> (++) (init ('[':concat (map (:",") (filter (flip any ['0'..'9'] . (==)) (show n))))) "]"
08:27:57 <lambdabot> (++ "]") . init . ('[' :) . join . map (: ",") . filter (flip any ['0'..'9'] . (==)) . show
08:28:19 <elliott> > let readSpecial :: String -> [Int]; readSpecial = read in sum . readSpecial . (++ "]") . init . ('[' :) . join . map (: ",") . filter (flip any ['0'..'9'] . (==)) . show
08:28:20 <lambdabot> Overlapping instances for GHC.Show.Show (a -> GHC.Types.Int)
08:28:20 <lambdabot> arising fro...
08:28:22 <elliott> :t let readSpecial :: String -> [Int]; readSpecial = read in sum . readSpecial . (++ "]") . init . ('[' :) . join . map (: ",") . filter (flip any ['0'..'9'] . (==)) . show
08:28:23 <lambdabot> forall a. (Show a) => a -> Int
08:28:44 <elliott> :t let readSpecial :: String -> [Int]; readSpecial = read in sum . readSpecial . (++ "]") . init . ('[' :) . concat . map (: ",") . filter (flip any ['0'..'9'] . (==)) . show
08:28:45 <lambdabot> forall a. (Show a) => a -> Int
08:28:54 <elliott> Ngevd: What is it even meant to do?
08:29:04 <Ngevd> Digital sum
08:29:17 <Ngevd> Of non-integers
08:33:45 <Ngevd> By converting them into a string, converting that string into a list of digits, then finding the sum of that
08:34:41 <Ngevd> The craziest bit is probably converting the string to the list
08:35:14 <Ngevd> It involves inserting ',' after each character
08:35:23 <Ngevd> Then putting a '[' on the front
08:36:08 <Ngevd> Then taking a ',' off the end
08:36:14 <Ngevd> then putting a ']' on the end
08:36:21 <Ngevd> then reading it as a [Int]
08:36:27 <Ngevd> Probably a number of easier ways
08:36:40 <zzo38> O, I think I have figured out why entering 24 doesn't work. The documentation says to enter 0 for Fagan Bradley; Wikipedia says "Western Astrologers Fagan and Bradley computed it at 24 degrees in 1950"
08:42:52 <elliott> Ngevd: You realise that String == [Char]?
08:43:53 <Ngevd> Yes
08:43:58 <elliott> Hmm
08:44:05 <elliott> I can't actually figure out what the hell you do there, so :P
08:44:11 <elliott> > ((++ "]") . init . ('[' :) . concat . map (: ",") . filter (flip any ['0'..'9'] . (==)) . show) 9090909999
08:44:12 <lambdabot> "[9,0,9,0,9,0,9,9,9,9]"
08:44:13 <Ngevd> It was designed to echo my thought process
08:44:16 <elliott> > ((++ "]") . init . ('[' :) . concat . map (: ",") . filter (flip any ['0'..'9'] . (==)) . show) "texas99aaxasbsa"
08:44:17 <lambdabot> "[9,9]"
08:44:31 <elliott> Ngevd: I'm not exactly why you want show here at all
08:44:45 <Ngevd> Because I am mad
08:44:57 <Ngevd> |
08:45:03 <Ngevd> =|:-{D
08:45:04 <elliott> > divMod 9090909999 10
08:45:05 <lambdabot> (909090999,9)
08:45:09 <Ngevd> |
08:45:11 <elliott> > divMod 90 10
08:45:12 <lambdabot> (9,0)
08:45:42 <elliott> > let digits n = let (x,n') = divMod n 10 in x : digits n' in digits 9099
08:45:42 <lambdabot> [909,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,...
08:45:48 <elliott> > let digits 0 = []; digits n = let (x,n') = divMod n 10 in x : digits n' in digits 9099
08:45:49 <lambdabot> [909,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,...
08:45:53 <elliott> wat
08:45:54 <elliott> oh
08:46:01 <elliott> > let digits 0 = []; digits n = let (n',x) = divMod n 10 in x : digits n' in digits 9099
08:46:02 <lambdabot> [9,9,0,9]
08:47:03 <Deewiant> > ((++ "]") . ('[':) . intersperse ',' . filter (`elem` ['0'..'9']) . show) "texas99aaxasbsa"
08:47:05 <lambdabot> "[9,9]"
08:47:18 <elliott> Deewiant: I don't think we need to encourage this awful "show" thing
08:47:25 <elliott> :t divMod
08:47:26 <lambdabot> forall a. (Integral a) => a -> a -> (a, a)
08:47:44 <elliott> Ngevd:
08:47:44 <elliott> digits :: (Integral a) => a -> [a]
08:47:44 <elliott> digits 0 = []
08:47:44 <elliott> digits n = d : digits n'
08:47:44 <elliott> where (n',d) = divMod n 10
08:47:44 <elliott>
08:47:46 <elliott> digitalSum :: (Integral a) => a -> a
08:47:48 <elliott> digitalSum = sum . digits
08:47:56 <elliott> If you try and generalise it to any Show I'll get mad
08:48:17 <Ngevd> It wasn't written to show good coding practices
08:48:21 <elliott> MAAAAD
08:48:55 <elliott> > let digits 0 = []; digits n = uncurry (:) $ digits <$> n `divMod` 10 in digits 9909
08:48:56 <lambdabot> [990,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,...
08:49:04 <elliott> > let digits 0 = []; digits n = flip . uncurry (:) $ digits <$> n `divMod` 10 in digits 9909
08:49:05 <lambdabot> Couldn't match expected type `[a -> b]'
08:49:05 <lambdabot> against inferred type `a ->...
08:49:15 <elliott> > let digits 0 = []; digits n = uncurry (:) . swap $ digits <$> n `divMod` 10 in digits 9909
08:49:16 <lambdabot> Not in scope: `swap'
08:49:22 <elliott> > let digits 0 = []; digits n = uncurry (flip (:)) $ digits <$> n `divMod` 10 in digits 9909
08:49:23 <lambdabot> Occurs check: cannot construct the infinite type: a = [a]
08:49:30 <elliott> :-(
08:49:33 <elliott> > let digits 0 = []; digits n = uncurry (flip (:)) $ digits <$> (n `divMod` 10) in digits 9909
08:49:34 <lambdabot> Occurs check: cannot construct the infinite type: a = [a]
08:49:48 <elliott> > let digits 0 = []; digits n = uncurry (:) $ digits . swap <$> n `divMod` 10; swap (x,y) = (y,x) in digits 9909
08:49:49 <lambdabot> No instance for (GHC.Real.Integral (t, t))
08:49:49 <lambdabot> arising from a use of `e_1010...
08:50:03 <elliott> > let digits 0 = []; digits n = uncurry (:) $ digits <$> swap (n `divMod` 10); swap (x,y) = (y,x) in digits 9909
08:50:03 <lambdabot> [9,0,9,9]
08:50:25 <elliott> ?pl \n -> uncurry (:) $ digits <$> swap (n `divMod` 10)
08:50:25 <lambdabot> uncurry (:) . (digits <$>) . swap . (`divMod` 10)
08:51:26 <elliott> Ngevd: digitSum = nat 0 $ uncurry (+) . fmap digitSum . swap . (`divMod` 10)
08:51:44 <elliott> Given obvious nat 0 z _ = z; nat n z f = f (nat (n-1) z f)
08:51:59 <elliott> Now Deewiant will come along and decimate the length of that
08:53:37 <elliott> Cough
08:53:53 <Ngevd> "Not in scope: nat"?
08:54:14 <elliott> <elliott> Given obvious nat 0 z _ = z; nat n z f = f (nat (n-1) z f)
08:54:23 <elliott> It's the obvious catamorphism for the naturals
08:54:24 <Ngevd> Ah
08:54:28 <elliott> Or the fold over naturals, if you prefer
08:54:33 <elliott> Or a function from naturals to their Church representation
08:54:37 <elliott> s/a/the/
08:57:32 -!- nooga has quit (Ping timeout: 258 seconds).
08:59:46 -!- nooga has joined.
09:01:32 <nooga> pog
09:01:55 <elliott> pogs
09:02:23 <CakeProphet> subsistence pharming
09:03:47 <Ngevd> Well, I'll go back to Piet
09:10:02 -!- Ngevd has quit (Ping timeout: 260 seconds).
09:20:15 <elliott> ?hoogle system
09:20:15 <lambdabot> No results found
09:21:56 -!- zzo38 has quit (Remote host closed the connection).
09:24:00 -!- Phantom_Hoover has joined.
09:25:31 -!- nooga has quit (Ping timeout: 258 seconds).
09:46:16 -!- nooga has joined.
09:47:35 -!- Jafet has joined.
09:54:09 <nooga> curry
09:55:22 <elliott> uncurry
09:56:33 <nooga> uncurry chicken
09:58:10 <elliott> Yes.
10:28:33 -!- Ngevd has joined.
10:30:06 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
10:34:16 -!- CakeProphet has quit (Ping timeout: 259 seconds).
10:35:38 -!- CakeProphet has joined.
10:35:39 -!- CakeProphet has quit (Changing host).
10:35:39 -!- CakeProphet has joined.
10:43:10 -!- Phantom_Hoover has joined.
10:46:25 -!- variable has quit (Excess Flood).
10:47:07 -!- variable has joined.
11:01:55 -!- Vorpal has joined.
11:09:14 -!- pikhq_ has joined.
11:09:41 -!- pikhq has quit (Ping timeout: 276 seconds).
11:16:39 <Phantom_Hoover> http://www.reddit.com/r/askscience/comments/l4lqu/when_i_get_an_iv_why_do_i_immediately_taste_the/c2psz64
11:16:41 <Phantom_Hoover> Oh my god
11:20:40 * Phantom_Hoover wonders why he can't see any blood in his tea.
11:24:04 <elliott> Phantom_Hoover: That is, surprisingly enough, a normal state for tea to be in.
11:24:37 <Phantom_Hoover> elliott, not when you have a cut on your upper lip!"
11:34:06 -!- Ngevd has quit (Ping timeout: 248 seconds).
11:35:59 -!- myndzi has quit (Ping timeout: 252 seconds).
11:39:55 -!- GreaseMonkey has quit (Quit: The Other Game).
12:07:07 -!- Ngevd has joined.
12:13:38 <Phantom_Hoover> > 450 * 32
12:13:39 <lambdabot> 14400
12:14:17 <Ngevd> > (-) ((*) 450 32) ((^) 120 2)
12:14:18 <lambdabot> 0
12:15:33 <Phantom_Hoover> > 14400 * 5
12:15:34 <lambdabot> 72000
12:16:26 -!- Jafet1 has joined.
12:17:12 <Ngevd> Leeuw
12:19:43 -!- Jafet has quit (Ping timeout: 265 seconds).
12:29:52 <Patashu> I am having the most depressing problem with PHP
12:30:01 <Ngevd> Is it to do with }s?
12:30:02 <Patashu> in one .php in a particular folder, I can open a file using a path
12:30:05 <Ngevd> I hate }?
12:30:11 <Patashu> When I pass the path to another .php in the same folder, the path no longert works
12:43:23 <shachaf> ?so !c printf("blah");
12:43:23 <lambdabot> !c printf("blah"); not available
12:43:29 <shachaf> Hmph.
12:43:38 <shachaf> You're in too many channels, elliott.
12:43:44 <elliott> I'm in three.
12:43:56 <Ngevd> That's one more than me
12:43:57 <elliott> Oh, EgoBot ignores lambdabot these days.
12:43:59 <elliott> Or does it.
12:44:03 <elliott> I think it doesn't ignore it but won't send do it.
12:44:06 <shachaf> elliott: Only two of which I'm in.
12:44:09 <elliott> So yeah, that botloop is broken; also EgoBot isn't here.
12:44:10 <shachaf> Therefore, too many.
12:44:14 * shachaf is in ~90 channels.
12:45:17 <Phantom_Hoover> Which two channels are you and elliott both in?
12:45:29 <Ngevd> `echo fungot test
12:45:29 <fungot> Ngevd: it is supposed to have the story thus taken out of his mouth, " and if oo puts fnord one end, oo know!"
12:45:31 <HackEgo> fungot test
12:45:55 <Ngevd> So, fungot ignores HackEgo
12:45:56 <fungot> Ngevd: ' but if you find him with his friends, the whole of your case, more fnord would be worth the trouble of getting up and picking the daisies, who were discussing some new music that had just arrived from london.
12:46:25 <Phantom_Hoover> ^style
12:46:25 <fungot> Available: agora alice* c64 ct darwin discworld europarl ff7 fisher fungot homestuck ic irc jargon lovecraft nethack pa sms speeches ss wp youtube
12:47:16 <elliott> ^style fungot
12:47:17 <fungot> Selected style: fungot (What I've said myself)
12:47:35 <Ngevd> fungot fungot fungot fungot
12:47:36 <fungot> Ngevd:. i'm so kind, even to assholes! anmaster no not markov anmaster no not markov anmaster no not markov anmaster no not markov anmaster no not markov
12:48:21 <Ngevd> anmaster: no! Not Markov!
12:48:29 <Ngevd> ...Who or what is anmaster?
12:48:50 <Phantom_Hoover> Vorpal in a previous life.
12:49:10 <Phantom_Hoover> Oh my god that is the new best style.
12:49:10 <Ngevd> Vorpal: no! Not Markov!
12:49:16 <Phantom_Hoover> fungot, hello!
12:49:16 <fungot> Phantom_Hoover: i am just as confused. you, in the course of the evening." make up your mind. now, only the 3 dead, and one of these contexts. the third aspect is this a cognate of the spanish fnord fnord?
12:49:31 <elliott> `addquote <fungot> Ngevd:. i'm so kind, even to assholes! anmaster no not markov anmaster no not markov anmaster no not markov anmaster no not markov anmaster no not markov
12:49:32 <fungot> elliott: it's just so stupid that ' stty erase h' has, perhaps, it may be said that particularly here, parliament will give a single instance, `-h' ( currently the only thing
12:49:33 <HackEgo> 705) <fungot> Ngevd:. i'm so kind, even to assholes! anmaster no not markov anmaster no not markov anmaster no not markov anmaster no not markov anmaster no not markov
12:49:52 <elliott> fizzie: How'd it get that . right after "Ngevd:"?
13:04:46 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .).
13:06:24 <Ngevd> Goodnight
13:06:25 -!- Ngevd has quit (Quit: Leaving).
13:06:40 <Phantom_Hoover> But it's two in the afternoon...
13:07:03 -!- Jafet1 has quit (Quit: Leaving.).
13:07:57 <elliott> What.
13:08:02 -!- MSleep has changed nick to MDude.
13:09:29 -!- pikhq has joined.
13:09:34 -!- pikhq_ has quit (Ping timeout: 248 seconds).
13:17:55 -!- CakeProphet has quit (Ping timeout: 255 seconds).
13:22:12 -!- nooga has quit (Ping timeout: 252 seconds).
13:22:27 -!- nooga has joined.
13:25:05 -!- Ngevd has joined.
13:29:35 <Ngevd> I wonder if POVray is turing complete
13:29:37 -!- MSleep has joined.
13:33:20 -!- MDude has quit (Ping timeout: 252 seconds).
13:37:50 <elliott> [[
13:37:51 <elliott> May 30, 2011
13:37:51 <elliott> Today FFmpeg has received the first legal threat in its existence. Its from a previous root admin of FFmpeg, who now is root admin of the Libav fork of FFmpeg. He claims copyright on the zigzag part of our logo. It has to be noted that he said 4 years ago Credit to whoever came up with the zigzag idea
13:37:51 <elliott> Update May 31/June 1:We have replaced the logo with a better looking one drawn by Hervé Flores.
13:37:52 <elliott> ]]
13:37:58 <elliott> This is the stupidest drama.
13:42:24 <Phantom_Hoover> Yes.
13:42:26 <Phantom_Hoover> Yes it is.
13:50:47 -!- nooga has quit (Ping timeout: 255 seconds).
14:05:15 -!- derrik has joined.
14:12:30 -!- nooga has joined.
14:14:00 <Ngevd> I'm thinking of making a language to compile into BytePusher
14:14:24 <Ngevd> Thoughts?
14:14:45 <Ngevd> By which I probably mean "Feature requests?"
14:15:25 <elliott> It should be Haskell.
14:15:29 <elliott> Also, it's not night time.
14:15:37 <Ngevd> True
14:15:44 <elliott> Stop saying it is.
14:15:44 <Ngevd> I just said goodnight because..
14:15:45 <Ngevd> Um..
14:15:54 <elliott> No. It is unacceptable. We are ashamed.
14:16:01 <Ngevd> I was having a nap
14:21:54 <Ngevd> Wait, it's been done
14:27:47 -!- nooga has quit (Ping timeout: 240 seconds).
14:28:30 -!- nooga has joined.
14:30:47 <Ngevd> Question
14:31:07 <Ngevd> In BytePusher, does changing the Keyboard state bytes do anything other than changing those bytes?
14:32:03 <elliott> I would say that's UB
14:32:16 <elliott> As in, you're not allowed to write there
14:37:08 -!- nooga has quit (Ping timeout: 255 seconds).
14:41:45 -!- Jafet has joined.
14:46:54 -!- sllide has joined.
14:47:28 -!- Ngevd has quit (Ping timeout: 252 seconds).
14:55:22 -!- ais523 has joined.
15:07:23 <elliott> hi ais523
15:07:40 <ais523> hi el
15:07:45 <ais523> *elliott
15:47:25 <fizzie> elliott: I don't know, but the spacing is a bit messy anyway. It could be that it works by writing out normal words with a space prefixed, while "." and "," and such don't get the initial space.
15:47:37 -!- Ngevd has joined.
15:49:57 <Ngevd> http://www.bbc.co.uk/news/world-us-canada-15226883
15:50:14 <elliott> Beards and hair cut off.
15:50:19 <elliott> You can't make this shit up.
15:51:24 -!- derrik has quit (Quit: take cares).
15:52:07 <Phantom_Hoover> http://en.wikipedia.org/wiki/Cats_of_Queen_Ber%C3%BAthiel
15:52:08 <Phantom_Hoover> OK
15:52:17 <Phantom_Hoover> this may well be the single most ridiculous article.
15:54:39 <Ngevd> Perhaps
16:01:35 -!- monqy has joined.
16:07:20 <ais523> Phantom_Hoover: have you seen the article on toilet roll orientation?
16:07:29 <Phantom_Hoover> I have.
16:07:32 <Phantom_Hoover> OK, point taken.
16:07:41 <Phantom_Hoover> It's the single most ridiculous LotR thing ever.
16:08:05 <Phantom_Hoover> http://www.youtube.com/watch?v=raLbY_ykK48
16:08:09 <Phantom_Hoover> Oops, wrong channel.
16:11:32 <Phantom_Hoover> http://imgur.com/a/fM61a
16:11:37 <Phantom_Hoover> fungot?
16:11:37 <fungot> Phantom_Hoover: agora alice c64 ct darwin discworld europarl ff7 fisher ic irc* jargon lovecraft nethack pa speeches ss wp youtube*
16:11:48 <Phantom_Hoover> fungot, ahahahahahahahahahaha
16:11:48 <fungot> Phantom_Hoover:. i'm so kind, even to assholes! anmaster no not markov anmaster no not markov anmaster no not markov
16:12:02 <elliott> Phantom_Hoover: destro y air physical xyzzy sounds good.
16:12:07 <Phantom_Hoover> This is the single best thing
16:12:08 <Phantom_Hoover> ever
16:12:20 <Phantom_Hoover> At first I was like 'what' and then I realised.
16:12:21 <elliott> ais523: we fed fungot into itself
16:12:21 <fungot> elliott: and more plus the latin is a timeless language
16:12:38 <ais523> elliott: ouch
16:14:29 <ais523> hmm, one of my friends came up with this, possibly the most pointless website ever: http://localhost.acehack.us
16:14:33 <elliott> Couldn't match type `n0' with `n3'
16:14:33 <elliott> because type variable `n3' would escape its scope
16:14:33 <elliott> This (rigid, skolem) type variable is bound by
16:14:33 <elliott> a type expected by the context: p (S n3) -> p n3
16:14:33 <elliott> euurgh
16:14:48 <ais523> elliott: what a bizarre error
16:14:58 <ais523> what language? it's definitely functional
16:15:00 <elliott> ais523: oh, this is ordinary for me
16:15:01 <elliott> Haskell
16:15:07 <elliott> with a few extensions :P
16:15:14 <ais523> yep, it didn't look like "raw" Haskell
16:15:57 <elliott> ais523: I think you could have a non-functional language with that error message... assuming you'll grant, like, C sharp as non-functional
16:16:18 <ais523> elliott: so do I, but non-functional languages rarely write "Couldn't match" in their error messages
16:16:23 <ais523> nor have type variables
16:16:34 <elliott> or "(rigid, skolem)" :)
16:16:39 <ais523> I didn't know what that meant
16:16:52 <elliott> I'm not sure myself :P
16:17:23 <elliott> ais523: I think I might have to bring in the big guns for this one (there is only one big gun, it is called unsafeCoerce)
16:17:32 <elliott> (or as I like to call it, "shut up GHC. just shut up. shut. up.")
16:17:48 <ais523> but it's unsafe!
16:18:23 <elliott> ais523: Yes, well, so is LIVING.
16:18:57 <elliott> oh, what a nice surprise; I just needed more type signatures
16:19:42 -!- azaq23 has joined.
16:21:09 <monqy> thanks ghc
16:21:11 <monqy> for understanding
16:22:41 <elliott> /home/elliott/Code/lc/lc.hs:27:36:
16:22:41 <elliott> Could not deduce (Prop (p0 n)) arising from a use of `unwrap'
16:22:41 <elliott> from the context (Prop (p n_tD))
16:22:41 <elliott> bound by a type expected by the context:
16:22:41 <elliott> Prop (p n_tD) => LC n -> Un (p0 n)
16:22:41 <elliott> at /home/elliott/Code/lc/lc.hs:27:29-81
16:22:50 <elliott> ais523: I've never seen n_tD before...
16:22:53 <elliott> (as a generated name)
16:23:00 <ais523> it's probably run out of names
16:23:08 <elliott> heh
16:26:12 <elliott> !haskell :t System.IO.Unsafe.unsafePerformIO $ Foreign.peek . intPtrToPtr . fromIntegral =<< randomRIO (0, 2^32)
16:26:24 <elliott> aww, no EgoBot
16:27:20 <elliott> /home/elliott/Code/lc/lc.hs:32:30:
16:27:20 <elliott> Couldn't match type `p' with `(->) (p n3 -> Un (p n1))'
16:27:20 <elliott> `p' is a rigid type variable bound by
16:27:20 <elliott> the type signature for
16:27:20 <elliott> foldLC' :: (forall n3 r. ((Un (p n3) -> p n3) -> r) -> r)
16:27:21 <elliott> -> (forall n3. p n3 -> Un (p n3))
16:27:23 <elliott> -> (forall n3. Fin n3 -> Un (p n3))
16:27:25 <elliott> -> (forall n3. Un (p n3) -> Un (p n3) -> Un (p n3))
16:27:27 <elliott> -> (forall n3. Un (p (S n3)) -> Un (p n3))
16:27:29 <elliott> -> LC n
16:27:31 <elliott> -> p n
16:27:33 <elliott> sigh
16:32:31 <elliott> Illegal polymorphic or qualified type:
16:32:31 <elliott> forall m. (Fin n -> Fin m) -> LC m
16:32:32 <elliott> OH COME ON
16:32:53 * elliott should have seen that one coming.
16:37:06 <elliott> http://sprunge.us/fAFX
16:37:06 <elliott> Sigh.
16:58:55 -!- Vorpal has quit (Ping timeout: 248 seconds).
17:00:22 -!- derrik has joined.
17:01:42 -!- Vorpal has joined.
17:06:43 -!- azaq23 has quit (Quit: Leaving.).
17:28:58 -!- Ngevd has quit (Quit: dinner).
17:41:45 -!- CakeProphet has joined.
17:41:45 -!- CakeProphet has quit (Changing host).
17:41:45 -!- CakeProphet has joined.
17:43:38 -!- CakeProphet has quit (Client Quit).
17:44:10 -!- CakeProphet has joined.
17:53:13 -!- sllide has quit (Read error: Connection reset by peer).
17:55:27 <CakeProphet> awww yeah
17:55:32 <CakeProphet> no way my laptop is going to overheat now.
17:57:26 <fizzie> *fwoom*
17:58:50 <pikhq> It's effing snowing.
17:58:54 <pikhq> The hell.
17:59:31 <CakeProphet> pikhq: where do you live?
17:59:38 <pikhq> Colorado.
17:59:43 -!- Nisstyre has quit (Ping timeout: 248 seconds).
17:59:47 <CakeProphet> that's not /too/ unreasonable I guess...
17:59:52 <CakeProphet> still it's October...
18:00:05 <pikhq> It's not unheard of, but it's still fairly uncommon.
18:00:28 <pikhq> Usually it has the decency to at least wait till November.
18:00:59 <CakeProphet> now...
18:01:04 <CakeProphet> if it snowed in Georgia on October.
18:01:08 <CakeProphet> you know something is fucked up.
18:01:13 <pikhq> Yeah.
18:01:22 <CakeProphet> that shit doesn't happen until deep winter.
18:01:27 <CakeProphet> if then.
18:02:13 <CakeProphet> does Colorado get tornados?
18:03:16 <pikhq> We're at the far edge of tornado alley.
18:03:33 <CakeProphet> GA is the worst for tornados. or close to one of the worst I think.
18:03:57 <CakeProphet> last summer we probably had maybe 5-7 tornados?
18:03:58 <pikhq> Oklahoma and Kansas are far worse.
18:04:02 <CakeProphet> ah yes.
18:04:13 <CakeProphet> still GA is suprisingly bad.
18:04:40 <CakeProphet> tornados are very fucking interesting
18:04:56 <CakeProphet> like... they mostly occur here in the US.
18:05:27 <pikhq> Actually, per land area Oklahoma and Kansas get the most, total Texas gets the most.
18:06:55 <CakeProphet> http://en.wikipedia.org/wiki/File:Tornado_Alley.gif
18:07:08 <CakeProphet> this map only counts F3 to F5 though
18:08:26 <pikhq> Lemme put it this way: Oklahoma has gotten 66 tornados in a day.
18:12:11 <pikhq> https://upload.wikimedia.org/wikipedia/commons/3/35/Tornado_track_map_1999_Oklahoma_tornado_outbreak.gif This was a bad day.
18:12:32 * pikhq used to live in one of the towns destroyed by that clusterfuck
18:14:41 <CakeProphet> damn
19:19:57 -!- micahjohnston has changed nick to dumbasstatertot.
19:20:11 -!- dumbasstatertot has changed nick to damn.
19:20:18 -!- damn has changed nick to micahjohnston.
19:26:47 -!- micahjohnston has changed nick to lightwater.
19:27:10 -!- lightwater has changed nick to clitheroe.
19:27:41 -!- clitheroe has changed nick to craigcockbur.
19:27:43 -!- craigcockbur has changed nick to craigcockburn.
19:27:46 -!- craigcockburn has changed nick to micahjohnston.
19:28:01 -!- Jafet has quit (Quit: Leaving.).
19:30:34 -!- micahjohnston has left ("AIO_ALLDONE").
19:37:05 -!- Nisstyre has joined.
19:40:14 -!- Sgeo|web has joined.
19:40:27 <Sgeo|web> Is it just me, just my slow computer, or is PCManFM shit?
20:03:31 <ais523> conclusions from Windows 8: Microsoft doesn't just copy its competitors' good ideas, but their bad ideas too
20:04:01 <ais523> that is, from the descriptions of it in the media; I haven't used it
20:09:36 <elliott> wait, it's out?
20:16:02 <Sgeo|web> Note to self: Stop being prejudiced against programs whose name begins with x
20:16:08 <Sgeo|web> xchm does not seem to suck
20:16:10 <elliott> racism
20:16:17 <Phantom_Hoover> Xenophobia.
20:16:20 <elliott> rip xterm, rip xkill
20:16:29 <elliott> rip xeyes
20:16:32 <elliott> rip xscreensaver
20:16:36 <elliott> rip every xfce program
20:16:39 <elliott> rip Xorg itself
20:16:44 <elliott> rip all the xdg- programs
20:16:48 <elliott> rip rip rip
20:16:53 <elliott> rip xz
20:17:40 <Sgeo|web> Does Xorg begin with x or X?
20:17:43 <monqy> rip xsgeo
20:25:06 <CakeProphet> ~$ ps -e | grep -i xorg 1041 tty7 01:20:15 Xorg
20:25:29 <monqy> xorg
20:25:44 * CakeProphet : answering life's mysteries.
20:25:47 <Madoka-Kaname> Sgeo|web, xmonad?
20:26:03 <Phantom_Hoover> Xylophone?
20:26:05 <monqy> Xmonad, xMonad, xmOnad
20:26:10 <Phantom_Hoover> Xylem?
20:26:46 <Sgeo|web> Also, how does Xorg not suck? It's an X server, and I think consensus here is that X sucks...
20:27:08 <Phantom_Hoover> Xerosere?
20:27:56 <Phantom_Hoover> Xenosphere?
20:28:10 <Phantom_Hoover> Wait, that's not a word.
20:28:31 <Phantom_Hoover> I was thinking of the exosphere.
20:28:43 <monqy> xosphere
20:28:45 <monqy> xtreme
20:32:14 <Phantom_Hoover> http://www.reddit.com/r/askscience/comments/l4nqs/why_does_cold_water_taste_better_than_warm_water/c2pvhi2
20:32:19 <Phantom_Hoover> An American beer patriot.
20:34:03 -!- elliott has quit (Remote host closed the connection).
20:50:39 -!- derrik has quit (Quit: take cares).
21:47:23 -!- Phantom_Hoover has quit (Ping timeout: 260 seconds).
22:02:24 -!- Phantom_Hoover has joined.
22:05:47 -!- nooga has joined.
22:24:24 -!- nooga has quit (Ping timeout: 276 seconds).
22:26:08 <ais523> what's the best way to delete all lines in a file that are identical to lines that appeared previously in the file? sort of like uniq, but on unsorted files
22:26:42 <ais523> I can find the offending lines quite easily with sort | uniq -d
22:26:52 <ais523> hmm, it's probably using awk or Perl, and I don't know awk
22:30:59 <ais523> #!/usr/bin/perl -p
22:31:01 <ais523> $x{$_}?$_="":($x{$_}=1)
22:31:10 <ais523> golf practice comes to the rescue
22:32:19 <monqy> aaahhhh
22:34:10 -!- pikhq_ has joined.
22:34:44 -!- tiffany has joined.
22:34:48 -!- pikhq has quit (Ping timeout: 276 seconds).
22:38:11 <ais523> came up for my job, accidentally awarded some students marks twice…
22:39:20 -!- nooga has joined.
22:46:08 <Phantom_Hoover> ais523, oh no!
22:46:23 <ais523> well, they didn't see the marks
22:46:30 <Phantom_Hoover> There's nothing worse than people who aren't me getting awarded marks they shouldn't have been.
22:46:30 <ais523> and I knew that the duplicate awards would be exact duplicates, as it was scripted
22:46:48 <ais523> so a quick unsorted-uniq got the job done (and I verified by hand it was working correctly)
22:46:59 -!- ais523 has quit (Remote host closed the connection).
23:00:59 -!- zzo38 has joined.
23:11:45 <zzo38> Please make the hole in one by the technique of the boast.
23:16:16 <Madoka-Kaname> That sounds like something a native speaker of Japanese would say.
23:16:35 <tiffany> o.o
23:16:48 -!- tiffany has quit (Quit: Leaving).
23:19:42 -!- tiffany has joined.
23:29:46 <Phantom_Hoover> Madoka-Kaname, or a native speaker of zzo38ian.
23:32:32 <Madoka-Kaname> That works too.
23:34:29 -!- pikhq has joined.
23:34:34 -!- Patashu has joined.
23:34:53 -!- pikhq_ has quit (Ping timeout: 255 seconds).
23:37:12 -!- augur has changed nick to TheDoctor.
23:37:18 -!- TheDoctor has changed nick to augur.
23:37:27 <Phantom_Hoover> augur, wat
23:37:47 <augur> Phantom_Hoover: shenanigans in another channel
23:37:59 <augur> someone had the nick CaptnJack
23:38:04 <augur> so i figured i'd play along
23:38:20 <Phantom_Hoover> And I can just imagine how it went; no illustration will be needed.
23:38:39 <augur> "hello handsom"
23:38:43 <augur> ++ "e"
23:38:45 <augur> and that was all
23:39:13 <monqy> handmany
23:39:25 <Phantom_Hoover> Handall.
23:39:31 <Phantom_Hoover> Handallkindalled.
23:39:47 <zzo38> Once I met someone (I think it was in school) who claimed he could predict which classical element the sign I was born in belonged to, without my birthdate. He said he was accurate 11 out of 12 times. I do not remember what his actual accuracy was (if it was random and uniform, it would be 1 out of 4).
23:41:36 <Phantom_Hoover> More sample data, vital for finally contacting the isolated tribes of zzo38ia.
23:41:44 <Patashu> how would he get 1 out of 4 by random chance?
23:41:55 <augur> RANDOM CHANCE?
23:41:57 <zzo38> Because there are four classical elements.
23:41:59 * augur murders Patashu
23:42:05 <Patashu> OH
23:42:06 <Patashu> sorry
23:42:37 <Patashu> well, it's worth noting that which month of the year you're born in DOES have a statistical effect on you. I read about it in newscientist
23:43:09 <zzo38> Yes, I know it does. I have read it too, in various places.
23:43:31 <Phantom_Hoover> Says augur, descriptivist.
23:43:34 <Patashu> bah, I can't remember what the article was called
23:43:48 <augur> Phantom_Hoover: SOME THINGS GO TOO FAR
23:43:50 <augur> TOO FAR!
23:44:37 <Phantom_Hoover> augur, 'ALOT' IS SIMILAR
23:44:43 <zzo38> But there is more than just the month you were born. Perhaps season is one thing (although the month almost implies the season, I suppose).
23:44:48 <augur> Phantom_Hoover: IS NOT
23:44:49 <augur> >.<
23:44:51 <augur> <.>
23:45:03 <Phantom_Hoover> 'ALOT' HAS THE STRESS ON THE FIRST SYLLABLE. 'A LOT' HAS THE STRESS ON THE SECOND
23:45:04 <Phantom_Hoover> THERE.
23:45:05 <Phantom_Hoover> IS.
23:45:06 <Phantom_Hoover> A.
23:45:09 <Phantom_Hoover> DIFFERENCE.
23:45:23 <augur> says who
23:45:31 <augur> about the stress, i mean
23:45:44 <Phantom_Hoover> Says the way I would naturally stress it.
23:45:50 <augur> well you're wrong
23:45:52 <augur> again
23:46:04 <zzo38> Do you know what the similarities of statistics effects on you of the months? If they belong to the same classical elements, are those more similarities?
23:46:05 <monqy> my stress is the same as phs i think
23:46:13 <augur> do you use primary stress on allot as well?
23:46:40 <Phantom_Hoover> The 'l' is longer in that case.
23:46:46 <monqy> ugh i'm bad at stress but allot has it on the second???? heLP
23:48:43 <augur> Phantom_Hoover: not phonemically or phonologically.
23:49:16 <Phantom_Hoover> augur, it is in the way I pronounce it.
23:50:45 * Phantom_Hoover → sleep
23:50:46 -!- Phantom_Hoover has quit (Quit: Leaving).
2011-10-09
00:13:39 <Madoka-Kaname> http://www.scala-lang.org/node/114 < This would have been useful to know when I was writing packet parsing for a Minecraft server.. I think.
00:18:15 <monqy> i hope the style used in that example isn't idiomatic
00:19:03 <zzo38> Why do you care if it is idiomatic?
00:21:16 <monqy> awful idioms
00:21:31 <monqy> if I'd ever have to work with scala code, I'd die
00:38:52 -!- nooga has quit (Ping timeout: 260 seconds).
00:43:16 -!- evincar has joined.
00:43:29 <Patashu> When using php's mysql functions to retrieve values from a database, does it return integers in the datasbase as integers or as strings?
00:44:16 <evincar> Patashu: As integers, so far as I know.
00:44:50 <evincar> Not that it particularly matters, right?
00:45:04 <Patashu> It shouldn't... Something is being wonky
00:46:23 <evincar> What database type are you using
00:46:25 <evincar> *?
00:46:28 <Patashu> mysql
00:46:44 <evincar> No, like MyISAM or InnoDB.
00:47:30 <zzo38> At FreeGeek I have a SQLite reporting program, as well as a separate CGI program allowing it to be accessed by HTTP servers; even write access to databases is permitted.
00:48:08 <evincar> Patashu: http://stackoverflow.com/questions/5323146/
00:48:10 <Patashu> Oh, sorry, I don't know, but I'm doing this test: if ((int) $row['enabled'] != 1) in a table where enabled always equals 1, and it's triggering
00:48:42 <zzo38> Why don't you use SQL as a templating language?
00:48:57 <evincar> Apparently PHP'
00:49:03 <evincar> always returns values as strings.
00:49:09 <evincar> Hooray for typos involving newlines.
00:49:19 <evincar> zzo38: Can you give an example?
00:49:25 <Patashu> hmm, wait
00:49:39 <Patashu> if I do (int) $row['enabled'] != 1 does it turn the whole boolean expression into an int or just the left hand?
00:49:40 <Patashu> X.X
00:49:51 <Patashu> maybe that's why
00:50:02 <zzo38> evincar: It is a program I wrote that allows you do that. Currently the only file is internal use at FreeGeek.
00:51:25 <zzo38> But I can explain how it works. A query block must start with #Q and a SQL statement on a line by itself, and then you can have stuff inside, and #Z is end of block. Everything inside is done for each record of output. Lines without # are copied directly to output except for field names in `...`
00:51:29 <Patashu> nope, it's still ont working
00:51:54 <zzo38> You can use #F to define a custom function, which is given a name and a SQL statement that returns one record with one field.
00:52:48 <zzo38> In a function definition, you can use ?1 ?2 ?3 etc to access function parameters. Outside of a function definition, ?1 ?2 ?3 etc access command-line parameters, and you can use $ and a field name to access a field of the result of the query block that this query is inside of.
00:53:25 <evincar> Why wouldn't you appropriate the stored procedure syntax for function definition?
00:53:40 <evincar> You wouldn't create the functions in the database of course, just in the template engine.
00:53:42 <zzo38> SQLite does not have stored procedures.
00:55:44 <evincar> Well, no, but I think it would be nicer to see "#Q create procedure `name` ..." than "#F name ..." or whatever.
00:56:58 <zzo38> I suppose that if you want to modify the program to support other database engines that do have stored procedures, you can do that.
00:57:47 -!- MichaelBurge has quit (Remote host closed the connection).
00:57:58 <evincar> If you wanted to continue using SQLite, you would just need to parse the "create procedure" statement without passing it to the DB engine.
00:58:08 -!- MichaelBurge has joined.
00:58:32 <evincar> And then you would have uniform syntax.
00:58:38 <evincar> Simplifying things.
01:00:31 <evincar> I was doing research for an essay for class, and I came upon a very interesting study from 2001.
01:00:43 <zzo38> I don't even know how stored procedures work in SQL. SQLite has a function in C which is used to create new functions for use by SQL statements.
01:00:54 <evincar> It was studying the language that non-programmers used to specify solutions to programming-style problems.
01:01:52 <evincar> I think it would be interesting to do some research into making a language that adheres as closely as possible to the expectations of beginners.
01:01:54 <zzo38> But I don't know if database engines other than SQLite support the ?1 ?2 $NAME kind of syntax; these are parameters that you must bind using C functions.
01:02:10 <zzo38> evincar: OK, try.
01:02:11 <evincar> I'm not sure. "?" is pretty universal.
01:02:26 <evincar> But I don't know about positional and named arguments.
01:03:37 <evincar> The study found that most people tend to avoid named state, and state in general.
01:03:55 -!- DH____ has joined.
01:04:13 <evincar> They establish solutions through events, constraints, rules, and declarations primarily.
01:04:27 <evincar> Only those things that need to be sequenced are done so explicitly with imperative instructions.
01:04:39 <evincar> In that sense, Haskell is one of the more "natural" languages out there!
01:04:53 <evincar> Though by no means the most natural...
01:05:40 <zzo38> But even Haskell, by itself, does not have events, and does not support complete rule-based and constraint-based programming either
01:06:41 -!- tswett has changed nick to kerlo.
01:11:00 -!- Vorpal has quit (Ping timeout: 258 seconds).
01:11:22 <zzo38> I made the program, it represents floating point literals by the integer value and the ten shift. Such as, (FloatLit 5 (-1)) for "0.5" and (FloatLit 42 0) for "4.2e+01"
01:17:39 <Sgeo|web> I think that's more of a scientific notation storage, considering that floating-point would be... what, similar but in a different base?
01:17:53 * Sgeo|web is unsure
01:24:34 -!- MSleep has changed nick to MDude.
01:26:07 <evincar> Sgeo|web: Floating-point is essentially scientific notation.
01:26:21 <evincar> significand * base ^ exponent
01:26:53 <evincar> All IEEE-754 does is specify a packed storage format, and a base (2).
01:28:00 <evincar> zzo38: Haskell is missing those features, certainly. I was making a comment about how people find mutable state and imperative instructions unnatural.
01:29:53 <evincar> Most of the time, natural language refers to things by class specifiers and set operations.
01:30:14 <zzo38> evincar: OK. I might understand what you meant, then.
01:30:15 <evincar> "Do X to all Y that are Z."
01:30:45 <evincar> Another interesting thing is that people expect time to be continuous.
01:31:28 <evincar> So, for instance, animation should be done through physical analogies, totally hiding the fact that timing is not continuous on a computer.
01:40:41 <Madoka-Kaname> @pl g x = 9*x*x*x*x-x
01:40:41 <lambdabot> g = (-) =<< (*) =<< (*) =<< (*) =<< (9 *)
01:40:52 <Madoka-Kaname> @pl g x = 9*x^4-x
01:40:53 <lambdabot> g = (-) =<< (9 *) . (^ 4)
02:13:07 -!- myndzi has joined.
02:20:11 -!- tiffany has quit (Quit: Leaving).
02:23:32 -!- tiffany has joined.
02:32:00 -!- DH____ has quit (Read error: Connection reset by peer).
02:32:04 -!- DHeadshot has joined.
02:37:49 <zzo38> Is this correctly parsing a Haskell qualified name as you can tell?
02:37:50 -!- DHeadshot has quit (Read error: Connection reset by peer).
02:37:51 <zzo38> qualifyName :: (Name -> Token) -> Parser String -> Parser Token;
02:38:04 <zzo38> qualifyName f p = f . ExternalName <$> liftM2 (++) (join . fmap (++ ".") <$> (many . try $ liftM2 (:) (oneOf c'upper) (many $ oneOf c'letter) <* char '.')) p;
02:38:52 <zzo38> It seems to work but maybe I missed something in the Haskell specification or something else.
02:40:46 <zzo38> Maybe it is too messy.
02:41:07 -!- tiffany has left ("Leaving").
02:43:09 <zzo38> Maybe there ought to be an infix form of liftM2 (++)
02:50:17 -!- evincar has quit (Quit: ChatZilla 0.9.87 [Firefox 7.0.1/20110928134238]).
03:05:29 -!- Madoka-Kaname has quit (Ping timeout: 255 seconds).
03:06:17 <CakeProphet> zzo38: I once considered the idea of having nested infix expressions
03:06:25 <CakeProphet> a `f x y` b
03:06:58 <Patashu> I like that
03:09:52 <monqy> a `x `g y` z` b
03:09:57 <monqy> best nesting
03:10:11 <monqy> is that why you stopped considering it?
03:10:41 <monqy> i guess you could require paren usage or think of some fancy new quotes but there aren't enough quote things for it to work??
03:10:47 -!- Madoka-Kaname has joined.
03:10:48 <monqy> it/that
03:10:57 <CakeProphet> monqy: no that actually didn't change my opinion of it at all.
03:11:00 <monqy> oh
03:11:49 <CakeProphet> just a horrid use case that was possible.
03:12:09 <CakeProphet> er ambiguity even.
03:12:27 <monqy> ambiguity is bad??? and shouldn't be allowed to happen???
03:12:40 <CakeProphet> so obviously infix nesting just shouldn't be possible without different quoting.
03:13:12 <monqy> `( and )` would be ok for infix expressions imo
03:13:17 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: (: not found
03:13:29 <monqy> hackego....
03:14:04 <CakeProphet> > let f x y = y in 1 `f ` 2
03:14:05 <lambdabot> 2
03:14:19 <CakeProphet> hmmm, okay.
03:16:15 <CakeProphet> monqy: ASCII obviously needs more brackets
03:16:19 <CakeProphet> or keyboards need more Unicode.
03:16:30 <CakeProphet> latter is more sensible.
03:16:45 <monqy> I'm fine with `( )`; it's the conclusion i came to when i entertained the idea of infix expressions a while back
03:18:30 <CakeProphet> eh
03:18:39 <CakeProphet> I like the idea of finally incorporating Unicode into programming syntax.
03:19:09 <CakeProphet> in a way that's not annoying.
03:22:14 <monqy> "in a way that's not annoying" good luck
03:22:27 <monqy> what do you mean by that anyway
03:23:17 <CakeProphet> that I can type it on a keyboard.
03:23:30 <CakeProphet> quickly
03:26:03 <augur> CakeProphet: agda has latex-like input
03:26:21 <zzo38> I prefer to do it without Unicode since the ASCII is a simpler code and can be typed more easily too.
03:26:25 <augur> if you type \x you get the cross product x, or if you type \to or \-> you get a right arrow
03:26:33 <augur> and so forth
03:26:42 <augur> mind you this is agda mode for emacs
03:27:08 <zzo38> Unless "-" was made a letter the \-> in TeX would be \- followed by > rather than a single control sequence
03:28:10 <CakeProphet> right I think Unicode can be incorporated into programming but it's something you'd have to do in an interface
03:28:11 <zzo38> You can use TeX to print out a program with fancy symbols and bold and everything, such as WEB.
03:28:30 <CakeProphet> for example ctrl/alt or using numpad keys (since I never use those :P )
03:28:33 <zzo38> Input can be plain ASCII and it can work
03:28:56 <augur> zzo38: i said latex-like
03:29:16 <augur> when you type \-> it gets automatically replaced with the arrow
03:29:23 -!- MDude has changed nick to MSleep.
03:29:30 <zzo38> augur: Does LaTeX redefine "-" to be a letter?
03:29:37 <augur> no its not latex
03:29:42 <augur> it looks like latex
03:29:46 <augur> hence latex-like
03:30:08 <augur> its just an input method for unicode
03:30:21 <augur> it does use all of the standard latex names tho, i think
03:30:28 <augur> so \langle and \rangle work, for instance
03:31:35 <zzo38> CakeProphet: Well, if you have a specific set of symbols you use, you could create a character set for the programming language, and then use CTRL, ALT, and/or function keys, to select the extra characters (you could even have a character with code 1 and use CTRL+A to enter it, for example; or you could use ALT to add 128 so that the high codes in 8-bit are the special ones).
03:31:47 <zzo38> You can convert to/from Unicode if necessary, I suppose.
03:33:19 <zzo38> CWEB will work with Unicode input, but only for identifiers. However you can have macros and formatting codes to make them into operators. (I do not know if WEB has this feature)
03:41:10 <CakeProphet> zzo38: I think Unicode would work best simply because it's an existing standard.
03:41:34 <CakeProphet> I'm must not sure what kind of syntax could be incorporated into a language from Unicode.
03:41:38 <CakeProphet> I don't know much about Unicode.
03:42:13 <zzo38> CakeProphet: I don't think so. Unicode is badly designed.
03:44:17 <CakeProphet> zzo38: in what ways? badly organized? poor arithmetic properties?
03:44:47 <zzo38> All sorts of things. Those are some of them.
03:44:57 <CakeProphet> either way those are ancillary. it offers a large range of standardized characters that already have fonts made for them.
03:45:13 <CakeProphet> that's really all I would need to incorporate more symbols into the syntax of a language.
03:45:49 <zzo38> Yes; unless you need something that Unicode doesn't have (it does not include the complete Commodore 64 character set), in which case you can still use private use blocks but then you would need a font for them.
03:46:13 <zzo38> And sometimes the way variations are selected in Unicode are not exactly as you might want.
03:46:29 <CakeProphet> ...what does the Commodore 64 character set have that I might want?
03:46:51 <CakeProphet> retro hipster cred? :P
03:46:57 <zzo38> Complex scripts result in a lot of difficulties, especially since you need a database to decide what character is processed in what way!
03:47:24 <zzo38> CakeProphet: Probably nothing for what you are trying to make. But it still makes it insufficient.
03:47:53 <CakeProphet> so sufficient = incorporates every arbitrary character set ever made and organizes them sensibly.
03:48:44 <zzo38> Perhaps "insufficient" is the wrong word. But it does make in insufficient for a few uses.
03:52:23 <CakeProphet> so in-all-encompassing. :P
03:52:59 <CakeProphet> I think Unicode is mostly interested in encoding most of the world's writing systems and less about including every computer encoding that ever existed.
03:53:30 <zzo38> It does not even include all writing systems due to people make up their own.
03:54:04 <zzo38> And some people made up the TRON encoding because they dislike the way variation selection works in Unicode (I don't know anything else about TRON).
03:55:11 <CakeProphet> is "oh well it doesn't include every artificial script that <insert some guy> invented" a valid complaint?
03:55:16 <CakeProphet> how do you go about standardizing that?
03:55:30 -!- banjomonster has joined.
03:55:30 <CakeProphet> also the private use block is probably the best way to handle those situations, really.
03:55:35 <zzo38> No you cannot standardize it.
03:55:35 <CakeProphet> so, way to go, Unicode.
03:55:41 <zzo38> That is why the private block exists.
03:55:49 <zzo38> But it still means you need specialized fonts.
03:56:04 -!- banjomonster has left.
03:56:11 <CakeProphet> how do you propose to solve this problem
03:56:45 <zzo38> And you also need to agree on their use (for many invented scripts, there are organizations which specify which Unicode code points correspond to them, but they are not a Unicode standard).
03:57:15 <zzo38> CakeProphet: You have to just do it on each individual case, I suppose. In some cases simply don't use Unicode if Unicode will not help.
03:58:01 <CakeProphet> you could have unicode telnet
03:58:41 <zzo38> Some telnet clients will support Unicode; some of which are part of a terminal emulator and not really part of the telnet client program itself. However, you can also have telnet without unicode.
03:58:52 <CakeProphet> so two abstract devices that are communicating with unicode start a telnet session at which point they can agree on which scripts/non-standard things they're using. :P
03:59:06 <CakeProphet> best solution
03:59:34 <CakeProphet> telnet is best for all porpoise.
03:59:59 <zzo38> Yes, that is one way. But Unicode does not help this at all.
04:00:22 <CakeProphet> right, how could it? without being telnet, of course.
04:00:23 <zzo38> If you need to agree on what you are using anyways, why do you use Unicode?
04:01:03 <CakeProphet> Unicode wiki
04:01:10 <CakeProphet> people can make pages for their scripts
04:01:19 <CakeProphet> and it automatically becomes part of Unicode.
04:01:59 <zzo38> I do not quite consider that the best way either; although in some cases, that might be the way to do it.
04:02:03 <CakeProphet> there's machine readable data to help programs handle the scripts and such.
04:02:21 <zzo38> Yes, if it has the complex script data and character property data.
04:02:36 <CakeProphet> ...it was a joke, really. I don't think the problem you're desribing is completely contrived and is one of the inherent problems of any standard.
04:02:42 <CakeProphet> er
04:02:48 <CakeProphet> I do think it is completely contribed rather
04:02:51 <CakeProphet> *contrived even
04:02:56 <zzo38> But of course that requires that the program access the wiki by internet always to access a file!
04:03:05 <zzo38> Which also is not a good way to do it.
04:03:22 <CakeProphet> best solution: the world is perfect. everything does everything the way you want.
04:03:29 <CakeProphet> problem solved\
04:04:23 <zzo38> The way TeX does it works OK for typesetting; you have a metric file and a METAFONT to generate the font metric and character bitmaps for whatever printer you are using.
04:04:45 -!- oerjan has joined.
04:05:03 <CakeProphet> so you're saying the Unicode standard could include a way to specify typesetting and script data?
04:05:12 <zzo38> No!
04:05:34 <zzo38> I am saying to ignore Unicode for typesetting.
04:05:53 <CakeProphet> I thought we were talking about Ways Unicode Could Be Better
04:06:08 <CakeProphet> is that not what we're talking about?
04:06:14 <CakeProphet> am I missing something?
04:06:19 <CakeProphet> help
04:06:50 <zzo38> Unicode works for some things, but you should not always use it, please.
04:07:16 <CakeProphet> I use Unicode for everything. I draw in Unicode.
04:07:39 <CakeProphet> I write abstract Unicode poetry.
04:15:13 -!- hagb4rd has quit (Ping timeout: 260 seconds).
04:36:11 <oerjan> An actual on topic esoforum post has been spotted!
04:36:23 <monqy> oh my
04:36:30 <monqy> I completely forgot about the forum
04:36:57 <monqy> hm, it looks like the guy who made brains also made a post
04:37:02 <monqy> good thing nobody cares about brains
04:40:38 <oerjan> "Having decided to invent an extremely innovative and creative esoteric programming language of my own, I spent several days and nights feverishly working on my masterpiece. While taking a break from this, I invented CAPS 4D."
04:42:26 <monqy> I liked that part
05:09:54 -!- Jafet has joined.
05:12:40 -!- CakeProp1et has joined.
05:13:20 -!- CakeProphet has quit (Ping timeout: 252 seconds).
05:20:16 <zzo38> There are such things as Japanese Korean chess rules, which are the same as Korean Korean chess rules except that it has promotation (which is mandatory).
05:44:19 <Madoka-Kaname> @hoogle (a->Boolean) -> [a] -> ([a],[a])
05:44:19 <lambdabot> Warning: Unknown type Boolean
05:44:19 <lambdabot> No results found
05:44:23 <Madoka-Kaname> @hoogle (a->Bool) -> [a] -> ([a],[a])
05:44:23 <lambdabot> Prelude break :: (a -> Bool) -> [a] -> ([a], [a])
05:44:23 <lambdabot> Prelude span :: (a -> Bool) -> [a] -> ([a], [a])
05:44:24 <lambdabot> Data.List break :: (a -> Bool) -> [a] -> ([a], [a])
05:44:32 <Madoka-Kaname> @hoogle (a->b) -> [a] -> [[a]]
05:44:33 <lambdabot> Prelude dropWhile :: (a -> Bool) -> [a] -> [a]
05:44:33 <lambdabot> Prelude filter :: (a -> Bool) -> [a] -> [a]
05:44:33 <lambdabot> Prelude takeWhile :: (a -> Bool) -> [a] -> [a]
05:44:47 <oerjan> :t partition
05:44:48 <lambdabot> forall a. (a -> Bool) -> [a] -> ([a], [a])
05:44:54 <Madoka-Kaname> Thanks.
05:45:29 <zzo38> I did invent a different character coding that I will use for a different kind of computer. It is a sixteen-bit encoding called FBUCE, compatible with printable ASCII, but far simpler than Unicode. However, you usually will use NK encoding which is compatible with ASCII control characters as well as ASCII printable characters.
05:46:54 <oerjan> Madoka-Kaname: groupBy and sortBy might also be relevant
05:47:28 <oerjan> :t sortBy . comparing
05:47:29 <lambdabot> forall a a1. (Ord a1) => (a -> a1) -> [a] -> [a]
05:47:35 <Madoka-Kaname> Double thanks
05:47:55 <oerjan> :t groupBy . on (==)
05:47:56 <lambdabot> forall a b. (Eq b) => (a -> b) -> [a] -> [[a]]
05:48:23 <Madoka-Kaname> :t on
05:48:24 <lambdabot> forall b c a. (b -> b -> c) -> (a -> b) -> a -> a -> c
05:48:35 <Madoka-Kaname> @src on
05:48:35 <lambdabot> (*) `on` f = \x y -> f x * f y
05:49:00 <oerjan> Madoka-Kaname: oh and ghc has some new list comprehension additions for grouping and sorting which i've never really looked at
05:49:16 <oerjan> iirc
05:49:20 <Madoka-Kaname> Thanks.
05:51:09 <zzo38> There are things that FBUCE intentionally lacks: character properties, complex script support, variation selectors, right-to-left, etc. FBUCE does, however, support the entire Commodore 64 printable character set. Unlike Unicode, FBUCE would hardly ever be used directly; you normally use a mapping table. FBUCE has 512 defined control characters, though.
05:51:21 <oerjan> and something using a Data.Map.Map can also be useful
05:52:38 <oerjan> Madoka-Kaname: note that groupBy only groups _adjacent_ elements, so it may be necessary to use sortBy first
05:52:39 <zzo38> Sorry, I am wrong. It has 256 control characters.
05:53:02 <Madoka-Kaname> How rude.
05:53:52 <Madoka-Kaname> @djinn (a -> b -> c) -> (a -> d -> e) -> a -> b -> d -> e
05:53:52 <lambdabot> f _ a b _ c = a b c
05:54:08 <Madoka-Kaname> @djinn (a -> b -> c) -> (a -> c -> d) -> a -> b -> c
05:54:08 <lambdabot> f a _ b c = a b c
05:54:26 <Madoka-Kaname> @djinn (a -> b -> c) -> (a -> c -> d) -> a -> b -> d
05:54:26 <lambdabot> f a b c d = b c (a c d)
05:54:33 <Madoka-Kaname> @. pl djinn (a -> b -> c) -> (a -> c -> d) -> a -> b -> d
05:54:33 <lambdabot> f = flip (liftM2 (.))
05:55:13 <oerjan> :t liftM2 (>>>)
05:55:14 <lambdabot> forall (cat :: * -> * -> *) a b c (m :: * -> *). (Control.Category.Category cat, Monad m) => m (cat a b) -> m (cat b c) -> m (cat a c)
05:55:32 <oerjan> eek
05:55:57 <oerjan> i _think_ that specializes to what you want
05:56:43 <zzo38> Do you mean the (->) category and the (e ->) monad?
05:56:47 <oerjan> yes
05:58:29 -!- derrik has joined.
05:58:54 <Madoka-Kaname> :t sortBy
05:58:55 <lambdabot> forall a. (a -> a -> Ordering) -> [a] -> [a]
05:58:56 <Madoka-Kaname> :t groupBy
05:58:57 <lambdabot> forall a. (a -> a -> Bool) -> [a] -> [[a]]
05:59:04 <Madoka-Kaname> ...
05:59:06 <Madoka-Kaname> Kya!
05:59:12 <oerjan> > groupBy ((&&) `on` isSpace) "testing a b c"
05:59:12 <lambdabot> ["t","e","s","t","i","n","g"," ","a"," ","b"," ","c"]
06:00:55 <oerjan> Madoka-Kaname: their first arguments are analogous to compare and (==) respectively, which is why you might want to use "on" with those
06:07:05 -!- Ngevd has joined.
06:07:34 <Ngevd> Hello!
06:08:13 <oerjan> morning
06:08:34 <oerjan> possibly a good one, even
06:09:30 <Ngevd> I have woken up 5 times today
06:09:56 <oerjan> so now you don't have to wake up for the rest of the week!
06:10:02 <Ngevd> :D
06:10:25 <zzo38> In here it is night time
06:19:10 <zzo38> I have idea functional program representation. data Exp = Apply Exp Exp | Case [(Pat,Exp)] | Global GlobalID | Local LocalID | Literal Literal | Primitive PrimitiveID; data Pat = Constructor ConstructorID [Pat] | LiteralP Literal | LocalP;
06:21:43 <oerjan> zzo38: aren't you missing a LocalID before ; at the end
06:22:29 <zzo38> oerjan: No. The LocalID would be a type synonym for a number, so you select them in order, I think.
06:22:37 <zzo38> Maybe I am wrong, though.
06:23:02 <oerjan> zzo38: but you need to be able to use them in the Exp part of the Case
06:23:45 <zzo38> Well, yes. Maybe you are correct, it should have LocalID there
06:24:02 <oerjan> or you could use deBruijn indices
06:24:14 <zzo38> What are deBruijn indices?
06:24:42 <Ngevd> Special lambda calculus things destroying the need for variables
06:24:55 <oerjan> http://en.wikipedia.org/wiki/De_Bruijn_index
06:26:10 <zzo38> Something like that, is what I was thinking of.
06:26:59 <oerjan> the thing about these is that you don't just give each variable a fixed number, but you use a number depending on how far away its binding is
06:27:15 <zzo38> But there is still a difference, due to matching constructors with multiple parameters.
06:27:30 <zzo38> oerjan: Yes I understand that; I did read the Wikipedia article now.
06:27:46 <oerjan> yes. but i guess there you'd just have to count the LocalP's in some order
06:28:23 <zzo38> Yes you would have to count them in some order.
06:31:57 <oerjan> Case [(LocalP, e)] would be how you'd express an ordinary lambda expression, i assume
06:32:14 <zzo38> oerjan: Yes. That is my intention.
06:34:38 <Ngevd> Does anyone know of a python module for multiplying matrices?
06:34:57 <zzo38> The program would be represented by a list of expressions (Exp) and the GlobalID type is an index into the program; exported functions are listed first and are in the specific order.
06:35:32 <monqy> Ngevd: for loops (ahahahahahahahhahahahahhahahahahahha)
06:35:46 <monqy> Ngevd: alternative joke: ask #python (ahahahahhahahahahahahahhahahahhahah)
06:36:03 <Ngevd> I'm tired and I haven't had breakfast
06:36:04 <monqy> I did not count has so I do not know which of those I laughed more at
06:36:14 <Ngevd> So I will ask Python
06:36:22 <Ngevd> *#python
06:39:14 <oerjan> > let a `mult` b = map (map (zipWith (*)) $ transpose b) a in [[1,0],[0,1],[1,-1]] `mult` [[1,2,3],[4,5,6]]
06:39:15 <lambdabot> Couldn't match expected type `a -> b'
06:39:15 <lambdabot> against inferred type `[[a1] ...
06:39:20 <oerjan> wat
06:39:59 <oerjan> oh
06:42:06 <oerjan> > let a `mult` b = map (\av -> map (zipWith (*) av) $ transpose b) a in [[1,0],[0,1],[1,-1]] `mult` [[1,2,3],[4,5,6]]
06:42:07 <lambdabot> [[[1,0],[2,0],[3,0]],[[0,4],[0,5],[0,6]],[[1,-4],[2,-5],[3,-6]]]
06:42:25 <oerjan> too tired to free the points
06:42:39 <Jafet> > let ass `mult` bss = [[sum $ zipWith (*) as bs | as <- ass] | bs <- transpose bss] in [[1,0],[0,1],[1,-1]] `mult` [[1,2,3],[4,5,6]]
06:42:40 <lambdabot> [[1,4,-3],[2,5,-3],[3,6,-3]]
06:42:53 <Jafet> There, Python code for multiplying matrices
06:42:56 <oerjan> ...and to fix the last bug :P
06:43:30 <oerjan> Jafet: you've nested them in the wrong order
06:43:53 <Jafet> Bah, I thought the type system would catch that.
06:44:06 <oerjan> for integer matrices? :P
06:44:11 <Jafet> > let ass `mult` bss = [[sum $ zipWith (*) as bs | bs <- transpose bss] | as <- ass] in [[1,0],[0,1],[1,-1]] `mult` [[1,2,3],[4,5,6]]
06:44:12 <lambdabot> [[1,2,3],[4,5,6],[-3,-3,-3]]
06:44:21 <oerjan> there you go
06:49:18 <Ngevd> Breakfast time, bye
06:49:20 -!- Ngevd has quit (Quit: what a big quitter he is, eh?).
06:57:55 <CakeProp1et> ....oh I missed him.
06:58:21 -!- Jafet has quit (Quit: Leaving.).
06:58:36 <CakeProp1et> @tell Ngevd Dude, numpy, bro. It's what you want. To multiply the matrices.
06:58:36 <lambdabot> Consider it noted.
06:59:30 <CakeProp1et> surely #python told him though.
06:59:37 <CakeProp1et> I have faith.
07:01:41 -!- Ngevd has joined.
07:01:49 <CakeProp1et> Ngevd: numpy
07:01:51 <CakeProp1et> is what you want
07:01:53 <CakeProp1et> dude. bro.
07:02:09 <Ngevd> That's what #python told me
07:02:09 <lambdabot> Ngevd: You have 1 new message. '/msg lambdabot @messages' to read it.
07:02:15 <CakeProp1et> and now lambdabot
07:02:18 <CakeProp1et> will tell you
07:02:22 <CakeProp1et> triple affirmation
07:02:52 <Ngevd> I'm having trouble installing it, though
07:03:17 <CakeProp1et> do you have pip?
07:03:44 <CakeProp1et> pip install numpy
07:04:30 <Ngevd> 64 bit Windows
07:04:33 <Ngevd> So probably not
07:04:36 <CakeProp1et> if you don't it might be in in apt-get under pip or python-pip depending on your -- oh
07:04:52 <CakeProp1et> well, okay
07:04:54 <Ngevd> I think I've cracked it
07:05:14 <CakeProp1et> I don't think you're allowed to write programs in Windows
07:05:32 <CakeProp1et> against the rules.
07:05:38 <Ngevd> I'm in an off-shore oil platform
07:05:51 <CakeProp1et> I... see?
07:06:04 <monqy> no the platform is invisible
07:06:06 <monqy> so you can't see it
07:06:38 <monqy> it's a secret platform
07:08:06 <CakeProp1et> monqy: do you use the fenestrated operating system?
07:08:26 -!- CakeProp1et has changed nick to CakeProphet.
07:08:32 <monqy> ???????
07:08:42 <Ngevd> fenestra is latin for window
07:08:51 <monqy> im linux, sorry
07:09:01 <CakeProphet> no sorry yes good
07:10:06 <Ngevd> Going to switch to Ubuntu now
07:10:09 <Ngevd> Actually...
07:10:11 <Ngevd> Hmm...
07:10:19 <CakeProphet> but Ubuntu is going to be bad soon.
07:10:32 * CakeProphet is switching to Debian soon (actually)
07:11:02 <CakeProphet> whenever I finally feel like doing it.
07:11:13 <Ngevd> I'm going to try and use DSL
07:11:28 <monqy> why?
07:11:38 <monqy> because it's ds?
07:12:29 <Ngevd> Because it's l
07:12:38 <Ngevd> Didn't work
07:12:41 <Ngevd> It's not l enough
07:12:43 <Ngevd> brb
07:13:08 -!- Ngevd has quit (Read error: Connection reset by peer).
07:14:52 -!- Ngevd has joined.
07:15:28 <Ngevd> Back
07:23:46 -!- monqy has quit (Quit: hello).
07:25:09 <CakeProphet> Assange was a hacker in his youth, before becoming a computer programmer.
07:25:18 <CakeProphet> wouldn't it be more likely that he became the latter before the former?
07:25:45 <Ngevd> Maybe he was one of those hackers who just went around calling everything 1337
07:26:13 <Ngevd> And themselves 1337 |-|4><><0rz
07:27:18 <pikhq> You can 'hack' without programming skill, it'll just be very uninteresting hacks.
07:50:07 -!- CakeProphet has quit (Ping timeout: 252 seconds).
08:00:43 -!- oerjan has quit (Quit: Later).
08:32:05 <Ngevd> I just followed my old english teacher on twitter
08:32:18 <Ngevd> That is, a person who used to teach me english
08:32:32 <Ngevd> Not a person who teaches me old english
08:32:36 <pikhq> Shame, too.
08:32:43 <Ngevd> And not an old person who teaches me english
08:32:55 <pikhq> Though understandable; Old English is not *that* well-attested.
08:33:32 <pikhq> It's not like there's going to be many classes for learning how to understand the small handful of things written in it we have.
08:35:34 <Patashu> There are Old English teachers? Never thought about that
08:36:24 <pikhq> It's certainly plausible.
08:36:30 <pikhq> But just barely.
08:36:57 <Patashu> My mother studies the geneology of our family tree, so she has to read centuries old handwriting all the time
08:36:59 <Patashu> I guess that's not THAT old
08:37:13 <Ngevd> How many centuries?
08:37:32 <Patashu> I dunno, 0-3? I'd have to ask her how far back she's ever gone
08:37:40 <Ngevd> That's still modern English
08:37:45 <Patashu> But I see her squinting at things like church marriage records
08:37:46 <Patashu> Yeah
08:37:57 <Patashu> Just hard to read because it's all...curvy and slanted
08:38:00 <Ngevd> I tried to do my family tree
08:38:08 <Ngevd> Didn't get very far
08:40:08 <pikhq> She'd probably have as much trouble today if handwriting weren't outmoded.
08:40:24 <pikhq> Let's face it: unless you're careful, handwriting is pretty hard to read.
08:43:09 <Patashu> My handwriting is irredeemably awful
08:43:22 <Ngevd> Same
08:43:38 <pikhq> My handwriting's quality depends on language.
08:43:53 <pikhq> My English handwriting? Essentially illegible.
08:44:08 <pikhq> My Japanese handwriting? Merely below average.
08:44:39 <Ngevd> My handwriting's legibility is inversely proportional to how fast I write
08:44:50 <pikhq> And yes, English is my native language.
08:44:59 <Ngevd> Which dialect?
08:45:21 <pikhq> Something roughly General American.
08:45:24 <Ngevd> Okay
08:45:35 <Ngevd> I'm roughly general British
08:45:45 <Ngevd> With a small amount of Victorian Australian and Geordie
08:45:52 <pikhq> (General American is an *actual accent*, BTW)
08:46:04 <Ngevd> I knew that
08:46:13 <Ngevd> As far as I know, general British isn;t
08:46:18 <pikhq> Yeah.
08:46:19 <Ngevd> I'm using it to refer to a soft RP
08:46:25 <pikhq> Ah.
08:46:27 <Ngevd> Hence the lower case g
08:46:39 <pikhq> *That* seems like an actual accent, though. :P
08:49:11 <Ngevd> I still don't understand how Red Hot Chilli Peppers manage to rhyme "bra" and "wall"
08:49:58 <Ngevd> But then again, I can rhyme "vampires" with "stairs"
08:52:45 <Ngevd> And I don't understand how I can do that
08:56:00 <Ngevd> This has given me an idea
08:56:05 <Ngevd> An IPA based language
08:56:20 <Ngevd> That enforces pronounceability
08:58:14 <Ngevd> Including the Bilabial percussive
08:59:45 <Patashu> You can't enforce pronounceability
08:59:49 <Patashu> Unless you have like...a pronounciation police
08:59:52 <Patashu> It'll drift anyway
09:00:16 <Ngevd> All programmers must also record an audio version of their program
09:00:20 <Ngevd> Scratch also
09:00:27 <Ngevd> That audio version is the program
09:00:39 <Patashu> LOL
09:01:03 <Patashu> So this is a programming language you can't write in any public place
09:01:08 <Ngevd> Yes
09:01:31 <Patashu> Next, we need a programming language based on the kinect
09:01:34 <Ngevd> Functions are written with a lisp
09:01:39 <Patashu> so that in addition you can't write it while sitting down
09:24:35 -!- pikhq_ has joined.
09:25:28 -!- pikhq has quit (Ping timeout: 276 seconds).
09:26:05 -!- Phantom_Hoover has joined.
09:35:52 -!- Ngevd has quit (Ping timeout: 276 seconds).
09:41:52 -!- Ngevd has joined.
09:51:09 -!- Ngevd has quit (Ping timeout: 252 seconds).
09:53:15 -!- nooga has joined.
10:28:11 -!- myndzi has quit (Read error: Connection reset by peer).
10:40:41 -!- sllide has joined.
11:00:09 -!- Ngevd has joined.
11:00:24 <Ngevd> Hello!
11:04:51 -!- pikhq has joined.
11:05:09 -!- pikhq_ has quit (Ping timeout: 260 seconds).
11:08:04 -!- nooga has quit (Ping timeout: 260 seconds).
11:08:34 -!- nooga has joined.
11:12:47 -!- Ngevd has quit (Ping timeout: 256 seconds).
11:13:32 -!- Vorpal has joined.
11:15:07 -!- Jafet has joined.
11:15:07 -!- Jafet has quit (Changing host).
11:15:07 -!- Jafet has joined.
11:15:12 -!- Ngevd has joined.
11:16:08 -!- zzo38 has quit (Remote host closed the connection).
11:16:21 <Ngevd> ping
11:17:09 -!- Ngevd has quit (Client Quit).
11:17:40 -!- Ngevd has joined.
11:32:12 -!- derrik has quit (Quit: gtg).
12:02:02 -!- Jafet1 has joined.
12:04:36 -!- Jafet has quit (Ping timeout: 265 seconds).
12:19:01 -!- Ngevd has quit (Ping timeout: 244 seconds).
12:22:08 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
12:23:38 -!- Ngevd has joined.
12:40:05 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .).
12:42:03 -!- Phantom_Hoover has joined.
13:35:14 -!- copumpkin has joined.
13:39:28 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
13:39:40 -!- pikhq_ has joined.
13:40:06 -!- pikhq has quit (Ping timeout: 260 seconds).
13:56:31 -!- Phantom_Hoover has joined.
14:02:30 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
14:45:22 -!- ais523 has joined.
14:55:17 -!- derdon has joined.
14:56:13 <cheater> Sgeo|web: are you there?
14:56:27 <cheater> Sgeo|web: do you know the qntm guy?
14:56:48 <Ngevd> The qntm guy?
14:57:20 <ais523> hmm, silly news story of the week: Belgian court orders ISPs to block www.thepiratebay.org; this is not actually an URL for the Pirate Bay
14:57:35 <Ngevd> Hehe
14:57:43 <Deewiant> Yes it is?
14:57:56 <Ngevd> Anyway, cheater, you're supposed to say "the qntm guy!"
14:57:57 <ais523> Deewiant: looks like people are mentally adding/filtering www even nowadays
14:58:02 <Ngevd> it's .com
14:58:09 <Ngevd> No wait
14:58:11 <Ngevd> Is it?
14:58:23 <Deewiant> ais523: Well of course it redirects to the non-www, but it's still "an URL for the Pirate Bay"
14:58:32 <ais523> Deewiant: it doesn't redirect, apparently
14:58:46 <Deewiant> Oh, that's just my browser then
14:59:02 <Deewiant> But that doesn't matter, it still goes to the pirate bay :-P
14:59:05 <ais523> not that I've tested
15:02:34 <ais523> the student loans website I was trying to visit a couple of weeks ago works with a www and puts up a "down for maintenance" error without one
15:02:37 <ais523> that was pretty confusing too
15:07:35 <cheater> @ask Sgeo|web hey sgeo, do you know the guy running the qntm website?
15:07:35 <lambdabot> Consider it noted.
15:10:28 <Sgeo|web> Hi
15:10:29 <lambdabot> Sgeo|web: You have 1 new message. '/msg lambdabot @messages' to read it.
15:10:33 <Sgeo|web> Not personally...
15:12:04 <Sgeo|web> cheater: what exactly are you asking?
15:15:15 -!- MSleep has changed nick to MDude.
15:17:13 <cheater> Sgeo|web: do you know if he hangs out on irc somewhere?
15:17:17 <cheater> i think he does
15:18:45 <Sgeo|web> I think he either does or did, and I don't know where. And I'm not going to devote any energy in helping you cybertstalk him.
15:23:22 -!- Ngevd has quit (Ping timeout: 258 seconds).
15:24:10 <cheater> no one asked you to devote energy, sillyhead.
15:30:50 -!- CakeProphet has joined.
15:37:25 -!- monqy has joined.
15:51:34 -!- Jafet1 has quit (Quit: Leaving.).
15:54:20 -!- Ngevd has joined.
16:01:36 -!- Nisstyre has changed nick to ircWisdom.
16:01:52 -!- ircWisdom has changed nick to Nisstyre.
16:32:27 -!- kerlo has changed nick to tswett.
16:37:41 -!- tiffany has joined.
16:46:28 -!- elliott has joined.
16:47:22 -!- derrik has joined.
16:59:01 <cheater> hey ais523, do you know the game Neutrino?
16:59:10 <ais523> no
16:59:53 <cheater> it's a simple game
17:00:04 <cheater> someone says a sentence, say "Neutrinos are faster than light"
17:00:29 <cheater> the next person has to say a sentence that leads ip to it, that is, something that would make sense if said before that sentence
17:00:40 <cheater> then writes it under the first sentence on a piece of paper
17:00:58 <cheater> then the next person has to add something that makes sense said before the other two sentences
17:01:00 <cheater> and so on
17:01:12 <cheater> then you read it back in the "correct" direction
17:01:59 <cheater> there are lots of ways to score a game
17:02:09 <cheater> but you don't have to if you don't want to
17:02:52 <cheater> basically it's like having a conversation, but back in time
17:02:57 <cheater> it's really fun
17:09:24 -!- pikhq has joined.
17:10:13 -!- pikhq_ has quit (Ping timeout: 276 seconds).
17:16:17 -!- Ngevd has quit (Quit: Leaving).
17:19:56 <Phantom_Hoover> Help it's cold.
17:20:03 * Phantom_Hoover grabs cat for warmth.
17:20:57 <elliott> Phantom_Hoover: That is not fair you can't just do that.
17:22:10 <Phantom_Hoover> Well why don't you just use a rabbit OH WAIT I FORGOT RABBITS SUCK
17:36:34 -!- sllide has quit (Ping timeout: 258 seconds).
17:47:38 -!- Ngevd has joined.
18:14:34 -!- MDude has quit (Ping timeout: 276 seconds).
18:16:20 -!- augur has quit (Remote host closed the connection).
18:20:25 -!- pikhq has quit (Ping timeout: 276 seconds).
18:28:15 -!- derrik has quit (Ping timeout: 252 seconds).
18:33:12 <elliott> "In reality, cats do possess the ability to turn themselves right side up in mid-air if they should fall upside-down." --Wikipedia
18:33:41 <Ngevd> Time to test the buttered cat paradox
18:33:55 <Ngevd> elliott, fetch me your best cat and finest butter!
18:34:07 <elliott> Ngevd: That was from [[buttered cat paradox]], you fool.
18:36:19 -!- asiekierka has joined.
18:36:29 <asiekierka> busy ripping my ISP's online TV stream... http://i.imgur.com/MCr1y.jpg
18:37:00 <elliott> asiekierka: Why the hell are you running that as root.
18:37:07 <Ngevd> Hey, you're the binodu person!
18:37:17 <asiekierka> elliott because its a quick hack?
18:37:27 <asiekierka> a very, VERY quick hack?
18:37:30 <asiekierka> Ngevd yes, hi!
18:37:32 <elliott> asiekierka: Yes, so it'd take a lot much more work to type "sudo " and your password than to just run it.
18:37:40 <Ngevd> I used to be called Taneb!
18:37:46 <asiekierka> oh, that's you! hi!
18:37:50 <asiekierka> elliott i can't turn it off now
18:37:55 <asiekierka> the election night is in progress
18:38:08 <ais523> which country's elections?
18:38:12 <asiekierka> Poland
18:38:18 <elliott> I'm still not sure how that makes running it as root /quicker/, but okay.
18:38:51 <asiekierka> still, it does a good job at annoying nerds like us
18:39:37 <elliott> Generally it isn't other people who get annoyed when your system gets compromised due to running things as root.
18:39:50 <asiekierka> it's a tablet
18:39:50 <Ngevd> I HAVE JUST HAD AN IDEA FOR AN ESOTERIC PROGRAMMING LANGUAGE
18:39:54 <asiekierka> i don't have anything worthwhile for it
18:40:06 <Ngevd> ONE THAT CAN EMBED MANY OTHER ESOTERIC PROGRAMMING LANGUAGES!
18:40:15 <asiekierka> not like you can't copy the plaintext passwords android stores without root
18:40:40 <elliott> I'm... pretty sure you can't.
18:40:50 <olsner> it's important to point it out to anyone doing stuff as root, so that you have the right to say "we told you so" when they do get compromised
18:40:59 <asiekierka> i AM aware of it
18:41:02 <asiekierka> and i am aware of the dangers
18:41:09 <elliott> THE DANGERS(TM)
18:41:19 <monqy> the dangers(tm)
18:41:22 <asiekierka> i hope there are no grues around here
18:41:38 <monqy> eHHHHHHHH?
18:42:12 <olsner> asiekierka: whether you're already aware of The Dangers is irrelevant, we have to tell you anyway
18:42:31 <asiekierka> feel free to compromise my system, then
18:42:52 <asiekierka> acquire IP by whois
18:43:16 <monqy> good ideas for good people
18:43:21 <olsner> but then it'd partially be my fault you get compromised
18:44:09 <elliott> olsner: it's considered acceptable to -- as they call it in the hood -- "own someone's b0xx" -- if they have disclosed they are being an idiot as root
18:44:24 <asiekierka> well go for it
18:44:32 <asiekierka> the only thing running as root right now is a wget process
18:44:35 <asiekierka> the URL is disclosed
18:44:50 <asiekierka> if you want to hijack my WRT54GC router, the wifi is open (my DS only supports WEP and WEP is useless) somewhere in Poland
18:45:10 <asiekierka> my ISP's domain name in the IP leaks the town
18:45:14 <asiekierka> you just need to find the hotspot
18:45:19 <asiekierka> as the tablet will be up for 10 more hours
18:45:22 <asiekierka> that gives you plenty of time
18:45:39 <monqy> ok
18:46:11 <asiekierka> just... dont stop that wget
18:46:14 <asiekierka> the recording is important for me
18:46:23 <monqy> "please stop that wget i beg you"
18:51:24 -!- sadhu has joined.
18:51:46 -!- augur_ has joined.
19:12:08 -!- pikhq has joined.
19:15:52 <elliott> monqy: What's an alphabetical letter.
19:16:31 <monqy> q?????? or maybe q is not an alhbeptical lette.r.
19:16:41 <monqy> a is a safe bet, i think
19:17:31 <elliott> monqy: i went for q but shachaf said ... that that was ... taken ...
19:17:34 <elliott> q is my favourite letter though
19:17:40 <monqy> :(
19:17:44 <monqy> is q really taken
19:17:47 <monqy> or is shachaf a
19:17:48 <monqy> liar
19:17:54 <elliott> i dont know he said qhc was taken....
19:18:04 <elliott> also disadvantage of qhc: when module-named as Qhc it's not quite as nice
19:18:07 <elliott> (QHC is worse)
19:18:25 <monqy> eww capital q
19:18:27 <elliott> (jhc has this problem too, Jhc is a pretty bad module name, it solves this by putting most things in a different top-level)
19:18:34 <elliott> (like "E", "E" is one of jhc's module names)
19:18:40 <elliott> (well actually I think it's all E.Something but still)
19:18:47 <monqy> what is a letter which looks good as caps
19:19:12 <monqy> and good as lowers
19:19:14 <monqy> yhc seems like the sort of thing that would be taken..
19:21:51 <elliott> monqy: surely even you know about Yhc
19:22:11 -!- sadhu has quit (Ping timeout: 258 seconds).
19:22:28 <monqy> i think i saw it somewhere but wasn't sure
19:22:40 <monqy> and I know uhc is taken, I thinjk
19:22:57 <elliott> yes, utrecht
19:23:12 <elliott> "so weird"(tm)
19:24:20 <elliott> monqy: i'll just list... all the options..
19:24:26 <monqy> ok
19:25:31 <elliott> ahcAhcAHC
19:25:31 <elliott> bhcBhcBHC
19:25:31 <elliott> chcChcCHC
19:25:32 <elliott> dhcDhcDHC
19:25:32 <elliott> ehcEhcEHC
19:25:32 <elliott> fhcFhcFHC
19:25:34 <elliott> ghcGhcGHC
19:25:36 <elliott> hhcHhcHHC
19:25:38 <elliott> ihcIhcIHC
19:25:39 <elliott> jhcJhcJHC
19:25:41 <elliott> khcKhcKHC
19:25:43 <elliott> lhcLhcLHC
19:25:45 <elliott> mhcMhcMHC
19:25:47 <elliott> nhcNhcNHC
19:25:49 <elliott> ohcOhcOHC
19:25:51 <elliott> phcPhcPHC
19:25:53 <elliott> qhcQhcQHC
19:25:55 <elliott> rhcRhcRHC
19:25:57 <elliott> shcShcSHC
19:25:59 <elliott> thcThcTHC
19:26:01 <elliott> uhcUhcUHC
19:26:03 <elliott> vhcVhcVHC
19:26:05 <elliott> whcWhcWHC
19:26:07 <elliott> xhcXhcXHC
19:26:09 <elliott> yhcYhcYHC
19:26:11 <elliott> zhcZhcZHC
19:26:13 <elliott> http://sprunge.us/EaDR
19:26:15 <elliott> now to filter out the taken ones...
19:26:40 <elliott> ok
19:26:42 <elliott> monqy: http://sprunge.us/GHiL
19:26:58 <elliott> (shachaf says thc and qhc are both taken by probably-dead projects I think.........)
19:29:24 <CakeProphet> xhc is good.
19:29:33 <monqy> Phc and Thc almost look ok but capital letters are really gross ew
19:30:23 <CakeProphet> ....
19:30:37 <CakeProphet> I don't see how any of these are more gross than any other.
19:30:59 <CakeProphet> except the voweled ones.
19:31:09 <CakeProphet> ihc, ahc, ehc.
19:31:11 <CakeProphet> well ohc is okay
19:31:21 <CakeProphet> uhc is... uhc
19:31:42 <CakeProphet> but yeah you definitely want eXtreme Haskell Compiler.
19:32:07 <monqy> yhc and qhc and uhc and ghc and maybe dhc are the best for lowercase
19:32:18 <monqy> nothing is really good uppercase
19:32:32 <elliott> monqy: i linked to the untaken ones...
19:32:37 <elliott> because you just listed... two taken ones....
19:32:38 <monqy> yes i know
19:32:44 <monqy> i know
19:32:46 <elliott> right
19:32:48 <monqy> that was intentional
19:32:57 <monqy> comment on aesthetic not what to take
19:33:03 <elliott> monqy: if I was going for thc I would go THC uppercase, but it is... too pun even for me.................................
19:33:17 <elliott> CakeProphet also listed two taken ones
19:33:26 <CakeProphet> ZHC
19:33:29 <elliott> phc is pretty nice, and PHC isn't too bad
19:33:38 <CakeProphet> yeah that one's okay.
19:35:40 <CakeProphet> elliott: Chc is gross.
19:36:01 <elliott> no shit
19:36:19 <CakeProphet> Nhc and Mhc actually isn't too bad, I think.
19:36:37 <CakeProphet> Dhc too.
19:37:41 <CakeProphet> Lhc = lulz
19:38:07 <Phantom_Hoover> Someone discussing my compiler?
19:38:43 <CakeProphet> maybe? we're mostly discussing the aesthetics of titlecase haskell compiler acronyms...
19:39:07 <elliott> Phantom_Hoover: ?
19:39:25 <CakeProphet> dhc Dhc DHC -- not bad
19:39:44 <Phantom_Hoover> <elliott> phc is pretty nice, and PHC isn't too bad
19:39:53 <CakeProphet> ah
19:40:05 <elliott> Phantom_Hoover: Did you reserve that name : ' (
19:40:14 <CakeProphet> >_>
19:40:18 <CakeProphet> wait for it.
19:40:23 <Ngevd> *P*hantom *H*oover *C*ompiler
19:40:29 <elliott> yes i know
19:40:33 <elliott> i'm just asking if Phantom_Hoover has actually used it
19:40:50 <CakeProphet> you're asking if there's a phantom hoover compiler?
19:40:54 <CakeProphet> ...
19:40:54 <elliott> ...
19:40:56 <Phantom_Hoover> Yes, it's the... um...
19:41:02 <elliott> CakeProphet: Stop being dense.
19:41:38 <CakeProphet> elliott: noep
19:41:44 <Ngevd> Does it have to be *HC?
19:41:45 <CakeProphet> obviously a ridiculous question.
19:41:51 <Ngevd> Why not *CfH?
19:42:03 <CakeProphet> well as far as acronym expansion you can pretty much always get away with recursion.
19:42:13 <CakeProphet> DHC = DHC Haskell Compiler
19:42:28 <Ngevd> *CfH = *CfH compiler for Haskell
19:43:01 <pikhq> Better still: HaskellC
19:43:09 <elliott> pikhq: grose, imgagery
19:43:33 <CakeProphet> LHC = Large Hadron Collider Haskell Compiler
19:43:34 <pikhq> Invoking the Gregor compiler notation.
19:43:39 <CakeProphet> LHC Haskell Compiler for short
19:43:42 <pikhq> Okay, CakeProphet wins.
19:43:57 <elliott> CakeProphet: I removed LHC from the "unused" list for a reason.
19:44:16 <elliott> pikhq: When has Gregor used that?
19:44:26 <pikhq> elliott: plofc
19:44:34 <elliott> That's lowercase. :p
19:44:39 <pikhq> That's me being lazy.
19:44:40 <pikhq> :P
19:44:47 <elliott> Anyway, plofc should be a C interpreter written in Plof.
19:44:52 <elliott> Evidence: {c,d}plof
19:44:59 <pikhq> Bah, right.
19:45:03 <CakeProphet> elliott: but it's definitely the best name for a haskell compiler.
19:45:10 <elliott> CakeProphet: It's also taken.
19:45:20 <pikhq> LHCHC is taken?
19:45:36 <CakeProphet> is it taken by a haskell compiler? I think you're allowed to re-use acronyms
19:45:47 <pikhq> Hmm. 米HC. There.
19:45:49 <CakeProphet> pikhq: well no it would be LHC
19:45:56 <CakeProphet> but it could be LHCHC I guess
19:46:06 <pikhq> The American Haskell Compiler. 米HC for short.
19:47:17 <CakeProphet> pikhq: LHC would be short for LHC Haskell Compiler, which is short for... yeah.
19:47:20 <CakeProphet> you got it.
19:47:49 <Ngevd> Call it "Hird's Compiler for Haskell"
19:47:57 <Ngevd> Then for bonus points port it to Hurd
19:48:34 <Phantom_Hoover> The Jeff Bridges Haskell Compiler, or 男円HC.
19:48:42 <CakeProphet> ...
19:48:49 <pikhq> Phantom_Hoover: That... Doesn't make sense.
19:48:54 <pikhq> Man-money?
19:48:55 <Phantom_Hoover> No, you're right.
19:49:08 <Phantom_Hoover> 円男HC.
19:49:13 <pikhq> Money-man?
19:49:21 <Phantom_Hoover> No, Tron-man.
19:49:24 <pikhq> Either that or circle-man.
19:49:28 <pikhq> Um.
19:49:29 <pikhq> No.
19:49:33 <Phantom_Hoover> Yes.
19:49:47 <CakeProphet> what does that have to do with Jeff Bridges..
19:50:05 <pikhq> Beats me.
19:50:17 <CakeProphet> DHC = The Dude Haskell Compiler
19:50:21 <Phantom_Hoover> "Some of his best-known films include Tron,"
19:50:35 <CakeProphet> oh okay.
19:50:43 * CakeProphet does not know the best-known films then.
19:51:15 <CakeProphet> http://2.bp.blogspot.com/-SSyo7A8y_J4/TlxUY-DMBLI/AAAAAAAAAZc/Z4EeBuTl8AQ/s400/jeff_bridges2.jpeg
19:51:18 <CakeProphet> captivating
19:51:49 <asiekierka> phc
19:51:52 <asiekierka> pico haskell compiler
19:52:08 <Phantom_Hoover> No, Phantom_Haskell Compiler.
19:52:13 -!- Phantom_Hoover has changed nick to Phantom_Haskell.
19:52:14 <asiekierka> or ahc - atheist haskell compiler, or ehc - elliott haskell compiler
19:52:25 <monqy> what
19:52:35 <Phantom_Haskell> Pico atheist: elliott.
19:52:46 <asiekierka> pae
19:54:18 <CakeProphet> elliott: would it be unacceptable to use all uppercase for the module name?
19:54:27 <elliott> CakeProphet: "Qhc" is unacceptable.
19:54:35 <elliott> "QHC" as much so.
19:54:35 <CakeProphet> er, I mean QHC
19:54:36 <elliott> Other names may be acceptable uppercase.
19:54:38 <CakeProphet> oh okay.
19:54:45 <CakeProphet> I mean like...
19:54:53 <CakeProphet> is that acceptable for naming conventions.
19:54:58 <CakeProphet> to name modules in all caps.
19:55:03 <elliott> For instance phc/PHC is acceptable.
19:55:06 <elliott> Phc is not.
19:55:40 <CakeProphet> I don't really see the problem with LHC. Acronyms are re-used all the time...
19:56:17 <Phantom_Haskell> Help I don't approve of the Darwin Awards any more I liked being a misanthrope :(
19:56:29 <coppro> Phantom_Haskell: what.
19:56:31 <elliott> Phantom_Haskell: Ha, I've been disapproving of them since before it was cool.
19:57:02 <CakeProphet> elliott: me too dawg. I didn't even know it was cool. That's how cool I am.
19:57:07 <CakeProphet> made cool cred up in here.
19:57:35 <CakeProphet> s/made/mad/
19:57:41 <asiekierka> elliott call it dhc - dawkins haskell compiler
19:57:48 <monqy> asiekierka shut up
19:57:56 <asiekierka> :<
19:58:22 <monqy> :<
19:58:31 <Ngevd> |
19:58:36 <Ngevd> =|:{C
19:58:36 <elliott> I don't even like Dawkins but your bitterness is hilarious.
19:58:36 <Ngevd> |
19:58:39 <CakeProphet> Lhc, Mhc, Dhc, Ohc these are all good.
19:59:04 <asiekierka> told you, Dhc
19:59:09 <Phantom_Haskell> elliott, didn't you like him a while ago?
19:59:47 <elliott> Phantom_Haskell: I liked him well enough but then he was terrible so I didn't any more. (I can elaborate in /msg if you want.)
20:09:51 -!- TeruFSX has quit (Remote host closed the connection).
20:10:43 <Phantom_Haskell> http://www.codinghorror.com/blog/2006/09/has-joel-spolsky-jumped-the-shark.html
20:10:56 <Phantom_Haskell> Waitwaitwait, I though Atwood and Spolsky loved each other.
20:12:03 <coppro> dawkins
20:12:04 <coppro> dawkins
20:12:06 <coppro> dawkins
20:12:13 <Phantom_Haskell> I read that and now I feel dirty.
20:13:32 -!- jix has quit (Remote host closed the connection).
20:13:48 <Phantom_Haskell> coppro, have you turned into some kind of antitheist chicken?
20:14:51 <coppro> Phantom_Haskell: dawkins
20:16:16 <elliott> <Phantom_Haskell> Waitwaitwait, I though Atwood and Spolsky loved each other
20:16:17 <elliott> Observe date.
20:16:34 <elliott> LaunchedAugust 2008
20:16:37 <elliott> --[[Stack Overflow]]
20:19:53 -!- zzo38 has joined.
20:25:34 <elliott> Phantom_Haskell: That article sure does have high-quality arguments: "At the risk of being rude, Joel is a pompous ass and hasn't said anything interesting for years. He's now also plainly gone completely insane, and the poor old dear should be taken out and shot..."
20:26:06 <elliott> s/arguments/comments/
20:26:14 <elliott> What is words; furthermore, what are typing?
20:27:03 -!- tiffnya has joined.
20:29:02 -!- tiffany has quit (Ping timeout: 260 seconds).
20:30:33 -!- sllide has joined.
20:36:12 -!- tiffnya has changed nick to tiffany.
20:36:57 <elliott> Our long national nightmare is over thanks to tiffany.
20:37:03 <tiffany> .-.
20:38:36 -!- sllide has quit (Read error: Connection reset by peer).
20:39:43 <elliott> I wonder if a lexical context stack is ~as useful as a stack trace for Haskell.
20:39:58 <Phantom_Haskell> "On 11 July 1985, news reporter Peter Jennings interrupted General Hospital for a special news bulletin: After a mere 79 day furlough, the original-recipe Coke was back on the market as “Coca-Cola Classic.”"
20:39:59 <Phantom_Haskell> I...
20:40:00 <elliott> I guess it's kind of non-trivial in some ways.
20:40:06 -!- TeruFSX has joined.
20:40:14 <elliott> Phantom_Haskell: Wouldn't you?
20:40:31 <Phantom_Haskell> You forgot to close that ~.
20:40:55 <elliott> What.
20:42:52 <monqy> different ~ there
20:42:55 <Phantom_Haskell> <elliott> I wonder if a lexical context stack is ~as useful as a stack trace for Haskell.
20:43:04 <monqy> ~ being "approximately" i assume
20:43:10 <elliott> Phantom_Haskell: Yeah what monqy said.
20:43:14 <elliott> I do that all the time man jeez.
20:43:57 <Phantom_Haskell> You use them for ~sarcasm~ more.
20:44:00 -!- MSleep has joined.
20:44:00 -!- MSleep has changed nick to MDude.
20:45:08 <Ngevd> Goodnight
20:45:09 -!- Ngevd has quit (Quit: Leaving).
20:57:14 -!- Zuu has quit (Ping timeout: 244 seconds).
20:58:09 -!- tiffany has quit (Quit: Leaving).
21:00:43 -!- tiffany has joined.
21:04:48 -!- Zuu has joined.
21:07:49 -!- Patashu has joined.
21:09:07 -!- Zuu has quit (Ping timeout: 244 seconds).
21:10:35 -!- Zuu has joined.
21:14:30 <Phantom_Haskell> Why is 'corridor' such a nice word?
21:15:39 -!- sllide has joined.
21:16:01 <elliott> It isn't.
21:16:15 -!- TeruFSX has quit (Read error: Connection reset by peer).
21:16:56 <CakeProphet> what if elliott and I were actually the same person
21:17:09 <Deewiant> You aren't.
21:17:16 <elliott> It would be a miracle that I managed to say all my stupid lines under a different name.
21:17:21 <CakeProphet> how do you know?
21:17:33 <monqy> for the reason elliott said
21:17:48 <monqy> you'd have to be a very good actor!!
21:18:15 <CakeProphet> hmm.
21:18:18 <CakeProphet> yeah I guess you're right.
21:18:30 -!- TeruFSX has joined.
21:18:59 <CakeProphet> bahahahaha I was just acting I'm actually
21:19:04 <CakeProphet> lying
21:19:07 <CakeProphet> ahahahahahahahaha
21:19:29 <CakeProphet> you'll never know whether or not elliott and I are the same person.
21:19:31 -!- TeruFSX has quit (Read error: Connection reset by peer).
21:19:39 <monqy> ok
21:20:00 <elliott> I'm so glad I remembered to say that in my Stupid Window.
21:21:22 <elliott> monqy: Did you pick a letter.
21:22:45 <monqy> no im bad at choices
21:23:23 <monqy> badhc, goodhc
21:23:45 <Patashu> http://t.co/euelGmPG hello what is this
21:23:54 <elliott> phc is kind of tempting but Phantom_Haskell will never let me rest.
21:24:02 <elliott> Although I'm tempted to go with Atheist Haskell Compiler just for the hilarity.
21:24:19 <elliott> Patashu: ah.
21:24:45 <Deewiant> You're implementing Haskell now?
21:24:47 <Patashu> it's like someone took php and turned it into javascript, or C#
21:24:58 <elliott> n = 3
21:24:59 <elliott> a = select name from foo where id < $n
21:24:59 <elliott> foreach(a as key: value) {
21:24:59 <elliott> echo "row: " + key + " name: " + value.name
21:24:59 <elliott> }
21:24:59 <elliott> I'm not actually sure how this is related to PHP
21:25:11 <elliott> Deewiant: MAYBE......
21:25:28 <elliott> Deewiant: Shut up I've had like two successful projects in a row that I'm still going at I can THINK BIG now I have mastered project management.
21:25:43 <Deewiant> Two?
21:25:43 <monqy> zepto
21:25:49 -!- TeruFSX has joined.
21:26:01 <elliott> Deewiant: shiro, mchost
21:26:01 <monqy> mchost, elliottcraft, @
21:26:13 <monqy> aqh,.. shiro
21:26:19 <elliott> aqh?
21:26:27 <monqy> trying to type ahh but it came out wronge
21:28:28 <elliott> Totally demand Deewiant retract his indignance
21:28:44 <monqy> is mchost successful?
21:28:57 <Deewiant> I wasn't indignant, I just forgot about shiro
21:29:12 <elliott> monqy: It's at a pretty good stage and has had sustained development for quite a while, so sure
21:29:24 <monqy> good
21:29:25 <elliott> Obviously it's not "done" but neither is Shiro :P
21:29:28 <Patashu> woah, what the hell? jigglypuff is top tier in ssbm now
21:30:45 <elliott> Hmm, I think a lexical context stack in Haskell is really easy
21:30:57 <Patashu> http://www.smashboards.com/showthread.php?t=294748
21:31:13 <CakeProphet> Patashu: wat
21:31:24 <elliott> Just push name, file, line and column information whenever you see a definition, and pop it when it ends, and the stack's state when you look at a definition is the lexical context.
21:31:26 <elliott> You can even include lambdas.
21:31:38 <CakeProphet> Patashu: my guess is some kind of lame infinite chaingrab combo thing
21:31:40 <CakeProphet> or something.
21:31:54 <Patashu> maybe people figured out how to use rest proly
21:32:57 <Phantom_Haskell> Jigglypuff has always been stupidly high-tier.
21:33:17 <Patashu> Yeah but I mean
21:33:19 <Patashu> fox tier?!?
21:33:42 <Phantom_Haskell> It used to be because she had one or two boring air combos.
21:34:04 <CakeProphet> (unrelated) ness has the best air moves in brawl...
21:34:13 <CakeProphet> er, I mean, not the best. they're just good.
21:34:29 <Phantom_Haskell> Will you please stop being such a Ness fanboy.
21:34:45 <CakeProphet> you just don't understand man
21:34:50 <CakeProphet> PSYCHIC JAPANESE BOYS YESSSS
21:35:14 <Phantom_Haskell> This sounds like the kind of unsettling thing Madoka-Kaname says.
21:35:15 <monqy> japanese?
21:36:26 <Phantom_Haskell> CakeProphet, yes, what monqy said, we all know Ness is from whatever it was called.
21:36:34 <monqy> eagleland was it
21:38:17 <Phantom_Haskell> Yeah, I wasn't sure.
21:38:36 <CakeProphet> no he's obviously Japanese
21:38:45 <CakeProphet> he just lives in a fantasy world.
21:38:52 <CakeProphet> but is still Japanese.
21:39:19 <CakeProphet> in much the same way that everyone is Anglo-Saxon in LotR.
21:39:37 <elliott> hello
21:39:42 <monqy> hi
21:40:11 -!- augur has joined.
21:40:12 -!- augur_ has quit (Ping timeout: 258 seconds).
21:45:03 <CakeProphet> New Pork City is a deep metaphorical exposition on obesity in America.
21:45:37 <CakeProphet> I'm currently writing my thesis on symbology in the earthbound series.
21:45:46 <monqy> ok
21:47:39 <CakeProphet> does anyone die and then come back to life to save the world?
21:47:42 <CakeProphet> that's insta-Jesus reference.
21:48:23 <monqy> ok
21:50:45 <CakeProphet> monqy: are you Jesus?
21:51:38 <CakeProphet> maybe are you Jesus&?
21:52:12 <zzo38> Can any Haskell compiler have something to compile into like the representation I have described for functional programming? It is not the same as GHC Core; mine lacks unsafe functions, casts, let, source info, and other things. The program is a list of expressions, a GlobalID indexes the program, and exported functions are given GlobalID numbers.
21:53:02 <CakeProphet> zzo38: not any, no.
21:53:09 <CakeProphet> ..
21:53:44 <zzo38> Would you know how such a thing could be made, or whether any Haskell compiler has similar features?
21:56:18 <CakeProphet> zzo38: I would need to know more about the intermediate form and how it works to answer the first question. and no I don't know the answer to the second question
21:56:26 <CakeProphet> Muxin Wang.
21:57:06 <CakeProphet> zzo38: how do you do let?
21:57:41 <elliott> CakeProphet: You can transform let to lambda.
21:57:48 <elliott> You can even then eliminate lambda by doing lambda-lifting if you want.
21:58:15 <zzo38> I posted the representation I had idea of, on this IRC, yesterday.
21:58:21 <CakeProphet> elliott: I thought about lambda but how do you do things like mutual recursion?
21:58:29 <elliott> Well, that was let, not letrec.
21:58:45 <elliott> CakeProphet: Just float them to the top level with lambda-lifting.
21:59:04 <zzo38> It did not actually have lambdas, instead it used Case [(LocalP, e)] for a lambda expression.
21:59:10 <elliott> e.g.: Add every variable in scope as an argument to the definitions in the "let", float out to top level, eliminate unused parameters.
22:00:07 <zzo38> And a global is still capable of referencing itself; it also has support to have primitives if you need them.
22:11:57 -!- ais523 has quit (Remote host closed the connection).
22:25:16 -!- jix has joined.
22:27:20 -!- Phantom_Haskell has quit (Quit: Leaving).
22:27:26 -!- CakeProphet has quit (Ping timeout: 260 seconds).
22:29:10 -!- CakeProphet has joined.
22:29:11 -!- CakeProphet has quit (Changing host).
22:29:11 -!- CakeProphet has joined.
22:31:46 -!- zzo38 has quit (Remote host closed the connection).
22:34:40 -!- Madoka-Kaname has quit (Read error: Connection reset by peer).
22:34:43 -!- Lymee has joined.
22:41:18 -!- Lymee has quit (Ping timeout: 252 seconds).
22:54:01 -!- Madoka-Kaname has joined.
22:54:01 -!- Madoka-Kaname has quit (Changing host).
22:54:01 -!- Madoka-Kaname has joined.
22:54:37 <elliott> monqy: phc or qhc.......
22:54:53 <monqy> P is better than Q in this font at least but q is better than p aaaghhh
22:55:13 <monqy> especially next to h, q is so much better
22:55:22 <Madoka-Kaname> Hopefully I didn't spew this in here:
22:55:24 <monqy> by next to i mean as in qh not hq
22:55:26 <Madoka-Kaname> sudo halt
22:55:28 <Madoka-Kaname> EllIoTTSuCkS
22:55:37 <monqy> what
22:55:46 <CakeProphet> ITT: worry about frivolous things. make bad burns.
22:56:00 <Madoka-Kaname> My screen blanked, and I tried to issue a clean shutdown.
22:56:07 <Madoka-Kaname> >>
22:56:33 <CakeProphet> ..
22:56:38 <CakeProphet> good password.
22:57:04 <CakeProphet> I like how the alternating case doesn't alternate across double consonants.
22:57:17 <CakeProphet> nice choice.
22:57:27 <CakeProphet> since we're discussing the aesthetics of letters and case.
22:57:33 <CakeProphet> for some reason.
22:58:32 <CakeProphet> elliott: Hhc
22:58:36 <CakeProphet> Haskell Haskell Compiler.
22:58:50 <elliott> Madoka-Kaname: is that your pass
22:58:56 <elliott> word
22:58:58 <CakeProphet> I doubt it.
22:58:59 <elliott> also
22:59:03 <elliott> Madoka-Kaname: learn to reisub nub
22:59:20 <Madoka-Kaname> Sysrq disabled.
22:59:50 <elliott> Madoka-Kaname: why
22:59:58 <Madoka-Kaname> Because Debian default, and too lazy to fix it.
23:00:00 <CakeProphet> elliott: oh neat.
23:00:17 <elliott> Madoka-Kaname: echo 1 > /proc/sys/kernel/sysrq
23:00:25 <Madoka-Kaname> I know.
23:00:29 <Madoka-Kaname> Still need to put it into init or something.
23:01:06 <elliott> Madoka-Kaname: echo '/proc/sys/kernel/sysrq = 1' >>/etc/sysctl.conf
23:01:22 <elliott> EXTREME DIFFICULTY
23:01:36 <elliott> oh hmm
23:01:42 <elliott> echo 'sys.kernel.sysrq = 1' >>/etc/sysctl.conf
23:01:46 <elliott> my badde
23:01:53 <Madoka-Kaname> ^^;
23:02:08 <elliott> do it now or i will most verily get mad
23:02:28 <CakeProphet> elliott: is it on by default in ubuntu?
23:03:11 <elliott> tias
23:03:20 <elliott> else... maybe... cat /proc/sys/kernel/sysrq??????
23:03:54 <CakeProphet> 1
23:04:06 <CakeProphet> also I dislike remembering your obscure acronyms.
23:04:59 <CakeProphet> also I believe I've already mentioned tihs
23:05:07 <CakeProphet> but I don't own a Target Identification and Acquisition System.
23:05:30 -!- nooga has quit (Ping timeout: 252 seconds).
23:09:40 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net).
23:28:39 -!- Jafet has joined.
23:39:45 <elliott> monqy: phc or qhc....
23:39:53 <elliott> and then Phc/PHC or Qhc/QHC for the module name
23:40:14 <elliott> phc -- the open source PHP compiler
23:40:14 <elliott> www.phpcompiler.org/
23:40:15 <elliott> 20 Sep 2011 – What is phc? phc is an open source compiler for PHP with support for plugins. In addition, it can be used to pretty-print or obfuscate PHP code, ...
23:40:19 <elliott> monqy: oh man, now you only have one question to answer
23:40:21 <elliott> monqy: Qhc or QHC
23:40:24 <monqy> aaaaaaaaa
23:40:44 <elliott> is that aaaaaaaaa to the question or to phc
23:40:47 <monqy> they're both ugly in their own special ways ;_;
23:40:51 <monqy> to the qusetion
23:41:41 <monqy> Qhc is imbalance but QHC has lots of caps
23:42:02 <monqy> what do the other compilers use?
23:42:12 <monqy> inconsistent across them?
23:43:01 -!- sllide has quit (Ping timeout: 240 seconds).
23:43:12 <elliott> jhc uses Jhc for like primitive parts of its standard library, and unprefixed things for others like FrontEnd.Blah and E.Blah; GHC uses GHC for primitive parts of its standard library and non-portable stuff, and maybe parts of the compiler I dunno, and doesn't have a prefix outside of that
23:44:43 <monqy> decisions :(
23:44:59 <elliott> I could look at UHC I guess
23:45:03 <elliott> even if it is.... Utrehct.............
23:45:08 <elliott> monqy: oh and Yhc uses Yhc but it's /called/ Yhc
23:45:13 <elliott> (jhc is called jhc and GHC is called GHC)
23:46:32 <elliott> wow how the fuck is this thing organised
23:46:48 <elliott> ok i have no idea about uhc
23:47:04 <monqy> utrehct
23:47:29 <elliott> yes
23:47:30 <elliott> utrecht
23:49:58 <elliott> monqy: qhc or QHC HELp[;,............
23:49:59 <elliott> erm
23:49:59 <elliott> Qhc
23:50:04 <elliott> i'm leaning towards Qhc because QHC yuck
23:50:21 <monqy> ok
23:50:49 <elliott> monqy: ehpl
23:51:15 <CakeProphet> QHC is way better than Qhc
23:51:20 <monqy> im bad at leaning when both are so yukc.....but if there must be a choice,,,
23:52:05 <monqy> if only lowercase module names :(
23:52:18 <monqy> qHC (dont worrY: im just kidding)
23:52:29 <monqy> (ha ha h ha)
23:56:33 <elliott> CakeProphet: except the name of the compiler is qhc
2011-10-10
00:00:18 -!- Jafet has quit (Quit: Leaving.).
00:02:45 <CakeProphet> elliott: ...you lost me.
00:04:33 <elliott> CakeProphet: what
00:07:04 -!- Jafet has joined.
00:23:40 <CakeProphet> elliott: so you're basically saying you've decided to name it qhc?
00:23:53 <elliott> CakeProphet: Yes, and I need deciding between Qhc and QHC for the module name
00:23:54 <CakeProphet> just a few minutes before you were asking which to name it.
00:23:56 <CakeProphet> oh
00:24:00 <CakeProphet> I see.
00:24:13 <CakeProphet> Qhc then. :P
00:24:23 <CakeProphet> like
00:24:25 <CakeProphet> explain
00:24:29 <CakeProphet> what's wrong with that.
00:24:35 <monqy> it's ugly
00:24:39 <monqy> QHC is ugly too
00:24:41 <CakeProphet> okay
00:24:44 <monqy> qhc is ~beautiful~
00:25:07 <CakeProphet> I think Qhc looks nice too.
00:25:07 <elliott> I'll just go with Qhc
00:25:09 <CakeProphet> so there.
00:25:34 <CakeProphet> do you have an expansion for the name yet?
00:25:35 <elliott> I think I'll write the grammar in Parsec; self-hosting is a goal so I don't want to use something like trifecta with a billion dependencies
00:25:38 <elliott> CakeProphet: there is no expansion
00:25:44 <elliott> qhc haskell compiler
00:25:45 <CakeProphet> ah okay. I thought that may be the case.
00:26:11 <CakeProphet> ...oh, so it's recursive actually. or rather, it's not a huge leap to assume that it's a recursive acronym.
00:26:12 <monqy> q haskell compiler
00:26:19 <CakeProphet> even if it's not officially.
00:26:21 <monqy> the q stands for q
00:26:49 <elliott> monqy: but then the q on its own looks lonely.
00:26:59 <monqy> the q stands for ~q~
00:27:04 <CakeProphet> I think recursive is nice because it's almost the same as not expanding it.
00:27:27 <elliott> I mean obviously the hc part stands for haskell compiler
00:27:37 <elliott> Time to write a parser
00:27:41 * elliott cracks knuckles, opens http://www.haskell.org/onlinereport/haskell2010/
00:27:48 <monqy> oh dear....
00:27:51 <elliott> monqy: what
00:27:56 <CakeProphet> lol, now that the important stuff is out of the way.
00:27:56 <monqy> parsing haskell
00:28:01 <monqy> im scared
00:28:03 <monqy> is it any fun
00:28:07 <monqy> I'm afraid of parsing
00:28:08 <CakeProphet> can't be as bad as perl.
00:28:08 <elliott> monqy: I'm going to not do layout
00:28:11 <monqy> oh
00:28:14 <elliott> monqy: for now
00:28:15 <monqy> oh
00:28:19 <elliott> monqy: since it's easy enough to add it in later
00:28:22 <monqy> I guess that makes it
00:28:25 <monqy> easier
00:28:29 <elliott> it basically results in "if you don't see { after a few keywords, do some freaky shit" :P
00:28:33 <elliott> s/results in/reduces to/
00:29:12 <elliott> monqy: I don't like how you have to keep some comments but not others :(
00:29:16 <elliott> for things like pragmas
00:29:24 <monqy> :(
00:30:04 <elliott> I wonder if GHC maintains all comments in the AST??
00:30:08 <elliott> haddock uses it after all
00:31:03 <CakeProphet> elliott: might as well keep them if you're going to be handling pragmas.
00:31:09 <CakeProphet> makes it easier, I think?
00:31:11 <elliott> Yeah, but keeping all of them is a Pain for processing the AST
00:31:14 <elliott> Keeping declaration-level ones, maybe
00:31:17 <elliott> Keeping inline ones?
00:31:19 <elliott> Ugh
00:31:29 <CakeProphet> a pain? don't you just have to... ignore them?
00:31:36 <CakeProphet> probably the least painful thing to process. :P
00:31:47 <CakeProphet> ignore or check for pragmas.
00:31:50 <CakeProphet> on inline ones.
00:32:00 <elliott> Hmm, GHC's idle GC time is every 0.3s
00:32:03 <elliott> CakeProphet: Because even something like
00:32:06 <elliott> 9 {- foo -} + 9
00:32:06 <elliott> becomes
00:32:13 <elliott> Add 9 (CommentThen "foo" 9)
00:32:14 <elliott> or whatever
00:32:28 <CakeProphet> lolwat. that's weird.
00:32:38 <CakeProphet> but I guess that is how you'd have to do it.
00:32:44 <CakeProphet> unless you do something weirder
00:32:47 <monqy> keep onyl pargmas? is there any restriction on where they can appeare?
00:32:54 <elliott> CakeProphet: How else would you do it
00:33:00 <CakeProphet> I was thinking about that...
00:33:02 <elliott> monqy: but then whence haddock...
00:33:12 <monqy> oh you'll be having a haddock in youre qhc?
00:33:18 <monqy> then thats problems....
00:33:22 <CakeProphet> well is there a node for like... a "line"
00:33:26 <CakeProphet> like, a top-level node?
00:33:30 <elliott> monqy: well I dunno I just
00:33:33 <elliott> don't like to rule things out.....
00:33:34 <CakeProphet> you could stick all the comments there. or something. :P
00:33:38 <elliott> CakeProphet: do you mean declaration
00:33:42 <CakeProphet> yeah I think.
00:33:46 <elliott> <elliott> 9 {- foo -} + 9
00:33:48 <elliott> where declaration
00:33:50 <CakeProphet> that's kind of bad though.
00:33:50 <monqy> anyway i was just about to say "keeping pragmas separate from the ast might be nice" but now that haddoc comments need some sort of itnegration.....
00:34:25 <CakeProphet> are you sure that haddoc even needs the compiler to do that shit?
00:34:35 <elliott> CakeProphet: Haddock uses GHC, so yes
00:34:41 <elliott> and things fail if the code doesn't typecheck etc.
00:34:47 <elliott> I don't know whether it does it to find the comments, though
00:34:49 <CakeProphet> hmmm, okay.
00:34:56 <CakeProphet> er, right, that's what I mean.
00:35:07 <elliott> hmm, looks like ghc at least parses pragmas /directly/ in the parser
00:35:10 * elliott looks at what it does for normal comments
00:36:04 <CakeProphet> does it parse them and put them in the AST or process directly?
00:36:36 <CakeProphet> second option sounds kind of easier maybe. depending on whether or not you're using state.
00:36:55 <elliott> huh?
00:37:14 <CakeProphet> yeah putting pragmas in the AST sounds pointless actually.
00:37:28 <CakeProphet> ...also
00:37:32 <CakeProphet> many pragmas change syntax
00:37:34 <CakeProphet> so... yeah.
00:37:46 <CakeProphet> you can't process them later, after you parse.
00:37:59 * CakeProphet is thinking aloud.
00:38:59 <CakeProphet> so I guess you would just update a state record whenever you encounter a pragmas in the right place.
00:39:41 <elliott> Well, you can just parse all extensions and the like
00:39:51 <elliott> And mark that they were used
00:39:54 <elliott> And then complain later if it's not OK
00:39:56 <elliott> But yeah
00:40:09 <monqy> do any extensions disallow otheriwse valid proramsgs
00:40:30 <CakeProphet> hmmm, none that I can think of.
00:41:08 <CakeProphet> unless they reserve some kind of symbol that could be used elsewhere. Is ! and the like reserved or is it a valid operator character in Haskell98.
00:41:16 <CakeProphet> ! and ~
00:41:51 <monqy> oh right: template haskell ruins $ in some cases, and if mdo is still a thing i think it can ruins stuff too
00:42:21 <elliott> fair enough
00:42:27 <CakeProphet> so yeah I think you'd want to parse different based on extensions rather than doing it later.
00:43:27 <CakeProphet> elliott: can I help you or am I banned forever?
00:43:46 <elliott> CakeProphet: for what
00:43:50 <elliott> s/for/with/
00:43:50 <Jafet> http://www.haskell.org/ghc/docs/latest/html/users_guide/syntax-extns.html#syntax-stolen
00:43:58 <CakeProphet> elliott: with this compiler, what do you think.
00:44:21 <elliott> dunno, you could implement ConstraintKinds
00:44:36 -!- derdon has quit (Remote host closed the connection).
00:44:47 <monqy> ew, -XArrows steals a lot of very nice things
00:45:46 <CakeProphet> elliott: but could I help with actually coding stuff so I can learn about compilers. :D :D :D
00:46:02 <CakeProphet> it's totally a good idea.
00:46:30 <elliott> yes, I absolutely want someone inexperienced let all over my codebase
00:46:45 <CakeProphet> elliott: under your direction of course.
00:46:56 <CakeProphet> it's not like I'm just going to like, go break things.
00:47:07 <elliott> are you sure
00:47:10 <CakeProphet> ..yes
00:47:23 <elliott> are you that good at detecting bugs in the making :P
00:47:32 <CakeProphet> >_> sometimes? lol
00:47:55 <elliott> anyway I don't need to handle extensions yet
00:48:01 <elliott> i'm implementing pure haskell(tm)
00:48:09 <CakeProphet> I catch a lot of bugs when I review my own code, of course.
00:48:20 <CakeProphet> but no, I don't magically make programs that run correctly first run.
00:48:30 <CakeProphet> well, sometimes I do.
00:48:39 <CakeProphet> but I don't write compilers. :P
00:49:53 -!- Sweet has joined.
00:49:54 <elliott> '{-# INLINE' { L _ (ITinline_prag _ _) }
00:49:55 <elliott> '{-# SPECIALISE' { L _ ITspec_prag }
00:49:55 <elliott> '{-# SPECIALISE_INLINE' { L _ (ITspec_inline_prag _) }
00:49:55 <elliott> '{-# SOURCE' { L _ ITsource_prag }
00:49:55 <elliott> '{-# RULES' { L _ ITrules_prag }
00:49:56 <elliott> pro tokens
00:49:58 <elliott> hi Sweet
00:49:59 <elliott> `? welcome
00:50:05 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
00:50:08 <Sweet> Hi
00:50:51 -!- Sweet has left.
00:50:57 <monqy> bye sweet
00:51:00 <CakeProphet> elliott: I'm guessing you're not going to go through 4 million intermediate representations right from the start.
00:51:15 <CakeProphet> maybe Haskell -> C
00:51:34 <monqy> haskell -> haskell best compi;er
00:51:53 <Jafet> GHC has both
00:52:02 <elliott> CakeProphet: haskell → core of some sort → backends
00:52:05 <elliott> probably C will be a backend
00:52:11 <CakeProphet> oh okay.
00:52:12 <elliott> I might have an intermediate language before that for simplicity
00:52:20 <elliott> that simplifies things, not complicates them
00:52:25 <elliott> unless you can think of an obvious mapping of haskell directly to C
00:52:36 <CakeProphet> I cannot.
00:52:46 <CakeProphet> I suppose that makes sense.
00:53:04 <CakeProphet> I was thinking the extra layers would require more effort, but it actually just makes it conceptually simpler.
00:53:20 <monqy> welcome to compilers
00:53:38 <CakeProphet> welcome to monqy
00:54:11 <elliott> good place to be
00:54:25 <CakeProphet> intermediate layer should be BF
00:54:40 <CakeProphet> or Unlambda
00:54:50 <monqy> bad ideas
00:55:07 <CakeProphet> monqy: also jokes.
00:55:15 <monqy> bad jokes
00:55:23 <CakeProphet> monqy: okay fine you make a joke.
00:55:30 <monqy> I can't force those things man
00:55:46 <monqy> forcing jokes is bad, for bad people
00:55:52 <CakeProphet> monqy: okay fine make ideas then.
00:56:04 <monqy> forcing ideas is bad, for bad people
00:56:10 <CakeProphet> good idea.
00:56:26 <monqy> jokes and ideas must flow naturally as that is the way of things
00:56:40 <CakeProphet> my jokes flow naturally and are also the shiznizzle.
00:56:48 <CakeProphet> best compiler jokes.
00:57:05 -!- Jafet1 has joined.
00:57:23 -!- Jafet has quit (Disconnected by services).
00:57:25 -!- Jafet1 has changed nick to Jafet.
00:59:15 <CakeProphet> elliott: oh oh oh LLVM
00:59:22 <CakeProphet> use that.
00:59:44 <CakeProphet> as backend.
00:59:51 <CakeProphet> back-backend.
01:00:03 <elliott> i can have
01:00:04 <elliott> multiple
01:00:06 <elliott> backacbackbkcbackends
01:00:12 <CakeProphet> elliott: right but that's the best one.
01:00:17 <CakeProphet> use that one by default.
01:00:30 <monqy> the beST?, eh
01:00:46 <monqy> that didn't turn out quite how I Wanted it...oops?"
01:03:35 <elliott> monqy: is it a pun on ST...
01:04:03 <CakeProphet> I recall reading about programs compiled with GHC being faster when LLVM was the backend.
01:06:56 <elliott> That just says that the LLVM backend is faster than the asm one
01:06:57 <elliott> Which it is
01:07:27 <CakeProphet> which probably says something about LLVM being a good choice for backend.... (....?)
01:07:38 <elliott> or that the asm backend is bad
01:07:56 -!- sllide has joined.
01:07:56 <CakeProphet> actually it was comparing it to the C and asm backend.
01:09:09 <CakeProphet> http://blog.llvm.org/2010/05/glasgow-haskell-compiler-and-llvm.html
01:09:41 <monqy> elliott: actually it was me messing up with my keyboard sometimes i accidentally shift (it is a ba d acdient)
01:09:41 <CakeProphet> source for this statement on Wikipedia: The Glasgow Haskell Compiler (GHC) has a working backend for LLVM that achieves a 30% speed-up of the compiled code when compared to native code compiling via GHC or C code generation followed by compilation, missing only one of the many optimization techniques implemented by the GHC.
01:09:46 <elliott> monqy: opse
01:09:57 <elliott> CakeProphet: the C backend is deprecated
01:10:03 <CakeProphet> ah.
01:11:00 <CakeProphet> still you get a lot of free optimizations for using LLVM.
01:11:07 <CakeProphet> free stuff in general.
01:11:27 <CakeProphet> granted
01:11:32 <CakeProphet> C does the same thing for you.
01:12:30 -!- sllide has quit (Ping timeout: 252 seconds).
01:13:40 <tswett> elliott: psst. I've got a secret to tell you.
01:13:43 <tswett> MEOW MEOW MEOW.
01:13:49 <elliott> tswett: In-channel?
01:13:53 <elliott> That's the worst way of delivering secerts.
01:13:54 <elliott> secrets.
01:14:02 <tswett> Oh, I... agree.
01:14:10 <monqy> are you ashamed yet
01:14:14 <tswett> But yeah. Secret secret secret.
01:14:23 <elliott> {- Note [Declaration/signature overlap]
01:14:24 <elliott> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
01:14:24 <elliott> There's an awkward overlap with a type signature. Consider
01:14:24 <elliott> f :: Int -> Int = ...rhs...
01:14:24 <elliott> Then we can't tell whether it's a type signature or a value
01:14:24 <elliott> definition with a result signature until we see the '='.
01:14:26 <elliott> So we have to inline enough to postpone reductions until we know.
01:14:28 <elliott> -}
01:14:30 <elliott> groan
01:15:06 <monqy> :(
01:16:02 <monqy> so what sort of parser will yours be will it be able to handle this in a claener maner??
01:16:16 <tswett> elliott: oh, and, uh... PCHOOOOO. And... uh...
01:16:25 <monqy> good secrets
01:16:49 <tswett> Don't pretend you don't understand.
01:16:56 <monqy> oh?
01:17:10 <tswett> Heir of Breath. Seer of Light. Knight of Time. Witch of Space.
01:17:14 <tswett> Got it? Good.
01:17:21 <monqy> is that a homestuck thing
01:17:25 <tswett> No.
01:17:27 <elliott> no tswett has just gone mad
01:17:36 <elliott> i decree it
01:17:40 <monqy> good decree
01:18:03 <elliott> amen
01:18:13 -!- variable has quit (Excess Flood).
01:18:52 <monqy> god bless tswett gone mad america
01:19:12 <tswett> monqy: what is this Homestuck thing?
01:19:14 <elliott> The best kind of America.
01:19:29 <monqy> tswett: I'm not into that sort of thing.
01:19:44 <tswett> monqy: I see.
01:19:48 <tswett> Well, PCHOOOOO.
01:19:55 <monqy> pchoo
01:20:10 <CakeProphet> ah yes he has homestuck psychosis.
01:20:13 <CakeProphet> perfectly normal.
01:20:20 <elliott> <monqy> tswett: I'm not into that sort of thing.
01:20:23 <elliott> monqy "not a sexual deviant" monqy
01:20:40 <tswett> CakeProphet: perhaps you could explain to me this Homestuck thing.
01:20:51 <CakeProphet> it's... uh
01:20:52 <CakeProphet> no
01:20:54 <CakeProphet> I can't explain it.
01:20:55 -!- invariable has joined.
01:20:56 <elliott> tswett: take it to /msg this channel is pg
01:21:09 <CakeProphet> too many words. too much time.
01:21:36 * tswett has stopped pestering #esoteric.
01:21:48 <CakeProphet> speaking of which I need to catch up on the new pages.
01:22:00 <CakeProphet> oh... there aren't any.
01:22:31 <CakeProphet> a whole month with no updates.
01:22:46 <CakeProphet> is this the ending?
01:22:48 <CakeProphet> ..
01:22:49 <CakeProphet> no
01:23:29 <tswett> I thought there had been updates, like, a week ago.
01:23:43 <Sgeo|web> CakeProphet: read the news
01:24:12 <elliott> Would you stop filling the channel with this filth? There are children here. Like Sgeo.
01:24:47 <CakeProphet> the news just takes me to an RSS feed whose last update is also the 6th of september.
01:25:22 <Sgeo|web> There's an EoA meter
01:25:24 <elliott> The news is lower down on the front page, you idiot.
01:25:37 <elliott> Now
01:25:45 <elliott> monqy: looks like ghc strips out non-pragma comments at the lexer level
01:25:49 <elliott> because there's no production for them
01:25:56 <monqy> a reasonable thing to do
01:26:06 <CakeProphet> elliott: I... know?
01:26:44 <elliott> CakeProphet: http://ompldr.org/vYXFseg
01:27:11 <CakeProphet> elliott: I... know?
01:27:46 <elliott> You're being dense on purpose, right?
01:27:55 <CakeProphet> I thought Sgeo was saying there was more updates I just had to go to the news
01:28:05 <CakeProphet> now I understand
01:28:06 <CakeProphet> ???
01:28:10 <monqy> ???
01:28:15 <Sgeo|web> ????????
01:28:16 <elliott> ???, the noise of understanding.
01:28:26 <CakeProphet> 21:23 < tswett> I thought there had been updates, like, a week ago.
01:28:26 <CakeProphet> 21:23 < Sgeo|web> CakeProphet: read the news
01:28:37 <CakeProphet> my brain: "oh Sgeo is pointing me to the updates"
01:28:44 <monqy> bad brain
01:28:46 <CakeProphet> never trust a tswett.
01:30:20 <CakeProphet> also I totally need to spend money on one of these overpriced hoodies.
01:31:39 <monqy> so you can wear it in public or what
01:31:43 -!- invariable has changed nick to variable.
01:31:59 <CakeProphet> monqy: yes
01:32:10 <CakeProphet> so that I can find other HS fans, but mainly because I like the designs.
01:32:58 <CakeProphet> also because I only have one good hoodie
01:33:46 <CakeProphet> and winter fast approaches and I have money to throw away on the overpricedness.
01:33:46 <CakeProphet> all good reasons.
01:34:04 -!- CakeProphet has quit (Quit: Reconnecting).
01:34:18 -!- CakeProphet has joined.
01:34:19 -!- CakeProphet has quit (Changing host).
01:34:19 -!- CakeProphet has joined.
01:41:52 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .).
01:44:02 <coppro> http://www.orchestra.uwaterloo.ca/img/keysig.jpg
01:44:36 <Jafet> That's just G flat minor, you pussy
01:45:34 <Jafet> Wait till you get C flat
01:47:08 <coppro> I like that there's a natural and a flat on the same line
01:47:22 <Jafet> The natural is an annotation; it's pretty common
01:48:00 <coppro> I repeat what I said
01:48:05 <elliott> monqy: OK, time to write Qhc.AST
01:48:10 <elliott> monqy: or should it be Qhc.Ast..........
01:48:18 <monqy> decisions
01:48:25 <monqy> Abstract syntax tree
01:48:42 <monqy> I'd go AST because I don't want syntax and tree to feel left out
01:48:42 <Jafet> It probably cancels out a previous C# F# signature
01:48:58 <Jafet> I guess that's not common, but some typesetters do it
01:49:43 <coppro> of course, the true genius is the instruction on how to play it
01:50:38 <Jafet> Yeah, violinists are prima donnas
01:51:04 <elliott> monqy: yes but ... consistency with Qhc......................
01:51:46 <monqy> ...........
01:52:15 <elliott> monqy: ................
01:56:06 <CakeProphet> you guys are weird.
01:56:15 -!- Jafet has quit (Quit: Leaving.).
01:57:07 <elliott> CakeProphet: die..........
01:59:39 -!- Jafet has joined.
02:02:29 -!- Sgeo|web_ has joined.
02:03:45 -!- Sgeo|web has quit (Ping timeout: 252 seconds).
02:06:11 -!- augur has quit (Remote host closed the connection).
02:06:20 <elliott> monqy: im bad at code
02:06:26 <monqy> oops
02:06:30 <monqy> me too
02:07:41 <elliott> what the hell is infixexp
02:08:09 <monqy> infixexp?
02:08:23 <monqy> is this a haskellreport thing or a ghc thing
02:10:47 <elliott> http://www.haskell.org/onlinereport/haskell2010/haskellch3.html#x8-220003
02:10:50 <elliott> |- infixexp (prefix negation)
02:10:52 <elliott> ah, my enemy.
02:11:03 <monqy> qop
02:11:27 <elliott> fexp→[fexp] aexp (function application)
02:11:32 <elliott> oh no, do I have to maintain a list of applied arguments
02:11:33 <elliott> rather than
02:11:34 <elliott> crurying
02:11:53 <monqy> do yoU?
02:12:01 <monqy> if so>: be nonstantart...?
02:13:45 -!- MDude has quit (Read error: Connection reset by peer).
02:14:03 -!- MSleep has joined.
02:14:18 <elliott> monqy: wow lambdas cannot have guards...
02:14:37 <monqy> they can't even have mutliple caluses,,,
02:14:53 <monqy> things which make moqny sad:
02:14:53 <monqy> that
02:19:05 <CakeProphet> elliott: isn't it more efficient to apply arguments all at once instead of currying?
02:19:08 <CakeProphet> I assume that's why they do that.
02:19:25 <elliott> that can be done at a later level dude
02:19:32 <CakeProphet> oh, okay.
02:21:18 <elliott> |qcon { fbind1 , … , fbindn } (labeled construction, n ≥ 0)
02:21:24 <elliott> haskell there is literally no way n could be < 0 here
02:21:27 <elliott> you are silyl
02:22:07 <monqy> qcon}{
02:22:29 <monqy> ndnibf
02:23:16 <CakeProphet> elliott: dude you don't know about NegativeConstructorLabels?
02:23:50 <elliott> lol
02:26:24 <CakeProphet> Fin from Adventure Time just said hubris.
02:26:31 <CakeProphet> I wonder how many kids would actually know what that means.
02:26:51 <elliott> "kids dont know words" -cakepropehtepth
02:28:47 <monqy> "whats a hubris" - kids
02:28:59 <monqy> "in your fac,e liot" - cakeprohplhet
02:29:30 <CakeProphet> wat
02:34:20 -!- augur has joined.
02:36:07 <CakeProphet> and now they just used macabre
02:37:51 -!- Sgeo|web_ has quit (Ping timeout: 252 seconds).
02:37:53 <monqy> oh no
02:38:53 <elliott> EInfix [] (whatevermyliteralthingis 9) (LeftSection thenamefor-)
02:39:02 <elliott> monqy: finally -99 is as ugly in expression trees as it is in reality
02:39:10 <elliott> CakeProphet: macabre is not an uncommon word....
02:39:54 <elliott> "Syntactic precedence rules apply to sections as follows. (op e) is legal if and only if (x op e) parses in the same way as (x op (e)); and similarly for (e op). For example, (⋆a+b) is syntactically invalid, but (+a⋆b) and (⋆(a+b)) are valid."
02:40:00 <elliott> monqy: it's like they're trying to avoid suggesting a concrete parse strategy
02:42:08 <CakeProphet> elliott: but I'm watching a cartoon for kids. That's not a common word for kids to know, I think. Same for hubris.
02:42:14 <CakeProphet> but maybe America is just dumb.
02:42:23 <elliott> i'm pretty sure most kids know what macabre is
02:42:29 <elliott> maybe you just don't talk to many kids
02:43:01 <CakeProphet> monqy: help me prove to elliott that American kids is dumb.
02:43:10 <monqy> how
02:43:11 <elliott> lol
02:43:21 <monqy> I don't have much experience with kids either
02:44:38 <pikhq> In my experience, American kids are less literate in English than I am in Japanese.
02:44:55 <pikhq> Heck, I may well be more literate in Mandarin than some American kids are in English.
02:45:01 <pikhq> And I know maybe 2 words of Mandarin.
02:45:28 <CakeProphet> s/American kids/Americans/
02:45:30 <monqy> do some american kids know less than 2 words of english (are babies kids)
02:45:40 <CakeProphet> my parents certainly don't know what hubris or macabre means.
02:45:45 <pikhq> monqy: I specified "literate" for a reason.
02:45:49 <monqy> also: people who don't speek enlgiush??
02:46:03 <pikhq> I can kinda-sorta parse meaning out of simple written Mandarin, but don't speak the language.
02:47:02 <CakeProphet> monqy: I believe he meant that he can only speak two words of Mandarin.
02:47:10 <CakeProphet> but it wasn't obvious that's what he meant.
02:47:26 <pikhq> I can basically pull off "ni hao".
02:47:28 <pikhq> :P
02:47:36 <elliott> (diff | hist) . . N Simon meets alvin‎; 02:46 . . (+66) . . Raddy5 (talk | contribs)‎ (←Created page with 'simon the chipmunk once met alvin the chipmunk in winnipeg, canada') (Tag: possible vandalism)
02:47:38 <elliott> http://en.wikipedia.org/wiki/Simon_meets_alvin
02:47:42 <elliott> Thank god for Recentchanges.
02:48:13 <elliott> http://ompldr.org/vYXFuNQ
02:50:14 <monqy> this is a good page
02:51:46 <elliott> monqy: http://sprunge.us/iCaU
02:51:48 <elliott> it is a start...
02:52:30 <monqy> qual
02:52:36 <elliott> qualifier
02:53:38 <CakeProphet> monqy: also with more accents that's a spanish question word.
02:53:40 <monqy> hm, what handles ()? considering it's special syntax and all
02:53:56 <elliott> monqy: oh hmmmmmmm
02:54:00 <elliott> monqy: that might be a constructor I think?
02:54:03 <elliott> just like (,,) and the like are constructors
02:54:08 <elliott> I will Think About It
02:54:15 <elliott> |( exp1 , … , expk ) (tuple, k ≥ 2)
02:54:18 <elliott> that is what the report says you see...
02:54:23 <monqy> aha...
02:54:29 <elliott> gcon→()
02:54:30 <elliott> |[]
02:54:30 <elliott> |(,{,})
02:54:30 <elliott> |qcon
02:54:37 <elliott> hmm that means lists should use NonEmpty too
02:54:56 <elliott> or maybe they should both use [], it's not like I don't have redundancy elsewhere
02:54:56 <monqy> haaaaskellllllll
02:55:08 <elliott> monqy: oh i just realised I don't actually support /resolved/ infix expressions
02:55:13 <elliott> monqy: the infix thing there is lifted from a ghc proposal
02:55:27 <elliott> monqy: but in ghc, there's a constructor for parens, so you can just add parens and have resolved unresolved infix expressions with just one operator
02:55:29 <elliott> inside
02:55:30 <elliott> to resolve them
02:55:35 <elliott> oh wait hmm no
02:55:38 <elliott> I don't need parens to resolve it, all is well
02:58:25 -!- Jafet has quit (Quit: Leaving.).
02:59:29 <monqy> oh dear, it looks like one of the spambots was clever enough to find the main page
02:59:51 <elliott> it has happened
02:59:55 <monqy> it seems to have problems with the beginnings of its sentences
02:59:58 <elliott> oh wow this is better than our current main page
03:00:01 <elliott> refuse to revert
03:00:19 <monqy> on. ntains, "Eat my dust!" I'll be a monkey's uncle!
03:02:41 <elliott> yes
03:03:03 -!- yorick has quit (Ping timeout: 244 seconds).
03:08:27 <elliott> alt→pat -> exp [where decls]
03:08:27 <elliott> |pat gdpat [where decls]
03:08:28 <elliott> | (empty alternative)
03:08:28 <elliott>
03:08:28 <elliott> gdpat→guards -> exp [ gdpat ]
03:08:28 <elliott> guards→| guard1, …, guardn (n ≥ 1)
03:08:30 <elliott> monqy: comomplicated
03:09:21 <elliott> data Clause = Clause Pat (Either Exp [(NonEmpty Guard, Exp)]) [Decl]
03:09:22 <elliott> monqy: grosse
03:09:26 <monqy> :(
03:10:55 <elliott> A note about parsing. The expression
03:10:55 <elliott> case x of { (a,_) | let b = not a in b :: Bool -> a }
03:10:55 <elliott> is tricky to parse correctly. It has a single unambiguous parse, namely
03:10:55 <elliott> case x of { (a,_) | (let b = not a in b :: Bool) -> a }
03:10:55 <elliott> However, the phrase Bool -> a is syntactically valid as a type, and parsers with limited lookahead may incorrectly commit to this choice, and hence reject the program. Programmers are advised, therefore, to avoid guards that end with a type signature — indeed that is why a guard contains an infixexp not an exp.
03:12:25 <elliott> monqy: :(
03:12:59 <monqy> :(
03:15:29 -!- pikhq_ has joined.
03:16:02 -!- pikhq has quit (Ping timeout: 276 seconds).
03:16:04 <CakeProphet> elliott: parsers with limited lookahead are for chumps.
03:24:03 -!- Stelpa has joined.
03:24:12 <Stelpa> Hi :)
03:25:24 -!- copumpkin has joined.
03:25:35 <pikhq_> Sal'.
03:25:36 <monqy> hi
03:27:14 <Stelpa> I am really new to esoteric programming languages, and i am wondering, which is the most popular? :s
03:27:27 <pikhq_> *Popular*? Probably Brainfuck.
03:27:29 <Stelpa> brainfuck is the first one i heard of, and it is the one that interests me the most sofar :s
03:27:33 <Stelpa> lol, i see :)
03:27:49 <monqy> popular isn't a good thing, in brainfuck's case
03:27:58 <Stelpa> whynot? :s
03:28:38 <monqy> too many people making too many bad derivatives
03:28:41 <monqy> for one
03:28:52 <Stelpa> i see
03:29:15 <Stelpa> well, i promise not to do that, lol
03:30:35 <Stelpa> what esoteric language is the least punishing, monqy?
03:30:42 <Stelpa> in terms of coding in it
03:30:54 <Stelpa> sorry for asking annoying questions, btw :x
03:30:58 <monqy> hm
03:31:01 <Stelpa> you probably get these a lot
03:31:12 <monqy> not much, actually
03:31:26 <Stelpa> really? :o
03:31:43 <monqy> at least not when I'm around
03:32:03 <elliott> prolly malbolge
03:32:11 <Stelpa> elliott: nice try >_>
03:32:22 <Stelpa> i've been reading up on them :P
03:32:27 <monqy> least punishing esoteric language to program in probably depends on your abilities, what you consider esoteric, and what you consider programming
03:32:30 <Stelpa> i know at least about malbolge >_>
03:32:31 <elliott> i was serious
03:32:45 <elliott> oh
03:32:48 <elliott> least
03:32:51 <elliott> underload
03:33:35 <Stelpa> i see, monqy
03:34:18 -!- Nisstyre has quit (Quit: Leaving).
03:34:57 -!- Nisstyre has joined.
03:40:24 -!- CakeProp1et has joined.
03:40:33 -!- CakeProphet has quit (Ping timeout: 248 seconds).
03:40:33 <CakeProp1et> perl is one of the least punishing esolangs.
03:43:22 <monqy> most punishing
03:47:22 -!- tiffany has quit (Quit: Leaving).
04:02:27 <CakeProp1et> monqy: you should learn Perl just so you can bitch about it legitimately.
04:03:02 <monqy> this is a good reason
04:03:26 <CakeProp1et> yep that's right. I get to bitch about Perl because I use it for Serious Shit.
04:03:28 <monqy> one time I read this big perl book and for a while I could even write stuff in perl but then I forgot about everything
04:03:59 <monqy> because I went back to using haskell after I got better things to do than read a perl book (I was on a family raodtrip, had no internet access, etc etc)
04:04:09 <CakeProp1et> I'm not entirely sure how I learned Perl actually.
04:04:33 <CakeProp1et> I think after reading about it in small segments over the course of a few months I got to a point where I could actually start writing programs.
04:04:49 <CakeProp1et> but there was never just a point where I was like "okay I'm going to learn Perl"
04:06:59 <CakeProp1et> fizzie: have you ever used state?
04:07:07 <CakeProp1et> (state variable declaration in Perl)
04:07:39 <CakeProp1et> I always just use package-level lexical variables instead. But state might actually be clearer sometimes...
04:07:43 <CakeProp1et> I just never think to use it.
04:10:19 <CakeProp1et> monqy: I'm sure this is a dumb question but do you ever program?
04:10:29 <monqy> I get asked that a lot
04:10:38 <monqy> (giggling right now)
04:10:44 <monqy> what do you mean by program
04:11:15 <CakeProp1et> well I mean I never see you talking about programming. So I just wonder if you ever work on any projects.
04:11:23 <monqy> ahh
04:11:28 <monqy> yes I do program but I don't like it
04:12:04 <monqy> wait
04:12:08 <monqy> i guess that depends on what you mean by
04:12:09 <monqy> work
04:12:09 <monqy> and
04:12:11 <monqy> projects
04:12:41 <monqy> because yes I do work, and I do have projects, but you might not say I ever work on the projects
04:14:09 <CakeProp1et> go on.
04:15:35 <CakeProp1et> I'm not sure I follow.
04:16:00 -!- Stelpa has left ("Leaving").
04:17:55 <monqy> oh
04:17:56 <monqy> uh
04:18:19 <CakeProp1et> so you have ideas for projects but don't finish them?
04:20:15 <monqy> there are a few types of not finishing but yeah the biggest thing i've ever finished outside of a school related thing (university; i unwisely chose computer science as my major) wasn't very big :'(
04:20:41 <monqy> where by big I mean in all of complexity, importance, being interesting, and friends
04:21:57 <monqy> for a recent example of not finishing things: today i was going to work on one of my projects, opened up the code, deleted some lines, put them back in, looked at some documentation, got frustrated, closed code, closed all of my tabs but one
04:21:59 <CakeProp1et> yeah I'm the same way really.
04:22:53 <CakeProp1et> the biggest projects I've done so far are work-related.
04:22:56 <CakeProp1et> so people paid me to finish them.
04:23:19 <monqy> im paid in threats of failure
04:23:26 <CakeProp1et> lolwat
04:23:29 <monqy> or uh
04:23:44 <monqy> im bad at saying things ;_;
04:24:07 <monqy> but the only reason I finished a lot of the things I finished is because I really had to finish them
04:24:27 <monqy> they were painful and uninteresting and if I had a choice I would have abandoned them
04:24:27 <CakeProp1et> ah because they were school projects.
04:25:00 <monqy> yeah
04:25:28 <CakeProp1et> I plan to finish more big things though.
04:25:33 <CakeProp1et> now that I'm more comfortable organizing larger projects.
04:25:47 <monqy> i have big plans but i'm not making any progress and am suddenly busy because of school
04:25:56 <CakeProp1et> first step: finish this word generator
04:26:00 <CakeProp1et> then: write out rules to portal chess
04:28:14 <CakeProp1et> 'ti$' => {'\\' => 55}
04:28:16 <CakeProp1et> bah, what the hell.
04:28:27 <CakeProp1et> I have to filter out some of this shit.
04:28:32 <monqy> i have 3 main projects but none of them seem very easily finishable and I question whether they're even worth working on
04:28:35 <monqy> :(
04:28:39 <monqy> what does that even do
04:28:40 <CakeProp1et> monqy: what are they?
04:28:53 <CakeProp1et> that's part of the markov model my perl script generated.
04:29:07 <CakeProp1et> I was commenting on the fact that there are lot of non-word things in it.
04:29:09 <CakeProp1et> such as that.
04:29:21 <CakeProp1et> though they're very unlikely I suppose.
04:30:05 <monqy> one is a programming language I'm designing to solve all of my problems ever, one is a roguelike i enjoy because i want to enjoy a roguelike, and one is a nebulous secret mystery project
04:30:20 <CakeProp1et> ah okay.
04:30:43 <CakeProp1et> well, I've always been interested in creating a text-based game. Not necessarily a rogue-like.
04:30:53 <monqy> the problem with the programming language is that I don't know how to solve all of my problems ever, or even quite what they are
04:31:05 <CakeProp1et> yes that's a bit of hurdle.
04:31:17 <monqy> the problem with the roguelike is that ugh implementation
04:31:29 <CakeProp1et> what about it?
04:31:30 <monqy> the problem with nebulous secret mystery project is nebulous secret mystery project
04:31:36 <monqy> the ugh implementation?
04:31:39 <CakeProp1et> yes.
04:32:04 * CakeProp1et has a little bit of experiencing with programming MUDs, though that's quite a bit different than a roguelike.
04:32:10 <CakeProp1et> probably the best way is to have a domain-specific language.
04:32:18 <CakeProp1et> to code all of the puzzles/monsters/items/etc
04:32:38 <monqy> right now i'm stuck in two places
04:32:46 <monqy> one is a good place and one is the ugh implementation
04:33:24 <monqy> the good place is that i have a clear design i want to follow, the ugh implementation is that i can't get ui to work because everything is awful
04:33:37 <CakeProp1et> monqy: maybe I could help?
04:33:50 <monqy> how would you help? it might be helpful to have help......
04:34:00 <CakeProp1et> yeah, pretty much.
04:34:09 <CakeProp1et> two people working on a project would increase the odds of it being finished.
04:34:22 <CakeProp1et> and really what you'll probably end up with is a nice codebase to write many different games.
04:34:34 <CakeProp1et> ...in theory.
04:35:08 -!- CakeProp1et has changed nick to CakeProphet.
04:35:39 <monqy> the thing i got frustrated about is that i couldn't find a good console ui or whatever it's called library
04:35:55 <elliott> vty?
04:36:06 <CakeProphet> yeah see I'm used to a MUD which is pretty much linemode so I don't know anything about those.
04:36:12 <elliott> monqy: or: don't console
04:36:33 <monqy> my problem with vty is that i couldnt' find a way to place characters individually and i dunno how efficient vty's way of doing things is
04:36:49 <elliott> monqy: or: don't console
04:36:56 <monqy> my problem with not consoleing is ew
04:37:14 <monqy> i have to have a console interface or i will hate myself forever
04:37:39 <elliott> monqy: not cconsoling =/= not text based
04:37:53 <CakeProphet> monqy: ncurses!!! :>
04:37:59 <monqy> elliott: i know
04:38:10 <elliott> monqy: see df
04:38:20 <monqy> i'd hate myself forever if i did it like df
04:38:38 <CakeProphet> df uses OpenGL right?
04:38:42 <elliott> monqy: why
04:38:43 <monqy> sdl i thought
04:39:09 <monqy> elliott: i dunno there's just something i like about console that isn't there in other things
04:39:20 <elliott> monqy: fuck that
04:39:22 <monqy> :(
04:40:10 <monqy> like my font, being able to select things, the ~charm~
04:40:20 <monqy> it is a horrible concern but i don't know what i'd do without it ;_;
04:40:46 <CakeProphet> monqy is weird.
04:40:49 <monqy> CakeProphet: the haskell "ncurses" library and "hscurses" both had problems when i looked at them
04:40:51 <CakeProphet> just use some console thing then.
04:40:55 <elliott> monqy: selectable font
04:40:59 <CakeProphet> like whatever elliott said to use.
04:41:30 <monqy> but it won't be the font i like will it :(
04:41:41 <monqy> good thing i like horrible fonts
04:41:50 <elliott> monqy: selectable font
04:41:59 <elliott> ie any
04:42:01 <monqy> oh i see what you said there
04:42:04 <monqy> hm
04:42:08 <monqy> (tempting)
04:43:04 <monqy> that way i also wouldn't also have to make another frontend for windows people, at least
04:44:13 <elliott> also you can do things like draw status bars without crappy block drawing characters
04:44:39 <elliott> better control over colours, too :P
04:45:06 <monqy> but i prefer crappy characters :( really thick lines and blocks and stuff look ugly to me
04:45:36 <CakeProphet> monqy: weirdo
04:45:42 <elliott> eh?
04:45:50 <elliott> i never suggested those
04:45:55 <CakeProphet> bah I don't know what filter regex to use...
04:46:24 <elliott> consider using half-height lines to draw hp and [stat] bars on the same line
04:46:32 <elliott> saving space
04:46:32 <monqy> hm
04:46:54 <monqy> I could do that
04:47:32 <monqy> my previous plan was to use = signs because i couldn't think of any better symbol
04:48:15 <CakeProphet> [\p{Alphabetic}\p{Dash_Punctuation}\p{Connector_Punctuation}']
04:48:16 <CakeProphet> maybe?
04:48:29 -!- copumpkin has changed nick to imsaguy4.
04:48:41 <monqy> hm?
04:48:48 -!- imsaguy4 has changed nick to copumpkin.
04:49:10 <CakeProphet> monqy: I am trying to come up with the best regular expression to filter out all of the characters I don't want in my dataset.
04:49:16 <CakeProphet> I'll try this one.
04:49:23 <monqy> oh
04:49:30 <monqy> why all the \p in there
04:49:51 <CakeProphet> that's how you specify Unicode properties. Though there may be a way to specify multiple ones in one \p thingy
04:49:57 <CakeProphet> but I don't know how.
04:50:05 <monqy> ah
04:50:35 <monqy> and ' isn't in any of those categories?
04:50:52 <monqy> also i hope those are the symbols you want in your dataset not out of it?
04:51:03 <CakeProphet> correct.
04:51:17 <CakeProphet> currently my regex is \P{Number}
04:51:29 <CakeProphet> but that leaves stuff that contains $ and _ and \
04:51:32 <CakeProphet> which are apparently like...
04:51:35 <CakeProphet> things in books, for some reason.
05:01:30 -!- Vorpal has joined.
05:18:41 <elliott> back
05:20:43 <elliott> monqy: RIP http://en.wikipedia.org/wiki/Simon_meets_alvin
05:20:52 <monqy> yeah i sawe :(
05:21:11 <monqy> i like how it was deleted as a test page of all things
05:25:08 -!- CakeProphet has quit (Ping timeout: 252 seconds).
05:26:51 <elliott> "Terrence Tao, at http://golem.ph.utexas.edu/category/2011/09/ and independently Daniel Tausk (private communication) have found an irreparable error in my outline. In the Kritchman-Raz proof, there is a low complexity proof of K(\bar\xi)>\ell if we assume \mu=1, but the Chaitin machine may find a shorter proof of high complexity, with no control over how high.
05:26:51 <elliott> My thanks to Tao and Tausk for spotting this. I withdraw my claim.
05:26:51 <elliott> The consistency of P remains an open problem.
05:26:51 <elliott> Ed Nelson"
05:26:53 -!- CakeProphet has joined.
05:26:53 -!- CakeProphet has quit (Changing host).
05:26:53 -!- CakeProphet has joined.
05:26:53 <elliott> rip claim
05:31:51 <elliott> monqy: mourn
05:32:05 <monqy> rip
05:39:00 <elliott> http://www.haskell.org/onlinereport/haskell2010/haskellch4.html
05:39:01 <elliott> oh no
05:41:27 <CakeProphet> weeeeeeeee
05:42:23 <elliott> monqy: re language project: @
05:43:07 <monqy> mm
05:49:33 <pikhq_> It really irritates me when a textbook makes a claim that I know to be *very* wrong.
05:49:47 <elliott> what is the claim
05:50:10 <pikhq_> This history textbook claims that the Japanese language was formed by Korean settlers going to Japan in the 4th century, and that the language they spoke eventually evolved into Japanese.
05:51:18 <pikhq_> As it so happens, at this time there most probably already existed a Japonic language family. (this is believed to be *about* when Japanese diverged from the Ryukyuan languages)
05:52:09 <pikhq_> Aaaand if that were true, Japanese and Korean would be a lot more similar.
05:52:49 <pikhq_> Rather than having a handful of maybe-cognates and some curious grammatical similarities.
05:53:50 -!- CakeProphet has quit (Ping timeout: 240 seconds).
05:55:43 -!- CakeProphet has joined.
06:06:26 <augur> do any native english speakers here find this sentence to be acceptable: "John will speak with the boys and Susan will the girls"
06:06:49 <monqy> that's pretty awkward
06:07:00 <augur> ok
06:07:11 <elliott> i say things like that sometimes but yeah that is awkward
06:07:16 <monqy> I'd word it more like "John will speak with the boys and Susan the girls"
06:07:16 <elliott> i think susan should speak with the boys instead imho
06:07:18 <monqy> with more commas
06:07:22 <elliott> monqy: yes that's nicer
06:07:31 <elliott> although i'd just duplicate it there really
06:07:34 <elliott> <elliott> i think susan should speak with the boys instead imho
06:07:34 <augur> monqy: yeah ;)
06:07:37 <elliott> this is a funny joke laugh
06:08:31 <pikhq_> Yeah, "will" makes it a bit strange.
06:08:48 <augur> hooray for me
06:08:49 <Deewiant> The way I see it is that if you repeat or change an earlier word like "will" or "speak" in that case, you have to grab the rest as well; so "... and Susan {will speak with, speak with, with,} the girls"
06:08:49 <pikhq_> I'd word it something like "John will speak with the boys, and Susan the girls"
06:08:51 -!- BeholdMyGlory has quit (Ping timeout: 260 seconds).
06:09:03 <pikhq_> There's probably a few other comma placements that make it reasonable.
06:09:12 -!- oerjan has joined.
06:09:30 <pikhq_> Deewiant: Sounds right.
06:09:57 <monqy> "and susan speak with the girls" sounds awkward to me
06:10:01 -!- BeholdMyGlory has joined.
06:10:05 <augur> im not worried about comma placement
06:10:19 <augur> thats orthography that indicates structure, so thats ok
06:10:26 <augur> mess with commas as much as you want
06:10:28 -!- CakeProphet has quit (Ping timeout: 255 seconds).
06:10:49 <pikhq_> Yeah, commas are merely hints at structuring.
06:11:04 <pikhq_> Hence why there's quite a bit of flexibility with their placement.
06:11:21 -!- CakeProphet has joined.
06:11:22 -!- CakeProphet has quit (Changing host).
06:11:22 -!- CakeProphet has joined.
06:12:03 <pikhq_> Also, you may wish to qualify your requests with "do any native English speakers here *except zzo38* [...]"
06:12:20 <pikhq_> I have a sneaking suspicion he will throw a spanner in the works.
06:12:30 <augur> lol
06:12:49 <shachaf> zzo38 is a native English speaker?
06:12:56 <pikhq_> shachaf: Surprisingly, yes.
06:13:05 <Madoka-Kaname> zzo is a native speaker of the zzo38 dialect of English.
06:13:13 <monqy> i like zzo english
06:13:26 <Madoka-Kaname> (Too bad he is the only speaker)
06:13:48 * shachaf doesn't quite understand zzo38's motivations.
06:14:16 <augur> Madoka-Kaname: we are all the only speakers of our own idiolects
06:14:29 <CakeProphet> zzo is the best thing about #esoteric.
06:14:55 <augur> i wouldnt go that far
06:15:48 -!- Ngevd has joined.
06:16:08 <elliott> monqy: http://sprunge.us/UiMF
06:16:10 <elliott> not much left............
06:16:10 <Ngevd> Morning!
06:16:15 <shachaf> CakeProphet: I suppose that, now that I take the channel name into consideration...
06:16:23 <elliott> augur: If you wouldn't go that far, that just proves that you're one of the inferior ones.
06:16:40 <augur> elliott: i was going to say you're the best thing about #esoteric :(
06:16:45 <monqy> :(
06:16:45 * augur runs away crying
06:16:50 <Madoka-Kaname> lambdabot is the best thing about #esoteric
06:16:51 <elliott> augur: a clear misjudgement
06:17:01 <augur> ahahaha
06:17:04 <augur> Madoka-Kaname is correct
06:17:06 <elliott> * shachaf doesn't quite understand zzo38's motivations.
06:17:11 <elliott> shachaf: I think that /is/ zzo's motivations.
06:17:18 <Ngevd> I am not too sure what's going on here
06:17:21 <shachaf> elliott: Being misunderstood?
06:17:22 <elliott> Or at least as close to an externally-digestible form as one can get.
06:17:25 <monqy> elliott: so much ast
06:17:29 <elliott> shachaf: Yep.
06:17:32 <augur> elliott: but then... surely his motivation has lead to folly
06:17:36 <augur> since we now understand his motivation!
06:17:41 <Madoka-Kaname> zzo is clearly an agent of the Intelligent Data Entity
06:17:43 <elliott> augur: Do you? I sure don't.
06:17:44 <monqy> im glad im not implementing haskell....
06:17:49 <augur> but
06:17:50 <augur> but
06:17:52 <pikhq_> Madoka-Kaname++
06:17:52 <CakeProphet> elliott: I understand zzo.
06:17:55 <Madoka-Kaname> monqy, you should implement Haskell
06:17:58 <elliott> CakeProphet: Lies and folly.
06:17:58 <CakeProphet> because I have magic powers.
06:18:01 <augur> how can his motivation be for noone to understand his motivation
06:18:05 <augur> and still be successful!
06:18:08 <augur> this is not possible D:
06:18:14 <CakeProphet> lol "noone"
06:18:29 <pikhq_> Would you prefer noöne?
06:18:31 <monqy> he's zzo he can do anything
06:18:35 <CakeProphet> pikhq_: yes that's better
06:18:45 <augur> oh god, CakeProphet is a diaresist
06:18:52 <pikhq_> Hooray, mild archaicisms!
06:18:52 <augur> kyle johnson is a fucking diaresist
06:19:01 <augur> "coördination" everywhere
06:19:04 <CakeProphet> no I just prefer it to silly things like noone
06:19:10 <pikhq_> augur: I use it sometimes as well, but only because I delight in archaicisms.
06:19:14 <elliott> who's kyle johnson
06:19:15 <CakeProphet> no one is preferred actually.
06:19:23 <elliott> CakeProphet: "nobody"
06:19:24 <augur> elliott: a linguist
06:19:31 <augur> CakeProphet: someone
06:19:34 <elliott> hmm, I guess that's kind of unfair to disembodied entertains
06:19:34 <augur> CakeProphet: everyone
06:19:35 <CakeProphet> elliott: a nobody is fine too.
06:19:35 <pikhq_> I also delight in "thou".
06:19:39 <elliott> no-one is kind of gross though
06:19:44 <elliott> s/entertains/entities/
06:19:48 <CakeProphet> augur: yes those are words.
06:19:51 <Ngevd> Now I am even less sure what is going on
06:19:53 <augur> CakeProphet: so is noone
06:19:56 <CakeProphet> noone is like noon with an e at the end.
06:19:57 <pikhq_> And that's a bit more than mildly archaic, really.
06:20:01 <elliott> Ngevd: hi
06:20:04 <elliott> Ngevd: what is... up
06:20:16 <augur> CakeProphet: heaven forbid
06:20:30 <Ngevd> A cardinal direction not available in 2 dimensions
06:20:32 <elliott> monqy: oh no i have to support datatype contexts
06:20:36 <pikhq_> CakeProphet: When you say it like that, it looks like a Middle English "noon".
06:20:46 <elliott> monqy: "haskel tweotheotusnadtand ten lots of horors"
06:20:53 <CakeProphet> yes it just looks like a weird way to spell noon to me.
06:20:58 <augur> Ngevd: what if your dimension is the vertical axis
06:21:05 <augur> CakeProphet: well you suck
06:21:15 <Ngevd> Then it is left right forward backwards, but rotated
06:21:16 <monqy> elliott: datatype contexts aren't dead?
06:21:21 <elliott> monqy: not yet...
06:21:25 <elliott> anti-rip...
06:21:35 <monqy> diaf datatype contexts.....
06:21:36 <CakeProphet> augur: I'm fine with concluding this "debate" on that note.
06:21:45 <Ngevd> Well, North South East West
06:21:56 <augur> CakeProphet: me too
06:22:06 <elliott> body→{ impdecls ; topdecls }
06:22:06 <elliott> |{ impdecls }
06:22:07 <elliott> |{ topdecls }
06:22:09 <elliott> WHAT THE FUCK IS IMPDECL YOU PIECE OF SHIT
06:22:17 <elliott> oh imports
06:22:21 <CakeProphet> lol
06:22:22 <augur> lolololol
06:22:26 <CakeProphet> ..
06:27:27 <CakeProphet> so I watched two entire seasons of Adventure Time today.
06:27:35 <CakeProphet> that's a bit much.
06:30:27 <CakeProphet> ...I... I don't really know what to do now.
06:30:46 <Ngevd> Watch the entire run of Star Trek
06:30:56 <Ngevd> In reverse Watsonian Chronological order
06:32:40 <Ngevd> I will now have a shower
06:32:44 <Ngevd> To become clean again
06:32:46 -!- Ngevd has quit (Quit: Leaving).
06:33:15 <oerjan> "Noted Sherlockian authorities have credited him with from one to five wives in an effort to reconcile discrepancies in the Watsonian chronology, although ...
06:33:23 <oerjan> "
06:34:00 <oerjan> so, the entire run of star trek, with one to five divorces.
06:34:16 <elliott> hi
06:34:24 <oerjan> the ho
06:34:29 <elliott> rip ho
06:34:50 <oerjan> yo ho ho
06:38:41 -!- elliott has quit (Ping timeout: 248 seconds).
06:42:37 <CakeProphet> ...I have no clue what is causing this bug.
06:43:03 <CakeProphet> monqy: okay so maybe Perl is pretty punishing when you debug it. :P
06:54:09 -!- monqy has quit (Quit: hello).
06:56:40 <fizzie> What, it's got a debugger and all.
06:57:15 <CakeProphet> I'm bad at debuggers. :P also a debugger wouldn't really help here.
06:57:24 <CakeProphet> it was a case where I knew exactly where the bug was but not why
06:57:27 <CakeProphet> but now I've figured it out.
06:57:31 <CakeProphet> I think.
06:57:39 <CakeProphet> a new output will determine if I'm correct.
07:10:23 <CakeProphet> I really just....
07:10:33 <CakeProphet> don't understand object oriented programming anymore.
07:10:50 <oerjan> haskell... it beckons you...
07:12:26 <CakeProphet> the weirdest thing ever is object-oriented Perl.
07:16:38 <CakeProphet> `run perl -e "%t=(); $x = \$t{a}; $$a = 2; print %t"
07:16:44 <HackEgo> Bareword found where operator expected at -e line 1, near "275a" \.(Missing operator before a?) \ syntax error at -e line 1, near "; =" \ Execution of -e aborted due to compilation errors.
07:16:56 <CakeProphet> oh
07:17:04 <CakeProphet> `run perl -e '%t=(); $x = \$t{a}; $$a = 2; print %t'
07:17:07 <HackEgo> a
07:17:14 <CakeProphet> `run perl -e '%t=(); $x = \$t{a}; $$a = 2; print values %t'
07:17:17 <HackEgo> No output.
07:17:23 <CakeProphet> oh. hmmm
07:17:32 <CakeProphet> `run perl -e '%t=(); $x = \$t{a}; $$x = 2; print values %t'
07:17:35 <HackEgo> 2
07:17:38 <CakeProphet> okay cool.
07:18:31 <CakeProphet> GetOptions (
07:18:32 <CakeProphet> d => \$debug_mode,
07:18:32 <CakeProphet> 'h|help' => \$help_mode,
07:18:32 <CakeProphet> N => \$dont_normalize,
07:18:33 <CakeProphet> 'o=s' => \$target_offset,
07:18:36 <CakeProphet> map {$_, \$datasets{$_}} keys %$Acro::Data::data
07:18:42 <CakeProphet> ); # best option handling, now better.
07:18:54 <CakeProphet> (note: not an actual comment in the source)
07:30:10 -!- nooga has joined.
07:44:16 -!- CakeProphet has quit (Ping timeout: 252 seconds).
07:46:06 -!- CakeProphet has joined.
08:10:49 -!- Phantom_Hoover has joined.
08:36:50 <CakeProphet> fizzie: er wait... what encoding is this google ngram data in?
08:39:40 <fizzie> All the interwebs data is in valid UTF-8; I don't really know about the book stuff.
08:40:58 <CakeProphet> I think "the book stuff" is what I'm using.
08:41:23 <fizzie> Yes, well. UTF-8 is what a reasonable person would assume, but you never know.
08:42:19 <CakeProphet> I was just wondering because Perl keeps giving me:
08:42:36 <CakeProphet> utf8 "\xEE" does not map to Unicode at ./construct_grams.pl line 20, <$f> line 219654.
08:47:16 <fizzie> Hrm. Well, it's true enough that a plain \xEE is not a complete UTF-8 sequence.
08:47:29 <fizzie> Could be just a bug in the datta.
08:47:37 <CakeProphet> ....... >_<
08:48:08 <CakeProphet> maybe it's something wrong with Perl?
08:49:21 <fizzie> I don't know what line 20 is doing, or what's on line 219654 of your file.
08:49:52 <CakeProphet> line 20 is
08:49:55 -!- ais523 has joined.
08:49:56 <CakeProphet> while(<$f>)
08:50:12 <fizzie> Heh, well; it's just reading.
08:50:20 <CakeProphet> .....yes I'm aware. :P
08:52:28 <CakeProphet> but I'm pretty sure my filtering regex isn't working properly now because the encoding isn't read properly or something..
08:52:55 <fizzie> Well, how about the data, then?
08:53:19 <fizzie> "head -n 219654 | tail -n 1 | od -tx1z" or something.
08:53:38 <fizzie> I wouldn't be too surprised if there was just some broken UTF-8 in there.
08:54:11 <fizzie> (The Gutenberg files are in a horrible condition, for example. Though of course one hopes Google folks would have been more careful.)
08:56:07 <ais523> I'm annoyed that there isn't a more efficient way to do that head|tail, it looks optimizable
08:56:19 <oerjan> regarding today's xkcd: who/what the fuck is corliss?
08:56:46 <CakeProphet> 0000000 30 36 34 35 30 09 31 39 37 34 09 32 09 32 09 32 >06450.1974.2.2.2<
08:56:47 <CakeProphet> 0000020 0a >.<
08:56:47 <CakeProphet> 0000021
08:56:51 <CakeProphet> I have no clue what that means.
08:56:58 <CakeProphet> also I don't even know if that's the right file
08:57:07 <fizzie> oerjan: "Jeb Corliss (born March 25, 1976) is a professional BASE jumper, skydiver, and wingsuit flyer"?
08:57:11 <CakeProphet> since perl spams far too many Unicode errors for me to know which file it's on.
08:57:16 <oerjan> fizzie: ah
08:57:35 <fizzie> That line looks just fine, I don't see any EEs there.
08:57:43 <oerjan> thanks
08:59:46 <CakeProphet> fizzie: so for the head command I do line-1?
09:00:16 <fizzie> ais523: Possibly "tail -n +219654 | head -n 1" would be better, it wouldn't need to stuff all that data through the pipe.
09:00:29 <CakeProphet> I'm doing a different line
09:00:31 <CakeProphet> 809
09:00:39 <CakeProphet> do I type 808 or 809 for head?
09:00:53 <CakeProphet> I am not concerned about milliseconds.
09:01:23 <fizzie> Depends on whether the Perl count is 0-based or 1-based; the one given for the head should be 1-based.
09:01:43 <fizzie> (Since "head -n 1 | tail -n 1" will give the first line.)
09:01:58 <CakeProphet> utf8 "\xE9" does not map to Unicode at ./construct_grams.pl line 20, <$f> line 809
09:02:10 <CakeProphet> ~$ cat /media/Elements/googledata/googlebooks-eng-1M-1gram-20090715-0.csv | head -n 809 | tail -n 1 | od -tx1z
09:02:13 <CakeProphet> 0000000 24 30 2e 31 33 09 31 39 36 31 09 35 09 35 09 35 >$0.13.1961.5.5.5<
09:02:14 <CakeProphet> decipher plz
09:02:16 <CakeProphet> 0000020 0a >.<
09:02:19 <CakeProphet> 0000021
09:03:25 <fizzie> Well, I see no non-ascii on that line. Maybe you could check the neighboring lines, and/or recheck whether it's the right file.
09:04:02 <CakeProphet> I stopped it immediately so it's the right one.
09:06:10 <fizzie> E9 does sound latin-1ish, since it's é.
09:06:42 <CakeProphet> ..latin-1?
09:07:00 <fizzie> But it sounds unlikely all of it would be in latin-1.
09:07:09 <CakeProphet> well that would make sense for English files I guess, but why would they use latin-1 if there's also Chinese.
09:10:48 <CakeProphet> oh nevermind it was just something weird happening.
09:11:06 <oerjan> > map (chr . read . ("0x"++)) $ words "24 30 2e 31 33 09 31 39 36 31 09 35 09 35 09 35"
09:11:07 <CakeProphet> because I forgot to supply it with the directory to the right files.
09:11:07 <lambdabot> "$0.13\t1961\t5\t5\t5"
09:11:13 <CakeProphet> I have no clue what it was reading...
09:11:19 <CakeProphet> but now I'm not getting four-billion errors.
09:11:59 <fizzie> oerjan: The text version is right there on the right side, you know.
09:12:10 <oerjan> > map (chr . read . ("0x"++)) $ words "30 36 34 35 30 09 31 39 37 34 09 32 09 32 09 32"
09:12:11 <lambdabot> "06450\t1974\t2\t2\t2"
09:12:26 <oerjan> duh :P
09:12:47 <CakeProphet> man I'm so good at debugging.
09:12:48 <CakeProphet> the best.
09:12:56 <oerjan> *d'oh
09:18:21 <oerjan> > maxBound :: Char
09:18:22 <lambdabot> '\1114111'
09:18:44 <oerjan> > showHex 2097151 ""
09:18:45 <lambdabot> "1fffff"
09:18:46 <CakeProphet> > maxBound :: Bool
09:18:47 <lambdabot> True
09:18:50 <CakeProphet> woah.
09:19:10 <oerjan> > showHex 1114111 ""
09:19:11 <CakeProphet> > maxBound :: Word128
09:19:11 <lambdabot> "10ffff"
09:19:12 <lambdabot> Not in scope: type constructor or class `Word128'
09:19:16 <CakeProphet> :(
09:19:34 <oerjan> @hoogle Word128
09:19:34 <lambdabot> No results found
09:19:39 <oerjan> @hoogle Word64
09:19:39 <lambdabot> Data.Word data Word64
09:19:46 <oerjan> alas
09:22:03 <fizzie> > True > False
09:22:03 <lambdabot> True
09:22:23 <fizzie> You could deduce some sort of "truth is greater than falsehood" philosophy out of that.
09:23:25 <fizzie> > GT > LT
09:23:26 <lambdabot> True
09:23:29 <fizzie> Also "bigger is better".
09:24:03 <CakeProphet> wow with a 128-bit word you could represent every ASCII character as a bit.
09:24:16 <CakeProphet> the entire word itself represents a superposition of ASCII characters.
09:26:09 <CakeProphet> that's a fairly efficient representation of an "ASCII set"
09:26:39 <fizzie> Maybe you could patent bitsets?
09:26:39 <CakeProphet> as many of the set operations can be computed with bitwise operators.
09:26:49 <CakeProphet> ....I doubt it.
09:26:54 <CakeProphet> someone has thought of this I'm sure
09:27:16 <fizzie> Well, uh, java.util.BitSet and all the bitset-based STL specializations of std::vector<bool>...
09:27:54 <CakeProphet> I don't think vector<bool> is what I'm talking about.
09:27:56 <CakeProphet> well... maybe it is
09:28:41 <fizzie> It is commonly implemented by stuffing sizeof(unsigned)*CHAR_BIT or so bits into each machine word.
09:29:43 <fizzie> I believe there's a slight amount of controversy, since it makes v[k] slower (have to do some bitshifting), but uses less space.
09:29:53 <fizzie> In Java-land it's a separate class.
09:31:49 <fizzie> Also because it's hard to point to a single bit.
09:32:10 <fizzie> "Note that vector<bool> does not actually meet the requirements for being a container. This is because the reference and pointer types are not really references and pointers to bool. See DR96 for details."
09:33:10 <Phantom_Hoover> http://www.reddit.com/r/math/comments/l6qa3/i_know_this_is_really_basic_to_a_lot_of_people/c2q8vwt
09:33:10 <lambdabot> Phantom_Hoover: You have 1 new message. '/msg lambdabot @messages' to read it.
09:33:19 <Phantom_Hoover> I don't like this person and I don't even feel guilty about it.
09:33:48 <oerjan> i think haskell's unboxed Bool arrays also pack.
09:39:44 <oerjan> indeed they do.
09:40:09 -!- oerjan has quit (Quit: Later).
09:42:24 -!- ais523 has quit (Ping timeout: 258 seconds).
09:45:34 -!- Phantom_Hoover has quit (Quit: Leaving).
09:55:33 -!- ais523 has joined.
10:39:06 -!- sllide has joined.
10:39:56 -!- Patashu has joined.
10:44:20 -!- sebbu has quit (Read error: Connection reset by peer).
10:45:18 -!- sebbu has joined.
10:51:32 -!- asiekierka has quit (Read error: Operation timed out).
11:21:28 -!- derdon has joined.
11:36:28 -!- Jafet has joined.
11:36:32 -!- Sgeo|web has joined.
11:36:58 <Sgeo|web> elliott (log-reading) CakeProphet Phantom_Hoover (does he logread?): Homestuck news update.
11:37:05 <Sgeo|web> EoA5 will go up on 10/25
11:37:24 <Patashu> 15 days away?
11:37:30 <Patashu> Better be really good
11:56:19 <Sgeo|web> If it drops during class I'm going to watch it in class
11:56:32 <Sgeo|web> (Well, actually, we get a break, so I'd watch it then)
12:26:52 -!- nooga has quit (Ping timeout: 260 seconds).
12:46:54 -!- ais523_ has joined.
13:12:44 -!- Patashu has quit (Ping timeout: 276 seconds).
13:13:01 -!- Jafet has quit (Quit: Leaving.).
13:20:59 -!- ais523 has quit (Ping timeout: 244 seconds).
13:34:34 -!- zzo38 has joined.
13:34:54 <zzo38> If the wind is sufficiently strong, can you make a hole in zero?
13:41:24 -!- derrik has joined.
13:47:57 -!- Madoka-Kaname has quit (Ping timeout: 260 seconds).
14:09:53 -!- derrik has quit (Ping timeout: 252 seconds).
14:09:57 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
14:16:45 -!- myndzi has joined.
14:21:56 -!- nooga has joined.
14:35:43 -!- copumpkin has joined.
14:46:54 -!- Madoka-Kaname has joined.
14:54:17 <quintopia> zzo38: have you ever taken a portable fan to play mini golf?
14:55:41 -!- ais523_ has quit (Quit: Page closed).
14:56:22 <zzo38> The Astrolog program supports the Tropical and the Sidereal zodiac, but it does not support IAU zodiac (which is more scientifically accurate than either the Tropical or Sidereal; but obviously the predictions of personality and so on are equally nonsensical).
14:56:32 <zzo38> quintopia: No. Can you?
14:57:38 -!- Phantom_Hoover has joined.
14:58:18 -!- ais523 has joined.
15:01:11 <zzo38> But using the IAU zodiac would be much more complicated because it is different for each planet!
15:03:02 -!- sllide has quit (Read error: Connection reset by peer).
15:03:22 <zzo38> (As a system of angular measurement, the Tropical and Sidereal are obviously more convenient; but they do not correspond to the actual constellations (they were somewhat more accurate in the past), but are still usable as a system of angular measurement.)
15:04:44 -!- Ngevd has joined.
15:07:42 <Ngevd> Hello!
15:08:04 <Phantom_Hoover> Thank god, I was worried when you didn't say it.
15:08:18 <Ngevd> I got distracted
15:09:34 <Ngevd> So, what is happening in the WORLD OF ESOTERIC PROGRAMMING?
15:13:54 <ais523> <ais523> I also think that it's theoretically possible to end up with two stations that it's illegal to travel between via any route at all, without a specific exception making it legal to do so <__moz> Possibly Frodsham-Runcorn (as shown on this map). As Frodsham is associated with "Runcorn Group", and Runcorn is "Runcorn Group", the permitted route is the shortest distance from the origin to the destination over which a regular scheduled passenger
15:13:55 <ais523> train service operates. Unfortunately, none of the trains which use the Halton Curve (the connection from the line from Frodsham to the line to Runcorn) stop in Frodsham. If you ignored Frodsham's association with Runcorn, you could use an indirect route via Liverpool. In the real world, most people would catch a 'bus instead. <amorya> I believe you're right, you can't get a single ticket Frodsham->Runcorn that is valid for travel. The National Rail
15:13:57 <ais523> site backs you up, and requires you to get Frodhsam->Liverpool and Liverpool->Runcorn as separate tickets.
15:14:05 <ais523> this is now officially the most awesome TDWTF sidebar thread ever
15:14:09 <ais523> it just gets better and better the more you rtead
15:14:10 <ais523> *read
15:15:13 <ais523> http://forums.thedailywtf.com/forums/t/25060.aspx
15:15:16 <ais523> I want to put it in the topic
15:15:21 <ais523> but I'd probably get shouted at for doing so
15:15:32 <Ngevd> http://news.bbc.co.uk/1/hi/programmes/newsnight/9612063.stm
15:16:09 <ais523> 'tis also worth reading http://www.rossrail.co.uk/central/routeqn1.html (linked from that thread)
15:16:25 <ais523> I suspect this could be made into an esolang moderately easily; it wouldn't be TC, but could still be quite powerful
15:17:11 <Phantom_Hoover> Ngevd, BRAAAAABEEEN
15:17:31 <Phantom_Hoover> HUMAN JAWS SHOULD NOT BE THAT LARGE
15:17:42 <Phantom_Hoover> Also, Braben, a gaming industry leader?
15:17:46 <Phantom_Hoover> Frontier was in the 90s.
15:17:46 <Ngevd> brb
15:18:06 <quintopia> zzo38: it is hard to blow a ball uphill, but it might be effective on the flat holes
15:18:21 <Phantom_Hoover> RollerCoaster Tycoon 3 does not an industry leader make.
15:19:05 <zzo38> quintopia: OK, but is the use of a fan permitted? Or are you required to use the natural wind?
15:20:30 <Ngevd> Back
15:20:59 <Ngevd> Braben was the best they could get on that budget
15:20:59 <quintopia> zzo38: it depends on whom you are playing with. i'm sure they might enjoy trying it one time if everyone can use it.
15:30:14 <Ngevd> Reading the train document thread
15:30:16 <zzo38> quintopia: OK, but I will count the time as well as the number of strokes.
15:30:16 <Ngevd> It is messed up
15:36:41 <ais523> it is beautifully messed up
15:36:49 <ais523> incidentally, I've since taken to just using the bus
15:40:13 <ais523> where the rules used to be really complex, but have since been simplifie
15:40:15 <ais523> *simplified
15:40:31 <Ngevd> If this system actually is this crazy
15:40:36 <Ngevd> I may have broken the law
15:40:53 <Ngevd> By buying a single ticket from two Northumbrian towns and going via Newcastle
15:46:09 -!- MSleep has changed nick to MDude.
15:46:36 <ais523> you probably have a decent excuse in that you didn't have a clue what you were doing
15:47:14 <ais523> was Hexham one of them?
15:47:21 <Ngevd> Yes
15:47:35 <ais523> I suppose if I asked the other, I could work out if it was legal or not
15:47:56 <ais523> assuming I actually wanted to struggle with the Routeing Guide again
15:47:56 <Ngevd> I could have gone Glasgow via Dumfries, then King's Cross via Edinburgh??
15:48:27 <ais523> Ngevd: according to ATOC's reply to Rossrail, there's an exception involving Scotland that they didn't tell anyone about
15:48:40 <ais523> I told you it got increasingly crazy as time went on
15:48:45 <Ngevd> ....!
15:49:03 <Ngevd> That is so bad my ellipses have bad grammar!
15:50:24 <Ngevd> The other was Morpeth, btw
15:51:29 <ais523> ah, the capital of Northumberland
15:51:34 <ais523> which has a famously dangerous train corner
15:51:41 <ais523> (the random things you learn playing BlogNomic…)
15:51:51 <Ngevd> Got a friend who LIVES pretty much on that train corner
15:51:56 <Ngevd> He has had a train in his back garden
15:52:39 <ais523> ouch
15:52:51 <ais523> so, for Hexham, the nearby routing points are Newcastle and Carlisle
15:53:14 <ais523> and for Morpeth, Newcastle and Edinburgh Group
15:54:40 <Ngevd> So, I'd have to use the Newcastle group?
15:54:46 <ais523> so it's legal to take a /direct/ train from Hexham to Newcastle, followed by a /direct/ train from Newcastle to Hexham
15:54:55 <ais523> and otherwise, you have to take a route within 3 miles of the shortest route
15:55:06 <Ngevd> Okay, so I chose wisely
15:55:15 <ais523> was it a direct train in each case?
15:55:18 <Ngevd> Yes
15:55:30 <ais523> so yes, there's specific exception letting you do that
15:55:56 <ais523> err, *followed by a /direct/ train from Newcastle to Morpeth
15:56:02 <Ngevd> I thought you meant that
15:56:11 <ais523> and by direct, I think it means "with no stops in between"
15:56:31 <Ngevd> I thought it would mean "with no changes inbetween"
15:57:46 <ais523> was it within 3 miles of the shortest route? I'm not very good at Northumberlandish geography
15:58:07 <Ngevd> By trains, the next shortest route would go through Glasgow
15:58:09 <Ngevd> So yes
15:58:45 <ais523> then you're OK
15:59:03 <Ngevd> Hurrah.
15:59:45 <Ngevd> If I wanted to go from Hexham to, say, Truro, how devilish would that be
16:02:24 <Ngevd> I'll assume "very"
16:03:37 -!- ais523_ has joined.
16:03:50 <ais523_> any comments here since ais523 without the underscore last spoke?
16:04:02 <Ngevd> <Ngevd> Hurrah.
16:04:03 <Ngevd> <Ngevd> If I wanted to go from Hexham to, say, Truro, how devilish would that be
16:04:03 <Ngevd> <Ngevd> I'll assume "very"
16:04:13 <ais523_> presumably
16:05:02 <ais523_> the part of the thread where I pretty much broke down was where I learnt that the document that explained whether you were allowed to break journies or not cost £4000 and wasn't available online
16:05:15 <Ngevd> !!!
16:06:23 <Ngevd> That's as much as the nicest edition of the OED!
16:06:24 <ais523_> and National Rail's own search recommended I try eBay to get a copy (admittedly, because it was farming the search out to Yahoo!, but still...)
16:06:48 -!- monqy has joined.
16:07:00 <Ngevd> 20 volume blue leather bound!
16:07:09 <Ngevd> And actually useful!
16:07:54 <ais523_> I'm not sure if it's worth £4000 just to find out the answer to one question that would save me less than £4000 over my lifetime, likely
16:07:58 <ais523_> perhaps I'll ask elliott if I should buy it
16:08:12 -!- ais523 has quit (Ping timeout: 260 seconds).
16:08:22 <Ngevd> That's probably not the best of ideas
16:09:39 <ais523_> gah, looks like the wireless in my office has gone wrong again
16:21:07 -!- ais523_ has quit (Quit: Page closed).
16:26:35 -!- nooga has quit (Ping timeout: 255 seconds).
16:32:04 <Phantom_Hoover> Ngevd, yes it is, you just have to do the opposite of what he tells you.
16:32:47 -!- sllide has joined.
16:32:58 <Ngevd> Oh, that makes sense
16:33:58 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net).
16:38:30 -!- Vorpal has joined.
16:40:33 <Vorpal> why on earth do I open port 25565 (tcp) on my laptop for access from my desktop. I also open port 22, which I obviously know why. But wtf is 25565. And when did I do that?
16:40:44 <Ngevd> Minecraft server
16:40:54 <Vorpal> oh right
16:41:10 <Vorpal> I used to run that back when I was debugging mcmap and my desktop was too weak to run an mc server
16:41:14 <Vorpal> that makes sense
16:41:21 <Vorpal> also for mcmap
16:41:26 <Vorpal> (duh)
16:43:02 <Vorpal> btw is there rsync for windows? As a precompiled binary, Only interested in plain rsync. Don't care for rsync over ssh even in this case. Nor server functionality
16:48:19 -!- pikhq has joined.
16:48:29 -!- pikhq_ has quit (Ping timeout: 258 seconds).
16:49:02 <Ngevd> Not as far as I am aware
16:52:01 <Ngevd> But then again I have no idea what rsync is
16:52:01 <Vorpal> Ngevd, well, there is cygwin
16:52:38 <Vorpal> Ngevd, rsync is a wonderful tool to sync directory structures on different computers. It works really well.
16:52:45 <Ngevd> Hmm...
16:52:45 <Vorpal> really simple too
16:52:59 <Ngevd> I don't think I have much of a need for it at the moment
16:53:05 <Ngevd> Right now I have a need for dinner
16:53:08 <Ngevd> So, bye
16:53:09 -!- Ngevd has quit (Quit: Leaving).
16:53:14 <Vorpal> Ngevd, works well over internet as well due to being smart about it. Like sending hashes of chunks to decide which ones has to be transferred
16:57:38 -!- nooga has joined.
17:02:32 -!- Ngevd has joined.
17:05:23 <Ngevd> Hello!
17:11:05 -!- CakeProphet has quit (Ping timeout: 255 seconds).
17:16:14 <Ngevd> B.
17:16:15 <Ngevd> R.
17:16:17 <Ngevd> Freakin'
17:16:18 <Ngevd> B.
17:16:21 -!- Ngevd has quit (Quit: Leaving).
17:18:02 -!- sllide has quit (Read error: Connection reset by peer).
17:20:09 -!- Ngevd has joined.
17:20:16 -!- Ngevd_ has joined.
17:20:23 <Ngevd> Aaah!
17:20:28 <Ngevd> Two mes!
17:20:35 -!- Ngevd_ has left.
17:20:43 <Ngevd> Better
17:34:12 <monqy> http://en.wikipedia.org/wiki/Chupacabra good picture
17:36:38 -!- elliott has joined.
17:44:57 <Ngevd> Hello elliott
17:46:24 <elliott> 08:53:19: <fizzie> "head -n 219654 | tail -n 1 | od -tx1z" or something.
17:46:24 <elliott> 08:56:07: <ais523> I'm annoyed that there isn't a more efficient way to do that head|tail, it looks optimizable
17:46:24 <lambdabot> elliott: You have 5 new messages. '/msg lambdabot @messages' to read them.
17:46:32 <elliott> how could you optimise that?
17:52:10 <elliott> 08:56:19: <oerjan> regarding today's xkcd: who/what the fuck is corliss?
17:52:12 <elliott> Jeb Corliss (born March 25, 1976) is a professional BASE jumper, skydiver, and wingsuit flyer. He has jumped from sites including Paris' Eiffel Tower, Seattle's ...
17:52:43 <elliott> oh too late
17:52:53 <elliott> 09:00:16: <fizzie> ais523: Possibly "tail -n +219654 | head -n 1" would be better, it wouldn't need to stuff all that data through the pipe.
17:53:00 <elliott> fizzie: Well with "ideal" pipe streaming semantics it shouldn't matter :-)
17:55:38 <elliott> 09:24:03: <CakeProphet> wow with a 128-bit word you could represent every ASCII character as a bit.
17:55:38 <elliott> 09:24:16: <CakeProphet> the entire word itself represents a superposition of ASCII characters.
17:55:38 <elliott> 09:26:09: <CakeProphet> that's a fairly efficient representation of an "ASCII set"
17:55:38 <elliott> 09:26:39: <fizzie> Maybe you could patent bitsets?
17:55:46 <elliott> fizzie: I think it might just be too revolutionary for the patent system.
17:55:53 <elliott> 09:19:34: <oerjan> @hoogle Word128
17:55:53 <elliott> 09:19:34: <lambdabot> No results found
17:55:54 <elliott> http://hackage.haskell.org/package/largeword
17:56:42 <elliott> 13:34:54: <zzo38> If the wind is sufficiently strong, can you make a hole in zero?
17:56:42 <elliott> Yes.
17:57:28 <elliott> 15:13:54: <ais523> <ais523> I also think that it's theoretically possible to end up with two stations that it's illegal to travel between via any route at all, without a specific exception making it legal to do so <__moz> Possibly Frodsham-Runcorn (as shown on this map). As Frodsham is associated with "Runcorn Group", and Runcorn is "Runcorn Group", the permitted route is the shortest distance from the origin to the destination over which a regul
17:57:28 <elliott> ar scheduled passenger
17:57:28 <elliott> 15:13:55: <ais523> train service operates. Unfortunately, none of the trains which use the Halton Curve (the connection from the line from Frodsham to the line to Runcorn) stop in Frodsham. If you ignored Frodsham's association with Runcorn, you could use an indirect route via Liverpool. In the real world, most people would catch a 'bus instead. <amorya> I believe you're right, you can't get a single ticket Frodsham->Runcorn that is valid for tra
17:57:31 <elliott> vel. The National Rail
17:57:33 <elliott> 15:13:57: <ais523> site backs you up, and requires you to get Frodhsam->Liverpool and Liverpool->Runcorn as separate tickets.
17:57:36 <elliott> A "'bus"?
18:00:46 <Vorpal> elliott, well isn't bus short for omnibus?
18:00:52 <Vorpal> though that seems quite weird
18:01:08 <Vorpal> "A bus (play /ˈbʌs/; plural "buses" or "busses", /ˈbʌsɨz/), archaically also omnibus, multibus, or autobus)"
18:01:25 <Vorpal> argh wikipedia, unbalanced parens
18:02:09 <elliott> Yes but come on.
18:02:28 <elliott> Vorpal: fixed parens
18:02:56 <Gregor> LolBot reverted likely spam by some guy who didn't log in to edit "Bus"
18:03:11 <Vorpal> elliott, yes I agree that him using it for "omnibus" would not only be archaic but also pretentious.
18:03:23 <Vorpal> Gregor, eh?
18:04:00 <elliott> The best thing about editing WP anonymously is that my IP can change multiple times per day.
18:04:05 <elliott> Because my router is a piece of shit.
18:04:07 <Vorpal> hah
18:04:10 <elliott> So people keep assuming I'm a vandal based on past vandalism.
18:04:22 <elliott> "You were a vandal a day ago, you must be one now."
18:04:44 <Vorpal> elliott, just link them to [[Dynamic IP]] or such
18:04:55 <Ngevd> I once made an account on Wikipedia with the specific intent of getting banned as quickly as possible
18:04:59 <Ngevd> 17 minutes
18:05:05 <Vorpal> heh
18:05:10 <elliott> Vorpal: I usually just revert them until they give up because they don't want to break the rules.
18:05:17 <elliott> Viva la revolucion.
18:05:19 -!- sebbu has quit (Read error: Connection reset by peer).
18:05:24 <Vorpal> XD
18:05:43 -!- sebbu has joined.
18:05:43 -!- sebbu has quit (Changing host).
18:05:43 -!- sebbu has joined.
18:05:47 <elliott> 15:17:11: <Phantom_Hoover> Ngevd, BRAAAAABEEEN
18:05:48 <elliott> 15:17:31: <Phantom_Hoover> HUMAN JAWS SHOULD NOT BE THAT LARGE
18:05:48 <elliott> Good words.
18:07:06 <elliott> 16:05:02: <ais523_> the part of the thread where I pretty much broke down was where I learnt that the document that explained whether you were allowed to break journies or not cost £4000 and wasn't available online
18:07:07 <elliott> 16:05:15: <Ngevd> !!!
18:07:07 <elliott> 16:06:23: <Ngevd> That's as much as the nicest edition of the OED!
18:07:11 <elliott> Ngevd: Is this how you judge all prices.
18:07:25 <Ngevd> Yes
18:07:30 <Ngevd> I want that OED
18:07:32 <Vorpal> elliott, just give a reasonable edit message. Like "fixed unbalanced parentheses" or such.
18:07:37 <elliott> Ngevd: Let's buy it collectively.
18:07:43 <elliott> Vorpal: Hey, they're already getting unpaid labour.
18:07:47 <elliott> 16:07:54: <ais523_> I'm not sure if it's worth £4000 just to find out the answer to one question that would save me less than £4000 over my lifetime, likely
18:07:47 <elliott> 16:07:58: <ais523_> perhaps I'll ask elliott if I should buy it
18:07:49 <elliott> Not only yes, but hell yes.
18:07:54 <Vorpal> elliott, I mean, to avoid the spam bot situation
18:08:16 <elliott> Vorpal: I'm not going to write English that a machine can't understand to satisfy that machine. That's too ridiculous.
18:08:39 <Vorpal> elliott, hm I guess it is mostly bots doing that...
18:08:41 <elliott> 16:43:02: <Vorpal> btw is there rsync for windows? As a precompiled binary, Only interested in plain rsync. Don't care for rsync over ssh even in this case. Nor server functionality
18:08:41 <elliott> Yes.
18:08:43 <Vorpal> which is kind of silly
18:08:46 <Vorpal> elliott, I found it.
18:09:11 <elliott> 17:34:12: <monqy> http://en.wikipedia.org/wiki/Chupacabra good picture
18:09:11 <elliott> how did you find me
18:11:51 -!- oerjan has joined.
18:12:09 <Vorpal> hi oerjan
18:12:15 <oerjan> hi Vorpal
18:14:39 <elliott> hi q
18:15:47 <oerjan> lo q
18:16:01 <Ngevd> Hi Taneb
18:16:04 -!- Ngevd has changed nick to Taneb.
18:16:08 <Taneb> Hi Ngevd
18:18:29 <elliott> hi Taneb
18:18:54 <Taneb> I'm going to be Taneb for a while now, I think
18:19:10 <oerjan> <Ngevd> The other was Morpeth, btw
18:19:50 <oerjan> i choose to believe that place must have been brought to this world by a freak interdimensional accident
18:23:36 <oerjan> <ais523_> the part of the thread where I pretty much broke down was where I learnt that the document that explained whether you were allowed to break journies or not cost £4000 and wasn't available online
18:24:10 <oerjan> so basically, douglas adams did not really have to make anything up, it's just people outside england who think he did.
18:24:14 <oerjan> check.
18:25:23 <elliott> People think Adams made shit up?
18:26:05 <oerjan> shocking, i know
18:28:11 -!- zzo38 has quit (Remote host closed the connection).
18:30:00 <elliott> "I also think that it's theoretically possible to end up with two stations that it's illegal to travel between via any route at all, without a specific exception making it legal to do so (or just relying on the "if it's the shortest route you don't need to use the manual" exemption, which takes all the fun out of things). Also, this would fluctuate based on the train prices, just to make things even more complex; it's possible for it to be legal
18:30:00 <elliott> one day and illegal another."
18:30:02 <elliott> god bless britannia
18:38:29 -!- ais523 has joined.
18:40:43 <elliott> hi ais523
18:41:26 <ais523> hi elliott
18:41:39 <ais523> today we learnt: it is indeed possible to go from Hexham to Morpeth via Newcastle
18:41:49 <elliott> why, did you try it out?
18:42:06 <ais523> no, too far away
18:42:10 <ais523> I consulted the routeing tables
18:42:11 <elliott> heh
18:42:22 <elliott> this is better than mornington crescent, really
18:42:22 <oerjan> it just requires a small interdimensional detour
18:42:26 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
18:42:26 <ais523> sorry, I've been advertising THE BEST THREAD ON TDWTF because it's so awesome
18:42:34 <elliott> just play it without telling everyone else about the ATOC guide
18:42:38 <ais523> elliott: it involves Mornington Crescent, indirectly
18:42:39 <elliott> and they'll just assume you're making shit up
18:42:52 <ais523> because the Tube is part of it
18:42:59 <elliott> ais523: haha
18:43:21 <ais523> grouped into "London Group", but it's mentioned
18:43:29 <ais523> in fact, you get a + on the train ticket when it's involved
18:43:40 <ais523> and the orange train ticket you get for regular train travel then works on the Underground ticket barriers
18:43:49 <ais523> I actually did this once; it confused Google
18:44:02 <ais523> or to be precise, their department for handling train travel expenses
18:44:15 <oerjan> ais523: you realize you could make a game based on this which required that 4000 pound tome, and it would be almost like mornington crescent is pretending to be
18:44:24 <elliott> oerjan: um are you ignoring me
18:44:24 <ais523> oerjan: indeed!
18:44:27 <elliott> that's exactly what I said :P
18:44:45 <elliott> the game would be something like, everyone takes turns to name a potential route, and everyone else has to figure out whether it's valid within a certain amount of time
18:44:48 <ais523> oerjan: I prefer to interpret "4000 pound tome" as weight not value here
18:44:48 <oerjan> did someone speak?
18:44:55 <elliott> points are awarded appropriately, and the person who got the correct answer soonest plays next
18:45:04 <ais523> elliott: looks like mental ignore
18:45:19 <elliott> ais523: or he just didn't notice :P
18:45:40 <ais523> a bit like me and Sgeo, then
18:45:43 <ais523> I don't intend to ignore him
18:45:48 <ais523> I just don't really manage to focus on anything he says
18:47:17 <elliott> I'm so glad all our place names are ridiculous, or this would be no fun at all
18:47:33 <Taneb> I've got a book about Northumbrian place names somewhere
18:47:40 <Taneb> It's called Goodwife Hot
18:47:53 <oerjan> ^ul ((Morpeth )S:^):^
18:47:53 <fungot> Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morp ...too much output!
18:48:43 <oerjan> perhaps the whole of northumberland has been dimensionally misplaced
18:49:03 <elliott> ais523: I wonder if there's a way to get a non-UK country involved in this
18:49:09 <elliott> ais523: also, what has Google got to do with it?
18:49:13 <Taneb> It was actually ripped out of downtown alternate Helsinki in 24 BC
18:49:18 <ais523> elliott: they were one end of the train journey
18:49:20 <ais523> I was giving a talk there
18:49:30 <elliott> ah, your famous INTERCAL tutoring
18:49:33 <elliott> services
18:49:40 <ais523> no, not that
18:49:40 <oerjan> helsunk
18:49:48 <ais523> although they did put me in charge of CADIE
18:49:55 <ais523> as they couldn't find anyone else to deal with her
18:50:18 <ais523> well, technically, they just gave me commit access then stopped editing the repo, but that's much the same thing
18:52:50 -!- Phantom_Hoover has joined.
18:52:52 <Phantom_Hoover> Whenever I read 'glacial acetic acid' I think of glacé cherries and
18:54:32 <Phantom_Hoover> I don't really know what to say after that.
18:56:26 <ais523> Q.11: A permitted route for London to Newcastle is given as ER+MM. Is the following route permitted: London St.Pancras via Settle and Carlisle to Glasgow (map MM) and thence to Edinburgh (map ER). If not, why not ? Do you also accept that travel via Settle, Carlisle, and Hexham is not permitted ?
18:56:29 <ais523> hey, it mentions Hexham!
18:56:44 <ais523> I completely missed that there were more pages of "The amazing routeing question"
18:56:45 * ais523 is riveted
18:56:55 <Taneb> Relink me
18:56:55 <Phantom_Hoover> Edinburgh seems to come up a lot.
18:57:00 -!- sebbu has quit (Read error: Connection reset by peer).
18:57:14 <Taneb> It's because Edinburgh is like a black hole but for trains
18:57:29 -!- sebbu has joined.
18:57:29 -!- sebbu has quit (Changing host).
18:57:29 -!- sebbu has joined.
18:58:21 <ais523> http://www.rossrail.co.uk/central/routeqn1.html
18:58:33 <Taneb> Almost University Challeng time
18:59:23 <elliott> challeng
18:59:54 <Taneb> It's like Challege, but with Polytechnics
19:00:36 <ais523> thanks for the reminder
19:00:44 <ais523> my grandmother tries to watch it religiously, but keeps forgetting
19:01:28 <elliott> That's my approach to religion.
19:04:04 <ais523> "I and others have now carried out a detailed study of the guide and have identified a number of situations where it is not possible to determine whether a route is valid or not because the Guide is either ambiguous or fails to mention the issue."
19:04:13 <ais523> for bonus points, the person who /wrote/ that is called Mr. Feather
19:04:30 <elliott> oh dear
19:04:59 <elliott> Phantom_Hoover: Have you written the terrain generator yet.
19:05:00 -!- Taneb has quit (Ping timeout: 260 seconds).
19:10:40 <oerjan> <ais523> for bonus points, the person who /wrote/ that is called Mr. Feather <-- mr. head paradox is probably involved in this.
19:11:11 <elliott> oerjan: told you (re IWC)
19:11:17 <oerjan> universe reboot in 9, 8, ...
19:11:33 * oerjan hits elliott with a lampshade
19:11:36 <elliott> oerjan: more like shutdown >:)
19:12:10 <oerjan> elliott: i am speaking about the above trainwreck, not the current iwc storyline
19:12:20 <elliott> oerjan: suuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuure
19:12:23 <elliott> oer "denial" jan
19:12:40 <oerjan> they _might_ become entwined at this rate, though
19:14:26 <elliott> People I am disappointed in, a list: Phantom_Hoover.
19:18:20 <elliott> I really wish the Prelude has a lazy natural type, and that length was genericLength
19:20:21 <oerjan> instance Num [()] where ...
19:20:34 <Deewiant> -XFlexibleInstances
19:23:16 <elliott> oerjan: [Void], more like
19:23:23 <elliott> Anyway I mean it should be in there by default
19:23:29 <elliott> Because it lets you compare lengths without doing something stupid like compareLength
19:23:51 <elliott> (length xs > (9 :: Nat))
19:23:59 <elliott> Admittedly it'd be nice if there was defaulting there
19:24:19 <Deewiant> While the name is long as genericLength I prefer compareLength
19:24:34 <elliott> Deewiant: Why, it's gross
19:24:44 <elliott> Deewiant: You're just inlining compare .: length
19:24:47 <elliott> On lazy naturals
19:24:58 <elliott> It's not very composable
19:25:04 <Deewiant> No need to find the appropriate lazy naturals package on hackage
19:25:23 <Deewiant> Mostly
19:25:28 <oerjan> > sort . tails . replicate 5 ()
19:25:28 <lambdabot> Couldn't match expected type `[a]' against inferred type `()'
19:25:32 <oerjan> > sort . tails $ replicate 5 ()
19:25:34 <lambdabot> [[],[()],[(),()],[(),(),()],[(),(),(),()],[(),(),(),(),()]]
19:25:34 <elliott> Deewiant: Remember the part where I said I wanted it to be in Prelude?
19:26:13 <Deewiant> elliott: My "while" there was meant to imply the current situation
19:26:31 <oerjan> > (compare `on` (() <$))) "abc" "abcd"
19:26:31 <elliott> Oh, I thought you were listing it as a con to compareLength
19:26:32 <lambdabot> <no location info>: parse error on input `)'
19:26:35 <elliott> (The length of its name)
19:26:39 <oerjan> > (compare `on` (() <$)) "abc" "abcd"
19:26:40 <lambdabot> LT
19:27:13 -!- pikhq_ has joined.
19:27:34 -!- pikhq has quit (Ping timeout: 258 seconds).
19:27:56 <Madoka-Kaname> @hoogle m a -> m b -> m (a, b)
19:27:56 <lambdabot> Prelude zip :: [a] -> [b] -> [(a, b)]
19:27:57 <lambdabot> Data.List zip :: [a] -> [b] -> [(a, b)]
19:27:57 <lambdabot> Language.Haskell.TH strictType :: Q Strict -> TypeQ -> StrictTypeQ
19:28:15 <Deewiant> ?ty liftM2 (,)
19:28:15 <lambdabot> forall a1 a2 (m :: * -> *). (Monad m) => m a1 -> m a2 -> m (a1, a2)
19:28:20 <oerjan> > sortBy (compare `on` (() <$)) $ words "the quick brown fox jumped over the lazy dog"
19:28:21 <lambdabot> ["the","fox","the","dog","over","lazy","quick","brown","jumped"]
19:30:57 -!- tiffany has joined.
19:31:39 <elliott> Man, Haskell's AST is exhausting
19:31:53 <shachaf> > elem 's' "the quick brown fox jumped over the lazy dog"
19:31:54 <lambdabot> False
19:32:07 <oerjan> eek
19:32:11 <elliott> oerjan: "jumps"
19:32:24 <elliott> Does any existing Haskell implementation do parsing before resolving imports?
19:32:28 <oerjan> oh well it's a past offense, anyhow
19:36:02 -!- Ngevd has joined.
19:36:23 <elliott> Hmm, this "one abstract name type per type of name" approach isn't tenable
19:36:33 <elliott> There's too many situations where anything from the right namespace is okay
19:36:34 <Ngevd> Hello
19:36:42 <elliott> So I guess I just want Name/TyName/ValName
19:36:52 <elliott> Rather than Name/VarName/FieldName/ConName/OpName/TyName/TyVarName/ClassName/ModName
19:37:09 <elliott> Especially since I can't guarantee that something in one of those types is actually a valid, in-scope name, since I'm parsing before resolving imports
19:37:13 <elliott> So it's kind of pointless
19:37:23 <elliott> oh hmm
19:37:29 <elliott> oerjan: are module names their own namespace
19:37:31 <elliott> yes, they are
19:37:37 <elliott> OK, Name/TyName/ValName/ModName
19:38:24 -!- oerjan has quit (Quit: Good night).
19:42:48 <elliott> -- | an arbitrary time in the future
19:42:49 <elliott> endOfTime :: ClockTime
19:42:49 <elliott> endOfTime = toClockTime $ CalendarTime { ctYear = 2020, ctMonth = January, ctDay = 0, ctHour = 0, ctMin = 0, ctSec = 0, ctTZ = 0, ctPicosec = 0, ctWDay = undefined, ctYDay = undefined, ctTZName = undefined, ctIsDST = undefined}
19:42:58 <elliott> jhc isn't Y2020-compliant.
19:43:22 <ais523> hey, it didn't say that endOfTime was the last possible time
19:43:28 <ais523> just that it's an arbitrary time in the future
19:43:38 <Ngevd> Tomorrow lunchtine
19:43:57 <Deewiant> That's a terrible "time in the future"
19:44:12 <Ngevd> It is a time
19:44:16 <Ngevd> And it is in the future
19:44:20 <elliott> ais523: it won't be in the future in 2020
19:44:22 <Ngevd> Now, why is it terrible
19:44:25 <elliott> so jhc is 2020-incompliant
19:44:34 <Deewiant> It is in the future for a terribly short time
19:44:44 <Ngevd> That is irrelevant
19:44:45 <ais523> elliott: it didn't say it would /always/ be in the future
19:44:49 <Ngevd> And flexible
19:44:56 <elliott> well, the documentation will at least be wrong
19:45:00 <ais523> really, tomorrow lunchtime would be a better impl of that spec
19:45:09 <ais523> to break programs that misread it sooner rather than later
19:45:37 <ais523> (that is, calculating tomorrow lunchtime, not hardcoding it)
19:46:06 <ais523> IIRC one of the spam filters has a year x*10 bug every 10 years, because it uses regexes to detect "emails from a long time in the future"
19:46:15 <ais523> that are hardcoded
19:46:30 <ais523> and the solution to the present time matching the regex is to bump it another 10 years
19:50:41 <elliott> heh
19:51:00 <elliott> isn't that spamassassin
19:51:21 <elliott> hmm, jhc remembers the exact type of every name in the Name; I should do that (but still have TyName/ValName as wrappers over Name since that's a relatively sane static decision)
19:52:02 <Deewiant> elliott: ISTR you said a DS9K C has to be an interpreter; why?
19:52:39 <elliott> Deewiant: I don't remember saying that, but I probably just meant it would be far easier as an interpreter
19:52:46 <elliott> Since you want to change behaviour dynamically to trip programs up
19:52:52 <elliott> Behaviour and representations
19:53:00 <Deewiant> heh
19:53:40 <elliott> Deewiant: What
19:53:49 <Deewiant> Dynamic behaviour changing
19:53:50 <elliott> | EVar VarName
19:53:50 <elliott> | EField FieldName
19:53:50 <elliott> | ECon ConName
19:53:50 <elliott> Hmm, guess these get unified
19:53:52 <Deewiant> Hadn't thought of that
19:54:19 <elliott> Deewiant: Is there anything forbidding the bunch-of-chars representation of a pointer from changing over time?
19:54:26 <elliott> Say, every time you dereference it?
19:54:35 <Deewiant> Maybe, but maybe not
19:54:58 <ais523> elliott: you can legally type pun it with a char[], and then dereferencing it would change the value of the char[] which is disallowed
19:55:09 <ais523> if there wasn't one in scope, it might be legal
19:55:19 <elliott> ais523: the as-if rule sure does lead to some strange things...
19:55:52 <ais523> indeed
19:56:01 <Deewiant> Hmm, apparently varargs in C are completely undefined?
19:56:34 <elliott> huh?
19:57:43 <Deewiant> §6.5.2.2 "Function calls" ¶6 "If the function is defined with a type that includes a prototype, and either the prototype ends in an ellipsis `(, ...)` or the types of the arguments after promotion are not compatible with the types of the parameters, the behavior is undefined."
19:57:58 <elliott> Wow
19:58:01 <elliott> What standard is that?
19:58:06 <Deewiant> C1X
19:58:26 <elliott> Check with C99 :P
19:58:29 <Deewiant> This might be only for non-prototyped functions though, I'm not sure how this is meant to be read
19:58:48 <Deewiant> Or no wait, that says it has a prototype, right :-P
19:59:29 <Deewiant> Okay right yes
19:59:38 <Deewiant> So if it's defined as varargs but the prototype says it's not
19:59:43 <Deewiant> Never mind
19:59:46 -!- quintopia has quit (Ping timeout: 248 seconds).
20:00:12 <elliott> | ExportType TyName (Exports ValName)
20:00:12 <elliott> | ExportClass TyName (Exports ValName)
20:00:12 <elliott> Huh, wasn't expecting those to come out the same
20:00:38 -!- quintopia has joined.
20:00:49 * elliott wonders if separate VarName/TyVarName types might still not be helpful...
20:01:48 <Ngevd> xkcd and IWC used the same joke once.
20:01:49 <Ngevd> http://www.irregularwebcomic.net/1463.html
20:01:51 <Deewiant> They're separate namespaces so it probably would help clarify things
20:01:52 <Ngevd> http://xkcd.com/157/
20:02:17 * tiffany pokes channel for some scala learning thingies
20:03:12 <elliott> Deewiant: Um I already have ValName/TyName
20:03:32 <elliott> Deewiant: Just not variable versions of the above, which are distinguishable by their lowercaseness etc
20:03:33 <Deewiant> elliott: But "x" can be either depending on context
20:04:15 <elliott> Ngevd: Well, they're both obvious parodies of the same source material
20:04:20 <elliott> Deewiant: Can it
20:04:26 <elliott> Deewiant: I mean yes depending on context
20:04:34 <elliott> Deewiant: But "X" can be ValName or TyName depending on context too
20:04:36 <elliott> Constructor X or type/class X
20:04:46 <Deewiant> Oh, right, constructors
20:04:59 <Deewiant> But yeah anyway
20:05:01 <Ngevd> THEY ARE EXACTLY THE SAME PARODIES
20:05:05 <elliott> Deewiant: Or variable x vs. type variable x, which still fall under ValName vs. TyName
20:06:31 <Deewiant> So what you were actually wondering about adding was separating X (constructor, ValName) and x (non-constructor value, VarName)? Or what?
20:06:50 <elliott> Deewiant: Well, I have things like
20:06:56 <elliott> newtype Context = Context [(TyName, TyName)] deriving (Show)
20:07:04 <elliott> and I think, why not
20:07:08 <elliott> newtype Context = Context [(TyName, TyVarName)] deriving (Show)
20:07:24 <Deewiant> Well sure, why not :-P
20:07:58 <elliott> Deewiant: Well, because I started out with VarName/ConName/FieldName/TyVarName/ClassName/blahblahblah and ended up with situations where more than one type was valid in a context and also there was no real static guarantees I was getting from it because you can't separate them properly at parse time anyway
20:08:21 <elliott> (It's no good knowing that you have the name "x" as a FieldName if "x" is actually from FooModule and turns out to be a regular function)
20:08:29 <Deewiant> Meh, just stick to the standard as far as reasonable in your implementation
20:08:35 <elliott> Deewiant: The standard defines no AST
20:08:46 <elliott> Deewiant: It just defines a grammar, and translation rules into a simpler form
20:09:27 <Deewiant> So if the grammar doesn't distinguish, you don't need to either
20:09:43 <elliott> Deewiant: The grammar distinguishes completely
20:09:54 <elliott> But it's an all-seeing eye; I'm parsing before processing imports
20:10:01 <elliott> So I /can't/ tell whether "x" is a VarName or a FieldName
20:10:30 <elliott> (Also, the grammar can say (aname | bname) without ugly Left/Right constructors cluttering its use :-))
20:12:17 <Deewiant> I guess nobody linked the Deep C (and C++) slides here? http://www.reddit.com/r/cpp/comments/l6xni/deep_c_and_c/
20:12:53 <Deewiant> I'm pretty sure there's an error of omission on slide 16 - implicit declarations were dropped in C99
20:13:41 <elliott> C: so weird.
20:13:48 <Deewiant> Not really
20:14:10 <elliott> Deewiant: That piece of shit site wants me to log in to download that, sigh
20:14:11 <elliott> Got a PDF?
20:14:16 <Deewiant> elliott: Top comment
20:14:20 <Deewiant> Also bugmenot
20:14:22 <elliott> Oh, heh
20:14:31 <Deewiant> (I used the latter before looking at the comments, worked fine)
20:15:03 <elliott> Wow, how long is this thing
20:15:07 <elliott> Or is this server just very slow
20:15:09 <Deewiant> 445 slides
20:15:24 <Deewiant> 8 megs
20:16:03 <elliott> Oh, I just had to reload to get it to actually load
20:16:12 <elliott> Software, so reliable
20:16:15 <Deewiant> Using the web viewer works up to a point
20:16:31 <Deewiant> Around slide 250-300 it suddenly becomes unusably slow
20:16:50 <elliott> " but for older versions of C, like ANSI C
20:16:50 <elliott> and K&R, the exit value from this program will
20:16:50 <elliott> be some undefined garbage value."
20:16:51 <Deewiant> (Maybe 255?)
20:16:55 <elliott> Filthy, machine-specific, garbage lies
20:17:05 <elliott> Deewiant: reddit thinks that viewing slide n is O(n)
20:17:09 <elliott> Due to decompression or whatever
20:17:16 <Deewiant> Yeah I noticed
20:17:24 <Deewiant> But it was a really noticeable dip at that certain point
20:17:34 <elliott> "
20:17:34 <elliott> And talking about C standards... if you want to show
20:17:34 <elliott> that you care about C programming, you should use
20:17:34 <elliott> int main(void) as your entry point - since the
20:17:34 <elliott> standard says so."
20:17:35 <Deewiant> Maybe they're in some kind of weird chunks or something
20:17:40 <elliott> Asshole, that's just pointlessly verbose
20:17:46 <Deewiant> No it's not
20:17:46 <elliott> Shit's not a declaration
20:17:52 <elliott> Yes it is
20:17:56 <elliott> int main(void) === int main() in a definition
20:18:06 <elliott> They're just saying that you should show you ~care~ by doing it for definitions too
20:18:12 <elliott> RABBLE RABBLE
20:18:27 <Deewiant> "It shall be defined with a return type of `int` and with no parameters: `int main(void) { /* … */ }"
20:18:35 <Deewiant> s/.$/`"/
20:19:15 <elliott> Deewiant: The quoted code is obviously an example
20:19:23 <elliott> int main() { ... } defines main with return type int and no parameters
20:19:57 <elliott> These engineers have even worse posture than me
20:20:31 <elliott> No you idiot, it'll be 0, it's static
20:20:51 <elliott> No you idiot, it'll be garbage
20:21:12 <elliott> I don't like this presentation's interleaving of language and implementation details
20:21:26 <Deewiant> Yeah it's kinda practical that way
20:21:48 <Deewiant> It assumes a non-DS9K x86ish implementation
20:21:55 <Deewiant> Or the girl does
20:22:36 <elliott> "if you compile in debug mode the
20:22:36 <elliott> runtime might try to be helpful and memset your
20:22:36 <elliott> stack memory to 0"
20:22:41 <elliott> Gross, debug mode should try and break your program
20:22:50 <Deewiant> I agree :-P
20:22:59 <Deewiant> But it's probably true
20:23:09 <Deewiant> I wouldn't be surprised if gcc -O0 zero-initialized everything
20:23:30 <elliott> I wouldn't be surprised if gcc -O0 compiled to Python
20:23:34 <elliott> It's slow enough
20:23:35 <Deewiant> I would be
20:23:43 <elliott> Well
20:23:51 <elliott> I'd be surprised but in a good way
20:24:52 <Deewiant> Also slide 190
20:25:08 <Deewiant> Is #2 really completely undefined?
20:25:51 <elliott> Eh, how do you go to a certain page in Chrome
20:25:58 <elliott> Or even find out what page you're on
20:26:00 * elliott opens it in Evince
20:26:01 <Deewiant> Beats me
20:26:10 <Deewiant> And yeah, it is completely undefined
20:26:11 <elliott> A floppy disk icon for "save" in this decade, Google?
20:26:28 <elliott> Deewiant: Yeah, it is
20:26:34 <elliott> Sequence points, etc.
20:27:07 <elliott> Not garbage, it's static, god you're thick
20:27:07 <Deewiant> Yeah sequence points I know, I just couldn't remember that a++ also restricts other reads from a
20:27:28 <elliott> Well no it[s not static
20:27:30 <elliott> But it's file scope
20:27:32 <elliott> s/[/'/
20:27:45 <elliott> Registers
20:27:53 <elliott> Or hmm
20:27:55 <elliott> That's without optimisation
20:27:57 <elliott> Stack reuse, then
20:28:18 <elliott> Deewiant: Does the C get deeper than this, this is pretty obvious so far
20:28:20 <Deewiant> The "garbage" with optimization looks like it might be argv
20:28:37 <Deewiant> Not much
20:28:41 <Deewiant> Depends on your definition of "deep"
20:28:58 <Deewiant> It switches to C++ halfway through
20:29:07 <elliott> Oh, I only have to read half of it
20:29:11 <elliott> Nea
20:29:12 <elliott> t
20:29:39 <Deewiant> Slide 389 begins the ending bit
20:30:03 <olsner> slide 389 :S
20:30:05 <elliott> "I would never write code like that."
20:30:07 <elliott> Who cares, you're dumb
20:30:23 <olsner> that's probably about 380 slides further than I'd bother
20:30:46 <elliott> "I don’t get a warning when compiling it,
20:30:46 <elliott> and I do get 42"
20:30:53 <Deewiant> olsner: Many of the slides amount to moving an arrow on the previous slide, or some such
20:30:58 <elliott> You haven't been right in disagreement a single time yet, why do you think this will be your lucky day
20:32:20 <elliott> Undefined order of printing for b and c calls
20:33:14 <Deewiant> Another thing the girl forgot is that %zu doesn't work on MSVCRT so it's typically less portable than %d
20:33:38 <elliott> Deewiant: That's too practical even for something like this, who gives a fuck about MSVCRT
20:33:56 <Deewiant> Well the girl bitches about using %d to print sizeof(int)
20:34:27 <Deewiant> And fact is that %d is much more likely to work in the real world than %zu, not everything supports %zu but practically all sizeofs fit in an int :-P
20:34:46 <elliott> Does that make it any more right
20:34:59 <Gregor> lolwut
20:35:20 <Deewiant> No, but since it's all about mixing implementation details with language details I thought that'd be worth a mention
20:35:22 <elliott> Gregor: What
20:35:29 <Deewiant> wutwut
20:35:40 <Phantom_Hoover> <Deewiant> Well the girl bitches about using %d to print sizeof(int)
20:35:47 <Gregor> (int) sizeof(int) PROBLEM SOLVT :P
20:35:49 <Phantom_Hoover> This line was so funny out of context.
20:36:03 <Gregor> Phantom_Hoover: Yup, that's what I'm lolwutting about.
20:36:09 <elliott> Hmm, can sizeof(int) actually overflow an int
20:36:21 <Deewiant> Why not?
20:36:26 <elliott> I don't think it possibly can
20:36:32 <elliott> Let's say char is a bit
20:36:40 <elliott> And sizeof(int) = one
20:36:42 <elliott> Hmm
20:36:45 <elliott> Does signedness fuck that up
20:36:50 <elliott> I'm pretty sure sizeof(int) can't overflow an int ever
20:37:03 <Deewiant> If int is 1 bit then sizeof(int) = negative one
20:37:14 <elliott> Can int even be one bit
20:37:16 <Deewiant> If you have two's complement
20:37:18 <elliott> That doesn't sound so valid
20:37:27 <Deewiant> No, CHAR_BIT >= 8
20:37:33 <elliott> Right then
20:37:38 <elliott> Show me how sizeof(int) can overflow an int
20:37:39 <Deewiant> And INT_MIN <= -32767, INT_MAX >= 32768
20:37:40 <Gregor> It's all about size_t vs int though.
20:37:49 <Phantom_Hoover> Who is this girl and why is she bitching about printf format strings.
20:37:56 <elliott> Phantom_Hoover: http://www.pvv.org/~oma/DeepC_slides_oct2011.pdf
20:38:18 <Deewiant> elliott: sizeof is implementation-defined
20:38:27 <Phantom_Hoover> Well naw.
20:38:29 <elliott> Deewiant: Like, completely?
20:38:39 <Deewiant> elliott: I can have an int with range [-2^16,2^16) and size 4 megabytes
20:38:47 <elliott> Deewiant: Hmm, right
20:38:51 <elliott> Pah
20:39:07 <Deewiant> elliott: §6.5.3.4 ¶5 "The value of the result of both operators is implementation-defined" (sizeof and _Alignof)
20:39:14 <Phantom_Hoover> <elliott> Hmm, can sizeof(int) actually overflow an int
20:39:22 <Gregor> The VALUE, but is the TYPE implementation-defined?
20:39:30 <elliott> Deewiant: So can sizeof(int) = 0 even though int is sixteen bits in range
20:39:31 <Phantom_Hoover> ln x < x, so no.
20:39:31 <Deewiant> No, the type is size_t.
20:39:37 <elliott> s/in/of/
20:39:39 <elliott> Phantom_Hoover: Yes it can
20:39:42 <elliott> Phantom_Hoover: Deewiant just proved it
20:40:01 <Gregor> Oh, Deewiant is tricky, isn't he :P
20:40:03 <Deewiant> elliott: I think it can actually be zero for everything
20:40:11 <Gregor> As there's nothing that says the size has to correspond in any logical way to the range.
20:40:14 <Deewiant> At least this section doesn't appear to exclude that possibility
20:40:19 <elliott> Deewiant: Even for char?
20:40:24 <Deewiant> No, char is 1
20:40:24 <elliott> char can't be 0 chars, that's just...
20:40:28 <elliott> Heh
20:40:32 <Phantom_Hoover> Foiled by standard madness.
20:40:35 <elliott> Deewiant: Hey, that means C's TCness is more plausible through conventional methods
20:40:38 <Deewiant> Other than that, it's the "size (in bytes) of its operand"
20:40:45 <olsner> I think there's something about everything being representible as a sequence of bytes
20:40:47 <elliott> (i.e. methods that make a "normal" expanding-tape BF interpreter able to be TC on a hosted system)
20:40:48 <olsner> *chars
20:40:59 <elliott> olsner: Does sizeof have to correspond to that
20:40:59 <elliott> Hmm
20:41:04 <elliott> I guess that's the only way you can exploit that
20:41:06 <elliott> But still
20:41:09 <elliott> Nothing says it has to be useful
20:41:25 <Deewiant> §6.2.6.1 ¶2 Except for bit-fields, objects are composed of contiguous sequences of one or more bytes, the number, order, and encoding of which are either explicitly specified or implementation-defined.
20:41:32 <Deewiant> So it has to be >= 1
20:41:51 <elliott> Deewiant: Where is that related to sizeof's result
20:41:58 <Deewiant> elliott: 2011-10-10 23:40:36 ( Deewiant) Other than that, it's the "size (in bytes) of its operand"
20:42:05 <elliott> Ah
20:42:18 <elliott> Deewiant: I think the committee would probably tell you that "size" has to mean "size" :-)
20:42:18 <Gregor> Anyway, the bigger problem with printf("%d", sizeof(foo)) is that it can fail even on sensible, legitimate systems. Particularly big-endian 64-bit ones.
20:42:20 <Sgeo|web> Wait, is C TC now?
20:42:23 -!- elliott has left ("Leaving").
20:42:26 -!- elliott has joined.
20:42:27 <Deewiant> Sgeo|web: No, it's not.
20:42:33 <elliott> Deewiant: It might be
20:42:39 <elliott> Deewiant: Set sizeof(int) = one, make int bignum
20:42:47 <elliott> CHAR_BIT = 9
20:42:53 <elliott> Assuming sizeof really can be nonsense
20:42:58 <Phantom_Hoover> Why 9?
20:42:59 <elliott> But I think the committee would tell you that you can't have a TARDIS type
20:43:09 <elliott> i.e. you can't possibly stuff n chars information into < n chars
20:43:11 <elliott> size
20:43:18 <elliott> thus partially specifying what "size" means
20:43:19 <elliott> Phantom_Hoover: I can type 9
20:43:39 <Sgeo|web> ^nr
20:43:48 <Deewiant> There's a lot of stuff about bits and bytes in §6.2.6.1 (in general) and §6.2.6.2 (for integer types) that I can't be bothered to read now
20:43:55 <Deewiant> It might be sensibly restricted.
20:44:02 <Sgeo|web> Why don't you have all of !@#$%^&*() in the topic?
20:44:07 <Sgeo|web> Except for ( I guess
20:44:12 <Sgeo|web> and ) maybe
20:44:13 <elliott> Sgeo|web: Too hard to pick shit out of
20:44:29 <elliott> Deewiant: I really hope the C committee reads this shit some day
20:44:47 <elliott> Deewiant: Or at least is somehow reeled into a Q&A session with us
20:45:05 <Deewiant> §6.2.6.1 ¶4 Values stored in non-bit-field objects of any other object type consist of n × CHAR_BIT bits, where n is the size of an object of that type, in bytes.
20:45:39 <elliott> Define "consist"
20:46:03 <Deewiant> consist (third-person singular simple present consists, present participle consisting, simple past and past participle consisted)
20:46:07 <Deewiant> (intransitive, construed with of) To be composed, formed, or made up (of).
20:46:11 <elliott> Bugger
20:46:14 <olsner> we have to go deeper: bignum bits
20:46:35 -!- yorick has joined.
20:46:37 <Deewiant> elliott: You can still pad them, they explicitly allow for padding bits
20:46:48 <Deewiant> So you can have sizeof(int) > (size_t)INT_MAX
20:46:56 <elliott> Deewiant: Sure, fine
20:47:01 <elliott> Deewiant: I'm just interested in proving C TC
20:47:03 <elliott> I mean
20:47:06 <elliott> I know it is TC standalone
20:47:10 <Deewiant> Yeah I doubt that's going to happen
20:47:13 <elliott> And hosted given a perverse OS
20:47:14 <Deewiant> Standalone?
20:47:19 <elliott> Deewiant: Erm, freestanding
20:47:22 <elliott> You don't need CHAR_BIT
20:47:26 <elliott> Bignum chars, sizeof everything is one, job done
20:47:33 <elliott> Thus infinite pointers
20:47:59 <Deewiant> Okay, cool
20:48:02 <olsner> oh, freestanding C relaxes the limitations on chars?
20:48:41 <elliott> olsner: it just doesn't have the header with CHAR_BIT
20:51:27 <elliott> Sequence points are so strange
20:51:44 <elliott> "
20:51:44 <elliott> Well of course, because sizeof returns the number of bytes. And in C
20:51:44 <elliott> int is 32 bits or 4 bytes, char is one byte and when the the size of structs
20:51:44 <elliott> are always rounded up to multiples of 4"
20:51:56 <elliott> Does anyone who actually believes this have a good enough understanding of the terminology to articulate it in these words
20:52:14 <Deewiant> elliott: Are you sure that this business with consisting of bytes and bits doesn't disallow your bignum chars
20:52:28 <elliott> Deewiant: Is "byte" not defined as what a char can store
20:52:36 <elliott> Deewiant: Anyway, as-if rule
20:52:54 <elliott> There's no way to find out whether a char is "really" composed out of bits in some nebulous metaphysical sense from within a conformant C program
20:52:56 <Deewiant> byte - addressable unit of data storage large enough to hold any member of the basic character set of the execution environment
20:52:57 <elliott> So it doesn't matter
20:53:04 <Deewiant> A byte is composed of a contiguous sequence of bits, the number of which is implementationdefined
20:53:09 <elliott> Deewiant: See above
20:53:10 <Deewiant> (Woo, soft hyphen)
20:53:38 <olsner> elliott: it demonstrates a lack of understanding of the abstract C language, but it's quite possible to develop a good enough understanding of how C works (in a specific environment) to say stuff like that
20:54:28 <elliott> Deewiant: I guess you could say, detecting whether chars are bignum is a way to detect that they're not composed of bits, since it requires application of this rule
20:54:37 <elliott> Deewiant: But I'm not sure you can actually detect that in a freestanding environment
20:54:41 <elliott> They could just be bigger than you ever bother to check for
20:54:49 <elliott> So I think the as-if rule works OK here
20:55:00 <Sgeo|web> as-if rule?
20:55:22 <elliott> Sgeo|web: The C standard has a clause saying you can implement it however you want so long as a conformant implementation cannot distinguish it from one implemented as the standard says
20:55:33 <Deewiant> conformant program*?
20:55:37 <elliott> Er right
20:55:41 <elliott> So e.g. if it says, you must use two's complement, you don't actually have to, as long as no conformant program can detect that you're not
20:55:50 <olsner> can a program detect bignum chars without invoking undefined behavior?
20:56:06 <elliott> olsner: Not a freestanding one
20:56:16 <Sgeo|web> elliott: ah, cool
20:56:21 <elliott> It can keep incrementing an unsigned char in the hopes that it'll overflow but that just proves that char is at least that big
20:56:41 <Deewiant> Can it decrement an unsigned char?
20:56:43 <Deewiant> From zero?
20:57:06 <elliott> Deewiant: Hmmm
20:57:19 <elliott> Deewiant: unsigned char can be smaller than signed char, right?
20:57:22 <elliott> And char can be signed char
20:57:42 <elliott> sizeof(unsigned char) = one; it can hold one octet and overflows appropriately, but just has infinitely much padding.
20:57:51 <elliott> char = signed char; sizeof(signed char) = one; bignum; no overflow
20:57:53 <olsner> I wonder if you could "switch to a bigger C" when running out of (say) pointers and plug the old program's state into that
20:58:02 <elliott> olsner: Not if it changes your answer to sizeof and the like
20:58:16 <elliott> Deewiant: So yeah, all signed types are their minimum possible size but have sizeof one thanks to copious imaginary padding
20:58:18 <elliott> Erm
20:58:20 <elliott> Deewiant: Unsigned
20:58:26 <elliott> All signed types are bignums
20:59:55 <elliott> Deewiant: And hosted C can be TC with file IO
20:59:57 <Deewiant> §6.2.5 ¶9 The range of nonnegative values of a signed integer type is a subrange of the corresponding unsigned integer type, and the representation of the same value in each type is the same.
21:00:04 <elliott> Since IIRC it's explicitly allowed that file position/sizes might not fit inside the types used to represent them
21:00:09 <elliott> I think you're meant to use negative one or something in that case
21:00:21 <elliott> Deewiant: Hmm
21:00:46 <elliott> Deewiant: Can't you just give the unsigned type a sign bit
21:00:53 <elliott> i.e. make unsigned char actually signed :-)
21:00:57 <olsner> Deewiant: but that only applies to non-negative values of signed integer types?
21:01:04 <Ngevd> I have just edited TVTropes
21:01:20 * Sgeo|web vaguely hopes he's doing enough in the "not sitting down/lying down so much he gets a blood clot and dies" department
21:01:33 <elliott> Sgeo|web: Sorry, you're going to die.
21:01:36 <olsner> sounds like it doesn't exclude unlimited negative values as long as the positive values is a subrange of the unsigned type
21:01:43 <Ngevd> Now I will sleep
21:01:46 -!- Ngevd has quit (Quit: what a big quitter he is, eh?).
21:01:48 <elliott> olsner: omg
21:01:51 <elliott> Deewiant: what the ols said
21:04:00 <Deewiant> I think that works
21:04:10 <elliott> Someone write a BF interp that stores everything with negative chars :-D
21:05:12 <olsner> so bignum chars actually work as long as all the extra values are hidden in the negative range?
21:05:22 <elliott> yep
21:05:34 <olsner> I can't remember all the other funny rules we had troubles with :P
21:05:51 <Phantom_Hoover> Sgeo|web, why the |web?
21:05:56 <elliott> Phantom_Hoover: webchat, presumably.
21:06:15 <olsner> so what's the thing with the bits? does that only apply for the (positive) range of the unsigned type?
21:07:23 <elliott> rot13Char :: Char -> Char
21:07:24 <elliott> rot13Char c
21:07:24 <elliott> | c >= 'a' && c <= 'm' || c >= 'A' && c <= 'M' = chr $ ord c + 13
21:07:24 <elliott> | c >= 'n' && c <= 'z' || c >= 'N' && c <= 'Z' = chr $ ord c - 13
21:07:24 <elliott> | otherwise = c
21:07:26 <elliott> Why is this in jhc
21:07:28 <elliott> olsner: as-if rule
21:08:20 <Sgeo|web> I guess a conformant C program can't detect whether it's in an environment that allows for TCness
21:08:55 <elliott> Sgeo|web: char could just be /big enough/ for all its uses
21:09:55 <elliott> Deewiant: Guess what the difference is between a (class) context on an instance and a (class) context on a value in standard Haskell
21:09:56 <elliott> No cheating
21:10:01 <elliott> Nobody else may participate
21:10:40 <Deewiant> Between "instance Foo a => ..." and "foo :: Foo a => ..."? Beats me.
21:11:26 <elliott> Deewiant:
21:11:31 <elliott> foo :: Foo (a b) => ...
21:11:32 <elliott> is OK;
21:11:36 <elliott> instance Foo (a b) => ...
21:11:37 <elliott> is not
21:11:47 <elliott> In an instance decl, the type param to the class must be a tyvar
21:11:50 <elliott> Erm
21:11:52 <elliott> In an instance decl's context, the type param to the class must be a tyvar
21:12:00 <elliott> In a value decl's context, it can be applications of tyvars too
21:12:16 <Deewiant> That seems awfully arbitrary.
21:12:27 <elliott> Deewiant: Yyyyyyyyep
21:12:35 <Deewiant> 2010 or 98 or both?
21:12:44 <elliott> Deewiant: 2010, didn't look at 98
21:12:49 <Deewiant> Probably both then
21:13:05 <elliott> The difference is between context (the value/data/newtype decl one) and scontext (the instance/class decl one)
21:14:27 <olsner> but, hmm... if freestanding programs can be TC because they don't need CHAR_BITS and standard (what's the term, hosted?) programs can do it using file i/o anyway, what was all the hoopla about?
21:14:49 <Deewiant> elliott: Oh well, hence FlexibleInstances I suppose :-P
21:14:59 <elliott> Deewiant: I'm trying to implement totally-standard Haskell at first :P
21:15:04 <olsner> or are FILE, fopen, etc not actually as standard as I believe?
21:15:12 <elliott> Deewiant: I'm tempted to use the same data-type here and enforce it arbitrarily somewhere else though
21:15:49 <Deewiant> I might not like you if you do that
21:15:57 <elliott> Deewiant: For which part
21:16:09 <Deewiant> Reusing the data type
21:16:28 <elliott> Deewiant: As opposed to duplicating all the code operating on them?
21:16:34 <Deewiant> Yep!
21:16:49 <elliott> I already have like fifty import types
21:16:50 <Deewiant> (N.B.: I'm just saying random crap, I'm tired)
21:17:04 <elliott> data Exports a
21:17:04 <elliott> = ExportAll
21:17:04 <elliott> | ExportOnly [a]
21:17:04 <elliott> deriving (Show)
21:17:04 <elliott> data Export
21:17:05 <elliott> = ExportVar ValName
21:17:07 <elliott> | ExportType TyName (Exports ValName)
21:17:09 <elliott> | ExportClass TyName (Exports ValName)
21:17:11 <elliott> | ExportMod ModName
21:17:13 <elliott> deriving (Show)
21:17:15 <elliott> data ImpSpec
21:17:17 <elliott> = ImportAll
21:17:19 <elliott> | ImportOnly [Import]
21:17:21 <elliott> | ImportHiding [Import]
21:17:23 <elliott> deriving (Show)
21:17:25 <elliott> data SubImports
21:17:27 <elliott> = SubImportNone
21:17:29 <elliott> | SubImportAll
21:17:31 <elliott> | SubImportOnly [ValName]
21:17:33 <elliott> deriving (Show)
21:18:41 <Phantom_Hoover> http://qntm.org/hypertime
21:18:43 <Phantom_Hoover> BASTARD
21:18:46 -!- Phantom_Hoover has left ("Leaving").
21:18:50 <elliott> Ah.
21:18:51 -!- Phantom_Hoover has joined.
21:18:56 <elliott> I see.
21:19:01 <elliott> Phantom_Hoover: What.
21:19:01 <Phantom_Hoover> XChat why do you close tabs so much
21:19:15 <Phantom_Hoover> Anyway, IDEA-STEALING TELEPATHIC BASTARD
21:19:30 <Phantom_Hoover> TELEBASTARD
21:19:48 <olsner> Phantom_Hoover: or maybe you've just been projecting your idea into his mind accidentally
21:21:37 <Deewiant> Maybe both
21:26:13 <elliott> Deewiant: Hmm, I should probably strip out the infix part of my Type ast, since there's only one infix type operator in haskell and it has a fixed fixity
21:26:32 <Deewiant> Only one?
21:27:10 <elliott> Deewiant: (->)
21:27:41 <Deewiant> foo :: Arrow (~>) => a ~> a
21:27:55 <elliott> Deewiant: I don't believe that's standard
21:28:00 <Deewiant> I don't know
21:28:33 <elliott> Phantom_Hoover: Hey, you didn't tell me Hughes was working on another novel.
21:29:41 <Phantom_Hoover> elliott, it didn't really captivate me.
21:29:45 <Phantom_Hoover> Not enough physics.
21:29:53 -!- Patashu has joined.
21:30:34 <elliott> constrs→constr1 | … | constrn (n ≥ 1)
21:30:34 <elliott> constr→con [!] atype1 … [!] atypek (arity con = k, k ≥ 0)
21:30:34 <elliott> |(btype | ! atype) conop (btype | ! atype) (infix conop)
21:30:34 <elliott> |con { fielddecl1 , … , fielddecln } (n ≥ 0)
21:30:34 <elliott> fielddecl→vars :: (type | ! atype)
21:30:39 <elliott> I fucking hate Haskell.
21:31:06 <olsner> elliott: klart som korvspad
21:31:08 <Deewiant> The alllowercase abbrs style of the grammar is annoying
21:31:26 <elliott> Deewiant: I don't give a shit about that, it's at least easy to talk about, what I care about is the complexity :P
21:31:36 <elliott> I think C's AST is simpler
21:31:42 <elliott> At least C90
21:34:45 <elliott> Deewiant: Yeah, I'm pretty sure infix type varsaren't standard:
21:34:49 <elliott> type→btype [-> type] (function type)
21:34:49 <elliott>
21:34:49 <elliott> btype→[btype] atype (type application)
21:34:49 <elliott>
21:34:49 <elliott> atype→gtycon
21:34:50 <elliott> |tyvar
21:34:52 <elliott> |( type1 , … , typek ) (tuple type, k ≥ 2)
21:34:54 <elliott> |[ type ] (list type)
21:34:56 <elliott> |( type ) (parenthesised constructor)
21:34:58 <elliott>
21:35:00 <elliott> gtycon→qtycon
21:35:02 <elliott> |() (unit type)
21:35:04 <elliott> |[] (list constructor)
21:35:06 <elliott> |(->) (function constructor)
21:35:08 <elliott> |(,{,}) (tupling constructors)
21:37:30 <elliott>
21:37:31 <elliott> decls→{ decl1 ; … ; decln } (n ≥ 0)
21:37:31 <elliott> decl→gendecl
21:37:31 <elliott> |(funlhs | pat) rhs
21:37:31 <elliott>
21:37:31 <elliott> cdecls→{ cdecl1 ; … ; cdecln } (n ≥ 0)
21:37:33 <elliott> cdecl→gendecl
21:37:35 <elliott> |(funlhs | var) rhs
21:37:38 <elliott> Deewiant: Spot the difference between decl and cdecl
21:37:58 <Deewiant> pat / var
21:38:03 <elliott> idecls→{ idecl1 ; … ; idecln } (n ≥ 0)
21:38:04 <elliott> idecl→(funlhs | var) rhs
21:38:04 <elliott> |
21:38:05 <elliott> Deewiant: And again
21:38:33 <Deewiant> gendecl / not
21:38:55 <elliott> Argh, LHSes are such a mess
21:45:24 <elliott> Deewiant: Semantic or syntactic error?: (top-level declaration:) Just f x = undefined
21:45:46 <Deewiant> Syntactic?
21:46:10 <elliott> Deewiant: Yep
21:46:23 <elliott> Deewiant: Except, wait
21:46:25 <elliott> No
21:46:28 <elliott> Semantic
21:46:31 <elliott> However...
21:46:37 <elliott> Deewiant: (Just f) x = undefined
21:46:39 <elliott> is syntactic.
21:46:41 <elliott> (error)
21:46:47 <elliott> Fuckin' Haskell, man
21:46:53 <Deewiant> Why is the earlier not syntactic
21:47:07 <Deewiant> Is a top-level capital letter ever valid?
21:47:08 <elliott> Deewiant: It's just passing a wrong number of arguments to Just
21:47:10 <elliott> Err, yes
21:47:11 <elliott> Just x = Just 99
21:47:15 <Deewiant> Oh, bah
21:47:20 <elliott> let Just x = f 9 in ...
21:47:26 <elliott> Deewiant: But (Just f) x isn't ok because basically
21:47:29 <elliott> Oh hmm it might be
21:47:32 <Deewiant> Yeah but nobody does that at toplevel :-P
21:47:33 <elliott> OK but the point is that an lhs is either pat or funlhs
21:47:35 <elliott> And eurgh
21:47:39 <coppro> haha
21:56:55 <elliott> Deewiant: What does your C AST look like
21:57:01 <elliott> I want to feel better and/or worse about mien
21:57:02 <elliott> mien
21:57:03 <elliott> mine
21:57:22 <Deewiant> I don't have an AST yet
21:57:34 <Deewiant> I really haven't been spending much time on it at all :-P
21:57:40 <Deewiant> I have a mostly implemented preprocessor
21:57:52 <Deewiant> (No #pragma and other less important stuff)
21:58:34 <Deewiant> (#pragma, #line, #error)
21:58:57 <elliott> Deewiant: So "unimportant"
21:59:19 <Deewiant> #error never needs to be implemented, it always does what it should
21:59:44 <Deewiant> #line would require implementing proper error handling, meh
22:00:09 <elliott> <Deewiant> #error never needs to be implemented, it always does what it should
22:00:10 <elliott> lol
22:00:14 <Deewiant> #pragma is annoying because it expands into _Pragma and there might be some trickiness there, plus it's only for some floating point stuff
22:00:25 <elliott> Uh, and errors, I think
22:01:08 <elliott> Gregor: Holy shit, you JS fucktards have finally discovered that you can get a compiler to do CPS
22:01:11 <elliott> Praise the fucking lord
22:01:35 <Deewiant> #pragma STDC {FP_CONTRACT,FENV_ACCESS,CX_LIMITED_RANGE} {ON,OFF,DEFAULT}
22:01:40 <Deewiant> Or implementation-defined behaviour
22:03:10 <Deewiant> Oh and also #if isn't implemented, that was kind of the next thing to do along with adding tokens
22:03:32 <Deewiant> I noticed that trifecta only does ByteStrings so I can't use it to parse a list of ADTs :-P
22:03:57 <elliott> Deewiant: You're meant to layer that on top with parser transformers, I believe
22:04:25 <Deewiant> Like how
22:04:35 <elliott> Deewiant: Dunno, there's one to do layout
22:04:45 <elliott> I have to restrict myself to Parsec because I want to be able to self-host without any language extensions
22:05:18 <Deewiant> Well MonadLayout is a subclass of MonadParser, and MonadParser is very Char/Word8/ByteString
22:05:33 <elliott> Well you can't accomplish parsing a list of ADTs, sure
22:05:39 <elliott> But I think you could achieve whatever effect you want otherwise
22:05:59 <Deewiant> The effect I want is that I have a list of ADTs and want to parse it :-)
22:06:01 <elliott> | LFloat Integer Integer (Maybe Integer)
22:06:01 <elliott> Hmm, I think I followed the grammar a bit too closely there
22:06:04 <elliott> Should be Rational
22:06:11 <elliott> Rather than an Integer for the fractional part :P
22:06:12 <Deewiant> Or maybe I don't, but I think I do
22:06:21 <elliott> Deewiant: ~~XY problem~~
22:06:26 <elliott> ~~~~
22:06:29 <Deewiant> ~~~~~~~~~~~
22:06:30 <Deewiant> Wut
22:06:42 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
22:06:56 <elliott> Deewiant: The ~s are for deemphasis, or something
22:07:06 <Deewiant> What's "XY problem"
22:07:38 <elliott> http://www.google.co.uk/search?aq=f&gcx=c&sourceid=chrome&ie=UTF-8&q=xy+problem
22:08:01 -!- Phantom_Hoover has joined.
22:08:08 <Deewiant> Yeah, pretty much
22:08:28 <elliott> i.e. Tool is too limited, try something else :-)
22:08:29 <Deewiant> But to be fair I'm somewhat esoing the implementation, it being DS9K and all
22:08:40 <Deewiant> So I think I'm justified in trying to do it weirdly
22:08:50 <Deewiant> I might just depend on both parsec and trifecta
22:08:54 <elliott> I don't actually believe the XY problem is a good diagnosis 90 percent of the time
22:09:11 <elliott> It only works if all the people with problems are inexperienced
22:09:31 <elliott> I guess constantly invoking it ensures that experienced people won't bother, so I guess it works sort of
22:11:07 -!- ais523 has quit (Remote host closed the connection).
22:11:25 <Phantom_Hoover> http://en.wikipedia.org/wiki/File:Comeflywithme.jpg
22:11:34 <Phantom_Hoover> Help Frank Sinatra wants to eat my soul.
22:14:35 <elliott> You weren't aware?
22:17:12 <elliott> "The grammar is ambiguous regarding the extent of lambda abstractions, let expressions, and conditionals. The ambiguity is resolved by the meta-rule that each of these constructs extends as far to the right as possible."
22:17:19 <elliott> Deewiant: This is the worst rule in anything ever
22:17:39 <Deewiant> C has maximal munch too
22:18:08 <elliott> More like maximal TERRIBLE STANDARD.
22:18:40 * Phantom_Hoover → sleep
22:18:41 -!- Phantom_Hoover has quit (Quit: Leaving).
22:19:32 <elliott> Deewiant: http://sprunge.us/CEce Make my AST bearable, thanks
22:21:30 <Deewiant> Why is EList nonempty
22:22:06 <Deewiant> And ETuple
22:22:20 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
22:22:35 <Patashu> no binary base???
22:22:40 <Patashu> does anyone still use octasl
22:22:46 <Deewiant> chmod does
22:23:02 <elliott> Deewiant: Because [] and () are constructors, not list/tuple literals
22:23:08 <Patashu> anything besides chmod?
22:23:09 <elliott> Deewiant: The grammar agrees with me
22:23:12 <elliott> Deewiant: Well, that's not true
22:23:22 <elliott> Deewiant: The grammar says that () is a constructor and (a) is a parenthesised expression and (a,b) is a tuple literal
22:23:33 <elliott> Deewiant: It also says that [] is a list literal and [a] is a list literal and [a,b] is a list literal
22:23:41 <elliott> But that's ridiculously inconsistent so I'm doing [] as a constructor too
22:23:56 <Deewiant> heh
22:24:00 <elliott> Oh, it also says that [] is a constructor, it's just that that's not what the expression [] means, it's a list literal
22:24:05 <Deewiant> :-D
22:24:15 <elliott> I think in a pattern [] is the constructor, not the list literal
22:24:16 <elliott> But I could be wrong
22:24:39 <Deewiant> What's [a,b] in a pattern then
22:25:03 <Patashu> you know what ascii needs? more funny brackets
22:25:09 <Patashu> [(<{ just ain't enough
22:25:18 <elliott> Deewiant: A list literal
22:25:19 <Deewiant> ASCII needs to not change
22:25:25 <elliott> I think [] in a pattern actually is a list literal
22:25:28 <Deewiant> elliott: So why is [] a constructor there agh
22:25:28 <Patashu> I'm going to change it retroactively
22:25:30 <Patashu> with my time machine
22:25:31 <elliott> I'm not sure when []-constructor ever helps
22:25:33 <elliott> As in
22:25:35 <elliott> Helps = is used
22:25:41 <elliott> http://www.haskell.org/onlinereport/haskell2010/haskellch3.html
22:25:47 <elliott> Deewiant:
22:25:48 <elliott> |( exp1 , … , expk ) (tuple, k ≥ 2)
22:25:48 <elliott> |[ exp1 , … , expk ] (list, k ≥ 1)
22:25:55 <elliott> 3.2 Variables, Constructors, Operators, and Literals
22:25:55 <elliott> aexp→qvar (variable)
22:25:55 <elliott> |gcon (general constructor)
22:25:55 <elliott> |literal
22:25:55 <elliott> gcon→()
22:25:56 <elliott> |[]
22:25:58 <elliott> |(,{,})
22:26:00 <elliott> |qcon
22:26:07 <Deewiant> O kay
22:26:32 <elliott> Deewiant: O erjan?
22:26:39 <Deewiant> O no
22:26:47 <elliott> God, my Core language will be so much nicer than this
22:26:50 <elliott> De Bruijn, bitches
22:28:28 <elliott> Deewiant: I don't suppose you have any experience with Parsec's "language" stuff
22:28:39 <Deewiant> No
22:38:44 <olsner> sweet, my kernel can speak (I gave it printf)
22:38:58 <Patashu> what does it speak into?
22:39:27 <elliott> olsner: you had to go through an assembler bug to get to printf?
22:39:50 <olsner> elliott: nah, not really, I just happened to do them in that particular order
22:40:03 <elliott> topdecl→instance [scontext =>] qtycls inst [where idecls]
22:40:03 <elliott> inst→gtycon
22:40:04 <elliott> |( gtycon tyvar1 … tyvark ) (k ≥ 0, tyvars distinct)
22:40:04 <elliott> |( tyvar1 , … , tyvark ) (k ≥ 2, tyvars distinct)
22:40:04 <elliott> |[ tyvar ]
22:40:04 <elliott> |( tyvar1 -> tyvar2 ) (tyvar1 and tyvar2 distinct)
22:40:22 <olsner> I mean, I had a printf in user-mode that used my syscall to print stuff, but it didn't work in kernel mode
22:40:42 <elliott> Deewiant: I like how it reiterates the entire type syntax just to specify distinctness
22:42:10 <Deewiant> I am sleep now -->
22:42:10 <olsner> and the main symptom of the assembler bug was that the whole thing got misassembled and failed to boot, nothing related to printf
22:46:05 -!- zzo38 has joined.
22:46:39 <zzo38> I have played Dungeons & Dragons game today. Before I type the recording, first please try to guess certain things about the session.
22:47:36 <elliott> Finally, I just need constructors and foreigns and my AST is done
22:50:30 -!- tiffany has quit (Quit: Leaving).
22:52:31 <pikhq_> I predict there were neither dungeons nor dragons.
22:52:49 <zzo38> Correct. During this session there was neither.
22:53:07 <pikhq_> It's a pretty safe guess, really.
22:53:53 -!- derdon has quit (Remote host closed the connection).
22:56:42 <zzo38> You have to make different kind of guesses. Such as, amount of money the characters have gained/lost. Number of power points used. Hit points gained/lost. Experience levels. CR of brains consumed. Difference of total XP between mine and my brother's character.
22:57:00 <elliott> fdecl→import callconv [safety] impent var :: ftype (define variable)
22:57:00 <elliott> |export callconv expent var :: ftype (expose variable)
22:57:00 <elliott> callconv→ccall | stdcall | cplusplus (calling convention)
22:57:00 <elliott> |jvm | dotnet
22:57:00 <elliott> | system-specific calling conventions
22:57:01 <elliott> impent→[string]
22:57:03 <elliott> expent→[string]
22:57:05 <elliott> safety→unsafe | safe
22:57:07 <elliott> Ffffffffffff
22:57:08 <zzo38> Whether or not the next town entered (since previous session) contained a library.
22:57:39 <zzo38> Number of broken flasks.
22:57:47 <zzo38> Points of damage taken.
22:57:51 <zzo38> Points of damage dealt.
22:58:04 -!- copumpkin has joined.
23:03:27 <zzo38> And a bonus random variable which I will decide as soon as you guess.
23:03:34 <zzo38> Now try to guess *all* of these events.
23:04:34 <zzo38> (Warning some of these might be trick questions)
23:07:53 <zzo38> (Or maybe all of them are, but guess anyways. There is an answer, even if it is zero or N/A)
23:11:38 -!- calamari has joined.
23:17:34 <Sgeo|web> There's always an answer, even if the answer is that there isn't an answer? (Ok, so that's not what n/a actually stands for, but bluh)
23:20:18 <tswett> Gregor: have you heard the so-called Homestuck "Showtime" full piano refrain? You might like it. It sounds similar to stuff you've written, except it's about a fifth of the length of your typical piece.
23:20:42 <zzo38> Sgeo|web: Yes. Zero, some, or all of the questions I specified, must be answered with "N/A".
23:23:27 <Vorpal> tswett, you dislike lengthy compositions?
23:23:46 <elliott> Yes, tswett said that.
23:23:51 <elliott> That is a thing tswett said, definitely.
23:23:53 <Vorpal> no not exactly
23:24:01 <elliott> No, he said exactly that.
23:24:01 <Vorpal> besides Gregor's compositions aren't exactly long
23:24:06 <Vorpal> like 6 minutes iirc?
23:24:09 <elliott> He definitely said exactly that.
23:24:12 <Vorpal> which is quite short
23:24:15 <elliott> That is why your interpretation is reasonable.
23:24:16 <Vorpal> elliott, just shut up
23:24:35 <elliott> Oh. I understand now.
23:25:14 <Sgeo|web> tswett: I think there's no full in the name, and the "full" in the credits is just referring to the fact that it wasn't cut off
23:25:50 <Vorpal> btw I tried out Rage today. Kind of average game. Average but not excellent at anything. Oh and the texture detail is very uneven, from state of the art to stuff you would expect in NWN1.
23:26:09 <Sgeo|web> A lot of Homestuck songs are altered for the comic
23:26:33 <Sgeo|web> "The recording on the Homestuck album is slightly different to the sheet music version" some person on YouTube (do not go on youtube)
23:26:35 <elliott> Marshallable foreign types. The argument types ati produced by fatype must be marshallable foreign types; that is, either
23:26:35 <elliott> a basic foreign type,
23:26:35 <elliott> a type synonym that expands to a marshallable foreign type,
23:26:35 <elliott> a type T t′1 … t′n where T is defined by a newtype declaration
23:26:35 <elliott> newtype T a1 … an = N t
23:26:37 <elliott> and
23:26:39 <elliott> the constructor N is visible where T is used,
23:26:41 <elliott> t[t′1∕a1..t′n∕an] is a marshallable foreign type
23:26:43 <elliott> Ha ha ha ha ha ha ha.
23:38:10 <elliott> "Light speed, or 300,000 kilometers a second" --physorg.com
23:38:15 <elliott> Come on, guys, it has a precise value, there is no excuse.
23:41:49 <zzo38> Swiss Ephemeris definitely seems a far better features than Astrolog. It can compute all the things of Astrolog, but it can also compute sunrise/sunset for civil, nautical, and astronomical twilight; it can take the atmospheric pressure into account; the phase of the moon; eclipses; ability to enter fictitious moons; topocentric, heliocentric, barycentric, and astrometric positions; etc......
23:42:23 <zzo38> elliott: Maybe they forgot the precise value. Or they don't care about it. But they probably should.
23:46:17 <Sgeo|web> I don't see a good reason not to approximate in a fluff piece, but it would be nice if it said "approx." or something
23:47:08 <zzo38> Sgeo|web: Yes I would agree.
23:47:27 <zzo38> They should put "approx."
2011-10-11
00:10:02 <tswett> Or "about".
00:10:11 <tswett> elliott: technically, every number has a precise value.
00:10:20 <elliott> tswett: That doesn't mean we know it.
00:10:50 <zzo38> But the speed of light has a precise value because the units are defined that way.
00:12:43 <pikhq_> tswett: Unlike most physical quantities, the speed of light has a perfectly known value.
00:13:10 <pikhq_> It is 299,792,458 meters per second precisely.
00:13:47 <pikhq_> (however, the meter and the second have never been *precisely* measured)
00:14:49 <elliott> http://sprunge.us/CeBF
00:14:51 <elliott> Finally.
00:17:48 <shachaf> elliott: You're writing qhc, eh?
00:18:12 <elliott> Yes. Unless you can prove to me that the name qhc is actually being used in which case I'll be writing some other letter followed by hc.
00:24:28 <elliott> Hey shachaf, write my parser for me.
00:24:45 <shachaf> elliott: You should use Trifecta!
00:25:02 <shachaf> elliott: sorear was the person who was talking about "QHC" a few years ago, but I think he's lost interest in Haskell.
00:25:05 <shachaf> So it's probably fine.
00:25:13 <elliott> Isn't sorear the TAEB guy?
00:25:24 <shachaf> Among other things.
00:25:33 <shachaf> elliott: edwardk will be happy if you used trifecta to write your parser.
00:25:40 <elliott> No, he's literally just the TAEB guy. And the only reason he's the TAEB guy is because ais is also the TAEB guy.
00:25:53 <elliott> shachaf: I'm aiming for self-hosting with no language extensions.
00:26:08 <elliott> shachaf: I don't feel like examining Trifecta's ten thousand dependencies to find out how hard it would be to make them standard.
00:26:35 <shachaf> elliott: But it's the best library ever.
00:27:03 <elliott> shachaf: I'll rewrite the parser once I get around to writing my parser combinator library.
00:27:29 <shachaf> Great, so you can use trifecta until then. :-)
00:27:33 <shachaf> Will your library be better than trifecta?
00:29:11 <elliott> shachaf: Yes.
00:29:15 <shachaf> Impossible.
00:29:21 <elliott> shachaf: It's going to be based on the parsing-with-derivatives stuff.
00:29:29 <shachaf> We'll see.
00:29:34 -!- fungot has quit (Ping timeout: 244 seconds).
00:29:45 <elliott> With nice diagnostics (I was into this before trifecta came along, okay) and ~streaming~.
00:30:00 <elliott> So it should be able to parse any CFG, the less ridiculous the more efficient.
00:30:06 <shachaf> Do those tildes form a little stream?
00:30:39 -!- fizzie has quit (Ping timeout: 240 seconds).
00:30:39 <elliott> Yes.
00:30:40 <shachaf> elliott: You should improve the library for https://github.com/orenbenkiki/yamlreference/blob/master/Text/Yaml/Reference.bnf
00:31:04 <elliott> But I don't like yaml. :( Also, I think I've seen that parser before.
00:31:12 <elliott> Or at least something with the same syntax.
00:31:20 <shachaf> How can you not like YAML?
00:32:17 <elliott> I'm a soulless shell of a human being.
00:32:22 <elliott> It happens.
00:34:53 <elliott> shachaf: Hey, what's a good interned string library.
00:36:02 <shachaf> edwardk wrote one
00:36:12 <shachaf> Does that mean it's good, or does that only work for Trifecta?
00:37:36 <elliott> shachaf: It depends on at least type families.
00:37:40 <elliott> I don't want to implement type families.
00:37:52 <shachaf> Type families are all the rage, man.
00:38:05 <shachaf> You're not going to restrict yourself to boring old Haskell 98, are you?
00:38:13 <elliott> Two thousand and ten to start with.
00:38:13 <shachaf> You know who else restricted himself to Haskell 98?
00:38:16 -!- fizzie has joined.
00:38:23 <elliott> I'm kind of planning a pure-type-system approach, so type families shouldn't be /that/ hard, really.
00:38:38 <shachaf> That's the spirit.
00:38:53 <elliott> shachaf: ...but I still want to keep the compiler pure Haskell, so it can bootstrap nicely from other things.
00:39:26 <shachaf> elliott: Write a QHC-Haskell-to-plain-Haskell compiler.
00:39:44 <elliott> shachaf: [asterisk]qhc
00:39:52 <shachaf> Don't asterisk me.
00:40:18 <shachaf> Alternatively, do the thing kmc always talks about where you compile to bytecode and then have a portable ANSI C bytecode interpreter.
00:43:05 <elliott> shachaf: How is that better than having a portable C backend?
00:45:42 <shachaf> Are you going to be writing a portable C backend?
00:45:55 <shachaf> elliott: What's the state of qHc right now, anyway? Is it anything other than an AST?
00:46:06 <elliott> shachaf: It's an AST, but in fairness I've only worked on it for like a day.
00:46:21 <elliott> shachaf: Next up is a parser-sans-layout because I can't be bothered to deal with layout.
00:46:25 <zzo38> Kinds appear to be missing from what you have
00:46:25 <elliott> After that, who knows.
00:46:33 <elliott> Kinds aren't part of the language.
00:46:37 <elliott> Well, they are, but not the AST.
00:47:45 <zzo38> I wrote a parser for Haskell, which also does not deal with layout. However it has a few other restrictions too.
00:48:59 <shachaf> elliott: Trifecta makes layout so easy!
00:49:06 <elliott> shachaf: That is CHEATING.
00:49:18 <shachaf> elliott: Seems ideal for you, then.
00:49:30 <elliott> shachaf: I'm offended.
00:49:40 <shachaf> "I resent that! I don't deny it, but I resent it!"
00:52:31 <elliott> "Reports that Geoffrey and I and the sound engineers were buried in a subterranean studio for weeks on end, taking as long to produce a single sound effect as other people took to produce an entire series (and stealing everybody else’s studio time in which to do so), were all vigorously denied but absolutely true."
00:57:39 <zzo38> Another problem with the Haskell parser I wrote is that the error messages do not always make sense.
00:58:01 <elliott> Can I see yours? :-P
01:01:00 <zzo38> http://sprunge.us/RYSW
01:01:30 * Sgeo|web decides that his "omniscience paradox" is pretty much just the same thing as "Is the answer to this question 'no'?"
01:01:45 <zzo38> OK
01:02:11 <elliott> That looks a bit overly short for being a Haskell parser
01:02:14 <elliott> What limitations does it have beyond no layout? :P
01:03:04 <Sgeo|web> So much for disproving omniscient beings with math bluh
01:03:25 <zzo38> You are not allowed to have \& at the end of a string literal, and floating point numbers must have a decimal point, whether or not the exponent is specified. In addition, quasiquotation uses Haskell syntax instead of its own.
01:03:45 <elliott> zzo38: I don't see any handling of e.g. data declarations
01:04:03 <zzo38> It only parses into tokens and groups of tokens, so far. I can add ASTs later.
01:05:25 <zzo38> The things I currently have are also a bit messy and I can improve them a bit, at a later time.
01:07:04 <zzo38> But I intended to use it for a preprocessor and not using all the syntax; for example the "o" and "x" in "0o" and "0x" must be in lowercase, and the hexadecimla "ABCDEF" must be uppercase. But I have added some extensions, such as the ability to specify integer literals in binary.
01:10:12 <elliott> http://en.wikipedia.org/w/index.php?title=Quantum_mechanics&curid=25202&diff=454965738&oldid=454857120
01:12:57 <Sgeo|web> How is ABCDEF *gets shot* coming along?
01:13:05 <Sgeo|web> I mean, other than "It isn't"
01:13:43 <Sgeo|web> Adjudicated Blind Collaborative Design Esolang Factory
01:14:12 <Sgeo|web> Please tell me it's still up
01:14:12 <Sgeo|web> :(
01:15:31 <Sgeo|web> Yay it's still up
01:18:47 <zzo38> I can tell you something about the D&D session I played today: Neither of us used any class features during this session (although both of us have used some of the racial abilities).
01:22:24 -!- augur has quit (Remote host closed the connection).
01:31:21 -!- Vorpal has quit (Ping timeout: 258 seconds).
01:44:27 -!- augur has joined.
02:00:30 <zzo38> I have still not selected the two spells from next experience level. (They can be up to 3rd level)
02:04:28 -!- CakeProphet has joined.
02:04:28 -!- CakeProphet has quit (Changing host).
02:04:28 -!- CakeProphet has joined.
02:50:57 -!- augur has quit (Remote host closed the connection).
02:51:08 -!- clog has quit (Ping timeout: 244 seconds).
02:51:14 -!- clog has joined.
03:04:52 <zzo38> In the Dungeons&Dragons game, once I wanted to tie a note to a rock to throw it through a window so that they can read it. I had no writing equipment, so instead I looked through a book I had for a similar phrase, tore it out, and tied that to the rock.
03:05:18 <pikhq_> Should've prepared exploding runes.
03:05:39 <zzo38> I intended them to be read, not exploded!
03:06:08 <pikhq_> Oh, it'll get read.
03:06:13 <pikhq_> And then explode.
03:06:51 -!- MDude has changed nick to MSleep.
03:07:51 -!- CakeProphet has quit (Ping timeout: 240 seconds).
03:08:20 <zzo38> I did not intend them to explode. I was not intending to damage anyone, but I had to break the window to get the message through (I could not actually get anywhere near the window, due to magic fog). I do not know that spell, do not have a spellbook, and do not want to waste the magic.
03:09:51 <zzo38> Also, I wanted to be able to repair the book afterward.
03:09:58 <pikhq_> Still should've prepared exploding runes.
03:12:00 <zzo38> You mean, if you had it your way, it would. And then it would have exploded *you*.
03:12:07 <coppro> I'm with pikhq_
03:12:13 <coppro> "Guess which spell I prepared this morning"
03:13:33 <zzo38> Death to the Caster.
03:14:50 <zzo38> What do you think would be the way to design variations on the Mount spell to summon different mounts?
03:16:01 <calamari> http://en.wikipedia.org/wiki/META_II
03:17:03 <zzo38> O, so it means, VALGOL I and VALGOL II are separate from VALGOL.
03:17:23 <zzo38> (As well as different from each other, too.)
03:18:21 <zzo38> And it is the first virtual machine; that is also interesting to know. As well as some of its other features.
03:19:08 <calamari> it's the master language lol
03:21:11 <zzo38> Yes.
03:23:38 <Patashu> I just came up with a craaazy idea: You know how you can 'fingerprint' people by their gait? I was thinking of 'fingerprinting' people who make rhythm game levels by asking for them to make a 'stream' of a few hundred notes in row, analyzing it markov chain style and then applying it to other streams they make
03:23:42 <Patashu> Since everyone does it a little differently
03:23:48 <Patashu> You could even use it to make streams for you and save time
03:25:03 <zzo38> Yes, if you are satisfied with markov chain generated stream, it would work, I suppose.
03:31:00 <zzo38> I did not record the experience totals for the D&D game yet, but can you try to guess the difference between mine and my brother?
03:33:46 -!- augur has joined.
03:35:51 <zzo38> I have an idea of a D&D single use magic item that allows you to use a single black card of your choice from the deck of many things; the target must be the same as the user.
03:36:12 <zzo38> (Red cards and jokers are not permitted in this case)
03:42:40 <zzo38> Once someone attempts to use it (a standard action provoking attacks of opportunity), they will know what it is and what the choices are, but is not forced to use it immediately; you are permitted to delay its use indefinitely, but it can only be used once. Once it is identified, it can be activated as an immediate action.
03:43:59 <zzo38> How much do you think it would be worth?
03:51:57 -!- nooga has quit (Ping timeout: 255 seconds).
03:56:31 <zzo38> Next time, instead of the "Adjudicated Blind Collaborative Design Esolang Factory", you can make up the "Adjacent Blink Collated Deserted Esoteric Factoids".
04:32:39 <zzo38> "Catch-22 (logic): In need of something which can only be had by not being in need of it." A computer game I once had included something like this. Someone tells you that they will give you two water energies, but only if you don't need it. However, in that game, you are permitted to lie and they will believe you.
04:45:42 -!- Jafet has joined.
04:55:27 <shachaf> elliott: How's qнc going?
04:55:46 <elliott> shachaf: Trying to think of a decent first approximation of a name representation.
04:55:49 -!- Jafet has quit (Quit: Leaving.).
04:56:01 <elliott> This is to distract myself from the fact that Haskell's grammar is awful.
04:56:15 <shachaf> elliott: You should call it by some untypeable Unicode name.
04:56:24 <shachaf> That way only people like kmc can use it.
04:56:42 <elliott> Well, "qhc" is untypeable with a sufficiently non-English keyboard.
04:56:45 <elliott> And it's certainly Unicode.
04:56:53 <shachaf> elliott: Can you fix all the bad things about Haskell while you're at it?
04:56:57 <elliott> If kmc uses an English keyboard, we're all set.
04:57:02 <elliott> shachaf: No. Try @.
04:57:11 <shachaf> What language is @ written in?
04:57:16 <shachaf> Does @ transcend language?
04:57:33 <elliott> @ constitutes a self-hosted @lang environment.
04:57:39 <elliott> The @lang compiler will be written in @lang.
04:57:43 <shachaf> elliott: Can you get rid of the arrow in lambda syntax?
04:58:04 <elliott> Probably there will be a lower-level language underlying it, say @ll, that the @lang compiler compiles down to, and that certain sections of low-level code are written in.
04:58:05 <shachaf> That thing always bothered me. It's not as if it's a huge compatibility issue or anything.
04:58:22 <elliott> And obviously bootup/low-level allocation/scheduler code will be platform-specific assembly.
04:58:26 <elliott> shachaf: And replace it with what?
04:58:30 <shachaf> Nothing.
04:59:17 <elliott> shachaf: What's (\f x f x)?
04:59:34 <shachaf> \f\x f x, you mean?
05:00:10 <elliott> shachaf: Ah.
05:00:32 <elliott> shachaf: Wait, I know the answer: No.
05:00:49 <shachaf> Aw.
05:02:02 -!- Jafet has joined.
05:05:55 <Madoka-Kaname> :t (\f x f x)
05:05:56 <lambdabot> parse error on input `)'
05:05:59 <Madoka-Kaname> :t (\f x -> f x)
05:06:00 <lambdabot> forall t t1. (t -> t1) -> t -> t1
05:06:05 <Madoka-Kaname> :t (.)
05:06:05 <lambdabot> forall a b (f :: * -> *). (Functor f) => (a -> b) -> f a -> f b
05:06:10 <Madoka-Kaname> Erm
05:06:11 <Madoka-Kaname> :t ($)
05:06:12 <lambdabot> forall a b. (a -> b) -> a -> b
05:06:23 <Madoka-Kaname> > 1 `(\x y -> x + y)` 2
05:06:24 <lambdabot> <no location info>: parse error on input `('
05:06:27 <Madoka-Kaname> :(
05:13:08 -!- clog has quit (*.net *.split).
05:13:08 -!- Madoka-Kaname has quit (*.net *.split).
05:13:08 -!- jix has quit (*.net *.split).
05:13:08 -!- TeruFSX has quit (*.net *.split).
05:14:10 -!- clog has joined.
05:14:10 -!- Madoka-Kaname has joined.
05:14:10 -!- jix has joined.
05:14:10 -!- TeruFSX has joined.
05:15:23 <zzo38> Someone said there is some possible personality effects based on the month you are born, according to New Scientist. What is the title of the Wikipedia article relating to that study? Obviously you still have to be careful, to do statistics accurately and so on
05:15:50 <zzo38> Is the season related? Is cultural effects related?
05:16:50 -!- BeholdMyGlory has quit (Ping timeout: 244 seconds).
05:17:08 -!- BeholdMyGlory has joined.
05:18:39 <Jafet> My money is on seasonal TV programming.
05:19:54 <zzo38> Yes, maybe. Of course you also should remember, that usually the birthday is celebrated close to the actual date of each year of their actual birthdate.
05:21:19 <zzo38> Maybe that has something to do with it too.
05:23:28 -!- augur has quit (Read error: Connection reset by peer).
05:23:33 -!- augur_ has joined.
05:25:43 <Madoka-Kaname> Seasonal TV programming cycles too fast, and birthdays happen to little, I think.
05:25:49 <Madoka-Kaname> (too fast compared to development, at least)
05:29:07 <zzo38> Yes, possibly. Do you have the report?
05:31:25 <Gregor> When my registrar is emailing me that codu.xxx is available, that's a problem.
05:33:14 <Sgeo|web> Rule 34 applied to music?
05:33:18 <elliott> `addquote <Gregor> When my registrar is emailing me that codu.xxx is available, that's a problem.
05:33:22 <HackEgo> 706) <Gregor> When my registrar is emailing me that codu.xxx is available, that's a problem.
05:33:25 <elliott> Gregor: Register it.
05:34:42 -!- copumpkin has quit (Ping timeout: 248 seconds).
05:34:44 <zzo38> Sgeo|web: What about Rule 34 applied to music?
05:34:52 -!- copumpkin has joined.
05:35:21 <zzo38> Gregor: Register it without including an HTTP server (or at least, not on port 80)
05:35:37 <shachaf> elliott: I take offense to that!
05:35:43 <shachaf> There's nothing legitimate about them.
05:36:32 <Sgeo|web> zzo38: That's what I presume codu.xxx would partially contain
05:36:52 <Gregor> Or ... just make porn *shrugs*
05:37:21 <elliott> Gregor: Have you registered it yet.
05:38:36 <zzo38> No, I think you should leave port 80 unused on that server.
05:38:53 <elliott> Gregor: zzo really doesn't want you to have an HTTP server.
05:39:34 * shachaf listens on port 80
05:39:39 <shachaf> I hear nothing.
05:42:15 <zzo38> No, I just don't want you to have an HTTP server on the "codu.xxx" server.
05:42:29 <zzo38> (Regardless of its contents)
05:43:08 <elliott> zzo38: Why
05:44:20 <zzo38> Because of the stupid TLD system.
05:45:08 <elliott> What has that got to do with HTTP
05:47:06 -!- GreaseMonkey has joined.
05:51:30 -!- elliott has quit (Remote host closed the connection).
05:57:27 -!- Jafet has quit (Quit: Leaving.).
06:18:53 <calamari> zzo38: so new scientist is supporting astrology?
06:20:22 <zzo38> calamari: No. It was doing a statistical study of the months people are born (nothing to do with stars). I do not know the details; but I have some guesses as to what can effect it.
06:23:04 <zzo38> Obviously it does not make sense to plot the IAU zodiac on a horoscope; because only the angular zodiacs are suitable for that purpose.
06:23:12 <calamari> "Sun sign astrology is the form of astrology most commonly found in many newspaper and magazine columns. It is a simplified system of astrology which considers only the position of the Sun, which is said to be placed within one of the twelve zodiac signs depending on the month of birth. This sign is then called the sun sign or star sign of the person born that month."
06:24:32 <Patashu> Nah it's more like, if you're born in month X you're more likely to have <this defect>
06:24:40 <Patashu> Because of how it lines up with the seasons and biologicallyness
06:25:04 <zzo38> calamari: That is true, which means that of course the sun signs have correlations with the months! It means nothing else.
06:25:14 <zzo38> Patashu: Yes, it is the kind of things I was thinking of.
06:26:14 <zzo38> That is, seasons. For example, some people say that if you are born in summertime you might be outside more because your parents would be outside more.
06:27:13 -!- BeholdMyGlory has quit (Ping timeout: 260 seconds).
06:27:40 -!- BeholdMyGlory has joined.
06:28:40 <zzo38> Like how in ancient times they predicted the flood by the stars, what they were effectively doing is using the stars as a calendar, although they might not have known that at the time. Science was not invented back then, so people had different beliefs.
06:33:03 <zzo38> Patashu: What do *you* think? Do you have any specific examples, as well as their values of statistical correlation, what kind of sampling is done, and so on, etc, ?
06:33:11 <Patashu> I do not
06:44:27 -!- monqy has quit (Quit: hello).
06:57:51 -!- oerjan has joined.
07:24:45 <zzo38> I have looked up information for eclipses and computed horoscopes for them, hiding everything except the sun, moon, north node, and the first five aspects. The north (or south) node is in range as described on Wikipedia, and the sun and moon are as expected; the sun and moon are at the same position in a solar eclipse, and opposite in a lunar eclipse. (The only aspect used is opposite, for lunar eclipses.)
07:27:46 <zzo38> The solar system view would also make it apparent, except that the zoom level is wrong.
07:37:40 -!- zzo38 has quit (Remote host closed the connection).
07:37:46 -!- calamari has quit (Quit: Leaving).
08:36:39 -!- nooga has joined.
08:38:30 -!- Vorpal has joined.
09:04:41 -!- oerjan has quit (Quit: Later).
09:19:07 -!- Jafet has joined.
10:44:16 -!- sebbu has quit (Read error: Connection reset by peer).
10:44:51 -!- sebbu has joined.
10:52:54 -!- derdon has joined.
10:53:52 -!- Madoka-Kaname has quit (Ping timeout: 256 seconds).
11:04:45 -!- CakeProphet has joined.
11:27:30 <tswett> pikhq_: well, the second also has a perfectly known value.
11:27:51 <tswett> It's just that the value is pretty annoying to use.
11:33:08 -!- derdon has quit (Remote host closed the connection).
11:46:02 -!- Phantom_Hoover has joined.
11:48:48 -!- boily has joined.
11:50:12 -!- GreaseMonkey has quit (Quit: The Other Game).
12:52:29 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .).
12:58:39 -!- Jafet has quit (Quit: Leaving.).
12:59:19 -!- sllide has joined.
13:18:16 -!- MSleep has changed nick to MDude.
13:53:44 -!- ais523 has joined.
13:59:15 -!- nooga has quit (Ping timeout: 248 seconds).
14:01:07 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
14:06:38 -!- Phantom_Hoover has quit (Quit: Leaving).
14:06:50 -!- Phantom_Hoover has joined.
14:11:38 -!- augur_ has quit (Remote host closed the connection).
14:13:23 <ais523> in California: court finds that warrantless searches of people's phones at traffic stops are legal; legislature votes for a new law to ban them; governor vetoes it on the basis that the court found that it was legal
14:13:34 <ais523> err, isn't the whole point of making a new law to change the law?
14:17:45 <coppro> I think that veto won't survive a return trip to the legislature
14:17:52 <coppro> but yeah
14:19:02 -!- BeholdMyGlory has quit (*.net *.split).
14:19:03 -!- clog has quit (*.net *.split).
14:19:03 -!- jix has quit (*.net *.split).
14:19:03 -!- TeruFSX has quit (*.net *.split).
14:24:29 -!- BeholdMyGlory has joined.
14:24:29 -!- clog has joined.
14:24:29 -!- jix has joined.
14:24:29 -!- TeruFSX has joined.
14:26:27 -!- MDude has quit (Ping timeout: 248 seconds).
14:32:18 -!- copumpkin has joined.
14:43:04 -!- augur has joined.
14:47:56 <Phantom_Hoover> `quote
14:47:56 <lambdabot> Phantom_Hoover: You have 7 new messages. '/msg lambdabot @messages' to read them.
14:48:02 <HackEgo> 614) <zzo38> I think Perl is a programming language too. [...]
14:58:51 -!- TeruFSX_ has joined.
14:59:12 -!- Behold has joined.
15:00:42 -!- BeholdMyGlory has quit (Ping timeout: 256 seconds).
15:02:43 -!- jix_ has joined.
15:03:37 -!- TeruFSX has quit (Ping timeout: 256 seconds).
15:05:38 -!- clog has quit (Ping timeout: 256 seconds).
15:05:38 -!- jix has quit (Ping timeout: 256 seconds).
15:11:43 -!- Ngevd has joined.
15:11:50 <Ngevd> Hello!
15:16:33 <Phantom_Hoover> Hello.
15:23:32 <Ngevd> Much happening in the world of esoteric programming?
15:24:37 <Phantom_Hoover> No.
15:27:14 <Gregor> *exoteric voodoo programming
15:37:23 <Ngevd> Got a friend who believes all programming languages must have a compiler
15:37:32 -!- clog has joined.
15:37:33 <Ngevd> Otherwise they aren't actually programming languages
15:38:38 <ais523> Ngevd: implementation, or compiler specifically?
15:38:47 <Ngevd> Compiler specifically
15:42:52 <Ngevd> I brought up the subject of interpreters, which he rejected emphatically
15:46:08 <Ngevd> What's the difference between Haskell and Literate Haskell?
15:48:20 <ais523> whether they're comment or noncomment by default, is the only technical difference
15:48:30 <Ngevd> Oh, okay
15:48:31 <ais523> i.e. in Haskell you mark comments, in Literate Haskell you mark the code
15:48:52 <ais523> but Literate Haskell's designed specifically for literate programming, which is noticeably different from regular styles of programming
15:49:06 <Ngevd> Interesting
15:49:38 <Phantom_Hoover> Ngevd, why are you friends with this person.
15:49:40 <Phantom_Hoover> Stop it.
15:49:52 <Ngevd> I said friend
15:50:15 <Ngevd> I really meant annoying acquaitance
15:51:00 -!- nooga has joined.
15:55:16 <Ngevd> His dad's apparently a professor of computer science, so really he should know better
15:56:46 -!- Sgeo|web has quit (Ping timeout: 252 seconds).
15:57:25 <Phantom_Hoover> Ngevd, as we all know, knowledge of CS is passed on by Lamarckian inheritance.
15:57:44 <Ngevd> Apparently he's getting his knowledge from his dad
15:58:05 <Ngevd> Seeing as he's one of the few people I know who knows what a programming language /is/
15:58:20 <Ngevd> I think his dad may have taught him one or two things over the years
15:58:28 -!- nooga has quit (Ping timeout: 252 seconds).
16:00:23 -!- Madoka-Kaname has joined.
16:01:37 -!- ais523 has quit (Remote host closed the connection).
16:02:21 -!- monqy has joined.
16:06:17 -!- Behold has changed nick to BeholdMyGlory.
16:06:37 <Ngevd> I'm going to do some work on XSLT S and K
16:06:47 <Ngevd> I think I've almost cracked it
16:08:36 -!- nooga has joined.
16:08:40 <coppro> you're implementing SKI in XSLT?
16:08:48 <Ngevd> Yup
16:08:51 <coppro> oh gods
16:08:58 <Ngevd> Had about four tries
16:09:42 <Ngevd> Hmm
16:09:58 <Ngevd> What should I call the variable that is 34... of S1234...?
16:10:05 <coppro> (I have decided to start taking the empty set's name in vain)
16:10:36 <Ngevd> It includes the rather dodgy XPath of //s/*[3]/../*[1]
16:14:17 <Ngevd> Which, if I know my XPath, which I don't, returns the first child of an s node with at least three children
16:16:42 -!- Jafet has joined.
16:16:54 -!- Jafet has quit (Client Quit).
16:17:19 <Ngevd> Hang on
16:18:06 <Ngevd> Does (((Sx)y)z) become ((xz)(yz))
16:19:28 <coppro> uh yeah
16:19:49 <Ngevd> Also, does xsl:copy-of work with a forest
16:20:02 <Ngevd> Say ./*[position()>2]
16:22:09 <Ngevd> And ALSO
16:22:19 <Phantom_Hoover> <Ngevd> What should I call the variable that is 34... of S1234...?
16:22:31 <Phantom_Hoover> Sxyz is standard; the fourth argument is irrelevant.
16:22:37 -!- MSleep has joined.
16:22:47 <Ngevd> Thanks
16:23:08 <Ngevd> If I pass a node to a template as a param, can I do param/.. and get that node's parent node?
16:23:41 <Ngevd> Actually, Phantom_Hoover, that isn't quite what I meant. Not your fault, I was making a mistake which I corrected
16:23:46 -!- MSleep has changed nick to MDude.
16:23:50 <Ngevd> I wanted 234...
16:26:28 <Ngevd> But that last question is the important one
16:26:53 -!- kmc_ has joined.
16:29:14 -!- kmc has quit (Ping timeout: 260 seconds).
16:33:32 -!- Ngevd has quit (Quit: what a big quitter he is, eh?).
16:35:55 -!- kmc_ has changed nick to kmc.
16:37:28 -!- sliddy has joined.
16:38:46 -!- sllide has quit (Ping timeout: 245 seconds).
17:09:20 -!- ais523 has joined.
17:26:09 -!- ais523_ has joined.
17:26:58 -!- ais523 has quit (Disconnected by services).
17:26:59 -!- ais523_ has changed nick to ais523.
17:29:11 -!- nooga has quit (Ping timeout: 255 seconds).
17:30:04 -!- Ngevd has joined.
17:30:05 <Ngevd> Hello!
17:31:50 <ais523> hi
17:32:05 <Ngevd> What news of Gondor?
17:32:39 -!- elliott has joined.
17:33:05 <Ngevd> Hey elliott
17:44:02 <coppro> Ngevd: ais523 just scammed BN hardcore
17:47:49 -!- oerjan has joined.
17:49:31 <Phantom_Hoover> BN?
17:51:09 <Ngevd> Blackberry network?
17:52:23 <oerjan> Black Ninjas. let's just say ais523 is _really_ in trouble now.
17:52:35 <elliott> blognomic
17:52:36 <coppro> Phantom_Hoover: blognomic
17:52:44 <elliott> does Ngevd even play blognomic
17:52:49 <ais523> I don't think so
17:52:53 <ais523> elliott: it /was/ a great scam, though
17:53:03 <ais523> as usual, there's bickering over whether it worked
17:53:26 <elliott> I thought the BlogNomic strategy was to insist that scams aren't possible, and then continue playing a lie
17:53:30 <Phantom_Hoover> Ngevd, oh man, there was so much wailing and gnashing of teeth about that in school.
17:53:42 <elliott> What, BlogNomic scams?
17:53:48 <ais523> elliott: quite a few players do that, but not all of them
17:53:57 <ais523> and it was reminiscent of Agoran scams
17:54:05 <ais523> actually, it was more reminiscent of B ruleset bugs
17:54:14 <ais523> but I invoked the precedence rule
17:54:21 <ais523> which is quite an Agoran thing to do
17:59:57 -!- Ngevd has quit (Ping timeout: 260 seconds).
18:03:28 <elliott> http://9to5mac.com/2011/10/10/photoshop-unblur-leaves-max-audience-gasping-for-air/ they should make it illegal to implement features that make CSI-enhancing more realistic
18:05:13 <copumpkin> bad focus vs. blur vs. making shit up that isn't in the original pixels
18:05:30 <copumpkin> this only addresses motion blur, which isn't impossible
18:07:24 <elliott> copumpkin: It's only a matter of time before they figure out how to run content-aware resizing in reverse!
18:07:27 <elliott> (Or do they do that already?)
18:08:31 <Phantom_Hoover> Oh FFS, what kind of form imposes character *and* line limits.
18:09:01 <elliott> twitter
18:09:13 <copumpkin> elliott: there was a paper on that in siggraph a couple of years ago
18:09:25 <copumpkin> they pulled shit that "fit" out of a large repository of images
18:09:32 <elliott> copumpkin: I know there was a paper on content-aware resizing in siggraph, that's what got everyone hyped about it :P
18:09:35 <copumpkin> to deocclude a part of an image
18:09:36 <elliott> it's possible they did uncropping too though
18:09:38 <oerjan> next, run it on hubble images
18:09:42 <elliott> btw content aware resizing is so overrated
18:09:46 <copumpkin> elliott: that's what I'm talking about
18:09:51 <elliott> they totally just picked good examples :P
18:09:54 <copumpkin> de-occluding
18:10:00 <copumpkin> or whatever the term they picked for it is
18:11:02 <oerjan> inclusive occlusion
18:12:39 <elliott> Doccluding.
18:14:02 <Phantom_Hoover> http://www.reddit.com/r/WTF/comments/l7u75/wtf_bbc_news_quote_mining_to_make_occupy_wall/
18:14:16 <Phantom_Hoover> Redditor demonstrates failure to understand this 'satire' thing.
18:17:19 <oerjan> what do you expect in r/wtf
18:17:29 <Phantom_Hoover> ...Fair point.
18:29:23 -!- zzo38 has joined.
18:37:58 -!- augur has quit (Remote host closed the connection).
18:42:14 -!- boily has quit (Ping timeout: 260 seconds).
18:44:56 <Phantom_Hoover> FOR GOD'S SAKE UCAS WHY DO YOU NEED 47 LINES OR LESS WHYYYYYYYY
18:46:49 <ais523> Phantom_Hoover: it's to test your ability to write in limited spaces on forms
18:46:59 <elliott> "When in Rome, do as Romans. On Windows platform, Visual Basic can build much better looking, much usable GUI than gtk2hs. And Visual Studio allows you do it in no time. Don't you agree?"
18:47:18 <elliott> I didn't ever expect to be seriously asked to defend the statement "Haskell is better than Visual Basic".
18:47:24 <ais523> (the "serious" answer, IIRC, is because there's also a paper version of the form and they're giving people the same amount of space on both forms)
18:47:30 <ais523> elliott: you weren't
18:47:32 <ais523> that's not serious
18:47:34 <elliott> ais523: it is
18:47:37 <elliott> ais523: unfortunately
18:47:39 <monqy> is it really
18:47:41 <monqy> really really
18:47:42 <elliott> yes
18:47:44 <monqy> ;_;
18:47:44 <elliott> yes
18:47:54 <ais523> elliott: well, I suppose it is serious, believing Visual Basic is better than Haskell could be fatal
18:48:21 <monqy> bad
18:48:29 <elliott> hmm, I've been avoiding downvoting their comments for fairness, but they might actually deserve it for breaking my brain like that
18:48:35 <ais523> (more seriously, VB.NET is not a completely awful language; it's on a similar level to C# or Java, both languages which I dislike, but which aren't down to VB6 or PHP standards)
18:49:50 -!- Phantom__Hoover has joined.
18:50:27 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
18:52:34 <elliott> "No, I'm not referring to Turing completeness, which only non-practical people care about."
18:52:50 <elliott> hmm, doesn't that reddit enhancement suite offer username ignores?
18:53:58 -!- kmc_ has joined.
18:54:43 -!- kmc has quit (Ping timeout: 248 seconds).
18:55:13 <oerjan> sounds like the _first_ feature you'd want to implement
18:57:49 -!- boily has joined.
19:03:34 -!- kmc_ has changed nick to kmc.
19:15:22 <olsner> autodownvote and ignore
19:15:32 <elliott> lol
19:15:36 <elliott> autodownvote and report and ignore
19:15:43 <elliott> autoreply to with an inflammatory comment
19:16:19 <olsner> and autoban from the sub/reddit if you have the authority
19:16:43 <elliott> :D
19:16:48 -!- nooga has joined.
19:16:54 <elliott> autohire a hitman
19:17:22 <olsner> autonuke the country (if not yours)
19:17:38 <elliott> i think you win
19:21:09 -!- Ngevd has joined.
19:21:21 <Ngevd> Hello!
19:21:38 <Ngevd> While I do play Nomic, I am not in BlogNomix
19:21:42 <Ngevd> *-ic
19:21:43 <elliott> x
19:23:44 <Ngevd> I have to say, Visual Studio does make form design easier
19:24:11 <Ngevd> However, that is a small advantage over Haskell that Haskell can easily counter with various things
19:24:18 <Ngevd> Such as virtually everything
19:24:22 <oerjan> someone should write a haskell binding. or something.
19:24:26 <elliott> Gtk has a form designer :-P
19:24:30 <elliott> I think wxWidgets does too
19:24:35 <Ngevd> Haskell.NET
19:24:42 <elliott> Yesssss
19:25:32 <Ngevd> elliott, go inventing
19:25:49 <elliott> I'm trying to keep a hold of the few remaining scraps of my human soul.
19:26:00 <elliott> Haskell.NET doesn't sound very good on that front.
19:26:17 <Ngevd> C'mon, you're already one of my evil triplets
19:30:54 <Ngevd> And you live in what in some dialects is slang for hell
19:31:06 <Ngevd> YOU LIVE IN HELL
19:31:21 <pikhq_> No, he lives in Sixpig.
19:31:27 <pikhq_> Erm.
19:31:27 <pikhq_> Hex
19:31:31 <pikhq_> Eightpig.
19:31:45 <Ngevd> Hex is six
19:31:48 <Ngevd> Octo is eight
19:31:50 <Ngevd> Eightcow
19:31:59 <pikhq_> Fuck you, I need coffee.
19:32:01 <pikhq_> :P
19:32:39 <Ngevd> :PPPP
19:32:49 <Ngevd> I have more mouths than you
19:33:08 <Phantom__Hoover> No, stupid people.
19:33:31 <Phantom__Hoover> Ngevd lives in Charmpork, elliott lives in Hexham and Facekicker lives in Cursebacon.
19:33:45 <elliott> Charmpork.
19:33:51 <elliott> Well, I have my next DF fortress name.
19:33:57 -!- augur has joined.
19:33:59 <Ngevd> > ":" ++ cycle "P"
19:34:01 <lambdabot> ":PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP...
19:34:19 <ais523> wait, there's another Hexhamer here?
19:34:23 <Ngevd> Me
19:34:23 <elliott> ais523: ...
19:34:28 <Phantom__Hoover> ais523, you... missed that?
19:34:29 <elliott> ais523: you have to be fucking kidding me we went over this like TWO WEEKS AGO
19:34:33 <elliott> ais523: HOW CAN YOU KEEP FORGETTING THINGS
19:34:35 <Phantom__Hoover> It was a pretty big deal.
19:34:37 <Ngevd> Facekicker is someone I heard of once
19:34:40 <elliott> Phantom__Hoover: I've told him personally /twice/
19:34:47 <Ngevd> Who somebody else thought may have been elliott
19:34:55 <ais523> elliott: I wasn't reading at the time, if I was even in the channel
19:35:02 <elliott> ais523: yes you were, I told _you_ personally, _twice_
19:35:05 <elliott> after you expressed disbelief each time
19:35:06 <Phantom__Hoover> I keep reading things as 'elephant'.
19:35:19 <Phantom__Hoover> I mixed it up with 'element' in chemistry, with predictable results.
19:35:23 <Ngevd> :D
19:35:24 <ais523> elliott: more than you and Ngevd, I mean
19:35:28 <ais523> I thought you were implying there was a third
19:35:30 <elliott> oh
19:35:33 <elliott> >_<
19:35:40 <ais523> which would have been ridiculous
19:35:42 <Ngevd> No, Facekicker is the eviller triplet
19:35:47 <elliott> Maybe everyone is from Hexham at heart.
19:35:49 <Ngevd> He's so evil he can't use computers
19:35:59 * pikhq_ casts a spell so that everyone is now from Hexham
19:36:13 <pikhq_> #esoteric: the Hexham channel.
19:36:19 <elliott> #hexham
19:36:43 <elliott> pikhq_: also don't you mean
19:36:43 <elliott> a
19:36:44 <elliott> HEX
19:36:45 <elliott> (ham)
19:37:30 <oerjan> Phantom__Hoover: i don't see how that is relephant.
19:37:38 <pikhq_> elliott: Very well.
19:37:43 <pikhq_> I cast a hex using ham.
19:37:49 <pikhq_> Most delicious ham.
19:38:14 <olsner> hexed all the way to hexham, the horror
19:38:45 <oerjan> hexham, arkham and newsham
19:39:37 <olsner> heck sham and new sham
19:40:06 <oerjan> ol' sner of heck sham
19:40:30 <Ngevd> Don't say olsner is from Hexham
19:40:45 <oerjan> Ngevd: we all are, didn't you pay attention?
19:41:01 <Ngevd> No, I fell asleep
19:41:05 <Phantom__Hoover> I refuse to be imagined in England.
19:41:17 <Ngevd> We're pretty close to the border
19:41:21 <Ngevd> Relatively speaking
19:41:24 <olsner> Ngevd: if you missed the hex, I'll just hecksh you to heck-sham instead
19:41:31 <Ngevd> Not as close as, for instance, Berwick
19:41:38 <Ngevd> But nobody likes Berwick
19:41:47 <Phantom__Hoover> Ngevd, I don't care, it's a matter of principle.
19:41:51 <oerjan> it's a wicked place
19:42:05 <Phantom__Hoover> Also you steal Berwick from us and then say you don't want it?
19:42:18 <Ngevd> You stole it from us first!
19:43:04 -!- BeholdMyGlory has quit (Ping timeout: 252 seconds).
19:43:05 <elliott> `addquote <Phantom__Hoover> Also you steal Berwick from us and then say you don't want it? <Ngevd> You stole it from us first!
19:43:06 <oerjan> bericum, the ancient roman fortress
19:43:07 <HackEgo> 707) <Phantom__Hoover> Also you steal Berwick from us and then say you don't want it? <Ngevd> You stole it from us first!
19:43:29 <oerjan> *berovicum
19:43:33 <Ngevd> I think Prudhoe was the town that changed hands the most
19:43:34 <Phantom__Hoover> Ngevd, yeah, but at least we didn't get bored with it!
19:43:58 <Ngevd> Do you want Berwick back?
19:44:02 <Phantom__Hoover> Yes.
19:44:08 <Ngevd> Okay, keep it
19:44:11 <Ngevd> See how I care
19:44:21 <Ngevd> They already play football in Scotland
19:44:38 <Phantom__Hoover> It's ridiculous, having North Berwick but not Berwick itself.
19:44:38 <elliott> Can we just cut Berwick off and solve the whole thing?
19:45:34 <elliott> "The Wales and Berwick Act 1746 (since repealed) deemed that whenever legislation referred to England, it applied to Berwick, without attempting to define Berwick as part of England."
19:47:12 -!- BeholdMyGlory has joined.
19:47:30 <olsner> nuke Berwick, plobrem sloved
19:47:37 <Phantom__Hoover> elliott, OK, I don't actually think North Berwick is good for much.
19:47:56 <Phantom__Hoover> There's a rock with some birds on it, but it's in the sea so it doesn't count.
19:48:03 <Ngevd> On another note, it's a shame that the esoteric message board failed
19:48:41 -!- oerjan has set topic: Anglo-Caledonian diplomacy and sword games | Welcome to the international hub for exoteric voodoo programming design and deployment! | computed jumps... the topic. | 12345678^&!* | http://codu.org/logs/_esoteric/.
19:50:19 <elliott> Phantom__Hoover: :D
20:06:29 -!- TeruFSX_ has quit (Ping timeout: 258 seconds).
20:06:31 -!- TeruFSX has joined.
20:27:03 <zzo38> Is it possible to write a program working both with and without SDL, without requiring separate compilation?
20:27:22 <zzo38> Or do I have to make the command-line edition a separate executable file?
20:27:28 <Gregor> zzo38: Sure, you could use libdl to get the SDL stuff.
20:27:34 -!- tiffany has joined.
20:27:41 <Gregor> It would probably be much simpler to just make two executables though :)
20:27:43 <pikhq_> Or not call the SDL initialisation.
20:28:22 <Gregor> pikhq_: I assumed "without SDL" meant "libSDL.so.whatever: File not found"
20:28:27 <zzo38> Gregor: Yes, it would, at least in Windows. For UNIX systems it might be more convenient to use one executable, though; that is, if there is a reasonable way to do so.
20:28:53 <zzo38> Gregor: No I meant to have a separate command-line edition
20:28:58 -!- oerjan has quit (Quit: Good night).
20:29:24 <pikhq_> Gregor: Ah. Yeah, for that you'd need seperate executables or libdl.
20:29:45 <Gregor> zzo38: Like I said, libdl is your friend. But what I would probably do is make two executables, then have a small script that chooses which to run *shrugs*
20:30:09 <elliott> You could just statically link SDL in. :p
20:30:38 <Gregor> Still implies tons of deps that you wouldn't want in the CL case.
20:30:39 <elliott> (And decide whether to use it at runtime)
20:30:54 <elliott> Gregor: As opposed to having the default build process build two executables and just use a shell script? :P
20:31:21 <elliott> I guess it could just forget about building one if SDL wasn't present.
20:31:24 <Gregor> elliott: Cannot load foobar: libX11.so: File not found
20:31:49 <elliott> Gregor: Well duh, I meant SDL + deps :P
20:32:31 <zzo38> I can make two executables; a shell script is not really needed. It could use a common source file, I suppose, or even a dynamic library that is most of the functions of the program, and the SDL specific stuff is contained in the main executable file.
20:32:44 <zzo38> A shell script could be used for compiling, though.
20:51:19 -!- calamari has joined.
20:53:46 <elliott> "Dude, end users care about the user experience. This is why Apple has been so successful with ipod, iphone, even though there are technically better products. You can't say you don't care."
20:54:08 <elliott> this post is the stupidest thing anyone has ever said to me in a programming language war
20:54:11 <elliott> ;__;
20:54:30 <Ngevd> Apple have been successful because they look cool
20:54:35 <pikhq_> Funny, I could've sworn that Apple was successful *in spite* of being so damned user hostile.
20:55:18 <elliott> Apple... aren't user-hostile. Their philosophy is in principle, but so is every large tech company's.
20:56:35 <pikhq_> The iPhone shit in particular is.
20:57:18 <elliott> No, it's not; yes, it's an unprogrammable, locked down system, but so is every other mobile OS; and definitely an iPhone is more usable than the others ignoring that.
20:57:26 <elliott> Anyway, that's not the point.
20:57:29 <pikhq_> "Why, yes, I would *love* to have a central authority vetting things according to compliance with corporate self-interest!"
20:57:39 <pikhq_> Of course, this is nothing *unique* to Apple.
20:58:42 <Phantom__Hoover> pikhq_, I think you missed the part where someone is justifying a language argument with this.
20:58:48 <pikhq_> Oh. Right.
20:58:52 <pikhq_> That's beyond moronic.
20:59:30 <quintopia> i don't find springboard more usable than some of the android UIs i've tried. pandahome is a better interface than springboard even though its only a beta app, imo. but yeah, nnot trying to undermine your underlying point...
20:59:53 <elliott> quintopia: Yes, clearly the launcher screen is the entire decider of usability :P
21:00:13 <quintopia> it is for most consumers :)
21:00:31 <elliott> Not...really?
21:00:54 <quintopia> (the stupid settings menus iOS uses just make them look even worse, but i'm not really going to have that argument)
21:00:56 <elliott> I mean, getting to the address book is important usability-wise, but that means fuck all if it's still a hideous pain to edit the actual entries.
21:02:19 <quintopia> apple's built-in address book is far from the best mobile address book app either. i think they are spending too much time sitting on their laurels.
21:02:47 -!- derdon has joined.
21:02:58 <elliott> quintopia: It was an example.
21:03:04 <elliott> English really needs proper support for metasyntactic variables.
21:03:36 <quintopia> it does. just say $foo and i will understand
21:04:02 <quintopia> alternately, use e.g. before the metasyntactic variable and its metasyntactic properties
21:12:54 <pikhq_> Goodness gracious the US has bad income inequality.
21:13:34 <elliott> You don't say.
21:13:53 <elliott> Huh, Adobe are actually pushing the obsoletion of their plugin as their sort-of-official line.
21:13:54 <Ngevd> Does anyone know of a place to discuss XSLT on Freenode
21:13:55 <Phantom__Hoover> In other news, outrage as the Pope blesses bears in the woods.
21:13:56 <Ngevd> ?
21:13:59 <pikhq_> We're worse off than many third-world countries.
21:14:01 <pikhq_> Jebus.
21:14:05 <Phantom__Hoover> Ngevd, #xslt
21:14:10 <Ngevd> Empty
21:14:18 <elliott> (By "sort of official", as in "non-controversial posts on their developers' blogs that are devoted to discussing how awesome they are".)
21:14:25 <elliott> <Phantom__Hoover> In other news, outrage as the Pope blesses bears in the woods.
21:14:28 <elliott> Are they Catholic?
21:14:36 <Phantom__Hoover> No, that's why there's outrage.
21:14:38 <olsner> Ngevd: are you using it to implement a turing machine or doing anything with XML documents?
21:14:45 <Ngevd> The former
21:14:55 <Ngevd> Sort of the latter
21:15:00 <Ngevd> Actually, neither
21:15:15 <Ngevd> Turing-equivalent computational models expressed as XML
21:15:26 <elliott> Ngevd: You've switched to the <apply> <s> <k> <i> model, right?
21:15:31 <elliott> Not that ridiculous "put stuff in it to apply" thing?
21:15:36 <Ngevd> No, I switched back
21:15:46 <elliott> Ngevd: ...why.
21:15:57 <elliott> It's literally semantic nonsense.
21:16:03 <Ngevd> It's a hell of a lot easier
21:16:06 <olsner> Ngevd: XSLT already is a Turing-equivalent computational model expressed as XML :)
21:16:25 <Ngevd> I want to demonstrate this beyond a shadow of a doubt!
21:16:32 <elliott> Ngevd: It so is not easier.
21:16:46 <olsner> but that's already been done (by implementing a universal turing machine)
21:16:47 <elliott> There is no possible way that structure could be easier :P
21:17:19 <Ngevd> It is for me
21:18:14 <Ngevd> But you know what?
21:18:19 <Ngevd> I'll do it your way
21:18:23 <elliott> Yessssssssssssssss
21:18:36 <elliott> It's easier because <apply> always has two children, for one thing :P
21:18:40 <Ngevd> And start completely again for the SIXTH GODDAMN TIME
21:24:06 <Ngevd> Well, I've done K one method and S the other
21:24:07 -!- Patashu has joined.
21:24:33 -!- MDude has quit (Quit: later chat).
21:25:16 <Phantom__Hoover> How is it this hard to implement a tree-rewriting system in a tree-rewriting language?
21:25:27 <elliott> If you can do S, surely K and I are trivial.
21:25:27 <Ngevd> Because I barely know either
21:25:47 <Ngevd> I switched to your method after finishing S
21:25:56 <Ngevd> In your method I did K first
21:26:03 <elliott> Ngevd: What are you using to apply the XSLT?
21:26:13 <elliott> xsltproc?
21:26:16 <Ngevd> At the moment, my MIND
21:26:24 <Ngevd> Probably a web browser
21:26:31 <Ngevd> I have a choice of four
21:26:37 <Ngevd> One of which it won't work for
21:26:41 <Ngevd> So, three
21:30:38 <zzo38> Why does Astrolog use the orb setting of -180.0 for Conjunction? The orb is the degree of separation between exactitude; a negative value doesn't make sense. I changed the values for all aspects to 7; the Sun and Moon are conjunct in a new moon and opposite in a full moon.
21:32:53 <zzo38> If you plot only the sun and moon on a horoscope, with the fixed sun position, you can see the phase of the moon. If you include the lunar nodes, you can include eclipses as well (see the wikipedia article about "Lunar node").
21:34:34 <zzo38> "Eclipses occur only near the lunar nodes: Solar eclipses occur when the passage of the Moon through a node coincides with the new moon; lunar eclipses occur when passage coincides with the full moon."
21:35:05 <Ngevd> MYSTERIOUS
21:36:34 <zzo38> Mysterious?
21:36:41 <Ngevd> Highly.
21:37:43 <zzo38> What about mysterious? Are you talking about lunar nodes?
21:37:52 <Ngevd> Only partially
21:41:17 <zzo38> Only partially?
21:41:23 <Ngevd> Yes
21:41:48 <zzo38> Do you mean horoscopes as well? Or even the sun and moon? Aspects? Orbs?
21:41:58 <Phantom__Hoover> `quote
21:42:00 <Ngevd> Weetos
21:42:01 <HackEgo> 17) IN AN ALTERNATE UNIVERSE: <pikhq> First, invent the direct mind-computer interface. <pikhq> Second, learn the rest with your NEW MIND-COMPUTER INTERFACE.
21:42:04 -!- Phantom__Hoover has quit (Quit: Leaving).
21:42:15 -!- Phantom__Hoover has joined.
21:42:32 <zzo38> Weetos? What is that?
21:45:55 <Ngevd> Breakfast cereal
21:46:03 <Ngevd> `quote breakfast cereal
21:46:05 <HackEgo> 527) <NihilistDandy> Non sequitur is my forte <NihilistDandy> On-topic discussion is my piano <Taneb> Bowls of sugary breakfast cereal is my mezzoforte <Taneb> Full fat milk is my pianissimo <Taneb> On which note, I'm hungry
21:46:08 <zzo38> OK.
21:46:16 <Ngevd> `quote breakfast cereal
21:46:18 <HackEgo> 527) <NihilistDandy> Non sequitur is my forte <NihilistDandy> On-topic discussion is my piano <Taneb> Bowls of sugary breakfast cereal is my mezzoforte <Taneb> Full fat milk is my pianissimo <Taneb> On which note, I'm hungry
21:46:26 <Ngevd> Dammit there is another quote
21:46:31 <Ngevd> `quote 529
21:46:33 <HackEgo> 529) <Taos> _ <Taos> | |__ _ _ ___ <Taos> | '_ \| | | |/ _ \ <Taos> | |_) | |_| | __/ <Taos> |_.__/ \__, |\___|
21:46:39 <Ngevd> Not that one
21:46:42 <Ngevd> `quote sugary
21:46:44 <HackEgo> 527) <NihilistDandy> Non sequitur is my forte <NihilistDandy> On-topic discussion is my piano <Taneb> Bowls of sugary breakfast cereal is my mezzoforte <Taneb> Full fat milk is my pianissimo <Taneb> On which note, I'm hungry
21:46:50 <Ngevd> `quote wholegrain
21:46:52 <HackEgo> 553) <Taneb> I combined the wholegrain breakfast and chocolatey breakfast for maximum breakfast efficiency
21:46:55 <Ngevd> That one
21:47:35 <Ngevd> It's choclatey and wholegrain
21:48:03 <Phantom__Hoover> Chocgrain.
21:48:08 <Phantom__Hoover> Wholelate.
21:48:20 <Ngevd> And on that note I leave you all for bed
21:48:22 -!- Ngevd has quit (Quit: what a big quitter he is, eh?).
21:59:06 -!- nooga has quit (Ping timeout: 255 seconds).
21:59:11 -!- boily has quit (Ping timeout: 244 seconds).
22:01:16 -!- zzo38 has quit (Remote host closed the connection).
22:02:37 * Phantom__Hoover → sleep
22:02:53 -!- Phantom__Hoover has quit (Quit: Leaving).
22:11:43 -!- MDude has joined.
22:20:30 -!- sliddy has quit (Read error: Connection reset by peer).
22:20:54 -!- sliddy has joined.
22:28:03 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
22:46:23 -!- ais523 has quit (Remote host closed the connection).
22:48:41 -!- calamari has quit (Quit: Leaving).
22:49:58 -!- sliddy has quit (Read error: Connection reset by peer).
23:03:23 -!- zzo38 has joined.
23:19:40 -!- kmc has quit (Quit: Leaving).
23:26:13 <zzo38> I have found various bugs in the Astrolog program. For example, Sun: Virgo -> Libra is the autumnal equinox in tropical mode, but in sidereal mode it is also labeled the autumnal equinox, which is incorrect. It also does not save all the settings correctly (although you can enter them manually in the ASTROLOG.DAT file).
23:26:36 <zzo38> And why is it labeled Virgo -> Libra even though I told it to display the angles in degrees instead?
23:30:26 <zzo38> It does correctly display the labels "Full moon" and so on for aspects between the sun and moon.
23:31:11 <zzo38> However, in my opinion it should consider "Sun square Moon" and "Moon square Sun" to be separate, because that is what calendars do.
23:44:00 <zzo38> I have a map of eclipses, but they do not specify latitude/longitude
23:47:58 <CakeProphet> what if homestuck like....
23:48:00 <CakeProphet> never ends.
23:49:49 -!- tiffany has quit (Quit: Leaving).
23:50:42 <quintopia> then it will jump the shark and people will stop caring
23:50:45 <quintopia> Cf. Maddox
23:56:01 <CakeProphet> I... think it will take a long time for that to happen with homestuck
23:56:32 <CakeProphet> most tv shows and the like as centered on some premise that makes them stagnate once ideas run out.
23:56:39 <CakeProphet> but homestuck can kind of... do literally anything.
23:57:40 <CakeProphet> we haven't even got to a point where the midnight crew is part of the main story. maybe they won't be...
23:57:46 <CakeProphet> but that would be really weird.
23:57:53 <CakeProphet> if they weren't ever mentioned again after the intermission.
23:58:01 <elliott> Dude, have you even been paying attention.
23:58:13 <CakeProphet> yeah, why?
23:58:27 <elliott> ...
23:58:47 <CakeProphet> my memory is kind of fuzzy though. I could probably stand to re-read the whole thing.
2011-10-12
00:01:40 <CakeProphet> http://homestuck.com/
00:01:42 <CakeProphet> good website
00:02:10 <CakeProphet> oh I missed a lot of the banners.
00:03:01 <quintopia> missed? as in you couldn't get micro-gregor to jump that high
00:03:02 <quintopia> ?
00:08:12 <elliott> quintopia, websplat all day every day
00:08:55 <quintopia> elliott: are you working on a websplatting AI?
00:09:35 <elliott> totally
00:10:33 <quintopia> awesome. it would be the best thing ever made since...
00:10:37 <quintopia> well, since websplat i suppose
01:07:59 -!- derdon has quit (Remote host closed the connection).
01:08:43 <zzo38> Once I tried to pickpocket by putting something into someone's pocket. I think it was a note.
01:08:52 <zzo38> Or maybe it was a key, or some money.
01:08:57 <zzo38> I do not remember.
01:12:56 -!- Sgeo|web has joined.
01:13:09 <Sgeo|web> pikhq_: is my explanation of magic quotes at least half decent?
01:13:13 <Sgeo|web> :/
01:15:54 <elliott> No you are full of lies.
01:15:59 -!- SimonRC has quit (Ping timeout: 260 seconds).
01:17:37 -!- SimonRC has joined.
01:23:16 <Gregor> $ pwd \ /home/gregor/browsers \ $ du -hs . \ 1.7G .
01:25:20 <Sgeo|web> elliott: the reason I asked pikhq is because he can see my Facebook stuff
01:25:24 <Sgeo|web> You cannot.
01:25:41 <elliott> Or can I?
01:25:43 <Sgeo|web> At least, not that particular status
01:25:51 <Sgeo|web> At least, you shouldn't be able to
01:38:10 <zzo38> How good are you at tetris while blindfolded?
01:48:56 <Sgeo|web> Avoid using native code (i.e. C/C++) if at all possible in situations where one needs to make security guarantees; instead opt to use a Very High Level Language by default.
01:49:10 <Sgeo|web> Um, EFF? There are high-level languages that might qualify as native code
01:49:31 <Sgeo|web> https://www.eff.org/2011/october/guidelines-open-source-security-audits
01:49:49 <zzo38> You can do security in C, you just need to be careful.
02:00:04 -!- augur has quit (Read error: Connection reset by peer).
02:00:54 -!- augur has joined.
02:05:06 <pikhq_> Sgeo|web: Oh, so that's where it is.
02:06:08 <pikhq_> Jesus, PHP *does* that?
02:08:57 <Sgeo|web> Well, with magic quotes enabled
02:09:13 <Sgeo|web> http://php.net/manual/en/security.magicquotes.php
02:10:34 <zzo38> I suggest, don't use magic quotes mode.
02:10:54 <Sgeo|web> zzo38: I suggest, magic quotes must DIE
02:11:11 <Sgeo|web> They must die a horrible and painful death
02:14:48 -!- CakeProphet has quit (Quit: Lost terminal).
02:15:07 <Sgeo|web> I mean, presumably it slaps \ in front of \ too
02:15:20 <Sgeo|web> ^^not helpful
02:17:06 <Sgeo|web> This is the sort of thing that, if it existed in a language like Falcon, we'd point and laugh and move on with our lives
02:17:21 <elliott> we do.
02:17:25 <elliott> you don't
02:18:17 <Sgeo|web> Bluh?
02:18:44 <elliott> we do point and laugh and move on with our lives
02:18:56 <elliott> who gives a shit about magic_quotes
02:20:15 <Sgeo|web> People in a web development class where the professor's server has magic quotes enabled?
02:21:01 <elliott> have i told you to transfer, i forget entirely.
02:28:56 -!- copumpkin has joined.
02:29:56 <Patashu> my little php: quoting is magic
02:33:29 -!- Vorpal has quit (Ping timeout: 258 seconds).
02:37:18 <TeruFSX> what's a "very high level language" anyway
02:38:20 <TeruFSX> i guess they probably mean Python or something, but you can still write insecure code in it!
02:39:47 <Sgeo|web> It's less tricky to write secure code in a very high level language, I think
02:49:13 <Patashu> it's like the difference between trying to secure a truecrypt volume and a truecrypt hidden volume
02:49:22 <Patashu> you can fuck up both but hidden volumes give you 1000% more ways to fuck it up
02:49:56 <Patashu> like, uh oh, don't use any program that writes to the non hidden portion! or, uh oh, make sure you can account for time you're spending on the hidden and non hidden oses when they review log files on it!
02:52:25 <elliott> as opposed to how to fuck up a truecrypt volume: you already have, by Patashu's standards
02:52:36 <elliott> also lol @ anyone who uses truecrypt
02:53:10 <Sgeo|web> I'm still not sure why lol @ truecrypt, but I see elliott's point re. fucking up a truecrypt volume
02:53:23 <elliott> truecrypt is really shady
02:53:55 <elliott> open source only in unreviewed source dumps every major release
02:54:08 <elliott> forum mods ban criticisers relentlessly
02:54:39 <Patashu> truecrypt is good for securing
02:54:39 <elliott> trust truecrypt = you're either unaware or an idiot
02:54:42 <Patashu> not for plausible deniability so much
02:54:44 <Sgeo|web> This isn't a logic error. The idea is to prevent a user-triggered information leak by not showing this error to the user in case a production server is misconfigured and running with display_errors turned on.
02:54:55 <elliott> Patashu: no
02:54:58 <Sgeo|web> https://bugs.php.net/bug.php?id=47494
02:54:59 <pikhq_> elliott: Unreviewed source dumps every *major* release?
02:54:59 <Patashu> alternatively, the fbi SAID they couldn't crack truecrypt just to keep people using truecrypt:
02:55:00 <Patashu> tinfoil:
02:55:04 <elliott> it is good for nothing
02:55:12 <pikhq_> And yet... They do minor releases...
02:55:29 <Patashu> Operation Satyagraha
02:55:29 <Patashu> In July 2008, several TrueCrypt-secured hard drives were seized from a Brazilian banker Daniel Dantas, who was suspected of financial crimes. The Brazilian National Institute of Criminology (INC) tried unsuccessfully for five months to obtain access to TrueCrypt-protected disks owned by the banker, after which they enlisted the help of the FBI. The FBI used dictionary attacks against Dantas'
02:55:29 <Patashu> disks for over 12 months, but were still unable to decrypt them.[34]
02:55:39 <elliott> pikhq_: ok, every release
02:55:40 <Patashu> so is the fbi stupid or acting stupid?
02:55:42 <elliott> no repo
02:55:43 <elliott> brb
02:56:08 <Sgeo|web> The problem isn't whether gov't has access, but whether the truecrypt devs might have access
02:56:09 <pikhq_> You can also only make unmodified distributions.
02:56:11 <Sgeo|web> I think
02:56:24 <elliott> pikhq_: ah yes
02:56:25 <elliott> brb
02:56:26 <Patashu> oh no, the truecrypt devs will arrest me
02:56:46 <pikhq_> Sgeo|web: Iff the source corresponds to extant binaries, then it should at least *hypothetically* be possible to discover such things.
02:57:08 <Sgeo|web> Not for the minor releases if what elliott says is true
02:57:26 <pikhq_> There's a reason I specified "iff the source corresponds to extant binaries".
02:57:38 <pikhq_> Still, this is only slightly less shady than pure uninspectable proprietary software.
02:57:52 <Patashu> open source = shady?
02:58:33 <pikhq_> Patashu: It's non-free shit that happens to do source code dumps.
02:58:55 <Patashu> it's not free but it's open source? ?_?
02:59:03 <pikhq_> Nor is it OSI-compliant.
02:59:07 <elliott> Patashu: it is not open sourec
02:59:08 <elliott> ce
02:59:11 <elliott> it is viewed source only
02:59:20 <Patashu> hrmm
02:59:21 <pikhq_> They dump source publically on releases.
02:59:32 <Patashu> could I make a truecrypt fork with the source?
02:59:36 <elliott> no
02:59:39 <elliott> not distributing it at least
02:59:41 <elliott> now
02:59:42 <Patashu> what would happen if- oh?
02:59:43 <Patashu> huh
02:59:47 <elliott> <Patashu> In July 2008, several TrueCrypt-secured hard drives were seized from a Brazilian banker Daniel Dantas, who was suspected of financial crimes. The Brazilian National Institute of Criminology (INC) tried unsuccessfully for five months to obtain access to TrueCrypt-protected disks owned by the banker, after which they enlisted the help of the FBI. The FBI used dictionary attacks against Dantas'
02:59:48 <Patashu> weird that such a thing even exists
02:59:49 <elliott> <Patashu> disks for over 12 months, but were still unable to decrypt them.[34]
03:00:02 <elliott> Patashu: if you think that the only standard of trust is "can be broken now" rather than "is trustable"
03:00:06 <elliott> i don't know what to say to you
03:00:07 <elliott> the question is not
03:00:10 <elliott> can the fbi break into truecrypt
03:00:12 <elliott> the question is
03:00:16 <elliott> if someone put a backdoor in truecrypt
03:00:20 <elliott> how the fuck would you know>
03:00:23 <Patashu> by viewing the source?
03:00:31 <Patashu> or is this some kind of magical backdoor that doesn't appear in the source code
03:00:39 <elliott> hahahahahaha
03:00:40 <elliott> Patashu: so
03:00:47 <elliott> you have read the source to truecrypt right?
03:00:52 <Patashu> of course not
03:00:54 <elliott> and are an expert in cryptography?
03:00:57 <Patashu> nope
03:01:06 <elliott> and, oh, are VERY good at finding exploits? if you think this is easy
03:01:12 <elliott> then read the winners of the underhanded c contest
03:01:17 <Patashu> yeah I have
03:01:18 <Patashu> it's p. crazy
03:01:20 <elliott> and that doesn't even have real stakes!
03:01:35 <elliott> if you use truecrypt, you have already lost, nobody to my knowledge reviews the source, the end
03:01:42 <elliott> secondly
03:01:55 <pikhq_> TrueCrypt does not meet even *basic* levels of trustworthiness.
03:02:02 <elliott> if you would seriously be surprised by the fbi lying about being able to break truecrypt I also don't know what to say to you; that's not conspiracy shit
03:02:11 <elliott> that's "you don't give up a huge tactical advantage in public" shit
03:02:31 <elliott> not that I'm saying they lied -- it's quite irrelevant
03:02:39 <elliott> but if you would be seriously surprised to find out they did... ehh, that's just naivety
03:02:53 <elliott> anyway yes "major release" was a mistake
03:03:37 <elliott> Patashu: btw if you consider something like dm-crypt, that's built on top of the Linux kernel's cryptographic APIs which will have a huge number of eyes on them, especially considering how much corporate reliance on linux there is -- and by all the distro devs, etc. etc.
03:03:40 <elliott> it's properly open source
03:03:48 <elliott> there are no shady forum mods to ban people who criticise their policies
03:04:05 <elliott> it is developed in the open -- mailing lists and so on
03:04:24 <pikhq_> Linux in particular seems almost designed to *maximize* the number of eyes on it.
03:04:29 <elliott> ...it's a completely different world to truecrypt, which is completely untrustable.
03:05:47 <elliott> Patashu: besides, I think even Windows comes with full-HD encryption support these days.
03:05:52 <elliott> which means every major OS does.
03:06:39 <elliott> Patashu: oh and, I bet 90 percent of truecrypt users use the binarise
03:06:40 <elliott> binaries
03:06:50 <elliott> Patashu: what's to stop them publishing an inaccurate source tarball?
03:06:54 <elliott> and exploiting only the binary
03:07:05 <Gregor> elliott: Well over 90 percent of Linux users use the binaries :)
03:07:15 <elliott> Gregor: yep, but with debian the process is very automated and open
03:07:19 <elliott> Gregor: for instance
03:07:42 <elliott> it would be much much harder to get debian ship a binary that doesn't correspond to the source :)
03:07:53 <pikhq_> Most of the time the distro's processes are pretty open.
03:08:31 <Sgeo|web> "Users can insert associative arrays in GET requests, which could then become unwanted $-queries."
03:08:35 <Sgeo|web> wat.
03:08:51 <pikhq_> And even when it's not they'd probably have trouble getting away with that. For instance, I highly doubt RHEL could get away with shipping even a single binary mismatching source.
03:09:31 <elliott> Sgeo|web: register_globals
03:09:58 <elliott> Sgeo|web: ?x=y --> $x == "y"
03:11:12 <Patashu> haha, the underhanded C entries are clever
03:11:53 <Sgeo|web> elliott: sheer genius.
03:12:08 <elliott> Sgeo|web: ?admin=yes
03:12:26 <elliott> I wonder if register_globals and magic_quotes have ever worked together to prevent a security hole
03:12:27 <elliott> like
03:12:29 <elliott> someone did
03:12:38 <elliott> if ($token == "'") { ... }
03:12:39 <elliott> and someone did
03:12:41 <elliott> ?token='
03:12:41 <lambdabot> Unknown command, try @list
03:12:46 <elliott> but $token became "\\'"
03:12:50 <elliott> thanks to magic_quotes
03:12:53 <elliott> and so the application was saved
03:14:00 <Sgeo|web> Actually, this is something different. Although I guess less terrible
03:14:05 <Sgeo|web> http://www.php.net/manual/en/mongo.security.php
03:14:09 <Sgeo|web> But just... still weird
03:14:44 <elliott> ah, right
03:14:50 <elliott> that's fairly understandable really
03:14:58 <elliott> although nobody should use such complex get queries probably :-)
03:15:38 <elliott> (and so it should not do such complex parsing)
03:17:48 <Sgeo|web> I'm addicted to a small subreddit
03:17:53 <Sgeo|web> /r/lolphp
03:28:29 <Sgeo|web> I guess the equiv. of such oddities in other languages like Ruby would be more found in the frameworks
03:28:42 <Sgeo|web> So RoR might have odd issues like that while SInatra doesn't, or visa versa
03:28:46 <Sgeo|web> *Sinatra
03:36:51 <elliott> Hmm, I should probably start writing that compiler.
03:37:13 <elliott> Well, continue.
03:41:17 <elliott> shachaf: Maybe I will use trifecta; looks like I'd have to rip out part of Parsec to get it to be portable anyway.
03:41:50 <shachaf> elliott: Makes sense.
03:42:02 <shachaf> I hear Trifecta is going to contain at least 12 Parsecs.
03:42:04 <elliott> (The token stuff uses polymorphic components.)
03:42:14 <elliott> (Admittedly this is like the minorest thing ever.)
03:42:43 <elliott> Hmm, nah, it'll be easier just to roll my own version of that when the time comes.
03:44:34 <elliott> Ehh... since when is "primitive" a reserved name in Haskell?
03:44:52 <elliott> This Parsec module is full of lies. _ccall_ and _casm_ and forall aren't either, to my knowledge.
03:45:05 <shachaf> Will QHC support dependent types?
03:45:10 <shachaf> It had better support dependent types.
03:46:18 -!- CakeProphet has joined.
03:46:24 <CakeProphet> okay so
03:46:46 <elliott> _
03:46:46 <elliott> __ _| |__ ___
03:46:46 <elliott> / _` | '_ \ / __|
03:46:46 <elliott> shachaf: No, | (_| | | | | (__ will not support dependent types.
03:46:46 <elliott> \__, |_| |_|\___|
03:46:46 <elliott> |_|
03:47:00 <CakeProphet> what's an example of a tree whose left and right subtrees are complete, but the whole tree is full.
03:47:05 * shachaf feels one-upped. :-(
03:47:08 <CakeProphet> this has been stumping me for some time. help #esoteric-homework
03:47:18 <elliott> shachaf: Well, I didn't use any freaky-deaky Unicode.
03:47:26 <CakeProphet> *whole tree is not full
03:47:34 <CakeProphet> er wait
03:47:44 <CakeProphet> not left and right subtrees are full but the whole tree is not complete.
03:47:49 <CakeProphet> wetijwreiuthwert
03:47:54 <elliott> shachaf: But don't worry; 𝕢𝕙𝕔 loves us all, even if we aren't masters of obscurity.
03:48:03 <CakeProphet> my brmy brain is broken.
03:48:36 <CakeProphet> uh does an empty tree count as full?
03:48:46 <shachaf> elliott: Those Unicode characters are so advanced my IRC client doesn't even display them.
03:49:02 <shachaf> elliott: I'm going to call them "Unicorn characters".
03:49:05 <elliott> shachaf: Probably a font issue.
03:49:08 <elliott> It's just blackboard bold.
03:49:13 <elliott> Lowercase blackboard bold.
03:49:13 <shachaf> No, not a font issue.
03:49:15 <elliott> The most common of things.
03:49:23 <elliott> shachaf: Why would your terminal fail to display them? BMP issues?
03:49:23 <pikhq_> Hmm. I could've *sworn* I had blackboard bold available.
03:49:24 <shachaf> If I open a new terminal and type some similar characters in, it works.
03:49:32 <elliott> I think the characters you used were outside of the BMP, too...
03:49:34 <elliott> What terminal?
03:49:36 <elliott> IIRC Qt is BMP-only.
03:49:52 <shachaf> elliott: It's one of ssh/irssi/screen/something about the remote host.
03:49:52 <pikhq_> I made a point of getting fonts for as much of Unicode as could be managed.
03:49:57 <shachaf> gnome-terminal
03:50:06 <elliott> shachaf: It's not ssh.
03:50:08 <shachaf> I think it's something about the host.
03:50:09 <elliott> At least I very much doubt it.
03:50:13 <CakeProphet> so is an empty tree considered full?
03:50:14 <pikhq_> (yes, I *do* have fonts for hieroglyphics!)
03:50:28 <elliott> pikhq_: What's the best font I can get that covers as much of Unicode as possible?
03:50:30 <elliott> FOSS preferred.
03:50:45 <shachaf> 𝴞
03:50:48 <shachaf> Does that show up?
03:50:53 <elliott> shachaf: No.
03:50:56 <elliott> Font issue.
03:50:57 <shachaf> Wait.
03:50:59 <pikhq_> elliott: I do not know, insofar as I can tell there is not any *single* font with a satisfactory coverage.
03:51:01 <shachaf> 𝄞
03:51:02 <elliott> (I'm using XChat so Unicode works perfectly.)
03:51:04 <shachaf> How about that?
03:51:05 <elliott> pikhq_: OK, gimme a short list :P
03:51:06 <elliott> shachaf: Yep.
03:51:10 <shachaf> G Clef?
03:51:20 <elliott> Yes.
03:51:32 <pikhq_> Common fonts typically hit all of the BMP but CJK, though.
03:51:48 <shachaf> If I ssh to the host that's running my IRC client and enter that characters, bash/readline/whatever turns it into a bunch of escape sequences.
03:51:51 <elliott> I'm interested in the more astral shit. As they say, in the hood.
03:51:55 <shachaf> So it's probably something about something about the host.
03:52:05 <elliott> Try telnet. :p
03:52:18 <elliott> I suspect termcap issues or something
03:52:21 <pikhq_> $ ls ~/.fonts|wc -l
03:52:22 <pikhq_> 87
03:52:25 <pikhq_> Any further questions?
03:52:45 <CakeProphet> okay you guys are definitely ignoring me. ragequit time.
03:52:48 -!- CakeProphet has quit (Quit: Page closed).
03:52:51 <shachaf> shachaf@argon:~$ ls ~/.fonts|wc -l
03:52:51 <shachaf> ls: cannot access /home/shachaf/.fonts: No such file or directory
03:52:51 <shachaf> 0
03:52:53 <elliott> Hey, it worked.
03:53:50 <shachaf> shachaf@argon:~$ echo $(ls | egrep '^..?$')
03:53:50 <shachaf> a B c d D df e FF g hp io is j k lb m M MC o O p R Ro rt t u v W x xf y Z ZZ
03:54:08 <elliott> shachaf: ls | wc -l
03:54:14 <shachaf> 138
03:54:47 <elliott> shachaf: rm -rf .
03:55:14 <shachaf> shachaf@argon:~$ rm -rf .
03:55:14 <shachaf> rm: cannot remove directory: `.'
03:55:41 <elliott> find . -exec rm -rf '{}' \;
03:56:54 * shachaf once did rm -rf ~/* accidentally.
03:57:06 <elliott> The solution is to always intend it.
03:57:12 <shachaf> No, it was just rm -rf ~
04:00:31 <elliott> No.
04:00:53 <elliott> `exec ls -lh /dev/null
04:00:55 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: exec: not found
04:00:56 <elliott> Oops.
04:00:59 <elliott> crw-rw-rw- 1 root root 1, 3 2011-10-11 18:32 /dev/null
04:01:01 <elliott> There we go.
04:01:51 <elliott> shachaf: but seriously, primitive isn't a reserved word, is it?
04:03:17 <shachaf> > reserve primitive
04:03:18 <lambdabot> now it is
04:03:29 <elliott> Oh no.
04:03:30 <shachaf> > primitive + 1
04:03:31 <lambdabot> *Exception: Reserved word used as identifier
04:03:36 <elliott> :-D
04:03:42 <elliott> > reserve let
04:03:42 <lambdabot> <no location info>: parse error on input `let'
04:04:24 <elliott> > unreserve іn
04:04:25 <lambdabot> Not in scope: `
04:04:28 <elliott> >:(
04:04:39 <elliott> > unreserve іn
04:04:40 <lambdabot> Not in scope: `
04:04:49 <elliott> > unreserve іn
04:04:51 <lambdabot> Unreserved.
04:04:58 <elliott> > let іn = 99 in іn
04:04:59 <lambdabot> 99
04:05:08 <elliott> shachaf: That would be more impressive if I hadn't repeatedly fucked up.
04:05:28 <shachaf> > "let іn = 99 in іn"
04:05:28 <lambdabot> "let \1110n = 99 in \1110n"
04:06:10 <elliott> -- "as","qualified","hiding"
04:06:16 <elliott> ARE YOU TELLING ME THOSE AREN'T RESERVED NAME >_<
04:06:18 <elliott> names
04:06:43 <shachaf> elliott: Context?
04:07:03 <elliott> shachaf: http://hackage.haskell.org/packages/archive/parsec/3.1.2/doc/html/src/Text-Parsec-Language.html, "haskell98Def" (upon which the also-lying "haskellDef" is built)
04:07:18 <elliott> primitive is not a reserved name; as, qualified and hiding /are/, so why are they commented out?
04:07:27 <elliott> And _ccall_ and _casm_ and forall are also not reversed names.
04:07:30 <elliott> identLetter = identLetter haskell98Def <|> char '#'
04:07:33 <elliott> What the fuck are you smoking???
04:07:39 <elliott> This is so stupid.
04:07:49 <shachaf> > let qualified = 5 in qualified
04:07:49 <lambdabot> 5
04:07:52 <shachaf> No Unicode.
04:07:57 <elliott> Huh.
04:07:59 <elliott> Seriously?
04:08:00 <elliott> > let as = 9 in as
04:08:01 <lambdabot> 9
04:08:05 <elliott> > let hiding = 9 in hiding
04:08:06 <lambdabot> 9
04:08:09 <elliott> >_<
04:08:16 <elliott> So why doesn't "deriving" get that treatment
04:08:21 <shachaf> > let forall = 5 in forall
04:08:22 <elliott> I guess for top-level declarations
04:08:22 <lambdabot> 5
04:08:33 <elliott> OK, better question - why does forall get that treatment when RankNTypes is on?
04:08:34 <elliott> (Does it?)
04:08:49 <shachaf> > let forall :: forall forall. forall -> forall; forall forall = forall in forall x
04:08:50 <lambdabot> <no location info>: parse error on input `forall'
04:08:51 <elliott> Why does export get that treatment when it's as context-specific as as/qualified/hiding? (Does it?)
04:09:37 <shachaf> > let export = 1 in export
04:09:38 <lambdabot> 1
04:10:27 <shachaf> > let forеign = id in forеign oil
04:10:28 <lambdabot> oil
04:10:52 <shachaf> elliott: Are you coming to BostonHaskell in ~2 weeks?
04:10:56 <elliott> No.
04:15:23 <zzo38> The word "forall", "qualified", and "hiding" have special meanings in some cases, but it would not be ambiguous to use them in expressions since the special meanings of those words are not for expressions
04:16:14 <elliott> shachaf: You never told me Control.Applicative wasn't part of the standard.
04:16:57 <zzo38> For the word "foreign" it is different because it can occur as the first word of a top level declaration
04:17:20 <shachaf> elliott: I thought you knew. You never told me!
04:17:30 * shachaf isn't sure whether elliott is even worth talking to.
04:17:35 <elliott> I'm not.
04:18:29 <shachaf> It's a good thing I don't talk to you, then, but to an IRC user of the same name.
04:18:52 <elliott> He's not worth talking to, either.
04:19:07 <shachaf> What, conal?
04:19:09 <shachaf> Why not?
04:19:56 <shachaf> elliott: Anyway, if Applicative was part of the standard, it'd be a superclass of Monad.
04:20:05 <shachaf> Just like Functor would... Um...
04:20:06 <elliott> No it wouldn't. Functor isn't.
04:20:08 <elliott> :p
04:20:26 <elliott> pModule :: Parser Module
04:20:26 <elliott> pModule = Module
04:20:26 <elliott> `fmap` (reserved "module" >> pModName)
04:20:26 <elliott> `ap` wowIHateThisStyleAlready
04:20:41 <zzo38> But the "foreign" I know is wrong because of a defect in my IRC client causing Unicode input not working, so if I highlight it and paste it, the "e" will not be pasted.
04:21:06 <shachaf> elliott: Sigh... Just use Control.Applicative.
04:21:12 <elliott> NOT
04:21:13 <elliott> PORTABLE
04:21:14 <elliott> ENOOUGH
04:21:15 <shachaf> elliott: Next you'll tell me you won't implement hierarchical modules.
04:21:22 <elliott> Those are standard.
04:23:24 <elliott> pModule :: Parser Module
04:23:24 <elliott> pModule = Module
04:23:25 <elliott> `fmap` (reserved "module" >> pModName)
04:23:25 <elliott> `ap` pExports
04:23:25 <elliott> `ap` (reserved "where" >> pImports)
04:23:25 <elliott> `ap` (return [])
04:23:27 <elliott> where pModName = undefined; pExports = undefined; pImports = undefined
04:23:29 <elliott> Truly, the height of elegance.
04:24:33 <elliott> Parses an upper case letter (a character between 'A' and 'Z'). Returns the parsed character.
04:24:38 <elliott> Parsec documentation, no. Just no.
04:25:52 <copumpkin> why not use Applicative? o.O
04:27:06 <elliott> copumpkin: NOT STANDARD
04:27:17 <copumpkin> ?
04:27:25 <elliott> copumpkin: http://www.haskell.org/onlinereport/haskell2010/
04:27:35 <elliott> I'm trying to get something self-hosted without any extensions, which is of course completely ridiculous.
04:28:04 <copumpkin> using all of base isn't "non-standard"
04:28:16 <copumpkin> Applicative doesn't require any language extensions
04:28:22 <elliott> Well, fair enough :P
04:28:34 <elliott> I'm pretty sure base itself requires a ton of language extensions though.
04:35:52 <shachaf> elliott: Control.Applicative doesn't, though.
04:35:58 <elliott> Well, no.
04:36:00 <shachaf> So just use Control.Applicative.
04:36:08 <shachaf> It's not as if you're not going to define *any* modules, is it?
04:36:12 <elliott> But I've already written like thirty lines of code.
04:36:16 <shachaf> zomg
04:36:19 <shachaf> I take it back.
04:36:23 <elliott> That's, like, three hundred lines of C.
04:36:30 <zzo38> Drawing as many cards as you can is an almost sure way to lose at Pokemon Card.
04:38:27 -!- MDude has changed nick to MSleep.
04:39:23 <zzo38> Discard your hand, and then draw seven cards. How can you hold the pencil if you do not have any hand? Professor Oak must have been drunk at that time.
04:40:26 <monqy> ah ah ah ah ah ah ah ah ah ah
04:41:37 <elliott> ag
04:41:55 <elliott> aq
04:41:57 <elliott> az
04:41:59 <elliott> monqy: hi
04:42:01 <monqy> elliott: hi
04:44:31 <elliott> monqy: waht ah
04:45:20 <monqy> it is hard to alugh when gasping for breath
04:48:22 <elliott> monqy: rip???
04:48:27 <monqy> rip.
04:48:41 <elliott> rip monqy. ded.
04:52:37 <elliott> wow, original haskell had where-/expressions/ and no let
04:52:39 <elliott> and no where clauses
04:53:39 <elliott> :t approximants
04:53:40 <lambdabot> Not in scope: `approximants'
04:53:44 <elliott> ?hoogle partialQuotiens
04:53:44 <lambdabot> No results found
04:57:29 -!- CakeProphet has joined.
04:58:26 <CakeProphet> so yeah the answer is a binary tree with a root and any kind of non-empty full right subtree
04:58:41 <CakeProphet> (assuming an empty tree is complete)
04:58:52 <monqy> hi
04:58:55 <CakeProphet> s/complete/full/
04:59:38 <CakeProphet> so then the left subtree is empty and thus full, and the right subtree is full but non-empty, so the whole tree isn't complete because it's "leaning left" (however you say that technically)
04:59:46 <CakeProphet> s/leaning left/leaning right/
04:59:57 <CakeProphet> I think I've gotten into the habit of saying the opposite of what I mean so much
05:00:04 <CakeProphet> that I literally typo with opposites.
05:03:31 <CakeProphet> oh duh, also any tree where the right subtree's height is greater than the left, and both are full.
05:03:52 <CakeProphet> the question being "draw a tree where the left and right subtrees are full, but the whole tree isn't complete"
05:06:20 <Sgeo|web> ping
05:06:22 <Sgeo|web> yay
05:06:35 * Sgeo|web ponders just clueing CakeProphet in
05:06:46 <Sgeo|web> re. relevancy of [I] characters
05:06:59 <Sgeo|web> clueing. Good word, best ... word.
05:07:15 <CakeProphet> Sgeo|web: yes please clue me in.
05:07:36 <CakeProphet> ...except I already have the right answer. But I guess you're not going to clue me in on that.
05:11:11 -!- derrik has joined.
05:12:36 <Sgeo|web> Well, that was a bit of a miscommunication
05:12:50 <CakeProphet> sure was.
05:12:58 <CakeProphet> also I figured out
05:13:04 <CakeProphet> about the homestuck stuff too.
05:13:05 <CakeProphet> I reread it.
05:14:10 <Sgeo|web> Ah, ok, good
05:14:52 <CakeProphet> on an unrelated note
05:14:56 <CakeProphet> I might be getting a pet snake soon.
05:15:00 <CakeProphet> ball python.
05:15:19 <elliott> kill python, kill guido van rossum,
05:15:24 <elliott> murder,
05:15:44 <CakeProphet> I will train my ball python to kill Dutchmen.
05:16:01 <monqy> bad people have feelings too
05:16:03 <monqy> but they're bad
05:16:04 <monqy> so it's okay
05:16:13 <CakeProphet> well, I might have to get like a burmese python or something
05:16:16 <elliott> `addquote <monqy> bad people have feelings too <monqy> but they're bad <monqy> so it's okay
05:16:18 <HackEgo> 708) <monqy> bad people have feelings too <monqy> but they're bad <monqy> so it's okay
05:16:21 <Sgeo|web> Python can't be worse than PHP, at least, right?
05:16:32 <Sgeo|web> Python's half decent except for the occasional stupid decision, I think?
05:16:41 <elliott> at least people most people don't believe php is good
05:16:48 <CakeProphet> I'll train him from a young age to kill Dutchmen. Then he will slither up to Guido's bed, coil around his body (crushing his bones), and then swallow him whole.
05:16:52 <elliott> python has deluded quite a few
05:16:56 <elliott> including you apparently
05:17:28 <CakeProphet> elliott: I'm under the impression that Ruby might be a better language than Python, but currently don't actually know much about the standard library just basic syntax-semantics.
05:17:41 <CakeProphet> what say you about Ruby?
05:17:53 <elliott> im not in the business of comparing crap things but ruby is probably slightly better than python in some ways and worse in many other ways
05:17:53 <Sgeo|web> Fix lambda, add TCO, then would Python be decent?
05:17:57 <elliott> so let's call it even, and use neither
05:17:59 <elliott> Sgeo|web: no
05:18:06 <CakeProphet> Python needs way more stuff.
05:18:26 <monqy> i have to use python for scvhool stuff this quarter...it burns
05:18:34 <elliott> scvhool
05:18:38 <CakeProphet> monqy: it's not too bad honestly.
05:18:42 <monqy> CakeProphet: burns
05:18:47 <Sgeo|web> Maybe I'm too used to Python, but how does Python burn?>
05:18:48 <monqy> CakeProphet: you like perl
05:18:55 <monqy> Sgeo|web: burns
05:18:59 <CakeProphet> monqy: so?
05:19:01 <Gregor> Better question:
05:19:02 <Gregor> Does it blend?
05:19:03 <Sgeo|web> How does Python burns?
05:19:05 <monqy> CakeProphet: you have bad taste
05:19:10 <elliott> Sgeo|web: maybe i will go over it some other time with you but not now and not today.
05:19:10 <monqy> Sgeo|web: bad, burns
05:19:14 <elliott> i can give you a comprehensive list.
05:19:25 <CakeProphet> monqy: maybe I'm just comfortable programming in a variety of paradigms and languages?
05:19:25 <elliott> i might want compensation for the personal distress though.
05:19:28 <elliott> CakeProphet: hahaha
05:19:42 <monqy> CakeProphet: hahaha
05:19:49 <CakeProphet> well... I am... so...
05:19:56 <CakeProphet> I don't see what's funny.
05:19:58 <Sgeo|web> When I'm in a language I don't like, I can feel it resisting against what I want to do sometimes.
05:20:10 <CakeProphet> Sgeo|web: that's typically inexperience, in my experience.
05:20:33 <CakeProphet> typically.
05:20:43 <monqy> CakeProphet: hahaha
05:20:54 <elliott> CakeProphet: so by your wonderful proof that simply being too blind to see huge gaping language flaws == just not being as awesome as you
05:21:02 <elliott> CakeProphet: i take it you are comfortable with programming in bancstar
05:21:12 <CakeProphet> elliott: I didn't say anything about being awesome at programming.
05:21:13 <elliott> if not, maybe you're just not comfortable programming in a variety of paradigms and languages
05:21:13 * Sgeo|web does need more experience, but when I look stuff up and find what would be a very quick thing in a nice language is ... not so quick in the language I'm using..
05:21:16 <CakeProphet> or knowing every language.
05:21:24 <elliott> ah, so if you knew bancstar it would be ok?
05:21:31 <CakeProphet> elliott: I don't know.
05:21:34 <CakeProphet> some languages are in fact bad.
05:21:41 <monqy> only some of them?
05:21:42 <elliott> wow
05:21:43 <elliott> yes
05:21:44 <elliott> guess what
05:21:47 <elliott> python is one of them
05:21:56 <coppro> Sgeo|web: what are you trying to do in which language?
05:21:57 <CakeProphet> that's why no one uses them to do anything.
05:22:11 <Sgeo|web> CakeProphet: Everyone uses Java, therefore it's good?
05:22:16 <CakeProphet> no, not that either.
05:22:17 <monqy> CakeProphet: people have bad taste in languageS: a known fact
05:22:17 <Sgeo|web> coppro: I don't remember
05:22:26 <monqy> people use bancstar. people use python.
05:22:29 <monqy> this is why it is a known fact.
05:22:31 <monqy> this is why
05:22:40 <Sgeo|web> I don't think people useD bancstar by choice
05:22:42 <elliott> CakeProphet: seriously, you wouldn't defend php, so you know your argument is shit from the getgo
05:22:49 <pikhq_> Python is beloved mostly because it has a fairly comprehensive library set, and presents a low barrier to entry.
05:22:53 <monqy> elliott: or would hE???
05:22:53 <elliott> people use php too
05:22:55 <elliott> to do lots of things
05:23:04 <CakeProphet> basically
05:23:11 <CakeProphet> I just have a fair degree of leniency.
05:23:14 <pikhq_> These are not the most important qualities in language design, but they are pretty powerful in shaping language popularity.
05:23:29 <Sgeo|web> PHP is awesome, with its naming conventions of "Fuck, what was the naming convention again? i for case-insensitive? I'll just use case just in case"
05:24:16 <Sgeo|web> Naming conventions that afaict contain _? as the word separator
05:24:21 <elliott> hi; poop --disgusted, hexham
05:24:22 <CakeProphet> because I can write python programs to do things rather easily. and that's... really all I care about practically. Yes I do like beauty and elegance, but it is not required for a language to be "not too bad"
05:24:27 <elliott> CakeProphet just stop
05:24:47 <elliott> you could write php programs to do things rather easily too i am sure it is not that hard to avoid and work around its numerous warts and flaws
05:24:51 <elliott> just like with python
05:25:06 <elliott> that is not in any way a coherent defence of php and if you think it is you have problems with the very concept of "good"
05:25:07 <CakeProphet> okay.
05:25:10 <zzo38> Someone told me to make some program that has HTML with three columns of buttons, to make green and red, delete, and text box to add a button. I could use PHP, but I didn't. Instead, I used SQL.
05:25:17 <Sgeo|web> If you're experienced with PHP, presumably the nonexistent naming convention wouldn't hurt so much
05:25:24 <monqy> zzo38: a wise choice
05:25:32 <CakeProphet> python has inconsistent naming conventions as well, in practice
05:25:38 <CakeProphet> yes I realize there is One True Naming Convention
05:25:40 <zzo38> Which is better, PHP or SQL?
05:25:43 * Sgeo|web covers his ears
05:25:46 <Sgeo|web> LALALALALALA
05:25:46 <zzo38> Probably it depends what things, I suppose.
05:25:49 <CakeProphet> but if you look at actual modules it varies considerably.
05:25:51 <elliott> Sgeo|web: what
05:26:01 <Sgeo|web> elliott: not actually covering my ears
05:26:06 <elliott> WOW REALLY
05:26:17 <Sgeo|web> Pretending to to make fun of myself for liking Python
05:26:49 <Sgeo|web> zzo38: isn't your IRC client written in PHP or something?
05:26:55 <elliott> write irc client in sql,
05:26:57 <elliott> (do this)
05:26:59 <elliott> omg now i
05:27:01 <elliott> want to do that
05:27:03 <zzo38> Sgeo|web: Yes it is.
05:27:10 -!- Jafet has joined.
05:27:18 <zzo38> But some day, I might possibly write a better one in C or whatever else.
05:27:33 <elliott> sql
05:27:40 <CakeProphet> elliott: I think the main difference between Python and PHP is that PHP is just really a bad version of what perl does.
05:27:45 <elliott> wow
05:27:49 <CakeProphet> wow
05:27:54 <monqy> wow
05:27:57 <monqy> oops not enough space
05:27:58 <monqy> ooops
05:27:58 <CakeProphet> you missed.
05:28:13 <monqy> p.s. why is this happening
05:28:16 <monqy> p.s.s. why
05:28:18 <monqy> er
05:28:19 <CakeProphet> monqy: get on my level. need more spaces man.
05:28:22 <zzo38> SQL is not seem very good to me for writing IRC client; SQL is best for database stuff, which is what it is designed for.
05:28:22 <monqy> p.p.s. p.p.s.
05:28:33 <monqy> p.p.p.s. not p.s.s.
05:28:35 <Sgeo|web> monqy needs a u
05:28:37 <Sgeo|web> monquy
05:28:41 <monqy> monquy
05:29:08 <CakeProphet> elliott: so defending Python by using perl is not very convincing to you, I guess.
05:29:14 <CakeProphet> cool. debates are fun.
05:29:17 <monqy> cool
05:29:30 <Sgeo|web> Calling PHP a crappy Perl really has no relation to Python one way or the other
05:29:46 <Sgeo|web> elliott: are there any good languages that has something like Shoes?
05:29:57 <CakeProphet> right I was explaining why PHP is shit and Python is not too bad (as I originally said)
05:30:00 <CakeProphet> in my opinion.
05:30:04 <pikhq_> zzo38: Well, yeah, SQL is the canonical example of a DSL.
05:30:26 <elliott> no sql is the best
05:30:27 <monqy> whats a shoe
05:30:28 <elliott> for every
05:30:29 <elliott> purpose
05:30:50 <Sgeo|web> It's a Shoes
05:30:58 <monqy> oh
05:31:00 <monqy> whats a shoes
05:31:24 <monqy> oh wait i just remembered
05:31:31 <zzo38> I agree that PHP is full of stupid stuff.
05:31:34 <elliott> nobody knows shoes
05:33:07 <zzo38> The SQL that I used happened to be SQLite.
05:33:24 <Sgeo|web> Haskell orthopedic shoes.
05:33:46 <monqy> hos
05:34:55 <Sgeo|web> In Haskell, Oklahoma.ma
05:35:31 <monqy> ih,o.m
05:35:46 <monqy> hosih,o.m
05:35:54 <monqy> is this some kind of crude joke
05:36:18 <Sgeo|web> Tyop
05:36:24 <Sgeo|web> Because freezy chromy freezy
05:36:37 <Sgeo|web> I'm lauighinhg. this is a bad sign
05:37:20 <zzo38> Are you good at playing poker and tetris simultaneously while blindfolded?
05:38:16 <CakeProphet> elliott: so do you think it's better for a programmer to be familiar and comfortable in a variety of languages? or do you think this is a waste of time?
05:38:32 <elliott> a question intimately related to the proposition "python is crap"
05:38:39 <CakeProphet> it is?
05:38:44 <CakeProphet> I was going to like, change the topic a little bit.
05:38:51 <CakeProphet> away from pointless language discussion.
05:39:26 <CakeProphet> discussion of language worth, rather.
05:39:41 <pikhq_> CakeProphet: A programmer should be familiar and comfortable in a variety of language paradigms.
05:40:08 <pikhq_> Picking up languages in a paradigm you're already familiar with is generally a trivial exercise.
05:40:14 <CakeProphet> yes, I agree. I think it makes one a well-rounded programmer. perhaps not necessarily a better programmer overall, but at least versatile.
05:40:56 <pikhq_> I should add to this that my notion of "paradigm" might be a bit less broad than most people's.
05:41:06 <pikhq_> For instance, I'm generally inclined to call Lisp a paradigm.
05:41:13 <CakeProphet> mine is not quite as broad either.
05:41:43 <pikhq_> Actually, "paradigm" might not be the right term... Though "family" isn't quite right either.
05:41:52 <pikhq_> Human language needs to be more specific than it is.
05:42:03 <CakeProphet> pikhq_: is it perhaps related to idioms?
05:42:13 <CakeProphet> languages with shared idioms?
05:42:18 <pikhq_> Not really.
05:42:20 <CakeProphet> that's a bit vague.
05:42:30 <monqy> good thing idiomatic python sucks too
05:42:33 <pikhq_> Paradigm might actually be the right term.
05:42:48 <monqy> (Why did i bring pythoin up i must be tired (will slep soon))
05:43:01 <CakeProphet> for instance, the way you might code a problem in perl would be very different from python, ruby, C, or... well anything else I can think of.
05:43:03 <monqy> ((((Help))))))))
05:43:06 <CakeProphet> similar though.
05:43:12 <CakeProphet> in that it's procedural.
05:43:33 <pikhq_> The way you might code a problem in Perl would probably most resemble the way you'd code it in awksh.
05:43:45 <pikhq_> Where awksh is a hypothetical combination of awk and sh.
05:43:48 <CakeProphet> to a degree.
05:43:59 <CakeProphet> sh for sure is similar.
05:44:14 <Sgeo|web> Is it safe to say that Perl sucks less than sh?
05:44:17 <CakeProphet> but then sh is also a unique kind of paradigm.
05:44:22 <CakeProphet> Sgeo|web: hmmm....
05:44:27 <CakeProphet> uh... yes, I think.
05:44:31 <CakeProphet> but
05:44:33 <CakeProphet> I'm bad at sh so
05:44:40 <CakeProphet> I can't really say that confidently.
05:44:55 <pikhq_> I'm inclined to say "yes-ish".
05:45:09 <CakeProphet> perl has its own weirdness.
05:45:24 <pikhq_> Perl is far overcomplicated, but sh has *really* strange properties.
05:45:40 <pikhq_> Especially if you account for differing implementations.
05:45:55 <Sgeo|web> Randall Munroe hates X
05:46:02 <elliott> everyone hates X
05:46:11 <elliott> nobody cares who hates what and you shouldn't either
05:46:20 <CakeProphet> despite perl's faults I do find programming in it to be a joy. I'm not sure why.
05:46:32 <Sgeo|web> This puts him in the set of people who know things about X, I think.
05:46:54 <pikhq_> Hating X is a pretty good indicator of sanity amongst people who know what X is.
05:46:54 <Sgeo|web> Well, no, not necessarily
05:46:57 <CakeProphet> not a priori
05:46:58 <monqy> CakeProphet: have you considered you may be a bad person
05:47:04 <CakeProphet> monqy: no.
05:47:17 <pikhq_> Sgeo|web: You can hate X easily with only a *little* bit of knowledge about it.
05:47:26 <Sgeo|web> I know what X is, and that it's widely hated, but know no details other than server/client
05:47:33 <Sgeo|web> Which seems a bit weird to me for most uses, but
05:47:37 <pikhq_> You only begin to hate it more the more you know.
05:47:38 <CakeProphet> < CakeProphet> not a priori --re: Sgeo's statement about sets
05:48:21 <Sgeo|web> And I don't think X server vs. X client is backwards. Does this make me a bad person?
05:48:50 <pikhq_> Not *really*. Which way is appropriate is really a matter of perspective.
05:48:51 <Sgeo|web> That's probably not the big issue
05:48:59 <pikhq_> Fun fact: X11 is only *technically* userspace.
05:49:06 <CakeProphet> monqy: I think finding fondness in what monqy considers bad is probably some kind of sign of good character.
05:49:09 <CakeProphet> somehow.
05:49:10 <Sgeo|web> ......technically userspace?
05:49:27 <elliott> CakeProphet: i am sure hitler thought similar
05:49:32 <Sgeo|web> Well, does it need superuser stuff to get access to the screen?
05:49:39 <pikhq_> Worse.
05:49:48 <CakeProphet> oh snap reductio ad Hitlerum
05:49:51 <CakeProphet> I've been reduced.
05:50:08 <monqy> proof cakeprophet is literally hitler
05:50:21 <zzo38> Do you prefer Xaw?
05:50:32 <pikhq_> It has access to all the RAM (well, until recent Linux or BSD *with X.org's builtin drivers*)
05:50:48 <Sgeo|web> ....what does it need with full access to RAM?
05:51:01 <pikhq_> It needs access to the video card.
05:51:12 <zzo38> "This game is bad because Hitler played it." (a message that I included in a game that I made)
05:51:18 <pikhq_> The kernel does not provide video drivers.
05:51:21 <pikhq_> X does.
05:51:43 * CakeProphet discovered recently that perl's value/reference semantics are completely different from every other language with any kind of reference-passing thing.
05:51:53 <Sgeo|web> And video drivers typically operate by manipulating stuff in RAM that the hardware reads?
05:52:18 <monqy> CakeProphet: is this a good or bad thing
05:52:19 <elliott> No shit?
05:52:24 <elliott> Sgeo|web: How did you think they operated?
05:52:27 <pikhq_> Yeah, the video cards essentially always are accessed via memory mapping.
05:52:28 <CakeProphet> monqy: neither. it was just unexpected.
05:52:31 <elliott> Sgeo|web: It's called memory-mapping.
05:52:35 <CakeProphet> monqy: resulting in a bug in my program
05:52:37 <elliott> The reads and writes go to the hardware.
05:52:52 <pikhq_> Even *VGA* functions primarily by writing directly to the framebuffer like this.
05:53:05 <CakeProphet> `perl -e "my %t=(); my $x = \%t; %t = (x=>2, y=>3); print %$x"
05:53:07 <HackEgo> No output.
05:53:12 <CakeProphet> `perl -e 'my %t=(); my $x = \%t; %t = (x=>2, y=>3); print %$x'
05:53:14 <HackEgo> No output.
05:53:15 <Sgeo|web> Ok. elliott, I don't know, CPU instructions that say "Send this to that hardware". Although I guess doing that by any means other than memory-mapping would be intolerable
05:53:16 <CakeProphet> ...wat
05:53:52 <CakeProphet> well nevermind, I still don't know how it works completely.
05:53:55 <elliott> Sgeo|web: Well, there's port IO. But it's horrible.
05:54:04 <zzo38> There is CPU instruction for port I/O
05:54:13 <pikhq_> Sgeo|web: There *are* instructions for doing that; outb and inb. There's 2^16-1 ports for that, and you can only send 16 bits per instruction, and it's a royal pain to use, and it's x86-specific.
05:54:27 <pikhq_> Sorry, not 16 bits per instruction. 8.
05:54:38 <Sgeo|web> Ok, that makes sense
05:54:47 <Sgeo|web> I mean, the use of memory-mapping
05:54:55 <Sgeo|web> I guess the complaint is that it's X that does it?
05:54:59 <Sgeo|web> Instead of kernel
05:55:07 <pikhq_> For this in particular, yeah.
05:55:22 <zzo38> I do not think port I/O is bad. It is good for some things. But memory mapping is also good for some things.
05:55:24 <pikhq_> X essentially is kernel mode stuff that pretends not to be.
05:55:34 <elliott> Have I mentioned @ handles this perfectly?
05:55:35 <pikhq_> zzo38: Port IO is just quite limited.
05:56:30 <Sgeo|web> zzo38: I'd imagine memory mapping to be good for things where a lot of stuff needs to be sent quickly
05:56:46 <Sgeo|web> Wait, it still takes CPU instructions to change RAM
05:56:53 <CakeProphet> `run perl -e '%t=(1,2); $x = \%t; %t = (1,2,3,4); print %$x;'
05:56:55 <HackEgo> 1234
05:57:00 <CakeProphet> monqy: can you read that code?
05:57:05 <CakeProphet> to see what I'm talking about?
05:57:35 <Sgeo|web> That line makes perfect sense
05:57:44 <elliott> Sgeo|web: memory-mapped IO does _not touch RAM_.
05:57:45 <CakeProphet> yes it does. now.
05:57:51 <elliott> At least not the main RAM.
05:57:53 <monqy> CakeProphet: maybe. i'll try.
05:58:04 <monqy> CakeProphet: that's gross
05:58:06 <monqy> CakeProphet: so gross
05:58:09 <monqy> CakeProphet: why would you do that
05:58:11 <monqy> CakeProphet: ughhhhh
05:58:13 <zzo38> Memory mapping is better for the video because you can put the address of memory for each character cell in the grid, or each pixel, etc.
05:58:32 <Patashu> what does % and \% mean in perl
05:58:40 <elliott> % is hash
05:58:42 <CakeProphet> % goes in front of hash variables
05:58:44 <pikhq_> Yeah, it's more that certain physical addresses just hit hardware rather than RAM.
05:58:44 <Sgeo|web> elliott: right, derp, sorry. Actually, I wasn't sure about that TBH. But it still takes instructions to update each byte of "RAM", doesn't it?
05:58:47 <CakeProphet> \ is reference
05:58:58 <elliott> Sgeo|web: Sure, if RAM writing instructions only took one byte...
05:59:06 <CakeProphet> but yeah the semantics I wanted in my program went like this:
05:59:15 <CakeProphet> `run perl -e '%t=(1,2); $x = {%t}; %t = (1,2,3,4); print %$x;'
05:59:17 <HackEgo> 12
05:59:34 <CakeProphet> basically I wanted to make a copy so that overwriting t doesn't change the value referenced by $x
05:59:35 -!- derrik has quit (Ping timeout: 252 seconds).
05:59:35 <pikhq_> Sgeo|web: Memory access can happen on the *word*, not just the byte. Also, it's pretty heavily optimised.
05:59:42 <Patashu> {%t} is code that's executed immediately?
05:59:50 <CakeProphet> no {} is a hash reference in this case.
05:59:55 <Patashu> uh-huh?
06:00:01 <Patashu> I just need to shut up about perl
06:00:16 <CakeProphet> {%t} makes a copy of %t and then returns a reference to that copy.
06:00:18 <elliott> pikhq_: also there are instructions for copying huge blocks...
06:00:25 <elliott> admittedly they're likely slower than really finely-tuned loops these days
06:00:35 <Sgeo|web> pikhq_: can I pretend the CPU is like a switch/case? If so, would the memory access instructions be closer than the port I/O ones to being first to be checked against
06:00:40 <CakeProphet> \%t just makes a reference to the /variable/ %t. So like, changing %t changes everything it references to.
06:00:47 <pikhq_> Sgeo|web: You really, truly cannot any more.
06:01:02 <Sgeo|web> pikhq_: erm, sorry?
06:01:17 <pikhq_> CPU designs are more complicated than you think.
06:01:35 <CakeProphet> also you can do fun things like:
06:01:36 <CakeProphet> `run perl -e '%t=(y=>2); $x = \$t{x}; $$x = 4; print %t;'
06:01:38 <HackEgo> y2x4
06:01:45 <pikhq_> A CPU is generally executing several instructions in parallel, with a lot of work going into making them appear to execute instructions in serial.
06:01:45 <zzo38> Port I/O would be good for keyboard, since keyboard is an external device, it need to send/receive to computer, to tell the signal of which key is pushed.
06:01:46 <CakeProphet> references to hash table keys.
06:01:49 <elliott> Sgeo|web: what
06:01:54 <elliott> Sgeo|web: switch/case compiles to a jump table
06:01:57 <CakeProphet> that may not even exist beforehand.
06:01:58 <elliott> there's no "nearness" to it
06:02:02 <elliott> (at least in C)
06:02:16 <elliott> that's, you know, the whole reason to use switch
06:02:23 <pikhq_> Or, in the case of many RISC CPUs, a lot of documentation about when you cannot assume serial execution.
06:02:25 <Sgeo|web> elliott: hence the s|switch/case|if/else if| which apparently I did not actually type
06:02:33 <CakeProphet> monqy: references are probably the grossest part of perl, I'd say.
06:02:45 <elliott> Sgeo|web: cpus don't; have never worked that way
06:02:51 <zzo38> pikhq_: Invent a nonserial CPU.
06:03:01 <CakeProphet> Python could probably benefit from having references. maybe.
06:03:17 <CakeProphet> but that will never, ever happen.
06:03:27 <pikhq_> zzo38: Take PPC, remove all serialism guarantees, add some more join primitives, bam.
06:03:44 <pikhq_> (this will probably not be any better)
06:03:46 <elliott> CakeProphet:
06:03:49 <elliott> def ref(x): return [x]
06:03:53 <elliott> def deref(x): return x[0]
06:03:58 <CakeProphet> elliott: well yes
06:03:58 <elliott> def put(x,v): x[0] = v
06:03:59 <CakeProphet> there's always that
06:04:03 <CakeProphet> you could do it via class.
06:04:07 <elliott> this is also how you do closures
06:04:08 <elliott> pre-thre
06:04:09 <elliott> e
06:04:14 <pikhq_> Sgeo|web: Also fun: there are 0 clock cycle instructions on x86.
06:04:28 <Sgeo|web> Not sure what a clock cycle instruction is
06:04:28 <CakeProphet> elliott: but it's funny how adding actual references would be AWFUL according to Python programmers.
06:04:41 <CakeProphet> elliott: even though you can already do that.
06:04:44 <pikhq_> Sgeo|web: That's "an instruction that takes 0 clock cycles to execute".
06:05:09 <Sgeo|web> I... assume that's a theoretical thing, that is it behaves as if... somehow?
06:05:22 <pikhq_> x87 is very very strange.
06:05:30 <Sgeo|web> x87 now?
06:05:38 <elliott> that's the fpu chip
06:06:01 <pikhq_> You know how it presents an API of a single floating point stack, with entries mapped to registers?
06:06:07 <elliott> i doubt he does
06:06:17 <Sgeo|web> I can imagine based on what pikhq_ just said
06:06:19 <pikhq_> x87 has instructions for various stack swapping operations on that stack.
06:06:27 <CakeProphet> Patashu: you should totally learn perl. best language. porpoises.
06:06:38 <CakeProphet> it has the best porpoises.
06:07:03 <Sgeo|web> pikhq_: x86 can swap registers without calls to x87?
06:07:22 <pikhq_> Sgeo|web: No, x87 can swap floating point registers.
06:07:23 <elliott> Man, Siri looks pretty impressive.
06:07:38 <pikhq_> Modern implementations, though, just treat that as a register rename.
06:08:00 <Sgeo|web> And this takes 0 clock cycles?
06:08:08 <Sgeo|web> Or is this something else altogether
06:08:23 <pikhq_> The operation gets stuck in the pipeline, gets decoded, and then that's the end of execution.
06:08:42 <zzo38> In D&D game I did advance level. I can take two psionic power and two spells, due to Cerebremancer class. I have already selected powers, which are, Dimension Door, Ethereal Agent, but I have not selected the spells, yet.
06:08:42 <CakeProphet> monqy: er so wait did you figure out what it did
06:08:46 <Sgeo|web> I know nothing about CPU internals
06:08:49 <CakeProphet> monqy: or did you just start calling it gross.
06:08:50 <Sgeo|web> Or, well, very, very little
06:08:54 <pikhq_> Up to a certain amount of them, and your x87 stack manipulation is free.
06:09:03 <elliott> pikhq_: well not totally free
06:09:05 <elliott> it still has to be decoded :)
06:09:27 <zzo38> I want to write a GPU program with open source Checkout. But, currently there is no such program to make that.
06:09:47 <pikhq_> elliott: Okay, pretty darned close to free.
06:10:00 <elliott> "iPhone 4 ass" -- iPhone 4S, attempting to decode someone saying its name
06:10:56 <CakeProphet> speaking of smartphones I have a phone upgrade and am thinking about wasting money on a smartphone I don't need.
06:11:11 <elliott> Oh my god tell me it doesn't know the ultimate question.
06:11:12 <Sgeo|web> Does iOS 5 allow for the sort of multitasking that would be required to have an IRC client running in the background?
06:11:12 <CakeProphet> when my Blackberry curve does everything I need. what do?
06:11:13 <elliott> Tell me
06:11:14 <elliott> it
06:11:14 <elliott> it does
06:11:21 <elliott> (Thanks to W|A but still.)
06:11:32 <elliott> HAHAHA IT KNOWS "OPEN THE POD BAY DOORS" BUILT-IN
06:11:58 <monqy> CakeProphet: you were making x reference t, mutating t, and wow it mutated x (ewwwwwwwwwwwwwwwwwww) (this was in the first one)
06:12:00 <elliott> Sgeo|web: I'm pretty sure iOS 4 had multitasking.
06:12:23 <Sgeo|web> I remember reading that it was only certain things that can multitask, or was that an earlier iOS?
06:12:25 <CakeProphet> monqy: well, x technically didn't mutate, but yes.
06:12:35 <monqy> the appearance of x mutated
06:12:38 <monqy> that betteR?
06:12:47 <elliott> "Before iOS 4, multitasking was limited to a selection of the applications Apple included on the devices.[23] Apple worried that running multiple third-party applications simultaneously would drain batteries too quickly. Starting with iOS 4, on 3rd-generation and newer iOS devices, multitasking is supported through seven background APIs:[24]"
06:12:57 <CakeProphet> monqy: actually now that I think about it this is how most languages with references/pointers work I was just expecting weird things from it.
06:13:30 <Sgeo|web> Do any of those seven background APIs allow for IRCing?
06:13:31 <elliott> Sgeo|web: anyway, a bouncer is a trivial solution to that
06:13:46 <elliott> and obviously nicer than a separate mobile connection
06:14:21 <CakeProphet> monqy: also you would use references when you want a function to produce multiple results and put them in varying locations, for example.
06:14:46 <Sgeo|web> Hmm, probably could be faked through one of them
06:14:48 <CakeProphet> monqy: this is one of the ways perl does command line option processing. you give it a hash table of the options and the variable that should be changed based on the options found.
06:15:13 <elliott> "Due to the way multitasking is implemented in iOS, Mobile Colloquy can't stay connected constantly. When you press the Home button or switch applications, Mobile Colloquy asks iOS to allow it to continue to run to complete a task in the background, that task being to keep you connected for as long as possible. Any highlight word mentions, or private messages you receive will trigger a notification whi
06:15:13 <elliott> le Colloquy is running in the background.
06:15:13 <elliott> Tasks can only last a maximum of 10 minutes, so 9 minutes after you've switched away from Colloquy it'll warn you that you'll be disconnected in a minute. To continue to stay connected, just tap Open on the alert. Switching back to Colloquy before 10 minutes have elapsed, then switching away again will reset the countdown."
06:15:17 <elliott> Sgeo|web: honestly, a bouncer is the best way
06:15:20 <monqy> CakeProphet: i.e. grose?
06:15:24 <elliott> then the only side-effect is that you only get notifications for like ten minutes but who cares
06:15:26 <elliott> oh
06:15:29 <elliott> that's wrong
06:15:32 <elliott> push notifications still work it seems
06:15:34 <CakeProphet> eh, convenient, but I guess gross by monqy's definition since it involves mutation, so yes.
06:16:07 <elliott> Sgeo|web: so yeah, tl;dr bouncers are the best solution to that, even on a phone that does full multitasking (= is sluggish, with the kind of apis unix provides)
06:16:15 <elliott> (and that most people imitate)
06:16:37 <CakeProphet> I should invent a language that operates entirely via mutation of memory locations.
06:16:40 <CakeProphet> I'll call it x86.
06:16:50 <elliott> CakeProphet: that's in cpressey's louie
06:16:54 <elliott> everything memory-mapped
06:16:56 <elliott> including control
06:17:06 <monqy> CakeProphet: ill murder you with a rusty stick
06:17:08 <CakeProphet> how does that work.
06:17:16 <pikhq_> That Wireworld CPU did the same thing.
06:17:42 <pikhq_> (Wireworld being a CA that essentially imitates electronics)
06:17:45 <elliott> oh hm
06:17:49 <elliott> CakeProphet: http://catseye.tc/projects/zowie/
06:17:53 <elliott> the louie one is an additional thing
06:17:56 <elliott> so that actually exists
06:18:19 <elliott> "ZOWIE is a programming language where all flow-control is both memory-mapped and structured. It is memory-mapped in the sense that changes in flow are triggered by changes made to memory locations, and it is structured in the sense of structured programming – the programmer never deals with gotos, offsets, or labels of any kind."
06:18:29 <elliott> omg it uses transactions
06:18:31 <elliott> this is the hottest language
06:19:20 <CakeProphet> so sexy.
06:19:27 <elliott> no sarcasm fuck you
06:20:01 <CakeProphet> if anything that was a little bit of wordplay. I don't really know anything about this language yet so sarcasm would be unwarranted.
06:20:25 <Sgeo|web> I don't know much about Wireworld except it looks interesting
06:20:38 <elliott> "Don't overcook that egg." - Siri
06:20:39 <elliott> rude
06:20:49 <Sgeo|web> Not TC though, any more than a real computer presumably
06:21:05 <elliott> :D he informs siri he's actually making tea (it said that after setting a timer), and it's rude enough to tell him about tea rooms in the area
06:21:10 <elliott> "no no, here's how to get a proper cup of tea"
06:21:19 <elliott> Sgeo|web: it is with an infinitely tiled pattern
06:21:25 <CakeProphet> monqy: oh hey guess what I made effective use of references to reduce the size of some code. nyah nyah nyah
06:22:03 -!- Ngevd has joined.
06:22:22 <Ngevd> Hello!
06:22:39 <monqy> CakeProphet: nyah in hell
06:22:55 <CakeProphet> ($grams, $fs) = \($data{$dset}, $freqs{$dset})
06:23:07 <CakeProphet> the whole "referencing a list makes a list of references" is probably the weirdest thing ever
06:23:10 <CakeProphet> but I just found a use for it...
06:24:31 * elliott resists the urge to support bad market and ethical practices
06:24:59 <Ngevd> I like Wednesdays
06:25:05 <Ngevd> :)
06:25:09 <CakeProphet> in other words \($a, $b) == (\$a, \$b)
06:25:10 <elliott> Sgeo|web: btw, i bet you could hack up "native" irc with the voice over ip stuff
06:25:15 <elliott> but it'd be awkward and terrible
06:25:19 <CakeProphet> but \@array is just an array reference.
06:25:24 <CakeProphet> because arrays are not quite the same as lists.
06:25:37 <Ngevd> Hang on, what language is this?
06:25:39 <CakeProphet> perl.
06:25:42 <CakeProphet> ..
06:25:43 <Ngevd> Okay
06:25:46 <CakeProphet> assuming you're talking to me.
06:25:56 <elliott> Sgeo|web: also all this api stuff is unrelated to the actual multitasking UI which is exposed for all apps obviously
06:26:01 <Ngevd> Thought it was Haskell for a second, got all confused
06:26:05 <CakeProphet> lol what
06:26:09 <CakeProphet> you best be trolling.
06:26:11 <Ngevd> And yes, CakeProphet, I was talking to you
06:26:17 <Ngevd> No, I'm just tired
06:26:38 -!- zzo38 has quit (Quit: I am also tired.).
06:26:41 <CakeProphet> elliott and monqy are going to kill you in your sleep now. I imagine.
06:26:41 <elliott> "The secondary design goal of ZOWIE was to strike the perfect balance between It's a Mad Mad Mad Mad World and The Party. It is generally considered a morbid failure in that regard, what with not being a madcap 60's movie and all."
06:26:42 <Ngevd> And possibly hallucinating
06:26:46 <elliott> zzo38: best quit message
06:27:10 <Ngevd> Can we add quit messages to the quotes?
06:28:02 <CakeProphet> ($grams, $fs) = \($data{$dset=$1}, $freqs{$dset})
06:28:03 <CakeProphet> bahahahaha
06:28:05 <CakeProphet> so evil.
06:28:14 <elliott> Ngevd: yes but it'd need more context than is reasonable to work well i think
06:28:19 <monqy> CakeProphet: why are you doing this......
06:28:36 <CakeProphet> monqy: well I did that because it removed a line of code and isn't really all that difficult to follow.
06:29:40 <Ngevd> <Ngevd> I'm just tired - zzo38 has quit IRC: Quit: I am also tired.
06:29:46 <Ngevd> PERFECT
06:29:49 <monqy> it depnds on the order of evaluation of the things in the thing aghahgahghaghaghahgahghaghaghaghh
06:29:58 <CakeProphet> monqy: that's fine
06:30:00 <monqy> no
06:30:01 <monqy> it isnt
06:30:02 <CakeProphet> monqy: it's left to right.
06:30:03 <monqy> dIE
06:30:36 <CakeProphet> monqy: I would never rely on order of evaluation in a non-strict language. but this is not one of those languages.
06:31:27 <Sgeo|web> WHILE+arithmatic+unbounded num of registers = TC?
06:31:27 <elliott> you can't rely on order of evaluation in a non-strict language
06:31:28 <elliott> usually
06:31:36 <CakeProphet> elliott: precisely.
06:31:38 <elliott> Sgeo|web: most things are tc
06:31:46 <CakeProphet> elliott: or, rather, it requires some pondering.
06:31:50 <CakeProphet> but can be done in some situations.
06:32:07 <CakeProphet> actually I don't even need $dset I can just put $1 there.
06:32:10 <CakeProphet> even better.
06:32:20 <elliott> Sgeo|web: 0 - delete leftmost bit (of program); 1 -> look at next bit x; if leftmost program bit is 1: copy x to right end of program
06:32:27 <elliott> Sgeo|web: cycle to beginning when reaching the end
06:32:32 <elliott> Sgeo|web: that's most likely TC
06:32:56 <elliott> empty program string → halt, if you want a halting state (it'll just infloop otherwise)
06:33:05 <CakeProphet> monqy: let's see.. how else can I make you hate me.
06:33:06 <elliott> no loop apart from one outer, unconditional loop; only one conditional
06:33:09 <CakeProphet> oh I know I could remove all unecessary spaces.
06:33:14 <elliott> and that conditional has no loop-breaking power
06:33:19 <elliott> and also no data outside the program
06:33:21 <CakeProphet> parse$fl close$f; etc
06:33:26 <CakeProphet> -l
06:33:28 <elliott> if that's TC, how could while+arithmetic not be? :-)
06:33:41 <CakeProphet> but I won't do that because spaces are good.
06:34:31 <monqy> can you make all loops/recursion be done by self-modification
06:34:36 <CakeProphet> but when golfing NO INSIGNIFICANT SPACES ALLOWED.
06:34:53 <CakeProphet> otherwise those sigils would add up.
06:36:46 <elliott> ?undo do x <- f a; g b >>= h x
06:36:47 <lambdabot> f a >>= \ x -> g b >>= h x
06:36:48 <elliott> ?. pl undo do x <- f a; g b >>= h x
06:36:48 <lambdabot> (g b >>=) . h =<< f a
06:37:45 <Sgeo|web> Oh, I see why it's called undo
06:37:47 -!- nooga has joined.
06:37:57 <CakeProphet> Sgeo|web: ...good job.
06:38:09 <Sgeo|web> CakeProphet: when I saw it used before this, it was with a list comprehension
06:38:21 <elliott> "Note note: It seems some of you are having trouble understanding the version system being used for SMITH, which is eminently understandable given that it is completely inconsistent. The first version had no version. The second version, released a scant few days later, containing many new instructions, was "v2". That version was re-christened "version 2.0L" when we added the BSD license to it (because
06:38:22 <elliott> "L" is for "license", y'see?) The third version, released a scant few years later, was "version 2007.0722". This was back when we thought date-based version numbers could substitute entirely for sequence-based version numbers. This version was also known as "version 2.1 revision 2007.0722" when we dropped that idea. The current version, which differs mainly in that its documentation contains this parag
06:38:22 <elliott> raph, is version 2.1-2011.0922. Your knowledge is now complete. Go home."
06:38:22 <CakeProphet> oh okay.
06:38:46 <CakeProphet> Closes the file or pipe associated with the filehandle, flushes the IO buffers, and closes the system file descriptor. Returns true if those operations succeed and if no error was reported by any PerlIO layer. Closes the currently selected filehandle if the argument is omitted.
06:38:53 <CakeProphet> I wonder what the hell the "currently selected" filehandle is.
06:39:00 <CakeProphet> I guess the... last thing I opened?
06:39:30 <Sgeo|web> is it bad that i started versioning for my product at 5
06:39:35 <elliott> yes you are bad die
06:39:52 <Sgeo|web> next version will be 5.1
06:40:16 <CakeProphet> `run touch test && perl -e 'open (my $f = "test"); close; print $f "test"'
06:40:18 <HackEgo> No output.
06:40:24 <CakeProphet> `run cat test
06:40:26 <HackEgo> No output.
06:40:29 <CakeProphet> ....?
06:40:31 <CakeProphet> okay.
06:40:43 <Sgeo|web> `run ls | grep test
06:40:45 <HackEgo> test
06:41:04 <elliott> Aw, cpressey shelved rho.
06:41:08 <Sgeo|web> `run ls | grep nosuchfilenananeenerneener
06:41:10 <HackEgo> No output.
06:41:20 <CakeProphet> `run perl -e 'open ($_ = "test"); close; print $_ "test"'
06:41:21 <Sgeo|web> `run touch "No output."
06:41:22 <HackEgo> No output.
06:41:23 <HackEgo> No output.
06:41:28 <CakeProphet> `cat touch
06:41:30 <HackEgo> cat: touch: No such file or directory
06:41:35 <CakeProphet> ...
06:41:35 <elliott> `ls
06:41:37 <HackEgo> GBP_1865 \ No output. \ bin \ canary \ cups \ karma \ lib \ m \ paste \ pound_1752 \ quotes \ quotes.new \ share \ test \ wisdom
06:41:48 <elliott> `run rm GBP_1865 pound_1752 'No output.'
06:41:50 <HackEgo> No output.
06:41:53 <elliott> `run diff quotes quotes.new | paste
06:41:55 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.22839
06:42:10 <elliott> `rm quotes.new
06:42:10 <Sgeo|web> Gregor fix your HTTP headers
06:42:12 <HackEgo> No output.
06:42:12 <CakeProphet> okay so I have no idea what it means by currently selected filehandle.
06:42:13 <elliott> `ls cups
06:42:15 <HackEgo> cups
06:42:16 <elliott> `cat cups
06:42:18 <HackEgo> No output.
06:42:21 <elliott> `rm cups
06:42:22 <HackEgo> No output.
06:42:23 <elliott> `cat test
06:42:25 <HackEgo> No output.
06:42:26 <elliott> `rm test
06:42:27 <HackEgo> No output.
06:42:30 <elliott> `ls
06:42:32 <HackEgo> bin \ canary \ karma \ lib \ m \ paste \ quotes \ share \ wisdom
06:42:35 <elliott> `cat m
06:42:35 <Sgeo|web> `run echo "No output." > "No output."
06:42:36 <HackEgo> No output.
06:42:38 <HackEgo> No output.
06:42:41 <elliott> `run rm "No output."
06:42:43 <HackEgo> No output.
06:42:43 <elliott> `rm m
06:42:45 <HackEgo> No output.
06:42:46 <elliott> `ls
06:42:48 <HackEgo> bin \ canary \ karma \ lib \ m \ paste \ quotes \ share \ wisdom
06:42:50 <elliott> `rm m
06:42:51 <elliott> `ls
06:42:53 <HackEgo> rm: cannot remove `m': No such file or directory
06:42:53 <Sgeo|web> elliott: killjoy
06:42:53 <HackEgo> bin \ canary \ karma \ lib \ paste \ quotes \ share \ wisdom
06:43:02 <elliott> Sgeo|web: I don't want HackEgo to end up filled with shit again.
06:43:05 <CakeProphet> time to ask #perl I guess.
06:44:47 <CakeProphet> ah okay so the currently selected filehandle is selected via the select function.
06:44:53 <CakeProphet> okay...
06:47:30 <CakeProphet> so select $f would be equivalent to something like sys.stdout, sys.stdin, sys.stderr = f, f, f
06:47:33 <CakeProphet> in Python
06:47:41 <CakeProphet> sys.stdout = sys.stdin = sys.stderr = f
06:47:48 <elliott> ?pl f "x" . g (map f xs)
06:47:48 <lambdabot> f "x" . g (map f xs)
06:47:54 <elliott> hmph
06:50:00 <CakeProphet> I enjoy perl's concept of lvalue.
06:50:32 <CakeProphet> open my $t, ">$target_file";
06:50:57 <Ngevd> Now I will have shower
06:51:02 <Ngevd> Goodbye IRC
06:51:12 -!- Ngevd has quit (Quit: CLEANLINESS).
06:51:20 <CakeProphet> I have really encountered anything else that treats lvalues are a special kind of expression.
06:51:28 <CakeProphet> s/are/as/
06:51:37 <CakeProphet> er... except Lisp maybe?
06:51:41 <CakeProphet> I guess that's similar.
06:52:42 <elliott> ?hoogle [a] -> Integer -> a
06:52:42 <lambdabot> Data.List genericIndex :: Integral a => [b] -> a -> b
06:52:42 <lambdabot> Data.List intersperse :: a -> [a] -> [a]
06:52:43 <lambdabot> Data.List genericDrop :: Integral i => i -> [a] -> [a]
06:52:46 <elliott> ?hoogle [a] -> Integer -> Maybe a
06:52:47 <lambdabot> Data.List genericIndex :: Integral a => [b] -> a -> b
06:52:47 <lambdabot> Data.List elemIndex :: Eq a => a -> [a] -> Maybe Int
06:52:47 <lambdabot> Prelude const :: a -> b -> a
06:52:53 <elliott> ?hoogle listToMaybe
06:52:53 <lambdabot> Data.Maybe listToMaybe :: [a] -> Maybe a
06:55:03 <monqy> i'mj remembering a package that had some stuff that turned list operations which could fail into maybes was it called safe
06:55:09 <monqy> or is this not what you want
06:55:11 <monqy> ()
06:56:58 <elliott> hi
06:57:07 <monqy> aosigdf
06:57:39 <monqy> i should slep but i want to get a heads tart on the python i have to do by friday (oops)
06:58:03 <monqy> maybe what i have done thus far is a heads tart ennough
06:58:14 <CakeProphet> monqy: what's the assignment?
06:58:48 <monqy> it's a prorgm analysis. just a simple anyslisis (constant propagation) but it's python and i have to learn this wacky framework the class is using
06:59:05 <elliott> ?pl (a -> m b) -> m c -> m c
06:59:05 <lambdabot> (line 1, column 4):
06:59:06 <lambdabot> unexpected ">"
06:59:06 <lambdabot> expecting variable, "(", operator or ")"
06:59:11 <elliott> ?hoogle (a -> m b) -> m c -> m c
06:59:12 <lambdabot> Control.Exception handleJust :: Exception e => (e -> Maybe b) -> (b -> IO a) -> IO a -> IO a
06:59:12 <lambdabot> Control.Exception.Base handleJust :: Exception e => (e -> Maybe b) -> (b -> IO a) -> IO a -> IO a
06:59:12 <lambdabot> Control.OldException handleJust :: (Exception -> Maybe b) -> (b -> IO a) -> IO a -> IO a
06:59:19 <elliott> ?hoogle (a -> m ()) -> m c -> a -> m c
06:59:19 <lambdabot> No results found
06:59:22 <elliott> ?hoogle (a -> m b) -> m c -> a -> m c
06:59:23 <lambdabot> No results found
06:59:28 <elliott> ?pl f >=> const (return g)
06:59:28 <lambdabot> f >=> const (return g)
06:59:34 <elliott> ?hoogle (a -> m b) -> c -> a -> m c
06:59:34 <lambdabot> No results found
06:59:34 <elliott> hmm
06:59:44 <elliott> :t ((<$) .)
06:59:45 <lambdabot> forall a (f :: * -> *) b (f1 :: * -> *). (Functor f, Functor f1) => f1 a -> f1 (f b -> f a)
07:00:02 <monqy> nice caleskell
07:00:06 <elliott> :t ((<$) P..)
07:00:07 <lambdabot> Couldn't find qualified module.
07:00:08 <elliott> :t ((<$) Prelude..)
07:00:09 <lambdabot> forall b (f :: * -> *) b1 a. (Functor f) => (a -> b) -> a -> f b1 -> f b
07:00:19 <elliott> oh well
07:00:25 <elliott> ttyReg :: Register
07:00:25 <elliott> ttyReg = Register
07:00:25 <elliott> { peek = fromIntegral . ord <$> getChar
07:00:25 <elliott> , poke = putChar . chr . fromIntegral >=> const (return ttyReg)
07:00:25 <elliott> }
07:00:27 <elliott> it not so bad
07:01:15 <monqy> i'll just / do my stuff tomorrow
07:01:21 <monqy> now: slepe
07:01:22 -!- monqy has quit (Quit: hello).
07:02:44 -!- copumpkin has quit (Ping timeout: 248 seconds).
07:03:07 <elliott> R7
07:03:07 <elliott> When a value is written into R7, the boolean negation of that value is written into R7: 1 if the value was 0, and 0 otherwise. Reading from R7 always offers the value 7.
07:03:10 <elliott> no...........................
07:03:13 <elliott> wronge....
07:03:36 -!- copumpkin has joined.
07:04:32 <Sgeo|web> elliott: wait what
07:04:42 <Sgeo|web> elliott: you're saying that the spec is wrong?
07:04:47 <elliott> obviously
07:04:52 <elliott> that's self-contradictory
07:04:54 <elliott> and
07:04:55 <elliott> R8
07:04:55 <Sgeo|web> I mean, that spec is useless, but does useless == wrong?
07:04:55 <elliott> Not really memory-mapped, but used as an "accumulator" by the registers R4 through R7.
07:05:01 <elliott> shows the obvious intended interpretation
07:05:16 <Sgeo|web> True
07:05:18 <elliott> Sgeo|web: dude, interpreting charitably is the only reason any funge ninety-eight interpreters exist
07:05:23 <elliott> same guy, same rules
07:05:46 <Sgeo|web> elliott: huh. Why wouldn't Funge-98 interpreters exist with a strict interpretation?
07:05:58 <elliott> the spec is almost certainly self-contradictory
07:06:00 <Sgeo|web> !seen cpressy
07:06:02 <elliott> and if not that, large swathes of it are useless
07:06:06 <Sgeo|web> seen cpressy
07:06:14 <Sgeo|web> !seen cpressey
07:06:18 -!- Jafet has quit (Quit: Leaving.).
07:06:25 <Sgeo|web> ~seen cpressey
07:06:38 <Sgeo|web> [^W]seen cpressey
07:06:52 <CakeProphet> Sgeo|web: where is the arbitrary Python injection bug?
07:06:59 <CakeProphet> can I exploit it now?
07:07:13 <Sgeo|web> CakeProphet: wait what?
07:07:27 <CakeProphet> ...nevermind
07:07:27 <Sgeo|web> Is there a bug in PSOX that I mentioned years ago that you're talking about now?
07:07:43 <Sgeo|web> I mean, sure, fair enough given our miscommunication earlier
07:10:13 <elliott> ...
07:11:07 <Sgeo|web> elliott: CakeProphet brought up Homestuck a while ago. More recently, he was talking about some tree thing. I offered to give him some help, intending to refer to his Homestuck confusion, and he thought I meant the tree stuff.
07:12:06 <elliott> just stop
07:12:54 * Sgeo|web will not obey HCF instructions
07:13:09 <Sgeo|web> I'm tired, I need to be asleep 3 hours ago
07:13:14 <Sgeo|web> I have class early in the morning
07:13:16 <Sgeo|web> mroing
07:14:59 <elliott> ?hoogle m (a -> b) -> a -> m b
07:15:00 <lambdabot> Control.Applicative (<*>) :: Applicative f => f (a -> b) -> f a -> f b
07:15:00 <lambdabot> Control.Monad ap :: Monad m => m (a -> b) -> m a -> m b
07:15:00 <lambdabot> Control.Applicative (<**>) :: Applicative f => f a -> f (a -> b) -> f b
07:15:06 <elliott> hmph
07:15:22 <elliott> ?pl \x -> do f <- m; return (f x)
07:15:22 <lambdabot> (line 1, column 16):
07:15:23 <lambdabot> unexpected ";"
07:15:23 <lambdabot> expecting letter or digit, variable, "(", "`", "!!", ".", operator or end of input
07:15:27 <elliott> ?. pl undo \x -> do f <- m; return (f x)
07:15:27 <lambdabot> (`fmap` m) . flip id
07:15:40 <elliott> sigh
07:16:51 <elliott> ?hoogle (a -> b) -> a -> f b
07:16:51 <lambdabot> Prelude ($) :: (a -> b) -> a -> b
07:16:51 <lambdabot> Prelude ($!) :: (a -> b) -> a -> b
07:16:52 <lambdabot> Data.Function ($) :: (a -> b) -> a -> b
07:17:01 <elliott> ?pl (`fmap` return n)
07:17:01 <lambdabot> (`fmap` return n)
07:17:03 <elliott> ?pl \n -> (`fmap` return n)
07:17:03 <lambdabot> flip fmap . return
07:18:21 <CakeProphet> elliott: pl is a style nazi.
07:18:54 <elliott> ?. pl undo do ac <- register accum; (v +) <$> peek ac >>= poke ac
07:18:55 <lambdabot> ap ((>>=) . ((v +) <$>) . peek) poke =<< register accum
07:18:56 <CakeProphet> also what are you doing right now.
07:18:58 <elliott> lovely
07:20:37 <CakeProphet> ......what the fuck just happened.
07:20:40 <CakeProphet> my screen went to a the ubuntu startup debug message stuff
07:20:53 <CakeProphet> with a lot of memory adddresses and stuff I could understand, and just stayed there for about a minute
07:21:02 <CakeProphet> before coming back to X-stuff
07:21:15 <CakeProphet> *couldn't
07:21:47 <Sgeo|web> Were your X programs still running?
07:22:05 <CakeProphet> um, yes everything is fine now.
07:22:13 <CakeProphet> at the time, no idea everything was frozen
07:22:20 <CakeProphet> actually the mouse was still visible and I could move it around.
07:22:24 <Sgeo|web> Huh. I _think_ I vaguely remember X randomly crashing on me in the past
07:22:33 <Sgeo|web> But that closed out all my X programs
07:22:47 <Sgeo|web> I have a feeling "X programs" is the wrong moniker
07:22:48 <CakeProphet> but I couldn't switch ttys (I think that's the right term? what you do when you press ctrl+alt+fN)
07:23:07 <pikhq_> CakeProphet: "TTYs" works.
07:24:15 * Sgeo|web wonders if there's a reason for running 6 TTYs by default when most users won't notice them
07:24:41 <CakeProphet> "historic reasons"
07:25:08 <CakeProphet> also because people probably use them I'm sure.
07:25:17 <CakeProphet> but you said "by default"
07:25:40 <pikhq_> It's nothing but tradition.
07:26:00 <pikhq_> It's literally a handful of lines in /etc/inittab.
07:26:10 <pikhq_> (one per virtual terminal)
07:26:31 <Sgeo|web> There is no /etc/inittab
07:26:53 <Sgeo|web> At least, on Lubuntu 11.04
07:26:56 <pikhq_> Ah, right.
07:26:59 <elliott> * Sgeo|web wonders if there's a reason for running 6 TTYs by default when most users won't notice them
07:27:09 <pikhq_> Whereëver Ubuntu sticks its gettys, then.
07:27:09 <elliott> Sgeo|web: If it doesn't notice them, does it bother them?
07:27:15 <elliott> Sgeo|web: If they don't them, does it bother them?
07:27:17 <elliott> argh
07:27:20 <elliott> Sgeo|web: If they don't notice them, does it bother them?
07:27:33 <Sgeo|web> elliott: Do they perhaps use resources?
07:27:38 <Sgeo|web> Minimal, to be sure, though
07:27:41 <elliott> Sgeo|web: Approximately 0 resources.
07:27:51 <pikhq_> I'd estimate about a page per TTY.
07:27:52 <elliott> There's a pid blocked on an IO operation and...
07:27:54 <elliott> Yeah.
07:28:13 <pikhq_> We're basically dealing with the bare minimum process overhead.
07:28:17 <elliott> A whole TWENTY FOUR KILOBYTES of waste :P
07:28:19 <Sgeo|web> How small are pages? We're learning about pages in class, and apparently rule of thumb is disk sector size
07:28:25 <elliott> In total,.
07:28:27 <elliott> For all the TTYs.
07:28:40 <pikhq_> Sgeo|web: The "page" is a CPU-dependent size.
07:28:45 <pikhq_> In x86, a page is 4k.
07:28:59 <CakeProphet> also they'd be useful in the event that X crashes and you need to do some Serious Shit.
07:29:04 <Sgeo|web> Huh, am I thinking of some other meaning of page?
07:29:06 <elliott> CakeProphet: They are useful.
07:29:17 <Sgeo|web> Because I was under the impression page size could be defined by the OS
07:29:20 <pikhq_> In x86-64, a page is 4k, 2M, or 1G.
07:29:21 <elliott> CakeProphet: I use them. Other people assuredly much more.
07:29:29 <pikhq_> No, page size is defined by the MMU.
07:29:35 <CakeProphet> elliott: why not just use a gnome-terminal or something similar?
07:29:40 <elliott> pikhq_: ...which the OS can control.
07:29:54 <pikhq_> elliott: It can't tell it to use arbitrary-sized pages.
07:30:03 <CakeProphet> I mean, unless you're using multiple window managers.
07:30:06 <elliott> CakeProphet: Always-accessible, full-screen, and most importantly, doesn't freeze up when something's lagging my X.
07:30:11 <elliott> Which happens every few days.
07:30:17 <CakeProphet> ah okay.
07:30:21 <elliott> It is very useful for "top" and "killall" especially.
07:30:29 <CakeProphet> they're kind of a pain to use on my laptop as I have to press the fn key to use F keys.
07:30:39 <elliott> I know some people IRC from the consoles, but maybe they're not the type to run X in the first place.
07:30:42 <elliott> CakeProphet: Me too, but meh.
07:30:45 <elliott> pikhq_: Well, no.
07:31:02 <CakeProphet> elliott: also I have no sysrq how do I shot reisub?
07:31:09 <elliott> CakeProphet: You have a print screen key.
07:31:11 <elliott> That's sysrq.
07:31:24 <Sgeo|web> reisub?
07:31:25 <CakeProphet> it doesn't seem to work for that purpose but I'll try it right now.
07:31:31 <CakeProphet> what's a good test I could do that won't like... kill my computer.
07:31:33 <Sgeo|web> Oh, I recognize sub
07:31:36 <Sgeo|web> But what's rei for?
07:32:39 <Sgeo|web> ei does sigterm and sigkill apparently
07:32:43 <CakeProphet> I'll try m
07:32:53 <Sgeo|web> r is something to do with XLATE, I have no idea what that is
07:33:15 <CakeProphet> yep m works fine.
07:33:30 <CakeProphet> cool I feel like a l33t h4x0r
07:33:44 <elliott> Sgeo|web: steals keyboard back from x
07:33:52 <elliott> reisub = safe hard reboot
07:33:53 <CakeProphet> elliott: that sounds quite useful.
07:33:57 <elliott> does cleanup, syncs disks etc.
07:34:05 <CakeProphet> the r, I mean.
07:34:17 <CakeProphet> I'll need to remember that one when x is being weird.
07:34:18 <Sgeo|web> I've been using just sub for a while, is that really bad?
07:34:38 <CakeProphet> Sgeo|web: I've been doing hard power-offs for years. so probably not.
07:35:47 <elliott> Sgeo|web: Well, any processes that have to do cleanup won't be allowed to.
07:35:53 <elliott> They'll just be slayed as the machine restarts.
07:36:07 <elliott> Sgeo|web: BTW, you have to space out a few seconds between each letter.
07:36:17 <elliott> Especially for e → i; it takes a second or two to kill everything.
07:36:23 <elliott> And for s → u.
07:36:35 <Sgeo|web> Yeah, I should probably slow down
07:36:58 <Sgeo|web> Nothing wrong with randomly doing s u is there?
07:37:04 <CakeProphet> Reset the nice level of all high-priority and real-time tasks
07:37:06 <CakeProphet> n is useful
07:37:09 <CakeProphet> most of these are good things.
07:37:11 <elliott> Sgeo|web: Yes.
07:37:12 <elliott> Lots.
07:37:14 <Sgeo|web> I mean, out of boredom? If I don't care about stuff going to disk
07:37:15 <elliott> u unmounts everything.
07:37:27 <Sgeo|web> elliott: I thought it remounted in readonly
07:37:36 <elliott> Hmm, right.
07:37:40 <elliott> Still, that will break a lot of things.
07:37:44 <elliott> Certainly don't do it "out of boredom".
07:37:47 <elliott> ?pl \x -> f <$> peek x >>= poke r
07:37:47 <lambdabot> (poke r =<<) . (f <$>) . peek
07:37:50 <CakeProphet> oh hey I bet that's what happened when my filesystem went readonly
07:37:56 <CakeProphet> maybe I somehow accidentally did that.
07:38:01 <CakeProphet> or... maybe not.
07:41:00 * CakeProphet stands back and takes a moment to absorb the elegant beauty of his refactored code.
07:41:07 <CakeProphet> now... time to run it and be horrified.
07:46:57 <elliott> /r/mspaint gets the weirdest shit. sometimes I wonder if I should just change the CSS to something completely fucked up and then ban people at random
07:47:03 <elliott> blood will run through the streets
07:47:30 <CakeProphet> wow people in #perl are talking about ways to reduce line noise
07:47:35 <CakeProphet> it's almost like they don't want to program in perl.
07:48:24 <CakeProphet> elliott: you can change the CSS?
07:50:24 <elliott> CakeProphet: why wouldn't i be able to
07:50:31 <CakeProphet> I don't use reddit
07:50:34 <CakeProphet> so I don't know how that works.
07:50:46 <elliott> http://reddit.com/r/hurts_my_eyes
07:51:15 <CakeProphet> oh god help.
07:51:27 <CakeProphet> this is internet hell.
07:55:13 <CakeProphet> `run perl -e 'my %t=(a=>2, b=>3); my ($x, $y) = (
07:55:15 <CakeProphet> bah
07:55:18 <HackEgo> sh: -c: line 0: unexpected EOF while looking for matching `'' \ sh: -c: line 1: syntax error: unexpected end of file
07:56:33 <CakeProphet> `run perl -e 'use Data::Dumper; my %t=(a=>2, b=>3); my ($x, $y) = \($t{x}, $t{y}); $x->{lol} = 2; $y->{rofl} = 3; Dumper(\%t);'
07:56:35 <HackEgo> Not a HASH reference at -e line 1.
07:57:12 <CakeProphet> hmmmmmmmmmmm
07:57:34 <CakeProphet> `run perl -e 'use Data::Dumper; my %t=(a=>2, b=>3); my ($x, $y) = ($t{x}, $t{y}); $x->{lol} = 2; $y->{rofl} = 3; Dumper(\%t);'
07:57:36 <HackEgo> No output.
07:57:44 <CakeProphet> `run perl -e 'use Data::Dumper; my %t=(a=>2, b=>3); my ($x, $y) = ($t{x}, $t{y}); $x->{lol} = 2; $y->{rofl} = 3; print Dumper(\%t);'
07:57:46 <HackEgo> ​$VAR1 = { \ 'a' => 2, \ 'b' => 3 \ };
07:57:58 <CakeProphet> ....how do I do this.
08:00:16 <CakeProphet> `run perl -e 'use Data::Dumper; my %t=(a=>2, b=>3); my ($x, $y) = \($t{x}, $t{y}); $$x->{lol} = 2; $$y->{rofl} = 3; print Dumper(\%t);'
08:00:18 <HackEgo> ​$VAR1 = { \ 'y' => { \ 'rofl' => 3 \ }, \ 'a' => 2, \ 'b' => 3, \ 'x' => { \ 'lol' => 2 \ } \ };
08:00:22 <CakeProphet> oh, like that.
08:06:41 <fizzie> I didn't know you could put a \ in front of a list like that.
08:07:41 <CakeProphet> yep
08:07:51 <CakeProphet> I think it's in perlref somewhere.
08:07:56 <fizzie> It is, yes.
08:08:09 <fizzie> "Taking a reference to an enumerated list is not the same as using square brackets--instead it's the same as creating a list of references!"
08:08:12 <fizzie> An ! and all.
08:08:33 <elliott> hi
08:08:37 <CakeProphet> I've NEVER found a need for it.
08:08:46 <CakeProphet> until now.
08:08:50 <CakeProphet> well, not a need. a use for it.
08:10:42 <fizzie> Also doable like this, but noisier:
08:10:43 <fizzie> `run perl -e 'use Data::Dumper; $Data::Dumper::Indent=0; my %t=(a=>2, b=>3); my ($x, $y) = ($t{x}//={}, $t{y}//={}); $x->{lol} = 2; $y->{rofl} = 3; print Dumper(\%t);'
08:10:45 <HackEgo> ​$VAR1 = {'y' => {'rofl' => 3},'a' => 2,'b' => 3,'x' => {'lol' => 2}};
08:12:49 <CakeProphet> yeah I was thinking of something like that too.
08:12:54 <CakeProphet> a $$ is fine too though.
08:13:29 <fizzie> Ooh, or
08:13:31 <fizzie> `run perl -e 'use Data::Dumper; $Data::Dumper::Indent=0; my %t=(a=>2, b=>3); my ($x, $y) = map {$_//={}} ($t{x}, $t{y}); $x->{lol} = 2; $y->{rofl} = 3; print Dumper(\%t);'
08:13:34 <HackEgo> ​$VAR1 = {'y' => {'rofl' => 3},'a' => 2,'b' => 3,'x' => {'lol' => 2}};
08:13:39 <CakeProphet> oh god.
08:13:43 <fizzie> "map {$_//={}} ..." looks so pretty.
08:13:51 <CakeProphet> uh, sure.
08:14:34 <CakeProphet> why not just $_ = {}?
08:14:55 <fizzie> I was assuming sometimes there might be some existing hashes already.
08:15:02 <CakeProphet> ah
08:15:04 <CakeProphet> well, no.
08:16:36 <CakeProphet> that may be a bit more efficient but I'm pretty sure this is IO bound.
08:20:50 -!- oerjan has joined.
08:27:02 <elliott> What's the limit to the number of files in a directory on ext these days?
08:27:04 <elliott> Fourth ext, that is.
08:27:30 <elliott> fizzie: Relatedly, I don't suppose you've ever tried storing one of them reverse-context trees as a directory tree.
08:29:01 <CakeProphet> madnir
08:30:11 <elliott> CakeProphet: What?
08:30:13 <oerjan> ridrum
08:30:46 <CakeProphet> elliott: magicka reference...
08:31:32 <CakeProphet> a reference to a cutscene in Magicka that references 300.
08:32:14 <fizzie> elliott: No, though it certainly would be possible. Probably not very useful for the Funge code, though. (Is there even a directory-listing fingerprint? FILE doesn't do it, and neither does DIRF.)
08:32:16 <oerjan> this is madnir!
08:33:03 <elliott> fizzie: Well, I wasn't talking in the context of Funge stuff. :p
08:33:11 <elliott> fizzie: It would be possible, but it might also be slow.
08:33:21 <elliott> fizzie: I'm thinking fragmentation might be an issue.
08:33:50 -!- fungot has joined.
08:35:23 -!- TeruFSX has quit (Read error: Connection reset by peer).
08:44:22 -!- hagb4rd has joined.
08:50:10 <elliott> fizzie: That remind you to restart the 'got? :-)
08:51:38 <fizzie> fungot: You answer that.
08:51:38 <fungot> fizzie: or is it just me, or i: yet, you rogue!
08:53:10 <elliott> What style's it on?
08:54:15 <fizzie> His own.
08:54:24 <fizzie> fungot: You like your own babbling, don't you?
08:54:24 <fungot> fizzie: that is just a value of type is created containing the syntax for mark if he was really gonna get worse and worse each week,
08:55:13 <elliott> fizzie: I wonder why it's so good.
08:55:56 <elliott> I guess because fungot has been around long enough that it's effectively some kind of mix of all the data sets.
08:55:56 <fungot> elliott:. i'm so kind, even to assholes! anmaster no not markov
08:56:10 <elliott> Weighted, too, since people probably aren't biased /that/ heavily against changing to the smaller data sets.
08:57:11 <elliott> `pastelogs i'm so kind, even to assholes
08:57:33 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.19018
08:58:15 <elliott> 2010-04-16.txt:21:30:51: <AnMaster> "<fungot> AnMaster: ^. I'm so kind, even to assholes! AnMaster: ^. I'm so kind, even to assholes!" <-- wth?
08:58:15 <fungot> elliott: " so that the text i've checked gives the right definition of " spec" instead of with /foo...! just trying to understand, as mr martens said bucket sort... in bancstar
08:58:17 <elliott> good times, good times
08:58:48 <elliott> fizzie: I don't suppose you represent start-of-line as ^.
08:58:57 <fizzie> Discounting the non-babble, technically (and "probabilistically") speaking it is exactly an interpolated model with weights coming from the amount of text from each style.
08:59:01 <elliott> That would explain the ". before the space" thing, since it's "^." in the dataset.
08:59:23 <fizzie> No; I think the ^ is just filtered out, since it's not a punctuation I explicitly recognize.
08:59:25 <elliott> fizzie: And yes, that's what I was getting at. (Of course I didn't know that it was true, but some sort of vague proof sketch formed in my head to justify it.)
09:00:30 <fizzie> "anmaster PCOLON PDOT i'm so kind PCOMMA even to assholes PEXCL anmaster PCOLON PDOT i'm so kind PCOMMA even to assholes PEXCL"
09:01:02 <elliott> fizzie: I don't suppose it starts with the colon after the targeted user's nick? :-)
09:01:55 <fizzie> That was the raw; the first two tokens are stripped out by the "remove nick: stuff" operation I did. So it just starts with PDOT, and the spacing isn't equipped to deal with it.
09:02:02 * elliott decides that he can ignore encodings for the n-grams → tree file stage of Project Gentry.
09:02:14 <elliott> Wait, Project Gentry makes no sense as a name for the whole thing.
09:02:17 <elliott> Just for the tree-generation stage.
09:02:21 <elliott> (Get it? Gentry? Gen tree?)
09:02:23 <elliott> (Ha ha ha.)
09:02:27 <elliott> fizzie: Heh.
09:03:16 <elliott> fizzie: Because it just deletes the last space so that you don't see "foo ." everywhere?
09:04:28 <fizzie> Actually it just only adds spaces in front of "normal words" and some punctuation. It's the same reason those quotes are misspaced. It just writes "nick:" at start, and then starts concatenating tokens; a space is added in front of normal words, and "opening" punctuation (and smileys).
09:05:17 <elliott> Ah.
09:05:18 <oerjan> ^style
09:05:18 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot* homestuck ic irc jargon lovecraft nethack pa sms speeches ss wp youtube
09:05:19 <fizzie> So "foo PODQUOT bar PCDQUOT" turns into [ foo][ "][ bar]["] -> [ foo " bar"].
09:05:25 <oerjan> ^style fungot
09:05:25 <fungot> Selected style: fungot (What I've said myself)
09:05:57 <elliott> oerjan: It's a diabolical incestuous slurry. HTH
09:06:05 <CakeProphet> wow best style.
09:06:13 <oerjan> fungot: when is the movie coming out?
09:06:13 <fungot> oerjan: ( ( ( a()**)a*:a*)(a()**)a*:a*)((x1)(x2)(x3)) ...out of time! don't let?!
09:06:23 <fizzie> ^source
09:06:23 <fungot> http://git.zem.fi/fungot/blob/HEAD:/fungot.b98
09:06:23 <CakeProphet> fungot: feedback plz
09:06:23 <fungot> CakeProphet: agora alice c64 ct darwin discworld europarl ff7 fisher ic irc* jargon lovecraft nethack pa speeches ss wp
09:06:24 <elliott> fizzie: It should really auto-add to the data set whenever it says a line.
09:06:32 <elliott> fizzie: Or better, whenever it says a line but only if the style is fungot.
09:06:32 <fungot> elliott: i know i didn't know that you've had it for some time i added a new page and sends it to emacs, i suggest, vote). you need just some 50 more metres and i'm home, and realised i forgot to take down what he actually checks
09:06:37 <elliott> Just one big ol' feedback loop.
09:07:07 <fizzie> The right side of the triangle lines in 153, 156-159 show the punctuation that do get a space.
09:07:25 <CakeProphet> no it should just always add a line when it says something, but it should magically ignore commands (like ^style, etc)
09:09:15 <oerjan> wait, this means the irc style is probably not auto-updated either...
09:09:31 <elliott> oerjan: no shit
09:09:47 <CakeProphet> needs moar fungot-log-daemon
09:09:47 <fungot> CakeProphet: " so that the text that is needed when two sprites hit each, one character after the created statement, and c-intercal, except that the thing about genocide is just a value of type " airbus is a big fan of avril....but this song " there
09:10:18 <CakeProphet> ...lol
09:10:21 <CakeProphet> I laughed. out loud.
09:10:52 <elliott> fizzie: Punctuation is plural?
09:11:15 <elliott> fizzie: Also, I don't suppose there's anything particularly special about whatever format that VariKN thing uses?
09:11:24 <elliott> For the treeez.
09:12:25 <fizzie> Well, uh... the VariKN output format is the ARPA standard n-gram model; there's a conversion script from that to the fungot format.
09:12:25 <fungot> fizzie: i know i didn't know that you've had it for some time i added a new page and sends it to emacs, i suggest, vote). you need just some 50 more metres and i'm home, and realised i forgot to take down what he actually checks
09:13:17 <elliott> fizzie: There's a /standard/?
09:13:21 <fizzie> The file format (IIRC) would make it reasonably easy to update existing weights on the fly, but adding new stuff in the middle would be trickier. It's a bit... packed, with lots of absolute offsets from start of file.
09:13:42 <elliott> Well, this is for my thing.
09:13:49 <elliott> I'm generating it all in one very, very long go.
09:13:59 <elliott> Although I need something that I can write out without fitting it all into RAM.
09:14:23 <elliott> Since my model looks like "read in a few hundred megabytes, process, repeat", and it should have constant memory usage. :p
09:14:41 <elliott> (Well, it can grow over the processing of the few hundred megabytes so long as it shrinks back down after that.)
09:14:53 <fizzie> I'm not sure how official the standard is, or where the ARPA part of the name comes from. But multiple pieces of software support it.
09:15:07 <fizzie> Including the reasonably widely used SRILM toolki.
09:15:09 <fizzie> t.
09:15:10 <elliott> It does the interning thing, right?
09:15:29 <elliott> Also is this thing just n-grams or is it the actual tree?
09:15:51 <fizzie> Not the ARPA format, that one just has ngram lists composed of text strings.
09:16:00 <elliott> Oh.
09:16:01 <fizzie> Grouped by the order, and sorted.
09:16:21 <elliott> Is that the same format as the googlebooks data?
09:16:24 <elliott> ! ! ! ' It 2008 12 12 12
09:16:24 <elliott> etc.
09:17:37 <fizzie> Not quite.
09:17:48 <elliott> Nice.
09:17:58 <CakeProphet> so is there like a....
09:18:06 <CakeProphet> sqlite database viewer program thing?
09:19:31 <CakeProphet> hmmm I found a firefox extension for it...
09:20:19 <fizzie> For one thing, isn't that "2008" some sort of a year field? It obviously doesn't have that sort of stuff.
09:20:38 <fizzie> Also the 'grams of different order are in the same file, with few lines of headers.
09:20:50 <elliott> "'grams". Do you say that often?
09:21:12 <fizzie> It looks like this: http://www-speech.sri.com/projects/srilm/manpages/ngram-format.5.html
09:21:21 <fizzie> "The so-called ARPA (or Doug Paul) format --"
09:21:25 <fizzie> I don't know about the history.
09:21:54 <elliott> "Since log(0) (minus infinity) has no portable representation, such values are mapped to a large negative number. However, the designated dummy value (-99 in SRILM) is interpreted as log(0) when read back from file into memory."
09:21:57 <elliott> Clean.
09:22:31 * elliott wonders how to achieve a "streaming" design without an overly untight file format.
09:22:41 <elliott> Really it would be very very convenient to use the filesystem, but I have a feeling that it would also be very very slow.
09:23:23 <fizzie> Also, I don't think the VariKN toolkit handles larger-than-RAM models at all. (Datasets, sure; but probably not models.)
09:23:30 <fizzie> The SRILM tools are slightly better w.r.t. that.
09:24:12 <fizzie> In particular, ngram-merge can take several sorted-count files and merge them with constant memory use.
09:24:51 <elliott> fizzie: I suppose ~terabyte models are not so very common.
09:25:07 <elliott> (Whereby "model" I mean "reverse-context tree thingy".)
09:25:26 <elliott> (Except it's actually "reverse-context tree thingy with backwards entries".)
09:26:33 <fizzie> Well, yes; it's hard to actually *use* the model if it doesn't fit in RAM. (Incidentally, I haven't actually seen the reverse-context tree structure used anywhere except in fungot.)
09:26:33 <fungot> fizzie: and, dab, words like pop-culture should just sell or give away all the monsters and hit points and other silliness yeti, is human fnord
09:27:48 <elliott> fizzie: I don't see why that's true.
09:28:13 <fizzie> Okay, s/hard/slow/.
09:28:16 <elliott> fizzie: Look up context in typical B-tree-kinda structure, find next word, repeat.
09:28:20 <elliott> Well, yes, maybe.
09:28:33 <elliott> I'm aiming for one-second responses; maybe that's a bit optimistic with all the seeking.
09:28:35 <elliott> But I do have an SSD.
09:29:54 <elliott> fizzie is laughing at my naïvety.
09:31:16 <fizzie> Well, I don't know. It wasn't *terribly* slow with the Google ngrams in that Postgres DB plus some indexes, and that was not exactly a carefully optimized scenario.
09:31:34 <fizzie> For babble-generation, anyway.
09:31:59 <elliott> fizzie: How not-terribly-slow are we talking here? :p
09:33:07 <fizzie> Some seconds (a single-digit number, anyway) per longish "sentence", I think. I don't quite recall.
09:34:17 <elliott> Well, I'm not sure if I can beat the Postgres guys at the index-lookup game.
09:34:19 <elliott> But maybe I can.
09:34:46 <elliott> I was going to wonder if interning mightn't hurt that, but then I realised that I can just load the interning table into memory.
09:36:31 <fizzie> I'm not exactly sure what it did, either. Maybe just loop k = (N-1) .. 0 of "query for all (k+1)-grams with k words of context; if none found, continue; if some found, fetch them all and select next word programmatically" which is suboptimal in the sense that it actually loads all the matches in order to select a weighted-random one.
09:37:59 <fizzie> Sadly, I don't think SQL has a "just return a random tuple from the output set, using this column for the probability" thing the Postgres folks could've optimized based on the indexes.
09:39:18 <elliott> Well, there aren't that many matches in general, are there?
09:39:25 <elliott> Hmm, I suppose maybe "the" has quite a few words following it.
09:39:38 <elliott> So I guess millions :-)
09:39:42 <elliott> Or, well.
09:39:47 <elliott> Thousands I guess.
09:40:02 <fizzie> Not when there are long-context matches, which I guess is the majority of cases. When it needs to back off to shorter context, then there could be quite many.
09:41:00 <elliott> Right. (Is there ever not a long-context match, really?)
09:43:27 <fizzie> I wouldn't be surprised if it'd need to back to 4-grams from 5-grams every now and then, since they've dropped all n-grams that occur <20 times or so.
09:44:12 <elliott> <forty, actually.
09:44:19 <fizzie> Straight from the datum's mouth:
09:44:20 <fizzie> Palestine belongs to the Arabs 371
09:44:20 <fizzie> Palestine belongs to the Jews 66
09:44:20 <fizzie> Palestine belongs to the Palestinians 102
09:44:46 <elliott> X belongs to the Xs.
09:44:48 <elliott> x:xs.
09:44:52 <elliott> Deep.
09:45:07 <elliott> fizzie: The n+1-gram data contains completely the n-gram data, right?
09:45:21 <elliott> As in, I only need to download seven gigs, not seven gigs plus a speck :-)
09:47:47 <fizzie> I'm not entirely sure it exactly-exactly does, because of the aforementioned pruning. It could be that even if they've dropped the ", and then I znurgified" 5-gram which only occurred 39 times, that part of the text would still contribute a += 39 to the ", and then I" 4-gram.
09:48:12 <CakeProphet> fungot: weiw4oiooitgoiotgtooittgoitgoigtigigitgigtgtgtgggtgtitirr
09:48:12 <fungot> CakeProphet: am i that much bad. take up, boy; open't. so, now go with, do miscarrie, thou had'st bin resolute pompey
09:48:18 <elliott> fizzie: Well, modulo pruning.
09:48:27 <CakeProphet> dude that's not how modulo works guys.
09:48:30 <elliott> Which hopefully shouldn't cause too much a difference.
09:48:31 <elliott> I hope.
09:48:34 <CakeProphet> you can't do that usage
09:48:40 <elliott> CakeProphet: http://en.wikipedia.org/wiki/Modulo
09:48:42 <CakeProphet> it doesn't make sense.
09:48:45 <elliott> [[In the mathematical community, the word modulo is often used informally. Generally, to say "A is the same as B modulo C" means, more-or-less, "A and B are the same except for differences accounted for or explained by C".]]
09:48:56 <CakeProphet> no
09:48:58 <CakeProphet> wrong.
09:48:58 <CakeProphet> bad.
09:48:59 * oerjan swats CakeProphet -----###
09:48:59 <elliott> It makes perfect sense given the original use of mod in modular arithmetic.
09:49:10 <oerjan> NO U WRONG
09:49:13 <elliott> You're just a stupid programmer with stupid notation who thinks that everything's a binary operator.
09:49:15 <elliott> Also you SUCK.
09:49:24 <elliott> NOW BACK TO THE ADULTS
09:49:33 -!- elliott has left ("back to the adults").
09:49:40 <CakeProphet> :( :( :( :( :( I am great sad.
09:49:52 <oerjan> which is the same as happy, modulo smileys
09:50:11 * CakeProphet adds [citation needed] to that statement on Wikipedia.
09:50:35 * oerjan hits CakeProphet with the saucepan ===\__/
09:50:53 <oerjan> IT'S COMMON KNOWLEDGE
09:51:08 <fizzie> No, put a [who?] thing after the "mathematical community" bit.
09:51:18 <oerjan> not that wikipedia doesn't have worse [[citation needed]]s
09:51:32 <CakeProphet> but like, no that usage doesn't make sense.
09:51:38 <CakeProphet> you can't divide english words
09:52:03 <oerjan> CakeProphet: which word has been divided?
09:52:15 <CakeProphet> A is B modulo C
09:52:40 -!- elliott has joined.
09:52:42 <CakeProphet> like... it makes no sense to say "modulo pruning"
09:52:49 <elliott> Here we see that CakeProphet really does think that modulo is solely and originally a binary operator.
09:53:02 <elliott> He honestly has no idea what modular arithmetic is and is constrained purely to his understanding of remainders.
09:53:07 -!- elliott has left ("BACK TO THE CHILDREN").
09:53:26 <oerjan> CakeProphet: yes it does. it is an abbreviation for "modulo the equivalence relation generated by pruning", which is _perfectly_ standard math.
09:53:56 <fizzie> Here's a nicely placed [who?]: Wikipedia "Der Ring des Nibelungen": "-- the book [/Expecting Someone Taller/] provides a broadly accurate account of the Ring Cycle in a way many^[who?] would be able to appreciate without sitting through 15 hours of opera."
09:54:57 <CakeProphet> oerjan: you can modulo equivalence relations?
09:55:42 <CakeProphet> I'm just saying, doesn't modulo have a definition that's constrained to numbers?
09:55:58 -!- elliott has joined.
09:56:04 <CakeProphet> involving differences and multiples and the like?
09:56:11 <elliott> DO YOU EVEN KNOW WHAT MODULAR ARITHMETIC IS THOUGH
09:56:14 <CakeProphet> things which make sense when uses in other domains?
09:56:18 -!- elliott has left ("BACK TO THE SENILE").
09:56:21 * CakeProphet is reading through the article on it right now.
09:56:29 <oerjan> CakeProphet: no. it is extremely generalized in universal algebra.
09:59:00 <CakeProphet> I sure do see a lot of blackboard Z's in the equivalence relation stuff...
09:59:09 <CakeProphet> also: "In mathematics, modular arithmetic (sometimes called clock arithmetic) is a system of arithmetic for integers"
10:00:08 <oerjan> well of course that's where the word _started_
10:00:49 <oerjan> http://en.wikipedia.org/wiki/Modulo was already linked, see the ideal and equivalence relation mentions there
10:02:05 <CakeProphet> I am still skeptical that the whole of natural language fits into this model. it seems that the typical usage of modulo in an English sentence should be something like "minus" instead
10:02:30 -!- elliott has joined.
10:02:38 <elliott> This is just embarrassing, stop it.
10:02:59 <fizzie> elliott: Are you doing the stalker mode?-)
10:03:02 <oerjan> CakeProphet: well of course the use is tongue-in-cheek
10:03:21 <elliott> fizzie: No, I'm just refreshing occasionally -- it lets me schedule my descent into alcoholism.
10:04:20 <CakeProphet> oerjan: I guess I have no reason to make a big deal out of it.
10:04:30 <CakeProphet> also disagreeing with elliott == embarassing
10:04:43 * CakeProphet blushes.
10:05:43 <elliott> No it's just that it's getting to the point where I'm wondering if you even know what an equivalence relation is.
10:06:14 <CakeProphet> I do.
10:06:36 <CakeProphet> not much beyond that though.
10:06:48 <CakeProphet> the stuff in that article is mostly gibberish to me once it goes into equivalence relations
10:06:52 -!- pikhq has joined.
10:07:11 -!- pikhq_ has quit (Ping timeout: 244 seconds).
10:07:56 <elliott> CakeProphet: Yes, that's the sign that you've lost the argument. :p
10:07:57 <CakeProphet> > group [1,5,2,7,23,8,2,4,7,2,43,7,21,1,7,87,2]
10:07:57 <lambdabot> [[1],[5],[2],[7],[23],[8],[2],[4],[7],[2],[43],[7],[21],[1],[7],[87],[2]]
10:08:04 <CakeProphet> ...aww
10:08:08 <CakeProphet> not what I wanted.
10:08:12 <CakeProphet> I forgot group works like that.
10:08:56 <fizzie> What did you want, (group . sort) or something?
10:09:02 <CakeProphet> yeah
10:09:17 <fizzie> The good old ... | sort | uniq | ... pipeline formation.
10:09:45 <elliott> Doesn't uniq -u do that?
10:10:29 <fizzie> No, it just completely suppresses duplicates.
10:10:52 <fizzie> `run echo -e 'foo\nbar\nbar\nfoo' | uniq -u
10:10:54 <HackEgo> foo \ foo
10:10:59 <CakeProphet> > group . sort $ [1,5,2,7,23,8,2,4,7,2,43,7,21,1,7,87,2]
10:11:01 <lambdabot> [[1,1],[2,2,2,2],[4],[5],[7,7,7,7],[8],[21],[23],[43],[87]]
10:11:12 <CakeProphet> not technically an equivalence relation, but the same idea.
10:11:14 <fizzie> `run echo -e 'foo\nbar\nbar\nfoo' | sort | uniq -c
10:11:16 <HackEgo> 2 bar \ 2 foo
10:11:22 <CakeProphet> it needs more ordered pairs...
10:11:38 <fizzie> For some reason I tend to be using "uniq -c" a lot more than plain "uniq".
10:11:39 <elliott> fizzie: Hmm, what does sort | uniq do as well, then? Apart from sort the output.
10:11:52 <fizzie> Actually removes duplicates for reals.
10:12:27 <fizzie> `run echo -e 'foo\nbar\nfoo\nbar' | uniq
10:12:29 <HackEgo> foo \ bar \ foo \ bar
10:12:30 <fizzie> `run echo -e 'foo\nbar\nfoo\nbar' | sort | uniq
10:12:32 <HackEgo> bar \ foo
10:13:36 <CakeProphet> I guess group . sort is the set of equivalence classes.
10:13:49 <CakeProphet> for integers anyways.
10:13:56 <CakeProphet> and reals.
10:16:33 <fizzie> For the relation (==), and speaking of multisets, maybe.
10:18:10 <oerjan> `run sleep 10; echo test
10:18:22 <HackEgo> test
10:18:54 <fizzie> `run sleep 86400; echo A NEW DAY DAWNS
10:19:13 <fizzie> One wonders if it has a real-time-clock limit or just a CPU time limit.
10:19:20 <elliott> Heh
10:19:22 <CakeProphet> don't you have to use some kind of equivalence relation to determine what makes elements "distinct"?
10:19:25 <HackEgo> No output.
10:19:27 <elliott> I believe real-time :P
10:19:34 <elliott> There we go.
10:19:35 <fizzie> HackEgo: You QUITTER.
10:19:52 <fizzie> Half a minute, maybe.
10:20:03 <CakeProphet> or is there just some kind of magical distinctness to sets that has nothing to do with equivalence relations.
10:20:37 <oerjan> CakeProphet: having the same elements
10:20:53 <oerjan> a = b <=> forall x. (x in a <=> x in b)
10:21:17 <fizzie> `run sleep 28; echo foo; sleep 1; echo bar; sleep 1; echo baz; sleep 1; echo quux
10:21:37 <CakeProphet> er no I mean.
10:21:49 <HackEgo> foo \ bar
10:22:01 <CakeProphet> sets can't contain "duplicate" elements. This has to be defined by some kind of equivalence relation right?
10:22:25 <CakeProphet> or is it just magic distinctness?
10:22:30 <elliott> CakeProphet: set theory is sets all the way down.
10:22:47 <elliott> oerjan just told you how equality is defined on sets, by equality of elements
10:22:56 <CakeProphet> elliott: is that an answer?
10:23:01 <oerjan> yes.
10:23:09 <elliott> no, it's a flower.
10:23:57 <oerjan> otoh there is leibnitz equality, applying to more than sets if there are such things: a = b <=> (forall P. P a <=> P b)
10:24:15 <oerjan> *-t
10:24:22 <elliott> oerjan: no t
10:24:23 <elliott> :)
10:24:34 <elliott> leibniz equality is pretty.
10:24:36 <oerjan> however that's second order and so logically more complicated
10:24:43 <CakeProphet> okay so the distinctness of elements in a set is defined by... equality.
10:24:50 <oerjan> yep.
10:25:01 <CakeProphet> by.... set equality?
10:25:02 <elliott> CakeProphet: two sets are equal if their elements are equal. obviously the empty set is equal to itself.
10:25:08 <elliott> CakeProphet: the elements of a set are themselves sets.
10:25:12 <oerjan> equality is the mother of all equivalence relations.
10:25:12 <elliott> there is nothing that is not a set involved.
10:25:14 <elliott> the end
10:25:24 <CakeProphet> elliott: help infinite recursion.
10:25:43 <elliott> {{{}, {}}, {}}
10:25:45 <oerjan> CakeProphet: btw the axiom of extensionality basically says that the two definitions of equality i gave are the same for sets.
10:26:00 <elliott> <CakeProphet> HELP ME I THINK EVERYTHING IN ANY WAY CIRCULAR IS _|_
10:26:12 <elliott> oerjan: sometimes I kind of wish you could define leibniz equality while excluding all Ps that reduce to trivial things like (b =) that make it boring :P
10:26:16 <oerjan> how it is formulated may depend on the underlying logic
10:26:27 <oerjan> elliott: heh
10:26:38 <oerjan> darn impredicativity eh?
10:27:08 <CakeProphet> 06:25 < elliott> {{{}, {}}, {}} -- was that supposed to answer some question?
10:27:31 <elliott> CakeProphet: no, it wasn't a question, it was just you either trying to make a joke or literally just being beyond belief, I'm honestly not sure which
10:27:51 <elliott> if you seriously think that sets only being able to contain other sets necessarily leads to some kind of nonsensical "infinite recursion" I honestly don't know what to say
10:28:18 <elliott> oerjan: while we're talking about equality, I don't think there's a Haskell term of type (Int ~ ()) => Void (without undefined or infinite loops etc. etc. etc.) :(
10:28:21 <CakeProphet> they have to terminate at empty sets at some point, how does that work.
10:28:29 <elliott> CakeProphet: by "terminating" at an empty set
10:28:31 <elliott> <CakeProphet> 06:25 < elliott> {{{}, {}}, {}} -- was that supposed to answer some question?
10:28:33 <elliott> hey look, there's an example
10:28:42 <CakeProphet> okay but what about... things that don't look like that.
10:28:47 <oerjan> CakeProphet: sets are usually "well-founded" which means the recursion may be as deep as you want but _does_ bottom out on every path
10:28:49 <elliott> everything looks like that
10:28:53 <elliott> that's the whole fucking point of set theory
10:29:00 <CakeProphet> hmmm, okay
10:29:03 <elliott> 0 = {}
10:29:04 <CakeProphet> how do numbers look?
10:29:05 <elliott> one = {{}}
10:29:07 <CakeProphet> and reals?
10:29:14 <CakeProphet> pi?
10:29:14 <elliott> two = {{}, {{}}}
10:29:30 <elliott> CakeProphet: http://en.wikipedia.org/wiki/Dedekind_cut
10:29:38 <elliott> is one way.
10:30:14 <elliott> "In Emir Pasalic's PhD thesis, (end of section 4.2.2, page 80 in the PDF, 70 in print), he mentions that it is unknown whether the following type is inhabited:
10:30:15 <elliott> ∀ a, b, c, d . Equal (a,b) (c,d) -> Equal a c
10:30:15 <elliott> where type equality is defined by Leibniz equality
10:30:15 <elliott> data Equal a b = Equal (∀ f . f a -> f b)"
10:30:16 <elliott> cooooooool
10:31:19 <CakeProphet> this seems to be a partition of an existing set. not "how to construct the real numbers out of sets"
10:31:33 <oerjan> CakeProphet: same thing
10:31:39 <elliott> CakeProphet: it assumes prior knowledge of the rationals
10:31:44 <elliott> oh
10:31:50 <elliott> CakeProphet: a real number is defined by those two partitions
10:32:08 <CakeProphet> oh okay.
10:32:21 <elliott> if you want to know how the rationals are made up of sets, see e.g. http://en.wikipedia.org/wiki/Rational_number#Formal_construction
10:32:32 <elliott> and for Z, http://en.wikipedia.org/wiki/Integer#Construction
10:32:34 <elliott> naturals i already showed
10:33:18 <CakeProphet> so there's only.... one real number between each rational?
10:33:33 <CakeProphet> that sounds wrong.
10:33:41 <oerjan> yes. that does sound wrong.
10:34:05 <oerjan> especially since you'd like there to be at least _two_ things before you can be between them.
10:35:00 <CakeProphet> If B has a smallest element among the rationals, the cut corresponds to that rational. Otherwise, that cut defines a unique irrational number which, loosely speaking, fills the "gap" between A and B.
10:35:05 <CakeProphet> that seems to confirm what I said.
10:35:13 <oerjan> CakeProphet: if you divide _all_ the rationals into two unbounded intervals then there is exactly one real in the "gap".
10:36:29 <CakeProphet> how does that lead to uncountability?
10:37:09 <elliott> I bet oerjan never predicted that joining the esolang IRC would turn him into the grumpy, begrudging professor.
10:37:22 <oerjan> CakeProphet: the number of sets of rationals is uncountable, for a start.
10:37:25 <elliott> "I HAVE AVOIDED MY FATE ENTIRELY" -- oerjan, wrong
10:37:42 <oerjan> (cantor's theorem, for any set)
10:38:00 <oerjan> of course they're not all intervals.
10:39:30 <oerjan> for the rest, see an actual uncountability proof.
10:39:46 <oerjan> (for the reals)
10:40:37 <shachaf> elliott: That's not the point of *all* set theory.
10:40:52 <shachaf> elliott: Set theories with things that aren't sets are perfectly valid.
10:40:53 <elliott> shachaf: It's the point of all the set theory we talk about in polite company
10:40:54 <elliott> Wait.
10:40:58 <elliott> That should be impolite company.
10:41:03 <elliott> shachaf: Well, yes, certainly.
10:41:15 <elliott> shachaf: But CakeProphet was rather implying that something mundane like a number can't "look like that".
10:41:36 <CakeProphet> not at all.
10:41:57 <CakeProphet> I am simply someone who doesn't know things. and was confused.
10:42:26 <hagb4rd> good state to get things started
10:43:48 <CakeProphet> oerjan: okay so if you have two rationals such that no other rational lies between them.
10:44:03 <CakeProphet> there is only one irrational number between those two rationals?
10:44:34 <shachaf> elliott: Sure numbers can look like that: http://hpaste.org/52514
10:44:46 <shachaf> (Note how deeply nested that set is, by the way.)
10:44:46 <elliott> shachaf: I like it.
10:44:54 <elliott> Noted.
10:44:55 <fizzie> CakeProphet: You don't have two rationals in there, you have two sets of rationals.
10:45:20 <fizzie> CakeProphet: The linked http://en.wikipedia.org/wiki/Construction_of_the_real_numbers#Construction_by_Dedekind_cuts goes into more detail.
10:45:31 <fizzie> (Than the plain Dedekind cut article.)
10:45:41 <CakeProphet> hmmmm, okay.
10:45:46 <shachaf> Well-founded set theory is boring anyway.
10:45:47 <oerjan> CakeProphet: if a and b are distinct rationals, then (a+b)/2 is a rational between them.
10:46:14 <oerjan> no exceptions.
10:46:18 <elliott> CakeProphet: The reals are the complete ordered Archimedean field ARE YOU HAPPY NOW
10:46:31 <fizzie> oerjan: But what if they're REALLY CLOSE?
10:46:40 <shachaf> Archimedean?
10:46:58 <elliott> shachaf: Gotta give props to Mr. Archimedes.
10:47:00 <oerjan> fizzie: AS CLOSE AS THIS SWATTER? -----###
10:47:08 <elliott> He's so.. Archimedean.
10:47:15 <CakeProphet> elliott: yes I'm totally trying to warp mathematics into something I'm comfortable with
10:47:17 -!- sebbu2 has joined.
10:47:18 -!- sebbu2 has quit (Changing host).
10:47:18 -!- sebbu2 has joined.
10:47:20 <CakeProphet> and not trying to simply learn it.
10:47:38 <shachaf> elliott: Does there exit a complete ordered field that isn't Archimedean?
10:47:39 -!- sebbu has quit (Ping timeout: 252 seconds).
10:47:48 <elliott> shachaf: There might do. Only Archimedes knows.
10:47:51 <elliott> shachaf: You wanna ask him?
10:47:53 <oerjan> elliott: nope.
10:47:57 <elliott> oerjan: There MIGHT do.
10:48:08 <elliott> Your feeble mathematics is nothing in the face of Mr. Archimedes.
10:48:21 <shachaf> Observe the power of Maybe:
10:48:31 <oerjan> why would archimedes know about non-archimedean things.
10:48:32 <shachaf> @djinn Maybe nonarchimedeancompleteorderedfield
10:48:33 <lambdabot> f = Nothing
10:48:44 <elliott> @djinn Maybe shachafscoolness
10:48:44 <lambdabot> f = Nothing
10:48:55 <elliott> oerjan: "Fuck you" --Archimedes
10:49:04 <shachaf> @djinn Maybe elliottspoint
10:49:04 <lambdabot> f = Nothing
10:49:12 <oerjan> elliott: except he'd say it in greek.
10:49:24 <elliott> oerjan: "No I wouldn't, fuck you" --Archimedes
10:49:30 <elliott> Real quotes.
10:49:46 <shachaf> elliott: You mean that your '"' characters are genuine, right?
10:49:55 <oerjan> very.
10:49:56 <elliott> Also: what's inside them.
10:50:07 <oerjan> genuine letters inside
10:50:40 <shachaf> The reals are boring, anyway.
10:50:45 <shachaf> The hyperreals are where it's at.
10:51:05 <shachaf> Why don't you tell *that* to Mr. Archimedes.
10:51:32 <CakeProphet> I'm afraid I don't understand Dedekind cuts at all.
10:51:40 <elliott> shachaf: Archimedes says he doesn't give a shit.
10:51:46 <elliott> CakeProphet: Try your luck with Cauchy sequences.
10:52:05 <oerjan> CakeProphet: what elliott said.
10:52:38 * elliott likes Cauchy sequences more anyway, but that's I'm an FP loser.
10:52:52 <oerjan> elliott: wait does that mean i'm an FP loser too?
10:53:06 <elliott> oerjan: I suppose your degree wasn't in formal logic.
10:53:14 <elliott> s/that's/that's because/
10:53:28 <elliott> Maybe even s/because/just because/.
10:53:32 <shachaf> Dedekind cuts are where it's at.
10:53:37 <hagb4rd> hey guys, can u give me some kickstart? i want the lambdabot to calc an array of for a certain function (lets have f(x) = x² e.g.) for certain range [-5;5] with a step of 1.. how can i do this?
10:53:54 <hagb4rd> and spit it out
10:53:58 <elliott> shachaf: Computable Dedekind cuts are impossible to work with, though.
10:54:07 <elliott> I spent a whole day trying to make Coq talk about them.
10:54:15 <oerjan> > [x^2 | x <- [-5..5]]
10:54:16 <lambdabot> [25,16,9,4,1,0,1,4,9,16,25]
10:54:17 <shachaf> "computable"?
10:54:23 <shachaf> The uncomputable numbers are where it's at.
10:54:28 <CakeProphet> no Cauchy sequences definitely make less sense.
10:54:30 <hagb4rd> thx oerjan ..great!
10:54:38 <elliott> shachaf: http://en.wikipedia.org/wiki/Computable_number#Formal_definition
10:54:46 <elliott> shachaf: It's literally the only place I've ever seen "computable Dedekind cuts".
10:55:02 <elliott> oerjan: warn him about floating point numbers with that, please
10:55:23 <fizzie> > (^2) <$> [-5..5] -- LESS ANGULAR
10:55:24 <lambdabot> [25,16,9,4,1,0,1,4,9,16,25]
10:55:24 <oerjan> CakeProphet: sheesh just go for infinite decimal expansion, then. but good luck proving that's a field :P
10:55:42 <CakeProphet> elliott: hi I would like to accurately represent real numbers in computer memory with arbitrary precision.
10:55:42 <elliott> CakeProphet: oh come on, cauchy sequences are easy
10:55:45 <hagb4rd> oerjan: and how to change the step value? can i set function for it?
10:55:49 <shachaf> > (^2).[-5..5] -- LESS ANGULAR
10:55:50 <lambdabot> [25,16,9,4,1,0,1,4,9,16,25]
10:55:54 <elliott> CakeProphet: you have a sequence, it gets closer and closer to a point as you go further in it
10:56:01 <oerjan> > [x^2 | x <- [-5, -4.5..5]]
10:56:02 <lambdabot> [25.0,20.25,16.0,12.25,9.0,6.25,4.0,2.25,1.0,0.25,0.0,0.25,1.0,2.25,4.0,6.2...
10:56:08 <elliott> CakeProphet: umm, you are joking right?
10:56:15 <CakeProphet> elliott: therefore: real numbers!?
10:56:21 <elliott> yes, therefore that
10:56:22 <elliott> consider
10:56:23 <elliott> three
10:56:24 <elliott> three point one
10:56:25 <elliott> three point one four
10:56:26 <oerjan> hagb4rd: note that there might be some rounding errors in the range
10:56:28 <hagb4rd> thanks
10:56:29 <elliott> three point one four i forget the next fucking digit
10:56:33 <elliott> that approaches pi
10:56:45 <shachaf> elliott: Real mathematicians memorize at least 30% of pi.
10:56:47 <elliott> therefore the sequence can be used to define pi, assuming it gets "closer enough" to pi quickly enough
10:56:55 <CakeProphet> is that like... computable. can you write how that works on paper.
10:57:03 <elliott> CakeProphet: THE REAL NUMBERS ARE NOT FUCKING COMPUTABLE
10:57:14 <shachaf> CakeProphet: You don't need paper, you need a computer. That's why it's called "computable".
10:57:18 <shachaf> elliott: Some of them are!
10:57:22 <elliott> _Almost all_ reals are uncomputable!
10:57:27 <shachaf> The boring ones are computable!
10:57:32 <elliott> _Almost all_ of them can't even be fucking finitely named!
10:57:34 <elliott> There are not enough names for it!
10:57:42 <fizzie> elliott: _Almost all_ computation is done by fucking.
10:57:44 <elliott> shachaf: Chaitin's omega is, like, my favourite real.
10:57:49 <shachaf> elliott: Is there any distinction between "compuable" and "nameable", or is that just for effect?
10:57:53 <elliott> fizzie: Almost all real numbers are copulating!
10:58:05 <elliott> shachaf: There might be. You could have an uncomputable naming scheme.
10:58:09 <fizzie> elliott: Oh, is *that* why there's so many of them?
10:58:16 <shachaf> Or an unnameable computing scheme!
10:58:19 <elliott> I suppose the real → program computing it mapping is not very computable either.
10:58:28 <elliott> fizzie: Yes, exactly.
10:58:45 <shachaf> I thought that was the Fibonacci numbers.
10:58:45 <CakeProphet> okay so I get Cauchy sequences
10:58:57 <elliott> CakeProphet: Anyway, yes, if you want to write down how it works on paper, see Wikipedia, which you didn't understand.
10:59:02 <CakeProphet> but... not how that proves that reals can be constructed.
10:59:02 <elliott> Thus why I attempted to simplify things.
10:59:18 <elliott> CakeProphet: This is not construction in the constructivist sense. (Or, well, only loosely.)
10:59:21 <elliott> It's /defining/ the reals.
10:59:30 <elliott> Cauchy sequences of rational numbers /are/ reals.
10:59:38 <elliott> They're a field, yadda yadda yadda.
10:59:45 <CakeProphet> hmmm, okay.
10:59:46 <shachaf> Constructivism is where it's at.
10:59:49 * shachaf finitist
11:00:01 <CakeProphet> don't strings also define reals?
11:00:05 <oerjan> CakeProphet: well, you want to take the cauchy sequences modulo an equivalence relation.
11:00:09 <elliott> CakeProphet: <oerjan> CakeProphet: sheesh just go for infinite decimal expansion, then. but good luck proving that's a field :P
11:00:10 <CakeProphet> *possibly infinite
11:00:11 * oerjan could not help himself
11:00:42 <CakeProphet> oh okay well
11:00:48 <CakeProphet> these things are all far less exciting than I thought.
11:00:51 -!- nooga has quit (Ping timeout: 252 seconds).
11:01:24 <CakeProphet> math needs more hollywood guys.
11:01:31 * shachaf likes http://www.scottaaronson.com/blog/?p=103
11:01:33 <elliott> CakeProphet was expecting a magician, a hat; a hand in the hat, pulled out, accompanied to the cry of "that's a real!"; the hand pulled out a bunny.
11:01:40 <elliott> That is true mathematics.
11:02:03 -!- elliott has left ("BACK TO THE LAGOMORPHS!").
11:02:09 <CakeProphet> "and THEN THE REAL NUMBERS CAUSE A BIG EXPLOSION AND MAKE OUT WITH A SEXY GIRL. Q.E.D."
11:02:09 <oerjan> CakeProphet: it's like this, what you _really_ want is to construct some set model of a complete ordered field, and it doesn't really matter how you do it, and once you've done it you generally throw away the precise model used and just work with the complete ordered field axioms.
11:02:34 <oerjan> (you can prove that all complete ordered fields are isomorphic.)
11:02:50 -!- elliott has joined.
11:02:53 <shachaf> Sets are boring. Lists are where it's at.
11:02:56 <elliott> shachaf: I liked that too when I saw it first.
11:03:08 <shachaf> elliott: Not anymore, eh?
11:03:17 <CakeProphet> oerjan: all of this, of course, in the pursuit of defining other things just so that they you have it so that you can define other things, dot dot dot.
11:03:19 * shachaf wonders why elliott leaves and rejoins this channel once in a while.
11:03:20 <CakeProphet> math is fun.
11:03:23 <elliott> It's the only bit of finitism that even remotely makes a nice tinkly sound when I hold it up to my ear.
11:03:35 <elliott> Apart from one of Zeilberger's pieces that I can't dislike because it's just so silly.
11:03:41 <shachaf> elliott: I hope you don't believe in the law of excluded middle?
11:04:00 <shachaf> Do you know the proof of LEM from callCC, by the way?
11:04:07 <elliott> shachaf: I just ask oerjan to exclude all my middles for me. And yes, I do.
11:04:15 <oerjan> CakeProphet: well once you have the complete ordered field, you can start making calculus properly.
11:04:31 <oerjan> and then, to infinity and beyond.
11:04:31 -!- derdon has joined.
11:04:41 <elliott> oerjan: you misspelled aleph null
11:04:43 <elliott> :P
11:05:08 <CakeProphet> I think math tries too hard to prove itself.
11:05:12 <shachaf> You misspelt "misspelt".
11:05:17 <CakeProphet> it just be itself and accept what other people think about it.
11:05:20 <shachaf> Also, א.
11:05:27 <elliott> shachaf: Spelt yourself.
11:05:41 <CakeProphet> s/just/should just/
11:07:26 <CakeProphet> elliott: wait don't programs compute the digits of pi to infinity
11:07:31 <CakeProphet> isn't that like.... computable?
11:07:36 <elliott> oerjan: kill me now
11:07:56 * oerjan spikes elliott's drink with cyanide
11:08:19 <oerjan> CakeProphet: pi is a computable number, yes.
11:08:22 <shachaf> > last (show pi)
11:08:23 <lambdabot> '3'
11:08:25 <shachaf> !
11:08:28 * shachaf published paper.
11:08:32 <shachaf> s/d/s/
11:08:38 <CakeProphet> oh finite terminating algorithm nevermind.....
11:08:43 <CakeProphet> oerjan: lies.
11:08:44 <oerjan> > last (show pi :: CReal)
11:08:44 <lambdabot> Couldn't match expected type `Data.Number.CReal.CReal'
11:08:45 <lambdabot> against infe...
11:08:49 <oerjan> oops
11:08:54 <oerjan> > last (show (pi :: CReal))
11:08:55 <lambdabot> '2'
11:09:01 <shachaf> zomg
11:09:03 <shachaf> > '2' == '3'
11:09:04 <lambdabot> False
11:09:06 <CakeProphet> lies.
11:09:07 <shachaf> An inconsistency!
11:09:33 <hagb4rd> so computable is not depending on a finite number of steps
11:09:34 <hagb4rd> ?
11:09:34 <oerjan> CakeProphet: are you familiar with the data/codata distinction? computable real numbers are codata in that sense. i think.
11:10:03 <oerjan> or well, nearly.
11:10:07 <shachaf> THAT'S THE SAME THING AS THE CODE/DATA DISTINCTION RIGHT?
11:10:42 -!- nooga has joined.
11:10:43 <CakeProphet> I am not familiar with that
11:11:20 <oerjan> CakeProphet: a real number is computable if there is an algorithm which can calculate a given digit of it given its position as output.
11:11:27 <elliott> fizzie: Hmm, what if I generated eight hundred reverse-context trees, one per n-gram CSV file, and then merged them all?
11:11:35 <CakeProphet> oerjan: oh okay.
11:11:51 <shachaf> elliott: How's ghc going?
11:11:51 <elliott> fizzie: That would allow me to use a packed representation, right? I suppose it just defers the hard problem to the merging step, but it could work one branch at a time, no?
11:11:53 <shachaf> g ~ q
11:12:00 <elliott> shachaf: I wrote like thirty lines of parser.
11:12:08 <shachaf> Oh no.
11:12:18 <shachaf> Now your design decisions will constrain Haskell programmers forever.
11:12:24 <shachaf> elliott: Can you get rid of "if" while you're at it?
11:12:28 <oerjan> *as input
11:12:29 <CakeProphet> elliott: okay so well THE REAL NUMBERS ARE NOT COMPUTABLE there is a way I can write out pi as an algorithmically generated Cauchy sequence.
11:12:33 <CakeProphet> s/well/while
11:12:39 <CakeProphet> ?
11:12:45 <CakeProphet> 44lppoksepok3poj2po2jp3ooj3rpo4pop4po4po4po4po44po4po4erpoelerw
11:12:46 <elliott> yes, pi is computable.
11:12:49 <elliott> 9 is also a real number, and computable.
11:12:54 <CakeProphet> cooooool
11:13:02 <CakeProphet> 3 is the best aproximation of pi.
11:13:11 <hagb4rd> at least for defined number of digits
11:13:20 <shachaf> Digits of 9 are even computable in constant time.
11:13:22 <oerjan> CakeProphet: _almost no_ real numbers are computable. the exceptions are a countable set. hth.
11:13:28 <hagb4rd> as oerjan mentiioned
11:13:47 <oerjan> proof: there are only countably many algorithms.
11:14:04 <oerjan> (every algorithm has a string representation in your favorite TC language)
11:14:39 * shachaf allows infinite programs.
11:14:47 <shachaf> @quote OlegFacts
11:14:47 <lambdabot> OlegFacts says: Oleg's first datatype in haskell started like this: data ChuckNorris ...
11:14:50 <oerjan> ngevd excluded, i think his favorite language is Piet.
11:14:53 <shachaf> @quote OlegFacts
11:14:53 <lambdabot> OlegFacts says: Oleg's first datatype in haskell started like this: data ChuckNorris ...
11:14:59 <shachaf> @quote OlegFacts
11:14:59 <lambdabot> OlegFacts says: GHC doesn't have a type checker. It emails your types to Oleg for checking.
11:15:10 <elliott> oerjan: is piet tc? :p
11:15:42 <hagb4rd> can i calc differentials with lambda expressions?
11:16:28 <oerjan> elliott: no idea
11:16:31 <CakeProphet> the only way to have an infinite program would be to write an algorithm to generate it
11:16:39 <CakeProphet> there's a countable number of those.
11:17:18 <oerjan> hagb4rd: well of course, they're TC.
11:17:58 <hagb4rd> okay, can you give me an example of the notation for lambdabot?
11:17:59 <fizzie> elliott: Yes, it should be possible (even reasonably easy) to merge two reverse-context trees that are hueg. It's just a matter of generating the merged "next word" lists by summing up the duplicates (and the totals), and then generating subnodes for the union of subnodes of the sources. I don't think you will need to keep in memory more than 3*(N-1) nodes at once; maybe even just 3 if you like. (Assuming pairwise merging; source 1, source 2, destination.)
11:18:13 <oerjan> hagb4rd: it's likely you'll find you have to encode a CAS representation first.
11:18:51 <oerjan> hagb4rd: i thought you meant pure lambda calculus. also lambdabot's lambdas are typed, so not TC. (without other functions)
11:18:53 <fizzie> Possibly you don't need even full nodes in memory; if the next-word lists and pointers to subnodes (or whatever) are sorted, you can merge them one by one.
11:19:05 <oerjan> > (\x y -> x+y) 2 4
11:19:06 <lambdabot> 6
11:19:21 <fizzie> Then it's just a couple of offsets.
11:19:24 <CakeProphet> computing is so constrained and countable. :(
11:19:33 <elliott> fizzie: Right.
11:19:45 <elliott> fizzie: That sounds like a decent plan, then.
11:20:03 <elliott> fizzie: Eight hundred runs of a gig at a time to produce a probably similarly-sized resulting tree, then one long merge job.
11:21:14 <CakeProphet> so recursion is basically just recursion + lazy evaluation?
11:21:22 <CakeProphet> er
11:21:25 <CakeProphet> corecursion
11:21:47 -!- cheater has quit (Remote host closed the connection).
11:22:29 -!- cheater has joined.
11:22:42 <shachaf> @unlambda `.l`.a`.m`.b`.d`.a`.b`.o`.t`.'`.s`. `.u`.n`.l`.a`.m`.b`.d`.a`.s`.,`. `.o`.n`. `.t`.h`.e`. `.o`.t`.h`.e`.r`. `.h`.a`.n`.d`..`..`..v
11:22:42 <lambdabot> ...dnah rehto eht no ,sadbmalnu s'tobadbmal
11:22:46 * shachaf sighs.
11:23:01 <oerjan> *MWAHAHAHA*
11:23:47 <oerjan> @unlambda ````````.t.r.y. .t.h.i.si
11:23:48 <lambdabot> try this
11:25:40 <oerjan> CakeProphet: yeah, i think it only gets interesting once you want to restrict it to terminating computations
11:25:47 <shachaf> @unlambda `````````````v.I./.O. .i.s. .s.t.u.p.i.d
11:25:47 <lambdabot> Done.
11:25:58 <CakeProphet> so can trees in Haskell be infinite?
11:26:03 <oerjan> shachaf: wat
11:26:06 <oerjan> CakeProphet: sure
11:26:25 <elliott> CakeProphet: no.
11:26:28 <elliott> only lists.
11:26:29 <oerjan> CakeProphet: the standard library ones may or may not be lazy, though
11:26:42 <oerjan> *lazy enough
11:26:44 <elliott> data.tree certainly is
11:26:48 <elliott> it's just (a,[Tree a])
11:27:05 <oerjan> :t Node
11:27:05 <lambdabot> forall a. a -> Forest a -> Tree a
11:27:19 <shachaf> type Tree = Mu []
11:27:23 <elliott> ok ok data Tree a = Node a (Forest a) where type Forest a = [Tree a]
11:27:41 <shachaf> elliott: Since when did trees need an 'a'?
11:27:45 <shachaf> The skeleton i what counts.
11:27:49 <elliott> since data.tree :P
11:27:51 <shachaf> Mu [] is the only true tree.
11:27:56 <CakeProphet> I feel this tree metaphor is collapsing...
11:28:13 <CakeProphet> tree branches lead to forests? help.
11:28:19 <shachaf> B-trees are the only trees that count.
11:28:19 <elliott> hmph, making this program do something made my projected runtime for phase I shoot from two to four hours
11:28:22 <hagb4rd> leafs
11:28:27 <hagb4rd> not?
11:28:32 <oerjan> > let tree = Node 1 tree tree in tree
11:28:33 <lambdabot> Couldn't match expected type `Data.Tree.Forest t
11:28:33 <lambdabot> ...
11:28:41 <oerjan> oops
11:28:56 <oerjan> > let tree = Node 1 (repeat tree) in tree
11:28:57 <lambdabot> Node {rootLabel = 1, subForest = [Node {rootLabel = 1, subForest = [Node {r...
11:29:05 <shachaf> elliott: Hah, wrong again!
11:29:14 <oerjan> CakeProphet: ^ infinite
11:29:14 <fizzie> elliott: Alternative plan: If you don't mind having your packed format being a regular trie (it's likely to be equally fast except for the cases where you need to backoff to shorter context), you can easily (f.s.v.o.) build it directly from the count files, since they're already sorted and thus come in the right order for tree-building. (Just keep a bit of state so that you can update totals and offsets. And you might end up with a bit dispersed nodes if you do
11:29:14 <fizzie> n't want to count the number of subnodes in advance.)
11:29:24 <shachaf> > let tree = Node 1 [tree] in tree -- Infinite tree.
11:29:25 <lambdabot> Node {rootLabel = 1, subForest = [Node {rootLabel = 1, subForest = [Node {r...
11:29:38 <CakeProphet> oerjan: ah okay. But you can't have infinite maps can you?
11:29:46 <elliott> CakeProphet: data.map is finite
11:29:49 <CakeProphet> because they have to balance and stuff.
11:29:49 <elliott> CakeProphet: for infinite maps, see (->)
11:30:13 <elliott> fizzie: There's also the problem that I need to store /two/ sets of "what's up next".
11:30:18 <elliott> fizzie: For going forwards and for going backwards.
11:31:04 <elliott> I suppose one could make an argument that since most English doesn't make any sense going backwards there'll be very little structural overlap and I might as well just have two different files and not lose that much on size.
11:31:13 <oerjan> CakeProphet: there are tries which can be infinite
11:31:19 <hagb4rd> do you mean the enumerator elliott?
11:31:22 <fizzie> I already forgot what that was all about and why you wanted the backwards thing.
11:31:26 <elliott> ?
11:31:34 <hagb4rd> k i guess not
11:31:45 <elliott> fizzie: So you can go from "this word in the middle of the sentence" back to the start of a sentence, as well as forwards to the end.
11:31:51 <elliott> fizzie: MegaHAL does it.
11:33:35 <elliott> fizzie: I am kind of convincing myself with this "English doesn't make any sense backwards anyway" tack, though.
11:34:04 <elliott> fizzie: (i.e. it won't buy me much)
11:34:23 <fizzie> elliott: .so or yesterday before day the AI-complete became MindForth because, anyway point moot a all it's but, Okay
11:34:38 <elliott> fizzie: Oh, it did?
11:35:29 <fizzie> "http://www.scn.org/~mentifex/mindforth.txt
11:35:30 <fizzie> yesterday was able to comprehend both
11:35:30 <fizzie> declarative and negational sentences.
11:35:30 <fizzie> It handled both transitive verbs and intransitive
11:35:30 <fizzie> verbs of being. It stored ideas in its knowledge base
11:35:30 <fizzie> and remembered them in subsequent conversation."
11:35:40 <fizzie> Actually it was already on Sunday, it seems.
11:35:58 <fizzie> Sadly, there's no example session attached.
11:36:11 <elliott> > break (=='a') "xxaxx"
11:36:12 <lambdabot> ("xx","axx")
11:36:22 <elliott> > breakEnd (=='a') "qqaqq"
11:36:23 <lambdabot> Not in scope: `breakEnd'
11:36:31 <elliott> > span (=='a') "qqaqq"
11:36:32 <lambdabot> ("","qqaqq")
11:36:36 <elliott> Hmph.
11:36:39 <elliott> > span (/='a') "qqaqq"
11:36:39 <lambdabot> ("qq","aqq")
11:36:49 <elliott> oerjan: Hey, how do I omit the a
11:37:07 <oerjan> second (drop 1)
11:37:10 <shachaf> > second (drop 1) . span (/='a') $ "qqaqq"
11:37:12 <lambdabot> ("qq","qq")
11:37:13 -!- derdon has quit (Remote host closed the connection).
11:37:28 -!- oerjan has quit (Quit: !enses sekam oot ti).
11:37:29 <elliott> > words "a "
11:37:30 <lambdabot> ["a"]
11:37:34 <elliott> Ah, hmm
11:37:36 <elliott> Better question
11:37:41 <elliott> How do I get the 'a' in the first list
11:37:48 <shachaf> You don't.
11:37:57 <elliott> But I want to.
11:38:12 <shachaf> But you don't.
11:38:19 <shachaf> Maybe Data.List.Split has something?
11:38:25 <elliott> Bytestrings. :p
11:38:38 <elliott> Technically what I want is already provided by split, but I am micro-optimising.
11:38:42 <elliott> For good reason, at least.
11:38:49 <shachaf> Oh, ByteStrings!
11:39:09 <elliott> I hope this is a prelude to you solving my problem.
11:39:15 <shachaf> Well, just unsafely add 1 to the size of the left pointer and subtract 1 from the size of the right pointer.
11:39:19 <shachaf> And add 1 to the position.
11:39:41 <shachaf> Something like that.
11:40:02 <elliott> Well, yes.
11:40:08 <shachaf> Who really cares, it all tends to work out somehow.
11:40:20 <elliott> lines :: ByteString -> [ByteString]
11:40:20 <elliott> lines ps
11:40:21 <elliott> | null ps = []
11:40:21 <elliott> | otherwise = case search ps of
11:40:21 <elliott> Nothing -> [ps]
11:40:21 <elliott> Just n -> take n ps : lines (drop (n+1) ps)
11:40:23 <elliott> where search = elemIndex '\n'
11:40:34 <elliott> Supposedly a memchr-hexadecimal-lotsofstrictness-unsafeperformio version of this was no faster.
11:40:37 <elliott> Who'da thunk it.
11:40:47 <shachaf> "hexadecimal"?
11:40:50 <shachaf> Wait, that makes code faster?
11:41:06 * shachaf had no idea.
11:41:19 <shachaf> Time to rewrite all my code.
11:41:33 <elliott> Yes.
11:41:41 <shachaf> > "AAAA"
11:41:42 <lambdabot> "AAAA"
11:41:44 <shachaf> > "\x41\x41\x41\x41"
11:41:45 <lambdabot> "AAAA"
11:41:50 <shachaf> That was *way* faster. Wow.
11:42:40 * shachaf >>=
11:43:39 <elliott> Yay, now it's twice as fast.
11:44:09 <elliott> Now it will only take 2.22222222 hours. Also, I haven't actually started generating a tree yet.
11:44:27 <elliott> fizzie: Ooh, I have an idea.
11:44:41 <elliott> fizzie: What if I used a reverse-context tree forwards, but a /normal/ context tree backwards?
11:44:57 <elliott> fizzie: Then, I'd benefit from structural sharing so long as reversed English has a lot of structural similarities to English in reverse.
11:45:01 <elliott> Turns out it does!
11:45:14 <elliott> OK, so backoff would be less efficient backwards, but.
11:47:46 <fizzie> It sounds potentially doable; can't really guess how much it saves, though. You'd still need separate "(next word, frequency)" lists for the two directions in each node.
11:48:57 <elliott> fizzie: Well, yes, but it was more about turning the number of contexts that appear in both corpuses from "few of them" to "literally all of them".
11:49:12 <elliott> Which means that all the tree-y overhead is completely deduplicateiiveiteitjeieivhteed.
11:49:17 <elliott> Wow, that was almost Finnish.
11:49:33 <fizzie> Appilan pappilan apupapin papupata.
11:49:38 <fizzie> (That is Finnish.)
11:50:34 <elliott> Hokay, I think I've reduced this problem to one that can be done with Haskell on this little MacBook Air overnight.
11:50:39 <elliott> Perhaps even... in the background.
11:51:12 <elliott> Now I just have to come up with a Haskell representation of the actual tree thing that isn't ridiculously wasteful.
11:52:06 <elliott> Hmmz, I wonder how to do the intern table thing like this.
11:52:21 <elliott> I should download the one-grams to write an intern-table-producing thing.
11:52:26 <elliott> Or, hmm.
11:52:46 <elliott> fizzie: Reassure me that the likelihood of any of the words appearing in the one-gram list being filtered out of the five-grams is sufficiently low to not care.
11:52:50 <elliott> thx
11:54:51 <fizzie> Uh, well... I think it's quite likely that a large number of unigrams that "barely" make it (are very close to the <40 filtering point) -- which is the majority, Zipf and all that -- will never occur in the 5-gram files, since they would pretty much have to occur in only one four-word context to make it in that file.
11:55:32 <fizzie> I can reassure you that all words in the 5-grams do occur in the unigram files, though, if that's what you want to hear instead.
11:56:14 <elliott> fizzie: Well, I just don't want to generate an intern table with a bunch of pointless words.
11:56:26 <elliott> Do I really just have to filter every word in the five-gram set through uniq?
11:56:30 <elliott> That'll take aaaaaaaages.
11:56:37 <fizzie> Not just that, you need to sort them first.
11:56:46 <elliott> NOOOOOOOOOOOOooooooooooooooooooooOOOOOooOOOOooOOOOooOOOOOOOOOOOOOOOOOOOoooooooooooo
11:56:59 <fizzie> Well, unless by "uniq" you mean something that actually keeps all the words it has seen in memory.
11:57:23 <fizzie> How many unigrams did they retain, anyway?
11:57:33 <elliott> 9 files' worth.
11:57:54 <elliott> fizzie: I don't suppose you have a premade way of doing this that doesn't involve me buying eight hundred gigabytes of RAM to let sort eat.
11:58:49 <fizzie> There are premade merge-sort-based on-disk sorters.
11:59:22 <elliott> Wait, I shouldn't need that much RAM.
11:59:25 <elliott> Just enough RAM for each word.
11:59:36 <elliott> Or, wait, sort actually won't use more than that, will it...
11:59:52 <fizzie> Sort will; a more sensible sort of uniq wouldn't.
11:59:55 <fizzie> Was it so that those datafiles have one line for each year or something?
12:00:09 <elliott> fizzie: ?
12:00:32 <fizzie> "As an example, here are the 30,000,000th and 30,000,001st lines from file 0 of the English 1-grams (googlebooks-eng-all-1gram-20090715-0.csv.zip):
12:00:32 <fizzie> circumvallate 1978 313 215 85
12:00:32 <fizzie> circumvallate 1979 183 147 77"
12:00:34 <fizzie> Apparently so.
12:00:55 <fizzie> Did you want to retain the yearliness stuff?
12:01:06 <elliott> fizzie: Not really. At least not now.
12:01:09 <elliott> I just want an intern table. :
12:01:09 <elliott> p
12:03:02 <fizzie> A single-pass through all the data summing up that stuff (so you'd end up with just "circumvallate {313+183}" and so on) would probably cut the (uncompressed) data size to one twentieth of the originals, or less. But then you'd lose the years.
12:04:02 <fizzie> Oh, the files aren't "totally" sorted anyway.
12:04:05 <fizzie> "Inside each file the ngrams are sorted alphabetically and then chronologically. Note that the files themselves aren't ordered with respect to one another. A French two word phrase starting with 'm' will be in the middle of one of the French 2gram files, but there's no way to know which without checking them all."
12:04:32 <fizzie> That's a bit funny.
12:05:13 <elliott> fizzie: I'm not sure the relevance this has to MY PRECIOUS INTERN TABLE
12:05:36 <fizzie> It doesn't have much.
12:06:29 <elliott> So, ehhm, I sure hope sort will only use like three gigs of ram, not eight hundred.
12:06:33 <elliott> That would be a nice thing for sort to do.
12:06:43 <fizzie> That sounds unlikely for sort to do.
12:06:44 <elliott> CakeProphet: Oh uh yeah
12:06:49 <elliott> fizzie: Really?
12:06:58 <elliott> CakeProphet: How big are the one-gram files in total, uncompressed
12:07:11 <fizzie> Well, you know, it has to read all the data in memory to sort it, just in case the last line would be the first.
12:07:30 <elliott> Oh, right.
12:07:36 <elliott> Is there a sort that doesn't bother sorting? :p
12:08:03 <fizzie> You want an integrated "sort | uniq" thing; I'm not sure there's a pre-made one, but it's not very many lines of Haskell/Perl/Python/whatever.
12:08:14 <elliott> Actually how come uniq doesn't support just, you know, keeping track of lines it outputs so that it doesn't output them again?
12:08:27 <fizzie> The 5-gms probably don't have such a huge vocabulary you'd need to have it well-optimized.
12:08:33 <elliott> Hmm, I need a scathing internship-related political pun, since I have gentry.
12:08:53 <elliott> fizzie: You seem to be constantly implying I should look at another data set. :p
12:09:18 <fizzie> No, it was just a "it's probably safe to use a thing that keeps all the words in memory" implication.
12:09:32 <fizzie> I wouldn't be too surprised if you had only a hundred thousand or so words there.
12:09:47 <elliott> I know, it's just all this depressing talk about small vocabularies.
12:10:12 <elliott> fizzie: I'm half-tempted to just generate eight hundred intern tables (one in each gen'd tree) and somehow merge them together in one go.
12:10:17 <elliott> That's probably a terrible idea though.
12:10:20 <fizzie> It's not "small" in an absolute sense, just compared to very large numbers.
12:10:33 <fizzie> Sadly, they don't report the type (unique unigram) counts, just the token counts, in the "total counts" files.
12:11:59 <elliott> Although, if I know which tree each token came from...
12:12:28 <elliott> Eh, it is probably faster to simply generate an intern table upfront and have gentry use that.
12:13:21 <fizzie> I would. They'd overlap a lot, and if each tree had its own, you'd need to remap all the numbers. (Or keep large remappings from the per-tree indices to "global" indices.)
12:13:28 <elliott> Right.
12:15:37 <elliott> That has the annoying side-effect of wanting the data files up-front, but I suppose I can just use my test one.
12:16:15 <fizzie> Extrapolating from the first 5-gm file, removing the per-year information would cut the unpacked data size down to 1/49th of the original size.
12:16:45 <fizzie> (It has 30610909 lines, but only 622735 5-grams.)
12:16:57 <elliott> Time to bust out THE DATA.HASHSETS.
12:17:01 <elliott> fizzie: Wow.
12:17:20 <elliott> fizzie: Oh well, no harm just folding those up at gentry-time.
12:17:42 <fizzie> Except the dick space usage.
12:18:23 <elliott> fizzie: Well, erm, it's only eight gigs, innit?
12:18:57 <fizzie> I haven't counted.
12:19:07 <elliott> Eight hundred times one hundred megs.
12:19:12 <elliott> Roughly.
12:19:16 <elliott> Oh, hmm.
12:19:18 <elliott> That's compressed.
12:19:22 <elliott> fizzie: Well,
12:19:26 <elliott> -rw-rw-r-- 1 elliott elliott 113M 2011-10-12 09:56 googlebooks-eng-all-5gram-20090715-478.csv.zip
12:19:42 <fizzie> 800 times that is 80 gigs, not 8. Approximately.
12:19:49 <fizzie> Unpacked, it's about a gigabyte per file.
12:19:54 <elliott> Hmm.
12:20:01 <elliott> Well, I can store it compressed mostly.
12:20:06 <elliott> But how the fuck am I going to download this shit?
12:20:09 <fizzie> Yes, you can unpack on-the-fly.
12:20:33 <fizzie> $ tail -n 5 googlebooks-eng-all-5gram-20090715-0.csv
12:20:33 <fizzie> • • • . ; 2002 2 2 2
12:20:33 <fizzie> • • • . ; 2003 4 4 4
12:20:33 <fizzie> • • • . ; 2005 1 1 1
12:20:33 <fizzie> • • • . ; 2006 3 3 3
12:20:33 <fizzie> • • • . ; 2008 1 1 1
12:20:36 <fizzie> The bestest data ever.
12:20:37 <elliott> Yes, it's indeed eighty gigabytes.
12:20:50 <elliott> fizzie: So... those CDs :P
12:20:53 <elliott> Sorry, DVDs :P
12:21:15 <fizzie> I don't have them physically either, and I'm pretty sure they're covered by a License(tm).
12:22:13 <fizzie> That set is just 25G; probably mostly thanks to the fact that the Internet doesn't have year (or page/book count) information.
12:22:42 <elliott> fizzie: I take it filtering out the page/year/etc. data wouldn't save much disk?
12:22:50 <elliott> (I guess I'll write a smallification thing.)
12:22:58 <elliott> (Although no wait, I need to figure out how I'm downloading eighty gigabytes first.
12:22:59 <elliott> )
12:23:07 <fizzie> In the uncompressed copy, it should save quite a lot; compressed, maybe not so much.
12:23:29 <fizzie> But still quite a lot, perhaps.
12:23:45 <elliott> Yeah, but then I realised that I have eighty gigs -- uh, I should check --
12:23:48 <elliott> /dev/sda5 134G 14G 114G 11% /
12:23:49 <elliott> Yeah.
12:23:56 <elliott> So bandwidth is a rather larger problem. :p
12:27:37 <fizzie> But size is time*bandwidth, and time goes up to infinity.
12:28:18 <elliott> Deep
12:28:19 <elliott> .
12:28:35 <elliott> Oh no, I am dangerously close to having: A Library.
12:28:39 <elliott> Like, there is this one data-type.
12:28:41 <elliott> And I want to
12:28:42 <elliott> reuse it
12:28:56 <elliott> Maybe I should just write a quick Perl thing.
12:28:59 <elliott> It would stifle me.
12:29:10 <fizzie> 1.2 billion 5-grams in web-data; approximately 0.5 in the books, extrapolating again from the first file. So they're around the same order of magnitude.
12:30:12 <fizzie> -rw-rw-r-- 1 htkallas htkallas 6168093 2011-10-12 15:29 googlebooks-eng-all-5gram-20090715-0-NOYEAR.zip
12:30:12 <fizzie> -rw-rw-r-- 1 htkallas htkallas 117898565 2011-10-12 15:29 googlebooks-eng-all-5gram-20090715-0.zip
12:30:19 <fizzie> That's how much you save in compressed-file size.
12:30:51 <elliott> :t foldl
12:30:52 <lambdabot> forall a b. (a -> b -> a) -> a -> [b] -> a
12:30:55 <fizzie> Sadly, you can't download the stripped-down files. :p
12:31:10 <fizzie> 1/19th, apparently.
12:32:50 <fizzie> Maybe if you add an "Accept: application/zip;note=dropthatstupidyearstuff" header to your GET request it'll send the smaller file.
12:35:13 <fizzie> That was about the ugliest: ... | perl -ne '($g, $y, $f) = split /\t/; if ($cg and $g ne $cg) { print "$cg\t$cf\n"; $cf=0; } $cg=$g; $cf+=$f; END { print "$cg\t$cf\n"; }' > ...
12:35:39 <elliott> fizzie: What is that even?
12:35:45 <elliott> Oh, is that year-merging? Yikes.
12:35:53 <elliott> Hey why is this intern thing taking so slowly for one file, this is unacceptable.
12:36:18 <fizzie> It was year-merging, yes.
12:38:45 <elliott> I think I may need a faster computer.
12:39:00 <fizzie> 92640 words in googlebooks-eng-all-5gram-20090715-0-NOYEAR.csv.
12:39:08 <fizzie> $ cat googlebooks-eng-all-5gram-20090715-0-NOYEAR.csv | perl -ne '($g) = split /\t/; $v{$_} = 1 for split " ", $g; END { print join("\n", sort keys %v), "\n"; }' | wc -l
12:39:10 <elliott> fizzie: How long did that take you?
12:39:11 <fizzie> Perl is the bestest.
12:39:15 <elliott> I mean
12:39:15 <elliott> to run
12:39:17 <elliott> Because this is slow.
12:39:45 <fizzie> 1.9 seconds; but I ran on the no-years file.
12:40:04 <elliott> fizzie: Mine's been running for like a minute. What givez?
12:40:06 <elliott> Oh, there it goes.
12:40:10 <elliott> real1m31.514s
12:40:14 <elliott> I think I'll try plain old Set.
12:40:40 <fizzie> Extrapolating, it should have taken pretty much exactly that long for the Perl script on the yearful datafile.
12:40:48 <elliott> Oh.
12:40:51 <elliott> Fair enough then.
12:41:09 <elliott> fizzie: How long did year-smushing take?
12:41:36 <fizzie> I'll time it if it's still in the readline command history. Maybe a minute, though.
12:42:14 <elliott> If I'll get similar savings on gentrying, that obviously pays off. :p
12:42:28 <fizzie> 1m13.951s for the above word-counting for the yearfuls.
12:42:35 <elliott> fizzie: I meant
12:42:41 <elliott> fizzie: How long did it take to convert yearfiles → noyearfiles
12:42:52 <elliott> Oh my god, "monads" is actually one the second-last line of what my script printed out for that.
12:42:53 <fizzie> Yes, I just had that time already running.
12:43:00 <elliott> It's hash-based, so complete coincidence.
12:43:13 <elliott> I'm, uhh, becoming somewhat sceptical that I'll be able to gentry a single gigabyte file in the twenty seconds I want.
12:43:52 <fizzie> 0m51.402s to smoosh years out with the above-the-above snippet.
12:44:19 <elliott> Rightes.
12:44:54 <elliott> There should really be an
12:45:06 <elliott> a -> HashSet a -> Maybe (HashSet a) operation.
12:45:16 <elliott> Nothing if it's already there, Just hs' if it wasn't, where hs' has it inserted.
12:45:34 <elliott> Then you can handle the "it's probably already an element, but if it's not, then insert it while you're there" behaviour.
12:46:33 <fizzie> I'd probably go that way, unless you actually are going to use the year data at some point; the uncompressed no-years file is 17M; the compressed with-years file is 113M. So you could keep everything uncompressed (that's one less hassle), and still use "only" ~13.6 GB vs. 90 GB.
12:46:33 -!- Jafet has joined.
12:47:36 <elliott> 17M???
12:47:41 <elliott> That's ridiculous.
12:47:49 <elliott> Right, OK, I'll write a year-smuher.
12:47:51 <elliott> smusher.
12:48:37 <elliott> fizzie: Wow, your script totally fails to handle, e.g. scrambling all the lines in the file.
12:49:09 * elliott is tempted to try writing it in awk.
12:49:22 <fizzie> Certainly, but that's just because they said it's sorted.
12:49:29 <fizzie> It throws out the page/book counts too.
12:49:55 <fizzie> I guess you could theoretically sum those up, but I'm unsure what they are good for.
12:50:46 <elliott> fizzie: Mightn't it be rather more efficient to do the interning with the degrading? (My totally fancy name for year-smushing.)
12:51:01 <elliott> I mean, OK, they're unrelated operations, but interning is pretty simple, and it saves some overhead :P
12:51:11 <fizzie> Sure, it could be done at the same time.
12:51:29 <elliott> fizzie: I mean... the main problem is that one minute times eight hundred files equals 13 hours.
12:51:52 <elliott> I'm kind of impatient; eighteen hours is the kind of computational budget I'd like to give this ridiculousness as a whole.
12:52:09 <elliott> That's probably totally infeasible though.
12:52:18 <fizzie> But 13 hours distributed over let's say 36 cores is just 22 minutes.
12:52:31 <elliott> Oh, you're donating me cluster time? :P
12:52:46 <fizzie> Nnnnno, but, uh... you can buy some from the cloud, I'm sure.
12:53:11 <elliott> fizzie: I suppose year-smushing is so intensely IO-bound that I could run ten at once and have them complete in about the same time.
12:53:57 <fizzie> There's certainly not much computation going on there, that's for sure.
12:54:26 <elliott> I'm not really sure what the number I should use for completely IO-bound things like that.
12:54:33 <elliott> Ten processes at once? A hundred?? EXACTLY EIGHT HUNDRED??
12:55:32 <fizzie> Incidentally, those files seem to have something silly when it comes to double-quotes. At least based on really quick sampling.
12:56:32 <fizzie> $ tail -n +39991 googlebooks-eng-all-5gram-20090715-0.csv | head -n 4
12:56:32 <fizzie> """ 2003 1 1 1
12:56:32 <fizzie> """ 2006 4 4 4
12:56:32 <fizzie> """ 1822 1 1 1
12:56:32 <fizzie> """ 1856 2 2 2
12:56:42 <fizzie> I mean, that doesn't really look all that 5-grammy.
12:57:04 <fizzie> $ tail -n +30000 googlebooks-eng-all-5gram-20090715-0.csv | head -n 1
12:57:05 <fizzie> """ "" Was anybody else" 1928 1 1 1
12:57:12 <fizzie> And I'm not exactly sure what's going on there either.
12:58:02 <elliott> <fizzie> """ 2003 1 1 1
12:58:04 <elliott> I think they're empty words.
12:58:12 <elliott> Like, """ at the end of a book or something.
12:58:34 <fizzie> The latter might be the "standard" CSV quoting rule; """ "" Was anybody else" => [" " Was anybody else].
12:59:03 <fizzie> But the former doesn't even have 5 words in it.
12:59:20 <elliott> They're not csv files.
12:59:22 <elliott> Even Google admits that.
12:59:36 <elliott> "File format: Each of the numbered files below is zipped tab-separated data. (Yes, we know the files have .csv extensions.)"
13:00:16 <fizzie> It sounds unlikely that a book would actually contain ["""] [""] [Was] [anybody] [else"] very often. But of course it's possible.
13:00:39 <elliott> Well, fair enough. There's nothing about escaping on http://books.google.com/ngrams/datasets, though.
13:00:43 <elliott> fizzie: Also it's only one result.
13:01:07 <elliott> fizzie: And they say older books have OCR issues, so...
13:01:28 <elliott> (e.g. occurrences of "internet" before the term's invention because of OCR mistakes)
13:02:05 <fizzie> Maybe, then. But """ doesn't even have 5 words; an X at the end of a book is not supposed to create any sort of "X <empty> <empty> <empty> <empty>" 5-gram, usually.
13:02:46 <elliott> fizzie: Well, it could always be """ followed by lots of spaces...
13:03:32 <fizzie> Also they say it's alphabetically sorted, but the (no-year, 0) file starts with:
13:03:39 <fizzie> ! ! ! Is there 44
13:03:39 <fizzie> ! ! ! Where is 74
13:03:39 <fizzie> "! ! "" The two" 103
13:03:39 <fizzie> "! "" "" As in" 68
13:03:40 <fizzie> ...
13:03:47 <fizzie> "! "" yelled someone in" 104
13:03:47 <fizzie> "! ' "" ) The" 40
13:03:47 <fizzie> ! ' ' Get off 46
13:03:47 <fizzie> ! ' ' Stop ! 121
13:03:50 <elliott> Looks alphabetical to me.
13:03:53 <elliott> Oh, hmm.
13:04:07 <elliott> fizzie: Well, you know. I'd be surprised if there wasn't any fucked-upness.
13:04:18 <elliott> You can: read: http://www.sciencemag.org/content/331/6014/176 if you want to know how they generated it.
13:05:03 <fizzie> I think it's just slightly borksored.
13:05:48 <elliott> So, hmmm.
13:05:56 <fizzie> All "sensible-looking" instances of " I've found seem to have that CSV-style "..."-around-the-whole-field where inner doublequotes have been doubled; most of the other stuff is some sort of nonsense that starts with a " but then doesn't contain enough words.
13:06:06 <elliott> Still not entirely sure what my strategy is.
13:06:30 <fizzie> "! ) 1847 1 1 1
13:06:32 <fizzie> Like that.
13:06:35 <elliott> Degrade → intern → gentry → merge is all very reasonable, but now I'm stuck trying to figure out what my perceived issue was.
13:06:41 <elliott> fizzie: Quoting errors? :P
13:06:52 <elliott> Maybe it tried to run some dollar sign (...) as bash.
13:06:59 <elliott> And it just errored out, but stderr was eaten.
13:07:05 <elliott> This is why you don't do this kind of stuff with bash.
13:09:17 -!- MSleep has changed nick to MDude.
13:11:51 <fizzie> Yes, I think someone's screwed up there; just funny that no-one has fixed it since the 2009 releasification of it.
13:12:12 <fizzie> http://code.google.com/p/google-ngram-stripper/ "The corpus is full of uncorrected OCR errors and has a suspicious number of quote marks, and a number of other issues --"
13:12:18 <fizzie> Not too much complaining going on either.
13:13:01 <elliott> fizzie: Eurgh, does that do anything non-trivial?
13:13:07 <fizzie> Probably not.
13:13:09 <elliott> "In practice, 5-grams require a 3TB hard disk and 20GB+ of memory (swap memory works but is so slow it's pointless. I'm rewriting the script now)"
13:13:11 <elliott> Nice.
13:13:39 <elliott> http://www.manythings.org/wordfrequency/
13:13:41 <elliott> Hmmmmmmmmmmm.
13:14:00 <elliott> http://code.google.com/p/google-ngram-stripper/source/list
13:14:02 <elliott> Seems rather recent.
13:14:14 <elliott> fizzie: Oh, dear god: http://code.google.com/p/google-ngram-stripper/source/browse/trunk/google-ngram-stripper.py
13:14:46 <fizzie> Gggg.
13:15:45 <elliott> def combinecapitalsandapplythreshold():
13:15:50 <elliott> filteryearandalphabetise()
13:15:53 <elliott> Literate programming.
13:15:56 <fizzie> finalfilename = "FINAL RESULTS SINCE" + str(earliestyear)+"THRESHOLD"+str(threshold)+".txt"
13:15:56 <fizzie> resultsfile = open(finalfilename, 'a')
13:16:02 <fizzie> It's the bestest thing since sliced bread.
13:16:02 -!- kmc_ has joined.
13:25:18 -!- boily has joined.
13:30:24 -!- hagb4rd2 has joined.
13:31:00 -!- hagb4rd has quit (Ping timeout: 248 seconds).
13:32:22 -!- augur has quit (Remote host closed the connection).
13:34:12 <Jafet> bread[i:j]
13:36:51 <elliott> What kind of 3G data bandwidth do people get "in the wild"? Outside of countries designed solely for good mobile reception like Finland, that is.
13:45:23 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .).
13:46:21 -!- sebbu2 has changed nick to sebbu.
13:46:50 -!- pikhq_ has joined.
13:46:51 -!- pikhq has quit (Ping timeout: 260 seconds).
13:51:53 -!- elliott has quit (Remote host closed the connection).
13:54:21 -!- kmc_ has changed nick to kmc.
13:58:43 <fizzie> I'm not sure we get very fast 3G in Finland either. In the Helsinki/Espoo/Vantaa area, apparently 3.5-6 Mbps, depending on the operator, according to some presumed-to-be-disinterested third party.
14:02:35 -!- elliott_ has joined.
14:02:52 <elliott_> 13:58:43: <fizzie> I'm not sure we get very fast 3G in Finland either. In the Helsinki/Espoo/Vantaa area, apparently 3.5-6 Mbps, depending on the operator, according to some presumed-to-be-disinterested third party.
14:03:03 <elliott_> fizzie: Well, yes, I just bet it's slower over here, is all. :P
14:05:13 <fizzie> I wouldn't know, my mobile interwebs are 384 kbps as per the contract.
14:05:23 <fizzie> At least I think it was that.
14:05:53 <elliott_> My conclusion is that Gregor has probably accidentally come up with something incredibly useful.
14:06:01 <elliott_> Well, indirectly :P
14:18:16 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
14:43:18 -!- augur has joined.
14:47:44 -!- copumpkin has joined.
14:59:21 -!- Phantom_Hoover has joined.
15:02:25 <Phantom_Hoover> Hello lambdabot.
15:02:26 <lambdabot> Phantom_Hoover: You have 5 new messages. '/msg lambdabot @messages' to read them.
15:18:20 -!- augur has quit (Remote host closed the connection).
15:18:59 -!- boily has quit (Ping timeout: 252 seconds).
15:19:46 -!- Vorpal has joined.
15:20:34 <Phantom_Hoover> And it was turning out to be such a nice day.
15:30:36 <elliott_> BILLING SUMMARY
15:30:37 <elliott_> ---------------
15:30:37 <elliott_> PRIOR BALANCE: $-10.67
15:30:38 <elliott_> ---------------
15:30:40 <elliott_> NEW BALANCE: $-10.67
15:30:42 <elliott_> * negative amounts are credits
15:30:45 <elliott_> I wonder how I can express to Slicehost that I just don't care about these bills any more.
15:31:53 <Gregor> Dood, $10.67 is like one slicehost T-shirt.
15:32:17 <elliott_> The most common currency.
15:32:46 -!- elliott_ has quit (Remote host closed the connection).
15:32:51 -!- elliott_ has joined.
15:35:14 -!- boily has joined.
15:43:20 -!- nooga has quit (Ping timeout: 256 seconds).
16:07:14 -!- monqy has joined.
16:15:23 <Phantom_Hoover> http://www.primaxstudio.com/stuff/scale_of_universe/scale-of-universe-v1.swf
16:15:32 <Phantom_Hoover> Is it just me or is that the Spore soundtrack.
16:17:10 -!- augur has joined.
16:26:32 <Gregor> <elliott_> My conclusion is that Gregor has probably accidentally come up with something incredibly useful. // huh
16:26:42 <elliott_> Gregor: Well, FSVO incredibly :P
16:27:59 <elliott_> Gregor: I'm pretty sure a model where you run a server at home with all your music on it and remotely access and stream it from your phone is feasible with 3G connections in practice. The problem then is more that DSL upload rates don't tend to be that good, I guess :P
16:28:26 <Gregor> Ah, that idea. Except I tried to make it terrible :P
16:28:31 <elliott_> Yes, but you failed :P
16:28:48 <elliott_> It would be so much nicer than synchronising some arbitrary subset of your music all the time.
16:29:09 <Deewiant> If you reëncode the music for uploading any DSL connection should be fine
16:29:15 <Gregor> So, clearly I need to think of more terrible ideas.
16:29:18 <elliott_> I think that's what Apple's new iCloud rubbish is meant to be, except it actually just redownloads from iTunes' servers because Apple have literally no comprehension that they are not the only provider of services in the entire universe.
16:29:45 <elliott_> Deewiant: Well, I forget how good Vorbis is. But certainly it's trivial if you make it sound like crap :P
16:29:56 <Phantom_Hoover> Seen in r/AskScience: someone scared of mining on the moon because humans upset the delicate balance of nature, maaaan
16:29:58 <Phantom_Hoover> *.
16:30:11 <elliott_> Deewiant: It's probably trivial for Finns to get high-quality audio streamed off a consumer DSL connection's upload,
16:30:14 <elliott_> Deewiant: feasible for Brits,
16:30:18 <elliott_> Deewiant: and impossible for USians.
16:30:53 <Deewiant> elliott_: What kind of uploads do Brits/USians have, then
16:31:15 <Phantom_Hoover> Where's that upload speed monitor?
16:31:27 <elliott_> Deewiant: My upload is I think two megabits (eight megabits download); you can get twenty four megabit download / dunno what upload nowadays but only in cities and it's far from ubiquitous yet.
16:31:29 <Deewiant> speedtest.net
16:31:35 <elliott_> Fibre-optic offerings are very very new and barely available anywhere.
16:31:44 <elliott_> And you usually get less than advertised because of distance to the exchange.
16:31:52 <Deewiant> elliott_: CBR MP3s only go up to 320 kbps, no?
16:32:10 <elliott_> MP3s? So old fashioned.
16:32:15 <Deewiant> Just an example
16:32:16 <elliott_> But yes, it's true.
16:32:20 <elliott_> There's a liiittle bit of overhead though isn't there? :p
16:32:33 <Deewiant> Maybe some tiny amount, sure
16:32:46 <elliott_> What's EDGE like, I wonder
16:32:47 <Deewiant> But 256 kbps should still be enough for "anything" :-P
16:33:02 <elliott_> I guess the phone could cache recently-played music so you can survive even in, like, the harsh Finnish desert
16:33:14 <elliott_> But still, it would be nice if it worked outside threegee areas
16:33:16 <elliott_> i.e. cities
16:33:53 <Deewiant> Listen to modules, problem solved
16:33:56 -!- hagb4rd2 has quit (Ping timeout: 248 seconds).
16:34:22 <elliott_> Deewiant: "Modules", seriously now
16:34:32 <elliott_> It took me about fifteen seconds to work out what the hell you were talking about
16:34:45 <elliott_> So oi, someone (fizzie) go look up EDGE speeds
16:34:46 <Deewiant> I'm sorry that there isn't a better term
16:34:48 <Phantom_Hoover> Deewiant, my upload speeds are .45Mbps.
16:34:50 <Deewiant> "module files"
16:34:54 <elliott_> Deewiant: mods? :p
16:35:12 <Phantom_Hoover> I live in the same city as one of the UK fibre optic backbone hubs.
16:35:15 <elliott_> Phantom_Hoover: Ooh, how bourgeoise.
16:35:32 <Deewiant> elliott_: Always makes me think of the MOD format :-P
16:35:50 <elliott_> Deewiant: Kind of the point :P
16:36:03 <Deewiant> elliott_: I.e. too restrictive
16:39:31 <Deewiant> Phantom_Hoover: I get that much over 3G on my phone
16:39:48 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
16:40:52 -!- olsner has quit (Read error: Connection reset by peer).
16:42:17 <elliott_> Deewiant: Use your phone to host your other phone's music collection
16:42:37 <Deewiant> I only have one phone
16:42:54 <Deewiant> And I don't use it to listen to music
16:43:09 <elliott_> Hmm, I wonder if it might not be most effective as a music-playing daemon type scenario that, when accessed remotely, outputs to a real-time vorbis/whatever encoder rather than an actual audio device
16:43:15 <elliott_> And then the phone connects to, decodes, and plays that
16:43:23 <elliott_> Store everything as FLAC on the server, obviously
16:43:30 <elliott_> I dunno, seems like it has a simpler streaming model
16:43:47 <elliott_> And something like shuffle seems easier to do without buffering gaps if you just let the server handle it and push it down the same stream
16:44:19 <elliott_> Gregor: Sorry, I don't think I could make this idea truly terrible if I tried; I want one
16:44:35 <Deewiant> Does this not exist already or something?
16:44:47 <elliott_> Gregor: Only the pure, unadulterated version of your concept remains awful
16:45:27 <Gregor> elliott_: Right, the one that was always meant to be terrible :P
16:45:30 <elliott_> Deewiant: If it does, I don't know about it; the closest thing I know about is that new iCloud crap I mentioned, which seems to be tied into the iTunes Store and is basically just codeword for "your phone automatically downloads faux digital rights to shit, so we'll let you download it without asking twice"
16:45:37 <elliott_> Which isn't nearly the same thing, naturally
16:45:55 <Deewiant> MPD?
16:46:04 <elliott_> Deewiant: 17:43 <elliott_> Hmm, I wonder if it might not be most effective as a music-playing daemon type scenario that, when accessed remotely, outputs to a real-time vorbis/whatever encoder rather than an actual audio device
16:46:14 <elliott_> Deewiant: mpd/xmms2 allow for remote /control/
16:46:19 <elliott_> But they don't handle the whole "hearing it from miles away" thing
16:46:29 <elliott_> That would have to be handled by what amounts to their output driver
16:46:36 <elliott_> Certainly it could be a workable part of a solution
16:46:38 <Deewiant> Ah, I wasn't aware
16:46:42 <Deewiant> Icecast and such, then?
16:47:14 <Deewiant> I mean, online radio stations and similar exist
16:47:16 <elliott_> Something like mpd outputting to icecast seems like it would form something close to a solution, yes; you still need some custom code to handle the connection and switching of drivers
16:47:37 <elliott_> That stops you listening to music at home while also on a remote device, which I suppose might matter if you're not a hermit, but who isn't (and you could always just spawn another mpd I guess)
16:47:59 <elliott_> But really, the main thing here is the actual client code :P
16:48:28 <elliott_> If you have to use some random terrible mpd app to get stuff actually playing, then open up an internet radio app, key in an address, and it's already been playing for a minute by the time you connect, it's sort of worthles
16:48:29 <elliott_> s
16:48:56 <Deewiant> If you say so :-P
16:49:09 <Deewiant> Doesn't seem worthless to me but whatever
16:49:44 <elliott_> But hey, at least our connections are fast enough for it
16:50:23 <elliott_> Deewiant: Well, that solution is not less frustrating than the existing solution of "pick a random subset of music, encode it in batch, and synchronise it to phone; repeat every once in a while"
16:50:41 <Deewiant> If you say so :-P
16:50:56 <elliott_> Shrug, I'd have to try it :P
16:50:57 <Deewiant> I don't listen to music except at home anyway
16:51:05 <Deewiant> So I'm not really qualified to have opinions on the matter
16:52:39 <elliott_> Since when has lack of knowledge ever stopped anyone from having an opinion
16:53:12 <Deewiant> It stops me from having an opinion because I try to not be an idiot
16:55:27 -!- olsner has joined.
16:59:19 -!- derrik has joined.
17:07:44 <fizzie> elliott_: You mean real-life EDGE speeds, or theoretical EDGE speeds? The latter can theoretically go up to around 200 kbps.
17:07:53 <elliott_> fizzie: The type that aren't theoretical.
17:09:26 <fizzie> I think it's around 128 kbps at most. And rather bad latency.
17:10:11 <fizzie> It's still better than the doesn't-quite-go-as-fast-as-56k-dialup plain GPRS.
17:12:17 <elliott_> I think Vorbis is meant to be transparent at 128 kbps, but I could be wrong about that.
17:13:20 -!- sebbu has quit (Read error: Connection reset by peer).
17:13:21 <fizzie> With large enough buffers... you probably wouldn't get consistent 128k through either. Except if you're lucky.
17:13:37 <elliott_> Yes, it sounds not the best streaming platform.
17:13:49 -!- sebbu has joined.
17:13:50 -!- sebbu has quit (Changing host).
17:13:50 -!- sebbu has joined.
17:15:29 <Gregor> Hm ... anybody have a guess as per why my Usermode Linux can't run 32-bit binaries? Is there a kernel config option for that?
17:16:00 <Deewiant> Yes, there is
17:16:14 <Deewiant> CONFIG_IA32_EMULATION=y
17:16:17 <Deewiant> Presumably that
17:16:50 <Gregor> Hm, snot there >_>
17:17:03 <Gregor> But that, plus intarwebs = "No, x86_64 UML does not have x86_32 emulation."
17:17:21 <Deewiant> D'oh
17:20:11 <Gregor> Weird
17:20:49 <Gregor> Yup, never gonna run Opera 9 X-D
17:23:22 <elliott_> Gregor: What are you trying to do :P
17:26:43 <Gregor> elliott_: Gathering historical speed data to make a comparative study of industry standard v my benchmarks.
17:27:04 <elliott_> Gregor: You need UML for this? :P
17:27:45 <Gregor> Opera 7-9 on modern system = megacrash.
17:28:01 <elliott_> Nice.
17:31:42 <Gregor> And I mean, like, "Make Linux my bitch" crash
17:31:45 <Gregor> It's amazing.
17:34:15 -!- Jafet has quit (Quit: Leaving.).
17:37:27 -!- Phantom_Hoover has joined.
17:53:22 -!- elliott_ has quit (Remote host closed the connection).
17:58:09 -!- ais523 has joined.
18:16:19 -!- Ngevd has joined.
18:16:27 <Ngevd> Hello!
18:25:03 <CakeProphet> fungot: hi
18:25:03 <fungot> CakeProphet: so, let's say i call them mindless games. if we hit every stupid person, any person going, tough one. if we solve it,...
18:26:53 <CakeProphet> fungot: hi
18:26:53 <fungot> CakeProphet: his birthday is in the same identifiers with colons in them :p. i think i've gotten ( lambda fnord body)) val...)
18:27:04 <CakeProphet> fungot: hi
18:27:04 <fungot> CakeProphet: if it's ( syntactically) long and short, whose semantics, though. more like doing what is in the same
18:27:05 <CakeProphet> fungot: hi
18:35:58 <Ngevd> fungot!?
18:35:58 <fungot> Ngevd: just to help an fnord archive) but it looks like mike was trying to decide who to regulate and how to classify the dase, simply classify the dase, simply classify the dase, simply classify the dase, simply classify the dase, simply classify the dase, simply classify the dase, simply classify the dase, simply classify the dase, simply classify the dase, simply classify the dase, simply classify the dase, simply classify t
18:37:55 -!- boily has quit (Quit: WeeChat 0.3.5).
18:37:55 <fungot> Ngevd: is that something you know and and the cases that required to actually mutate the original i think you were still a very famous program talisman with fnord windows. that's always tricky. i could actually make progress. securing budgetary authority, can the governments. i know 2. that's obvious and you did refer to his fnord code
18:38:19 <Ngevd> Hmm
18:38:27 -!- oerjan has joined.
18:38:29 <Ngevd> Why did it double for me and stop for you, CakeProphet?
18:41:33 -!- nooga has joined.
18:56:32 -!- elliott has joined.
19:05:27 <Ngevd> Evening, elliott
19:10:10 -!- CakeProphet has quit (Ping timeout: 256 seconds).
19:14:41 -!- Sgeo|web has quit (Ping timeout: 252 seconds).
19:24:43 -!- derrik has quit (Quit: nites).
19:36:03 -!- tiffany has joined.
19:36:42 <Ngevd> Evening, tiffany
19:36:56 <tiffany> hai
19:37:20 <Ngevd> How're you?
19:37:34 <tiffany> okay
19:42:53 <fizzie> Ngevd: The doubling is a known bug; it read that quit message as >>> :Ngevd!~nathan@host-�����rY�t2�3��qbl��~w�om�net PRIVMSG #esoteric :fungot:boily!~boily@mtl.savoirfairelinux.net QUIT :Quit: WeeChat 0.3.5 <<<
19:42:54 <fungot> fizzie: or is it just me, or i: yet, you rogue! something is reacting to the pendant. take up, boy; open't. so, now go with, do miscarrie, thou had'st bin resolute pompey
19:43:38 <Ngevd> Aaah
19:44:24 <elliott> fizzie: I wonder, can you produce a dataset with inverted fnords?
19:44:33 <elliott> That is, everything /over/ N occurrences is fnorded, anything under kept?
19:44:36 <Ngevd> fungot: sdronf?
19:44:36 <fungot> Ngevd: " and this is a new game. there is no proof is considered one
19:45:23 <oerjan> elliott: fnord fnord fnord fnord fnord fnord fnord interesting
19:45:49 <elliott> oerjan: exactly
19:45:58 <Ngevd> So that's what the fnords are
19:47:01 <oerjan> elliott: fnord fnord fnord fnord completely unreadable
19:47:25 <elliott> oerjan: yes but the thing is that fnord becomes /one token/
19:47:35 <elliott> so all you need to do is scale down the probabilities for fnord massively
19:47:41 <elliott> and it'll become... er, completely incoherent
19:47:43 <elliott> but in a fun way
19:48:01 <oerjan> fnord likely
19:48:17 <elliott> >:(
19:49:26 <oerjan> fnord fnord guess fnord fnord fnord fnord fnord experiment
19:51:30 <fizzie> It might be a bit repetitive, since by definition there wouldn't be very many non-fnord "next" words available. Either that, or rather random.
19:51:57 <elliott> fizzie: There is ONLY ONE WAY to find out.
19:51:59 <elliott> ONLY
19:52:00 <elliott> ONE
19:52:00 <elliott> WAY
19:52:07 <fizzie> I don't think the tools have an option for it.
19:52:24 <oerjan> so they've sequenced the black death microbe. i foresee no problems with this.
19:53:14 <fizzie> -f, --nfirst=INT Number of most common words to be included
19:53:17 <fizzie> -d, --ndrop=INT Drop all words with less than ndrop occurances. If both nfirst and ndrop options are specified, the tighter bound is taken
19:53:25 <fizzie> Sadly, no inverted bounds.
19:55:14 <elliott> fizzie: No problem, you'll clearly switch to the far superior engTK (Elliott's n-gram toolkit) when it's released! Too bad that won't support any kind of reduction at all.
19:56:02 <Phantom_Hoover> elliott, you shold use the scoTK it is better in literally every way.
20:05:39 <oerjan> the norTK would be better if there was a non-zero probability of it ever reaching coding stage
20:06:24 -!- rapido has joined.
20:08:28 <oerjan> `? welcome
20:08:35 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
20:08:35 <oerjan> wat
20:08:38 <oerjan> oh
20:09:11 <elliott> rapido has been here many times before :P
20:09:36 <oerjan> very subtly, perhaps
20:09:56 <elliott> oerjan: /or/, you just have terrible memory
20:10:03 <elliott> (this is the correct option)
20:10:20 <oerjan> that's just nonsense, i cannot recall having a terrible memory
20:10:41 <rapido> elliott: so what's the newest fad in esoteric language land? ;)
20:11:05 <elliott> absolutely nothing
20:11:08 <elliott> like always :)
20:11:40 <Phantom_Hoover> We ran out of fads when we all started playing Minecraft.
20:11:43 <oerjan> not very faddish these days
20:12:26 <oerjan> and then you transitioned to dwarf fortress?
20:12:36 <Phantom_Hoover> Yes, but we all got bored with it pretty quickly.
20:12:42 <oerjan> have you passed on since then?
20:12:43 <elliott> Phantom_Hoover: We did?
20:12:55 <elliott> Phantom_Hoover: I'm not bored of DF, it's just one of those phases things.
20:13:14 <elliott> Phantom_Hoover: I'm pretty sure 1.9 will start up the Minecraft mania again and we can all go back to being unproductive.
20:13:15 <Phantom_Hoover> Well true; I just drifted out of it more than getting /bored/, but it amounts to the same.
20:13:58 <rapido> i've been into http://apocalisp.wordpress.com/2010/07/08/type-level-programming-in-scala-part-6b-hlist%C2%A0folds/
20:14:17 <oerjan> oh dear
20:14:17 <rapido> someone should create a language to mock typed languages
20:14:45 <elliott> that looks like boring old hlists, except overcomplicated because scala's syntax sucks
20:14:55 <ais523> rapido: to laugh at them, or to make something that behaves similarly to them for testing?
20:15:07 -!- DH____ has joined.
20:15:10 <ais523> also, it already exists, it's called compile-time C++
20:15:16 * elliott has several notable accomplishments in the field of type-level programming. including C++ templates :P
20:15:27 <elliott> oerjan knows. the horror is within his brain.
20:15:32 <elliott> he can never escape my questions.
20:16:11 <oerjan> at least i escape the C++ ones
20:17:42 <rapido> elliott: what about a language that has types at runtime, and values at compile time? - effectively reversing compile-runtime
20:18:22 <Phantom_Hoover> Hey, types are the best.
20:18:23 <elliott> rapido: sounds like word salad until you give it semantics :P
20:18:59 <rapido> elliott: i know - just brain farting
20:19:27 <oerjan> `log elliott.*fizzbuzz
20:19:42 <elliott> fizzzzzzzzzzzzz
20:19:43 <elliott> bzzzzzzzz
20:19:54 <HackEgo> 2011-05-27.txt:05:11:34: <elliott_> -- Defined at /home/elliott/Code/fizzbuzz/fizzbuzz.hs:30:10-53
20:19:56 <oerjan> HackEgo is rather slow today
20:21:52 <Gregor> oerjan: I'm effin' around on Codu.
20:22:11 <Gregor> Right now I have fdupes -rL /var/chroots/*/{bin,lib,usr} running.
20:22:49 <Gregor> And HackEgo runs with nice -n10 :P
20:23:30 <rapido> elliott: magpie has a pretty interesting type engine - does this count as runtime types?
20:24:21 <elliott> magpie is intended to have some form of static checking to my knowledge
20:24:37 <rapido> elliott: or are you not the type of person to talk about types?
20:24:55 <elliott> what kind of person would that be
20:25:26 <rapido> elliott: a typical person of course!
20:25:28 <elliott> Gregor: I wonder why duplicate-checking tools compare hashes first; surely computing two hashes from disk is not really cheaper than comparing two blocks of disk?
20:25:37 <elliott> rapido: opposite, wouldn't it be
20:26:13 <Gregor> elliott: They don't depend on names, so they have to maintain a hashtable per file size to be able to look anything up.
20:26:23 <rapido> are there any esoteric languages that are esoterically typed?
20:26:29 <Gregor> elliott: Otherwise they'd have to do a file-by-file comparison for every pair of files of the same length.
20:26:46 <elliott> Gregor: Oh, right, memoisation :P
20:27:14 <rapido> no Hindley–Milner please!
20:28:07 <Deewiant> elliott: Also, computing the hashes can be cheaper, since reading file A fully and then file B fully is likely to be more sequential than reading file A and B fully in an interleaved fashion
20:28:19 <elliott> Deewiant: Right
20:28:21 <Phantom_Hoover> rapido, OK, just get rid of Milner.
20:28:47 <Gregor> elliott: In short, you're wrong in every way. :P
20:28:57 <elliott> Gregor: I'm also tired :P
20:28:58 <rapido> and we are left with Milner cheese - fine with me
20:29:12 <Gregor> Feh, that only freed 200M :(
20:29:55 <elliott> Gregor: Ha, to free space on Pyralspite I just clear away backups.
20:30:01 <elliott> (I haven't actually done that yet. TODO: That.)
20:30:59 <Gregor> elliott: The backups aren't on Codu, they're on my machine :P
20:31:09 <elliott> Gregor: I mean the world backups :P
20:31:15 <Gregor> Ah
20:33:57 <rapido> i'm thinking of a (esoteric!) language called TOTALLY STRONGLY TRANSPOSED that has the restriction that every (partial) (curried) (total) function must have a transpose and is strongly typed
20:34:57 <Phantom_Hoover> What about an esolang based on looms?
20:35:31 <rapido> looms? what is it?
20:36:47 <Ngevd> Things for weaving, but that's not important
20:38:15 <fizzie> Ngevd: Is that an Airplane! reference?
20:38:30 <Ngevd> Possibly
20:39:35 <rapido> as opposed to TOTALLY STRONGLY OPPOSED!
20:40:12 <Phantom_Hoover> Taking programming right back to its roots.
20:41:31 <oerjan> how do you define the transpose of a function?
20:42:03 <elliott> carefully
20:42:32 <rapido> what's the transpose of this 'function' Int->Double->String->Char ?
20:42:45 <rapido> String->Double->Int->Char
20:43:10 <oerjan> just reordering arguments?
20:43:55 <rapido> oerjan: yes, but it only works for total (curried) functions
20:44:13 <elliott> :t flip
20:44:14 <lambdabot> forall (f :: * -> *) a b. (Functor f) => f (a -> b) -> a -> f b
20:44:19 <elliott> CAAAAAALE
20:44:21 <elliott> :t Prelude.flip
20:44:22 <lambdabot> forall a b c. (a -> b -> c) -> b -> a -> c
20:45:13 <rapido> just flip a->b->c->d->e->f
20:45:19 <oerjan> a little tricky to define in haskell, because of having to detect when you've reached the _actual_ result...
20:45:36 <oerjan> you cannot detect non-functions
20:46:23 <rapido> hey, you can't express non-functions in TOTALLY STRONGLY TRANSPOSED
20:46:52 <oerjan> rapido: um that means you don't have -> Char at the end there
20:47:16 <Phantom_Hoover> rapido, you should transpose the function matrix, which is not a thing but should be.
20:47:36 <rapido> oerjan: hmmm, unless you define Char as a function i guess
20:47:48 <elliott> rapido: turtles
20:47:53 <oerjan> rapido: yes, but shouldn't you then add _its_ argument to the left...
20:47:59 <oerjan> when transposing
20:48:12 <oerjan> and the argument of its result, etc.
20:48:19 <rapido> oerjan: you got me! - i'm a fraud!
20:49:56 -!- derdon has joined.
20:50:19 <rapido> possible escape: define an 'end-function' as the identity function?
20:50:49 <rapido> the identity function is boring anyways
20:51:25 -!- elliott has quit (Quit: Leaving).
20:53:43 <rapido> transpose (a->b->c->Identity) -> (c->b->a->Identity)
20:53:53 <rapido> don't mind the syntax
20:55:37 <rapido> damn - non-functions - they bite - forget what i said
20:56:05 <rapido> back to the drawing board .... i
20:56:17 -!- Deewiant has quit (Ping timeout: 240 seconds).
20:57:32 <rapido> this transpose stuff is transposing my brains
20:59:03 <rapido> oerjan: 'um that means you don't have -> Char at the end there' - thanks for that! you nudged me in the 'right' direction
21:00:21 <oerjan> it may be the right direction, but is there anything left?
21:01:15 -!- quintopia has quit (K-Lined).
21:02:12 <rapido> sure! now I have to figure out if there can be a transpose function in untyped lambda calculus
21:02:34 <oerjan> what evil scheme did quintopia perform
21:02:37 <Phantom_Hoover> Wait, why did quintopia get K-lined?
21:02:57 <ais523> that's, umm, a good question
21:03:02 <oerjan> what was the quintessential crime
21:03:06 <ais523> I assume that if he's k-lined, he can't get back online to tell us
21:03:12 <coppro> yup
21:03:20 <coppro> that's usually what a k-line implies
21:03:21 <ais523> (I remember when SlashNET once went crazy and simultaneously K-lined everyone)
21:03:25 <coppro> OO
21:03:43 <ais523> it took me a while to tentatively try to log on again to figure out if the k-line had been removed; I assumed it was a mistake
21:03:44 <coppro> rapido: there can be an anything function in untyped lambda calculus
21:03:45 <ais523> and it turns out it was
21:03:50 <Phantom_Hoover> coppro, isn't it a server ban, not a network ban?
21:03:55 <Phantom_Hoover> A g-line is network, no?
21:03:59 <coppro> Phantom_Hoover: On Freenode they are isomorphic
21:04:08 <Phantom_Hoover> Ah.
21:04:39 <coppro> Freenode has a centralized server architecture, unlike networks like EFNet
21:06:59 <rapido> coppro: but can you formulate a generic transpose function in untyped lambda calculus
21:07:14 <Phantom_Hoover> If it's just an argument shuffle, then yes.
21:08:16 <oerjan> the problem here is that a function in untyped lambda calculus conceptually takes an infinite list of arguments toward the right
21:08:40 <rapido> Phantom_Hoover: how would such lambda function look like
21:08:42 <oerjan> and you'd want to turn it into a function that takes the same infinite list, reversed.
21:08:49 <oerjan> which is absurd.
21:08:54 -!- ais523 has quit (Remote host closed the connection).
21:09:19 <Phantom_Hoover> rapido, well, if it's just f a b c d → f c b a d, it's trivial.
21:09:20 <rapido> oerjan: so, no go?
21:09:47 <oerjan> rapido: i doubt it
21:10:05 <Phantom_Hoover> If it depends on the number of arguments, it's meaningless because, as oerjan said, lambda functions don't h
21:10:12 <Phantom_Hoover> */have/ a number of arguments.
21:10:44 <rapido> but what if you have a special 'stop/end' lambda?
21:11:05 <Phantom_Hoover> That... doesn't make an awful lot of sense, I'm afraid.
21:11:26 <rapido> Nil?
21:11:33 <rapido> Null?
21:11:51 <Phantom_Hoover> Nope.
21:12:10 <oerjan> that reminds me of what a cps version of lambda calculus would look like, which makes sort of sense
21:12:16 <rapido> Nope? that's a nice ending :)
21:12:28 <Phantom_Hoover> You can define lambda calculus with argument lists, but it's quite different to the normal kind.
21:13:34 <oerjan> incidentally i once concluded the d function in unlambda could be used as a stop/end marker for argument lists. i never worked it out completely though.
21:13:45 <rapido> gb
21:13:54 <Phantom_Hoover> d is the delay function, yes?
21:14:00 <oerjan> yes
21:14:35 <oerjan> it is the one function you can test for without performing the effects of applying it
21:14:41 <rapido> gb <- oops! keyboard mucking
21:14:47 -!- sllide has joined.
21:14:55 <Phantom_Hoover> oerjan, hmm, how?
21:15:20 <Phantom_Hoover> (I realise it's terribly obvious, but I am warm and sleepy.)
21:15:20 <rapido> oerjan: d sound mysterious already
21:15:31 -!- Ngevd has quit (Quit: goodnight).
21:15:56 <oerjan> Phantom_Hoover: basically, if you do `x`<cont>y, only x = d avoids calling the continuation
21:16:11 <Phantom_Hoover> Ahhh.
21:16:43 <Phantom_Hoover> I love how Madore added continuations just because they're hard to understand, FSVO 'hard'.
21:17:30 <oerjan> so if you do ``x`<cont>y`<cont>z you can return either y or z, without ever risking effects from applying x
21:18:31 * Phantom_Hoover remembers that he tried to write Lazy K-in-Lazy K but gave up inexplicably.
21:18:46 <rapido> wait - unlambda has SKI combinators only - or?....
21:19:07 <oerjan> rapido: no, unlambda has that + even weirder stuff
21:19:24 <rapido> weirder stuff! yes!
21:19:36 <rapido> *
21:19:51 <Phantom_Hoover> It's functional minimalism done wrong, really.
21:20:04 <rapido> $
21:20:17 <oerjan> Phantom_Hoover: _gloriously_ wrong
21:20:20 <rapido> ^
21:20:38 <Phantom_Hoover> oerjan, well, it depends on whether it was meant to be crazy or minimalisti.
21:20:42 <Phantom_Hoover> *minimalistic
21:20:46 <oerjan> d for delay, c for call-with-current-continuation, some relatively simple output functions, and input functions which require the use of continuations or at least cps style
21:20:49 <rapido> Phantom_Hoover: what is functional minimalism done right?
21:21:05 <Phantom_Hoover> rapido, Lazy K.
21:21:13 <Phantom_Hoover> SKI, literally nothing else.
21:21:20 <Gregor> Lambda calculus :P
21:21:26 <oerjan> lazy k has a bit too many alternative syntaxes
21:21:34 <Phantom_Hoover> (Well, it supports multiple syntaxes, admittedly, but they're all equivalent.)
21:23:51 <Phantom_Hoover> oerjan, true, but importantly using only `ski allows you to use the entire languag.
21:23:53 <Phantom_Hoover> *language
21:24:54 <rapido> diversion: anyone into K (or Q) from kxsystems - the only commercial esoteric language out there?
21:24:56 <oerjan> mhm
21:25:16 <Phantom_Hoover> rapido, wrong, cf. BANCStar.
21:26:06 <rapido> BANCStar? is it real!
21:26:08 <rapido> ?
21:26:49 -!- Deewiant has joined.
21:29:21 -!- rapido has quit (Quit: rapido).
21:51:40 -!- Patashu has joined.
21:54:42 -!- Sgeo|web has joined.
21:55:02 <Sgeo|web> I'm turning into an esoteric
21:55:41 <oerjan> you accidentally a ... lemur
21:56:52 <Phantom_Hoover> So upon trying to complete my UCAS form, arguably the most important in my life to date, my parents have just yelled at me and flounced off.
21:56:55 <Phantom_Hoover> Pro parenting.
22:10:34 * Phantom_Hoover → sleep
22:10:36 -!- Phantom_Hoover has quit (Quit: Leaving).
22:15:13 -!- oerjan has quit (Quit: Good night).
22:22:24 * Gregor wonders what a UCAS form is.
22:26:46 -!- sllide has quit (Read error: Connection reset by peer).
22:33:54 -!- nooga has quit (Ping timeout: 258 seconds).
22:38:54 -!- CakeProphet has joined.
22:38:54 -!- CakeProphet has quit (Changing host).
22:38:54 -!- CakeProphet has joined.
23:00:58 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
23:04:15 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .).
23:15:42 -!- Patashu has joined.
23:17:07 -!- augur has quit (Remote host closed the connection).
23:22:40 -!- copumpkin has joined.
23:49:20 -!- augur has joined.
23:53:46 -!- derdon has quit (Remote host closed the connection).
2011-10-13
00:11:30 -!- tiffany has quit (Quit: Leaving).
00:19:19 -!- CakeProphet has quit (Ping timeout: 258 seconds).
00:58:44 -!- zzo38 has joined.
00:59:08 <zzo38> It says "Anglo-Caledonian diplomacy and sword games" but you should do card game instead?
01:07:28 -!- Gregor has set topic: Anglo-Caledonian diplomacy and card games | Welcome to the international hub for exoteric voodoo programming design and deployment! | computed jumps... the topic. | 12345678^&!* | http://codu.org/logs/_esoteric/.
01:07:39 <Gregor> Agreed.
01:10:41 <zzo38> I have been trying to decide what two spells to select for the Dungeons&Dragons game; my brother has not selected anything for the next level yet.
01:10:50 <zzo38> I have selected everything except for the spells.
01:11:17 <Sgeo|web> ^welcome
01:11:19 <Sgeo|web> `welcome
01:11:24 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: welcome: not found
01:11:25 <Sgeo|web> bluh?
01:13:09 <Gregor> `?welcome
01:13:11 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: ?welcome: not found
01:13:12 <Gregor> Errf
01:13:14 <Gregor> `? welcome
01:13:16 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
01:17:00 <zzo38> Which spell should be selected? Shield? Resistance? Extend Tentacles? Death to the Caster? Prohibit Metamagic? Merciful to Gibbering Mouthers? Object Mirrored? Spell Repetition? Breath Energy Mixture? Area of Mercy? Spell that nobody understands?
01:20:06 -!- augur has quit (Remote host closed the connection).
01:20:12 <zzo38> Object Mirrored is a spell I invented, which makes an object mirror-imaged of itself.
01:21:30 <zzo38> But there are some restrictions on its use: The center of gravity must not be moved more than six inches from its original location. The new position of the object must share at least one point in common with the old position of the object. The transformation must not cause any parts of the object to be moved through barriers that are not part of the target object.
01:21:54 <zzo38> If the target object is supporting something, you must not transform it as to make it no longer supporting the thing it is currently supporting. If the target object is being supported by something, you must not transform it to make it no longer supported by anything (although it does not necessarily have to be supported by the same thing as before).
01:22:20 <zzo38> You must not make it touching something it was not previously touching. Effects of mirroring molecules, atoms, and subatomic particles, is ignored. Any creature gets a +4 bonus to the saving throw of this spell if it would be fatal (or sufficiently harmful) to that creature.
01:39:27 -!- zzo38 has quit (Remote host closed the connection).
01:39:48 -!- pikhq has joined.
01:40:49 -!- pikhq_ has quit (Ping timeout: 244 seconds).
01:52:14 <Sgeo|web> Dennis Ritchie apparently died recently
01:52:46 -!- augur has joined.
01:57:38 <pikhq> Awww.
02:05:03 <variable> RIP Dennis Ritchie :(
02:05:04 <variable> RIP Dennis Ritchie :(
02:07:53 * Madoka-Kaname Segmentation Fault
02:16:35 -!- CakeProphet has joined.
02:16:35 -!- CakeProphet has quit (Changing host).
02:16:35 -!- CakeProphet has joined.
02:26:59 <Gregor> variable: D-8
02:27:20 -!- pikhq has quit (Quit: Reconnecting).
02:32:18 -!- pikhq has joined.
02:34:18 -!- DH____ has quit (Read error: Connection reset by peer).
02:34:22 -!- DHeadshot has joined.
02:36:23 <coppro> does anyone know a good calculator for matrix math?
02:36:32 <coppro> nothing fancy, just needs to do multiplication and variables
02:40:04 <coppro> found a haskell library that ought to do
02:41:05 <Patashu> I'm having trouble implementing A* in C# for university. There's no priorityqueue class so I'm not sure what kind of collection I should be using.
02:45:25 <coppro> a set
02:45:41 <Patashu> will a set be efficient?
02:45:52 -!- zzo38 has joined.
02:50:42 <coppro> no wait, that library sucks
02:52:53 <zzo38> There should be something that can use the functional representation system that I designed; it ought to be possible some Haskell compilers, and possibly other programs too, to be able to compile to and/or from it. It is designed, no unsafe function, no side effects, no unsafeCoerce, etc
02:56:51 <zzo38> (It means not all Haskell programs could be compiled to it, but most could.)
03:20:43 <zzo38> (Actually, even programs containing unsafeCoerce could be compiled, if you first changed the unsafeCoerce to a safe code having the same effect, such as (unsafeCoerce :: Maybe a -> Bool) into (maybe False $ const True))
03:29:29 -!- TeruFSX has joined.
03:38:28 <Madoka-Kaname> zzo38:
03:38:28 <Madoka-Kaname> Prelude Unsafe.Coerce> unsafeCoerce (last $ [unsafeCoerce 1 :: (), unsafeCoerce "test" :: ()]) :: String
03:38:29 <Madoka-Kaname> "test"
03:38:29 <Madoka-Kaname> Prelude Unsafe.Coerce> unsafeCoerce (last $ reverse $ [unsafeCoerce 1 :: (), unsafeCoerce "test" :: ()]) :: Int
03:38:29 <Madoka-Kaname> 1
03:38:32 <Madoka-Kaname> Do that without unsafeCoerce.
03:41:38 <CakeProphet> > 1
03:41:39 <lambdabot> 1
03:41:57 <CakeProphet> > 1 :: Int
03:41:58 <lambdabot> 1
03:41:59 <CakeProphet> my bad.
03:42:56 <CakeProphet> :t toDyn
03:42:57 <lambdabot> forall a. (Typeable a) => a -> Dynamic
03:43:03 <CakeProphet> :t fromDyn
03:43:04 <lambdabot> forall a. (Typeable a) => Dynamic -> a -> a
03:44:01 <CakeProphet> :t fromDynamic
03:44:02 <lambdabot> forall a. (Typeable a) => Dynamic -> Maybe a
03:44:23 <CakeProphet> > ((`fromDyn` 0) . last . reverse $ [toDyn 1, toDyn "test"]) :: Int
03:44:24 <lambdabot> 0
03:44:36 <CakeProphet> hmmm
03:44:45 <CakeProphet> > ((`fromDyn` 0) . last . reverse $ [toDyn (1::Int), toDyn "test"]) :: Int
03:44:47 <lambdabot> 1
03:44:51 <Patashu> LOL
03:44:56 <Patashu> public float calcH(int X, int Y, int goalX, int goalY)
03:44:56 <Patashu> {
03:44:56 <Patashu> return (X - goalX) ^ 2 + (Y - goalY) ^ 2;
03:44:56 <Patashu> }
03:44:58 <Patashu> Spot the error
03:45:09 <CakeProphet> Java?
03:45:16 <Patashu> C#
03:45:27 <zzo38> What is ^ in C#
03:45:34 <CakeProphet> bitwise xor
03:45:39 <Patashu> You got it
03:45:43 <Patashu> So it was producing crrrrrazy paths
03:45:48 <Patashu> That went this way and that way it was lol
03:45:55 <CakeProphet> you want uh... Math.pow I think.
03:45:57 <Patashu> Yes
03:46:19 <zzo38> Or just use multiplication, is the other way
03:46:20 <CakeProphet> Madoka-Kaname: but yeah ^^^ is one way to do it.
03:47:19 <Madoka-Kaname> CakeProphet, can you implement that without unsafeCoerce?
03:47:39 <CakeProphet> I.... don't remember.
03:47:47 <CakeProphet> it may use unsafeCoerce underneath.
03:47:52 <Madoka-Kaname> @src toDyn
03:47:53 <lambdabot> toDyn v = Dynamic (typeOf v) (unsafeCoerce v)
03:48:03 <CakeProphet> yep
03:48:04 <Madoka-Kaname> @src fromDynamic
03:48:05 <lambdabot> fromDynamic (Dynamic t v) = case unsafeCoerce v of
03:48:05 <lambdabot> r | t == typeOf r -> Just r
03:48:05 <lambdabot> | otherwise -> Nothing
03:48:13 <CakeProphet> okay well I think you could do a Typeable existential.
03:48:23 <copumpkin> you could, but I don't think they had existentials back then
03:48:45 <CakeProphet> back then? this is the context of the past?
03:48:55 <copumpkin> oh, I thought you were talking about Dynamic
03:49:13 <CakeProphet> oh. no. but yeah you can represent Dynamic with a Typeable existential.
03:49:31 <CakeProphet> I was talking about basically a different approach to dynamic typing that would be explicit form of one way to implement Dynamic.
03:49:34 <Madoka-Kaname> :t Dynamic
03:49:35 <lambdabot> Not in scope: data constructor `Dynamic'
03:49:41 <Madoka-Kaname> @src Dynamic
03:49:42 <lambdabot> Source not found. Wrong! You cheating scum!
03:50:01 <Madoka-Kaname> Hmm...
03:50:18 <Madoka-Kaname> () is completely safe to unsafeCoerce to, as you can't do anything to it, right?
03:50:34 <CakeProphet> you can pattern match it but that's all I can think of.
03:50:48 <CakeProphet> @hoogle () -> a
03:50:48 <lambdabot> Control.Parallel.Strategies demanding :: a -> Done -> a
03:50:48 <lambdabot> Control.Parallel.Strategies sparking :: a -> Done -> a
03:50:48 <lambdabot> Unsafe.Coerce unsafeCoerce :: a -> b
03:50:52 <Madoka-Kaname> (By safe, I mean "no risk of damage to underlying data or segFault, assuming you arn't casting to the wrong type")
03:51:05 -!- MDude has changed nick to MSleep.
03:51:21 <Patashu> Ok my game is getting retarded slowdowns. How can I profile in visual studio 2011?
03:51:47 <CakeProphet> http://www.google.com/search?gcx=w&sourceid=chrome&ie=UTF-8&q=C%23+profiling
03:51:49 <CakeProphet> I am a wizard.
03:51:59 <Patashu> Wowza
04:00:49 <CakeProphet> hmmm I wonder how I'd code a mandelbrot set in Haskell.
04:04:33 <CakeProphet> the iterated function part would obviously be f c = iterate ((+c).(**2)) 0
04:05:00 <CakeProphet> where c is a (Num a) => Complex a
04:06:15 <CakeProphet> er, just Complex a would be fine
04:06:25 <CakeProphet> since it's a is constrained to RealFloat
04:06:38 <CakeProphet> *its
04:10:46 <CakeProphet> then you'd have something like Complex -> Pixel
04:11:32 <CakeProphet> or (a,a) -> Pixel
04:19:13 <CakeProphet> mandel p escape max_iter = takeWhile (\(i, x) -> x < escape && i < max_iter ) $ zip [0..] (f p)
04:19:17 <CakeProphet> @pl (\(i, x) -> x < escape && i < max_iter )
04:19:17 <lambdabot> uncurry (flip ((&&) . (< escape)) . (< max_iter))
04:19:55 <CakeProphet> hmmm
04:20:01 <CakeProphet> that's not complete at all though
04:20:28 <CakeProphet> :t toMaybe
04:20:29 <lambdabot> Not in scope: `toMaybe'
04:20:38 <CakeProphet> @hoogle [a] -> Maybe a
04:20:38 <lambdabot> Data.Maybe listToMaybe :: [a] -> Maybe a
04:20:39 <lambdabot> Data.List find :: (a -> Bool) -> [a] -> Maybe a
04:20:39 <lambdabot> Prelude head :: [a] -> a
04:21:44 <CakeProphet> @hoogle (a,a) -> Complex a
04:21:45 <lambdabot> Prelude snd :: (a, b) -> b
04:21:45 <lambdabot> Data.Tuple snd :: (a, b) -> b
04:21:45 <lambdabot> Prelude fst :: (a, b) -> a
04:22:00 <CakeProphet> pixel c escape max_iter = listToMaybe $ dropWhile (\(i, x) -> x < escape && i < max_iter ) $ zip [0..] (f c)
04:22:18 <Madoka-Kaname> @pl \a -> Complex (fst a) (snd a)
04:22:18 <lambdabot> uncurry Complex
04:22:18 <CakeProphet> a very simple escape time algorithm.
04:22:26 <CakeProphet> ah right
04:22:29 <Madoka-Kaname> :t uncurry
04:22:30 <lambdabot> forall a b c. (a -> b -> c) -> (a, b) -> c
04:22:33 <Madoka-Kaname> Heh
04:23:48 <Madoka-Kaname> :t uncurry Complex
04:23:49 <lambdabot> Not in scope: data constructor `Complex'
04:24:01 <CakeProphet> :+
04:24:08 <Madoka-Kaname> :t a -> a -> Complex a
04:24:09 <lambdabot> parse error on input `->'
04:24:16 <Madoka-Kaname> @hoogle a -> a -> Complex a
04:24:17 <lambdabot> Data.Complex (:+) :: a -> a -> Complex a
04:24:17 <lambdabot> Data.Complex mkPolar :: RealFloat a => a -> a -> Complex a
04:24:17 <lambdabot> Prelude asTypeOf :: a -> a -> a
04:24:21 <Madoka-Kaname> Ah
04:24:23 <CakeProphet> Madoka-Kaname: do you know what :t does? :P
04:24:26 <Madoka-Kaname> :t uncurry (:+)
04:24:26 <lambdabot> forall a. (RealFloat a) => (a, a) -> Complex a
04:24:28 <Madoka-Kaname> CakeProphet, yes. I derped
04:26:57 <CakeProphet> @djinn (RealFloat a) => (a, a) -> Complex a
04:26:58 <lambdabot> Error: Undefined type Complex
04:28:05 <CakeProphet> EgoBot: WHY DO YOU NOT EXIST ANYMORE.
04:28:35 <CakeProphet> @tell elliott TODO: convince Gregor to put ghc and runhaskell on hackego
04:28:35 <lambdabot> Consider it noted.
04:28:42 <CakeProphet> `run ghc --version
04:28:45 <HackEgo> The Glorious Glasgow Haskell Compilation System, version 7.2.1
04:28:54 <CakeProphet> `run runhaskell --version
04:28:56 <HackEgo> runghc 7.2.1
04:29:09 <CakeProphet> @tell elliott ...oh nevermind.
04:29:09 <lambdabot> Consider it noted.
04:35:53 -!- nooga has joined.
04:41:43 -!- pikhq has quit (Ping timeout: 245 seconds).
04:41:50 -!- pikhq_ has joined.
04:41:58 <CakeProphet> `run echo -e '#!/bin/sh\necho\'\$1\' \| runghc' > /bin/haskell
04:42:00 <HackEgo> sh: -c: line 0: unexpected EOF while looking for matching `'' \ sh: -c: line 1: syntax error: unexpected end of file
04:42:48 <CakeProphet> `run echo -e '#!/bin/sh\necho' \'\$1\' \| runghc > /bin/haskell
04:42:50 <HackEgo> sh: /bin/haskell: Read-only file system
04:42:58 <CakeProphet> `run echo -e '#!/bin/sh\necho' \'\$1\' \| runghc > bin/haskell
04:43:00 <HackEgo> No output.
04:43:08 <Madoka-Kaname> `run echo "HUG!"
04:43:10 <HackEgo> HUG!
04:43:20 <CakeProphet> `haskell 'main = putStrLn "Hello, World!"'
04:43:22 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: /hackenv/bin/haskell: Permission denied \ /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: /hackenv/bin/haskell: cannot execute: Success
04:43:26 <CakeProphet> halp
04:43:28 <CakeProphet> oh
04:43:36 <CakeProphet> `run chmod +x bin/haskell
04:43:38 <HackEgo> No output.
04:43:39 <CakeProphet> `haskell 'main = putStrLn "Hello, World!"'
04:43:40 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: /hackenv/bin/haskell: Permission denied \ /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: /hackenv/bin/haskell: cannot execute: Success
04:43:51 <CakeProphet> erm
04:44:23 <Madoka-Kaname> !haskell main = putStrLn "Hello, World~♪"
04:45:10 <CakeProphet> `run stat -c %A bin/haskell
04:45:12 <HackEgo> ​-rwxr-xr-x
04:45:16 <CakeProphet> `run cat bin/haskell
04:45:18 <HackEgo> ​#!/bin/sh \ echo '$1' | runghc
04:46:36 <CakeProphet> ah
04:47:08 <CakeProphet> `run echo -e '#!/bin/sh\necho' \"$1\" \| runghc > bin/haskell
04:47:10 <HackEgo> No output.
04:47:14 <CakeProphet> `run echo -e '#!/bin/sh\necho' \"\$1\" \| runghc > bin/haskell
04:47:17 <HackEgo> No output.
04:47:22 <CakeProphet> `cat bin/haskell
04:47:23 <HackEgo> ​#!/bin/sh \ echo "$1" | runghc
04:47:40 <CakeProphet> `run haskell 'main = putStrLn "Hello, World!"'
04:47:45 <HackEgo> Hello, World!
04:48:31 <CakeProphet> `run echo -e '#!/bin/sh\necho' \"\$@\" \| runghc > bin/haskell
04:48:33 <HackEgo> No output.
04:48:40 <CakeProphet> `run haskell main = putStrLn "Hello, World!"
04:48:44 <HackEgo> ​\ /tmp/runghcXXXX278.hs:1:22: parse error on input `,'
04:48:48 <CakeProphet> :(
04:48:52 <CakeProphet> ah right.
04:49:55 <CakeProphet> I doubt I can get bash to automatically escape quotes magically.
04:52:16 <CakeProphet> `run echo -e test
04:52:18 <HackEgo> test
04:52:20 <CakeProphet> `echo -e test
04:52:22 <HackEgo> ​-e test
04:52:34 <CakeProphet> okay so it just automatically quotes the entire line when written without run
04:53:09 <CakeProphet> `haskell main = putStrLn "Hello, World!"
04:53:13 <HackEgo> Hello, World!
04:53:52 <CakeProphet> one less reason to have egobot, it seems.
04:55:44 <CakeProphet> though userinterps are pretty convenient.
04:56:57 -!- Jafet has joined.
04:56:59 <CakeProphet> `haskell import Unsafe.Coerce; main = print (unsafeCoerce (2 :+ 2 :: Complex Int) :: (Int, Int))
04:57:04 <HackEgo> ​\ /tmp/runghcXXXX278.hs:1:53: Not in scope: data constructor `:+' \ \ /tmp/runghcXXXX278.hs:1:61: \ Not in scope: type constructor or class `Complex'
04:57:16 <CakeProphet> `haskell import Unsafe.Coerce; import Data.Complex; main = print (unsafeCoerce (2 :+ 2 :: Complex Int) :: (Int, Int))
04:57:20 <HackEgo> ​(2,2)
04:58:15 <Jafet> `haskell import Unsafe.Coerce; isJust :: Maybe a -> Bool; isJust = unsafeCoerce; main = print $ map isJust [Maybe (), Nothing]
04:58:20 <HackEgo> ​\ /tmp/runghcXXXX278.hs:1:100: Not in scope: data constructor `Maybe'
04:58:26 <Jafet> `haskell import Unsafe.Coerce; isJust :: Maybe a -> Bool; isJust = unsafeCoerce; main = print $ map isJust [Just (), Nothing]
04:58:30 <HackEgo> ​[True,False]
05:01:08 <CakeProphet> noice.
05:01:44 <CakeProphet> `run echo -e '#!/bin/sh\necho' \"\$@\" \| runghc > bin/runperl
05:01:46 <HackEgo> No output.
05:01:50 <CakeProphet> `run chmod +x bin/runperl
05:01:51 <HackEgo> No output.
05:01:54 <CakeProphet> `runperl print "test"
05:01:59 <HackEgo> ​\ /tmp/runghcXXXX278.hs:1:1: \ Parse error: naked expression at top level
05:02:05 <CakeProphet> ....er
05:02:06 <CakeProphet> lol oops
05:02:14 <CakeProphet> forgot to clothe my expressions.
05:02:25 <CakeProphet> `run echo -e '#!/bin/sh\necho' \"\$@\" \| perl > bin/runperl
05:02:27 <HackEgo> No output.
05:02:31 <fizzie> Technically speaking I don't think it as much "quotes the line" as it just runs the first argument given the line as argv[1] without involving a shell.
05:02:38 <CakeProphet> `runperl print "test"
05:02:40 <HackEgo> test
05:03:02 <CakeProphet> that's much better than perl -e, though a bit more limited in that I can't use all of perl's other wonderful options.
05:04:32 <CakeProphet> `python --version
05:04:34 <HackEgo> Python 2.7
05:05:41 <CakeProphet> `run echo -e '#!/bin/sh\necho' \"\$@\" \| python - > bin/runpython
05:05:43 <HackEgo> No output.
05:05:52 <CakeProphet> `run chmod +x bin/runpython
05:05:54 <HackEgo> No output.
05:06:01 <CakeProphet> `runpython print "Hello, World!"
05:06:04 <HackEgo> Hello, World!
05:06:55 <CakeProphet> `runpython print __name__
05:06:57 <HackEgo> ​__main__
05:07:19 <Sgeo|web> nech... oh derp
05:07:25 <CakeProphet> best scheme.
05:07:30 * CakeProphet names all of his python modules __main__
05:07:45 <Sgeo|web> Um, I can't imagine Python working really all that well when only given one line
05:08:01 <CakeProphet> `runpython x = 2; y =3; print x+y
05:08:04 <HackEgo> 5
05:08:05 <CakeProphet> Sgeo|web: yeah me neither
05:08:13 <CakeProphet> loops will be not so great though.
05:08:25 <Sgeo|web> if statements also will not be so great.
05:08:42 <Sgeo|web> Well, actually, I guess you kind of can
05:08:46 <CakeProphet> this is why Python is bad.
05:08:57 <Sgeo|web> CakeProphet: because one-liners aren't feasible?
05:09:02 <CakeProphet> yep
05:09:15 <Sgeo|web> Bad for HackEgo, maybe, but
05:09:33 <Sgeo|web> `runpython 1 if False else 0
05:09:35 <HackEgo> No output.
05:09:36 <CakeProphet> bad for simple code generation also.
05:09:46 <Sgeo|web> `runpython print 1 if False else 0
05:09:48 <CakeProphet> where you only want to output some code that isn't intended to be read by humans.
05:09:49 <HackEgo> 0
05:09:57 <CakeProphet> you have to keep track of the indent level
05:11:02 <Sgeo|web> `runpython x=5; (x+=1 if True else 0); print x
05:11:04 <HackEgo> File "<stdin>", line 1 \ x=5; (x+=1 if True else 0); print x \ ^ \ SyntaxError: invalid syntax
05:11:12 <Sgeo|web> Didn't really expect that to work
05:11:23 <CakeProphet> why would you even write that.
05:11:31 <CakeProphet> anyone who knows anything about Python would know that wouldn't work ever.
05:12:06 <Sgeo|web> Couldn't hurt to try?
05:13:40 <CakeProphet> `runperl print (x=5)?(x+=1):0
05:13:42 <HackEgo> Can't modify constant item in scalar assignment at - line 1, near "5)" \ Execution of - aborted due to compilation errors.
05:13:46 <CakeProphet> noooooo
05:13:55 <CakeProphet> `runperl print ($x=5)?($x+=1):0
05:13:58 <HackEgo> 5
05:14:02 <CakeProphet> noooooooo
05:14:13 <CakeProphet> `runperl print (($x=5)?($x+=1):0)
05:14:15 <HackEgo> 6
05:14:19 <CakeProphet> I wonder if I can just...
05:14:26 <CakeProphet> `runperl print ($x=5?$x+=1:0)
05:14:28 <HackEgo> 1
05:14:30 <CakeProphet> nooooooo. damn you precedence.
05:15:57 <CakeProphet> Sgeo|web: you can actually use source filters to give Perl source code Python-style blocks
05:17:01 <Sgeo|web> Huh
05:17:44 <CakeProphet> a source filter literally just being some perl code that takes your source code as input and outputs the source code that gets "compiled"
05:20:11 <Sgeo|web> So I could make a source filter that takes +- and runs that as perl
05:20:12 <Sgeo|web> ?
05:20:20 <Jafet> `runpython from __future__ import braces;
05:20:22 <HackEgo> File "<stdin>", line 1 \ SyntaxError: not a chance
05:20:30 <Sgeo|web> erm, by +-, I mean Brainfuck
05:20:41 <Sgeo|web> Plusminus, the new PC name of Brainfuck.
05:20:51 <Sgeo|web> Or I'll just make it a derivative identical to the original.
05:20:54 <Sgeo|web> Make everyone happy.
05:21:00 <Jafet> - is a convenience instruction.
05:21:16 <Sgeo|web> Not if cell data doesn't wrap around
05:21:17 <CakeProphet> `runperl print "test" =~ tr[a-zA-Z][n-za-mN-ZA-M]
05:21:19 <HackEgo> Can't modify constant item in transliteration (tr///) at - line 1, at EOF \ Execution of - aborted due to compilation errors.
05:21:24 <CakeProphet> ....WHY PERL WHY
05:21:42 <CakeProphet> `runperl print ($_="test") =~ tr[a-zA-Z][n-za-mN-ZA-M]
05:21:44 <HackEgo> Can't modify print in transliteration (tr///) at - line 1, at EOF \ Execution of - aborted due to compilation errors.
05:21:49 <CakeProphet> wat
05:21:53 <CakeProphet> `runperl print (($_="test") =~ tr[a-zA-Z][n-za-mN-ZA-M])
05:21:55 <HackEgo> 4
05:22:08 <Jafet> Oh god, perl's turning into lisp
05:22:09 <CakeProphet> it's so incredibly stupid that I have to assign it.
05:22:25 <CakeProphet> `runperl print ("test" =~ tr[a-zA-Z][n-za-mN-ZA-M]r)
05:22:27 <HackEgo> Bareword found where operator expected at - line 1, near "tr[a-zA-Z][n-za-mN-ZA-M]r" \ Can't modify constant item in transliteration (tr///) at - line 1, near "tr[a-zA-Z][n-za-mN-ZA-M]r" \ syntax error at - line 1, near "tr[a-zA-Z][n-za-mN-ZA-M]r" \ Execution of - aborted due to compilation errors.
05:22:38 <CakeProphet> and there's no r option in this version of perl I guess.
05:23:32 <Jafet> `perl -v
05:23:33 <HackEgo> ​\ This is perl, v5.10.0 built for x86_64-linux-gnu-thread-multi \ \ Copyright 1987-2007, Larry Wall \ \ Perl may be copied only under the terms of either the Artistic License or the \ GNU General Public License, which may be found in the Perl 5 source kit. \ \ Complete documentation for Perl, including FAQ lists, should be
05:24:02 <CakeProphet> long version string
05:24:23 <CakeProphet> `runperl $_=q{$_='Hello, World!';print tr[a-zA-Z][n-za-mN-ZA-M]}; tr[a-zA-Z][n-za-mN-ZA-M]; print;
05:24:25 <HackEgo> ​$_='Uryyb, Jbeyq!';cevag ge[n-mN-M][a-mn-zA-MN-Z]
05:27:31 <CakeProphet> `runperl $_=q{$_='Hello, World!';tr[!-~][P-~!-O];print};tr[!-~][P-~!-O];print;
05:27:33 <HackEgo> S0lVw6==@[ (@C=5PVjEC,P\O.,!\OP\~.jAC:?E
05:28:39 <CakeProphet> `runperl use Filter::sh q{tr '!-~' 'P-~!-O'}; S0lVw6==@[ (@C=5PVjEC,P\O.,!\OP\~.jAC:?E'
05:28:41 <HackEgo> Can't locate Filter/sh.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.0 /usr/local/share/perl/5.10.0 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at - line 1. \ BEGIN failed--compilation aborted at - line 1.
05:28:47 <CakeProphet> noooooooo
05:29:26 <CakeProphet> `runperl use Filter::Util::Call;
05:29:28 <HackEgo> No output.
05:32:05 <CakeProphet> `runperl use Filter::cpp;
05:32:06 <HackEgo> Can't locate Filter/cpp.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.0 /usr/local/share/perl/5.10.0 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at - line 1. \ BEGIN failed--compilation aborted at - line 1.
05:32:56 <CakeProphet> so yeah I don't feel like using Filter::Util::Call
05:33:09 <CakeProphet> it's OO-ish
05:33:33 <CakeProphet> Filter::sh literally just processes the source file with a sh command.
05:36:56 -!- aloril has quit (Ping timeout: 244 seconds).
05:37:23 <Patashu> It feels wrong to spend 4 hours on something so simple
05:37:41 <CakeProphet> Patashu: what is it?
05:39:13 <Patashu> I implemented A*, then I made it so that it 'drew' straight lines between path nodes if no walls were in the way and took that path instead, then I fixed my previous pathfinding algorithm (which still kicked in when a unit ran into a wall or other unit) so that it took the sideways path that brought it geometrically closer to its destination
05:39:27 <Patashu> Rather than always going...clockwise I think it was
05:42:51 <Patashu> Should have only taken 2 hours. I wonder if I can bribe father time
05:47:34 -!- Jafet1 has joined.
05:49:12 -!- Jafet has quit (Disconnected by services).
05:49:13 -!- Jafet1 has changed nick to Jfaet.
05:51:18 <Sgeo|web> I'm learning a new math thing due to
05:51:25 <Sgeo|web> Men inHats.
05:51:28 <Sgeo|web> I am not making this up
05:51:44 <Sgeo|web> http://meninhats.com/d/20031212.html
05:53:05 <Sgeo|web> http://en.wikipedia.org/wiki/Ono's_inequality
05:53:08 <Sgeo|web> That sounds boring
05:54:59 -!- Jfaet has changed nick to Jafet.
05:56:45 <CakeProphet> Freedom in general may be defined as the absence of obstacles to the realization of desires
05:56:48 <CakeProphet> -Bertrand Russel
05:56:54 <CakeProphet> smart man with smart words.
05:58:37 -!- aloril has joined.
06:01:28 -!- pikhq has joined.
06:01:34 -!- pikhq_ has quit (Ping timeout: 252 seconds).
06:03:17 -!- zzo38 has quit (Remote host closed the connection).
06:23:20 -!- aloril has quit (Ping timeout: 265 seconds).
06:23:37 <CakeProphet> hmmm
06:23:58 <CakeProphet> so whats the best SQL DBMS?
06:26:53 <Jafet> It's all BDSM.
06:27:38 <CakeProphet> okay, but would you recommend any?
06:27:48 <Sgeo|web> CakeProphet: for small stuff, SQLite?
06:27:51 <fizzie> SDSM for reflection, GDSM for MR.
06:28:36 <Sgeo|web> Why not just CoMR+SDSM rather than GDSM? Although I'm usually a wizard
06:28:56 <Sgeo|web> >.>
06:29:01 <Sgeo|web> Sgeo|web: Joke killer.
06:30:05 <CakeProphet> Sgeo|web: I don't think this is necessarily a small project.
06:30:10 -!- nooga has quit (Ping timeout: 256 seconds).
06:30:14 <CakeProphet> it's work related. I'm choosing which database to use.
06:30:23 <Sgeo|web> Ah
06:30:24 <CakeProphet> so I can only assume that it needs to scale well.
06:30:47 <CakeProphet> PostgreSQL doesn't look too bad. It has a lot of features.
06:31:01 <fizzie> Of the open-sores "big ones", it's often a choice between either Postgres or the MySQL/derivatives.
06:32:39 <pikhq> And MySQL's in the middle of a giant "ABANDON SHIP" forkfest.
06:33:20 <CakeProphet> hmmm MySQL seems to be more popular than Postgres. is that an accurate statement?
06:34:03 <fizzie> MySQL, sadly, is (or at least was) quite often the "default".
06:34:15 <fizzie> LAMP and all that.
06:34:54 <CakeProphet> okay so I think I'll go with postgres
06:35:23 * CakeProphet has never used a database. Should be fun.
06:35:25 <fizzie> MySQL used to lack all kinds of "Real Database" features, but I suppose they've bolted most of them in more or less, now.
06:35:28 <pikhq> MySQL is more popular, but it's also been utterly shaken up by Oracle lately.
06:35:35 <CakeProphet> I know the basic ideas of a relational database, and a bit of SQL, but that's about it.
06:35:37 <fizzie> Also that.
06:36:22 -!- aloril has joined.
06:37:48 <CakeProphet> quick say some bad stuff about postgres
06:38:08 <fizzie> If your needs aren't very esoteric, it's sometimes possible to be both MySQL- and PostgreSQL-compatible without too much fuss. (Sensible languages have generic-ish database interfaces.)
06:38:38 <CakeProphet> fizzie: I'm using django (Python). It can use a lot of databases.
06:38:47 <CakeProphet> I don't know how painless it is to switch though.
06:39:15 <fizzie> Very painless, if you just use Django's own database object model/persistence things.
06:39:16 <CakeProphet> postgreSQL has the best logo. Therefore, I should use it.
06:41:36 <fizzie> (Well, I don't know how painless it is to switch an existing Django db from one to another; but the code for using any Django-supported one should be pretty much identical, since you're not really writing any SQL there.)
06:41:54 <CakeProphet> fizzie: right that's the situation I was talking about.
06:42:00 <CakeProphet> so I just want to go ahead and pick one and stick with it.
06:42:04 <CakeProphet> to avoid having to do that.
06:42:39 <fizzie> I'm a Postgres person, so my recommendations would be biased anyhow.
06:43:27 <CakeProphet> postgres seems to be sufficiently advanced, but I have little actual knowlege about it.
06:44:43 <fizzie> Based on some very little Django work, it's quite painless to use if you do things the way Django wants them to be done, e.g. use the django.db.models-based DB access API; in which case the specific features of the database don't really matter all that much.
06:45:17 <CakeProphet> I'm sure I won't need to do anything that Django doesn't already allow through its API
06:45:49 <fizzie> As for speed and scalability, it would be best if you could find some Django benchmarks on the different backends, but I'm not sure any exist.
06:47:08 <fizzie> There are quite a few on the web-server/"middleware" side (fcgi, wsgi, whatever), but.
06:47:13 <CakeProphet> fizzie: if I use a different frontend to manage the db in the future will that conflict with the Django API?
06:47:19 <CakeProphet> like pgadmin
06:47:49 <fizzie> Depends on whether you mess with the tables or not. It won't of course understand the Django object format, so you need to be slightly careful.
06:48:06 <CakeProphet> hmmm okay
06:48:10 <fizzie> Django can autogenerate a database web-admin interface directly from the Python models if you like.
06:48:19 <fizzie> It's... not perfect, but passable.
06:48:24 <fizzie> Looks fancy, anyway.
06:48:28 <CakeProphet> oh that might be good.
06:48:55 <fizzie> The objects tend to be serialized in a "sensible" way IIRC, so it's possible to edit things "manually" too.
06:49:18 <CakeProphet> and then as long as the code reflects the new table structure everything should be fine, I'd think.
06:49:41 <fizzie> http://jacobian.org/writing/django-performance-tips/ says "Use PostgreSQL: I’ll probably get lots of push-back from the MySQL community about this one, but in my experience PostgreSQL is much faster than MySQL in nearly every case." but that's just a random web-page.
06:50:02 <CakeProphet> random source on the internet? I'll take it.
06:50:14 * CakeProphet reinforces the nebulous fabric of his reality.
06:52:13 -!- DHeadshot has quit (Read error: Connection reset by peer).
06:52:17 -!- DH____ has joined.
06:52:31 <fizzie> I seem to recall there was some sort of a thing about editing the models.
06:52:49 -!- aloril has quit (Ping timeout: 265 seconds).
06:53:26 -!- sllide has joined.
06:55:39 <CakeProphet> fizzie: yeah I could be dealing with possibly 10 million rows here..
06:55:46 <fizzie> http://www.djangobook.com/en/2.0/chapter10/#s-making-changes-to-a-database-schema
06:56:10 <Vorpal> hm
06:56:49 <Vorpal> hypothetically, how good would a modern GPU be for ray-tracing. I'm not expecting 60 FPS, but for offline rendering, how fast might it be?
06:57:07 <Vorpal> (will of course depend on scene complexity)
06:57:33 <Vorpal> I guess what I'm asking: how fit are modern GPUs to do the job compared to just doing it on the CPU
06:58:09 <fizzie> I think all of the GPU + ray-tracing things I've seen have been about doing it in real-time, but I'm pretty *someone*'s doing "traditional" offline rendering on a GPU too.
06:58:22 <fizzie> It sounds like a very reasonable thing to do.
06:58:37 <Vorpal> yeah
06:59:02 <Vorpal> fizzie, so how fast would doing real time ray tracing on a GPU be? (Alternatively: why doesn't every modern game do it?)
07:01:41 <fizzie> "How fast" is a bit of a senseless question; it's obviously "real-time fast". What might be more relevant is "how complex stuff can you do". (To which I don't know the answer, but there are some impressive-looking demos.)
07:01:53 <Vorpal> hm
07:02:34 -!- hagb4rd has joined.
07:02:38 <fizzie> NVIDIA has that OptiX thing going on, for example; I don't know much more than the name about it, though.
07:02:54 <Vorpal> hm skyrim + raytracing would be pretty cool for example. Lots of scenery that could be reflected in water and such.
07:05:00 <fizzie> I suppose it's somewhat a memory problem for (offline) ray-tracing really complex scenes. (As far as I understand it, most of the work in doing stuff on GPU is about memory management.)
07:05:11 <Vorpal> heh
07:05:26 -!- aloril has joined.
07:06:54 <fizzie> There's probably papers on it from every SIGGRAPH of the last few years.
07:07:03 <Vorpal> heh
07:07:36 <Vorpal> do those require paid access?
07:08:11 <fizzie> I don't think so. Googling hit a one-hour slidefest about the topic from SIGGRAPH 2011 (by NVIDIA) at http://www.youtube.com/watch?v=0IC2NIogWR4
07:08:22 <Vorpal> nice
07:08:45 <Vorpal> AMD needs to start doing more cool stuff like that. Since I have an AMD CPU
07:08:57 <fizzie> There's a link to http://developer.nvidia.com/siggraph-2011 which lists all presentations from NVIDIA folks. (Haven't more than glanced at it.)
07:09:28 <Vorpal> err
07:09:29 <Vorpal> GPU
07:09:30 <Vorpal> not CPU
07:11:11 <fizzie> Apparently http://www.mentalimages.com/products/mental-ray/about-mental-ray.html is reasonably GPU-accelerated. (It's an offline thing for complex images and realistic lighting and that sort of stuff.)
07:11:27 <Jafet> Go through your ray tracer and count how many control structures you use
07:11:37 <Jafet> And count how many indirect pointers you follow
07:11:53 <Jafet> That's how hard it is to ray-trace on a GPU
07:13:04 <Jafet> Also, you can't ray trace water, since it cannot trace caustics
07:13:46 <Jafet> You need path tracing, photon mapping, or good old textured caustics. Guess which one game developers prefer.
07:14:08 <Sgeo|web> Ray-tracing in games?
07:14:17 <Sgeo|web> I don't follow... unless pre-rendered?
07:14:32 <Jafet> It makes up for their one-dimensional plots.
07:15:07 <Sgeo|web> Wait, are we living in the age of real-time ray-tracing already?
07:15:14 <Sgeo|web> I feel left behind
07:15:17 <fizzie> For some definitions of "age of".
07:15:23 <Jafet> More like edge of
07:16:22 <fizzie> Intel had that "Enemy Territory ray-traced 720p at ~15-30 FPS" demo back in 2008 to showcase the power of their battlestat^W 16-core 3-gigahurts Xeon.
07:16:50 <Jafet> More like building hype for larrabee
07:17:01 <Jafet> Which of course will be available Any Time Now
07:19:34 <fizzie> That was what the Larrabee port of the demo was for; I'm not certain it was the reason for the initial CPU-based demo. But of course who knows.
07:19:42 <fizzie> There's a couple of screenshots at http://en.wikipedia.org/wiki/Quake_Wars:_Ray_Traced
07:20:44 <fizzie> And the video.
07:21:06 <fizzie> I like the floating, reflecting metal speheres they've dropped everywhere.
07:21:18 <fizzie> "Just in case you forgot this was about ray-tracing."
07:21:52 <Sgeo|web> I love looking at ray-traced images
07:22:20 <Jafet> http://code.google.com/p/tokaspt/
07:23:28 <fizzie> Anyway, the mental-ray stuff is apparently more relevant to the initial question (speeding up offline rendering of actually realistic scenes on the GPU); sadly, it's so proprietary they don't really tell how much use of a GPU they can get.
07:25:27 <fizzie> Lurchtime.
07:32:35 <Sgeo|web> Is Moray 3d modeler considered decent?
07:32:46 <Sgeo|web> I mean, it's in the process of becoming Free
07:33:26 <Sgeo|web> Or, um. That may have been a while ago
07:35:22 <Sgeo|web> Can I just say how pretty http://en.wikipedia.org/wiki/File:Glasses_800_edit.png looks?
07:37:26 <CakeProphet> Haskell needs moar web application framework/
07:37:49 <CakeProphet> oh there's Yesod apparently
07:41:44 <monqy> aren't there lots
07:42:17 * Sgeo|web wants heroku for Haskell
07:50:09 <Sgeo|web> Erm
07:50:15 <Sgeo|web> [whamlet|Hello World!|]
07:50:21 <Sgeo|web> Is that a Template Haskell thing?
07:50:44 <Jafet> Because lets need more wham.
07:56:06 <Sgeo|web> "One other quick note: you may have noticed that parseRoutes is called with a bit of a strange syntax with the square brackets and pipes. That's because it's a quasi-quoter"
07:56:08 <Sgeo|web> Ah, ok
08:00:20 -!- monqy has quit (Quit: hello).
08:03:38 <Vorpal> <Jafet> You need path tracing, photon mapping, or good old textured caustics. Guess which one game developers prefer. <-- which one?
08:03:44 <Vorpal> (sorry, was away eating breakfast)
08:05:21 <Vorpal> <Sgeo|web> Can I just say how pretty http://en.wikipedia.org/wiki/File:Glasses_800_edit.png looks? <-- old and povray iirc
08:07:04 <Jafet> http://www.dmrdesigns.com.ar/download/Caustic.jpg
08:11:28 <Jafet> Sgeo|web: http://www.luxrender.net/forum/gallery2.php?g2_itemId=211
08:11:55 <Vorpal> Jafet, ah
08:12:35 <Jafet> So yeah, those two links sum up video games versus offline rendering
08:12:50 <Vorpal> yep
08:24:21 <Sgeo|web> What does Caustic.jpg have to do with anything?
08:24:28 <Sgeo|web> But that gallery is pretty, ty
08:25:05 <Sgeo|web> Ah, LuxRender is an alternative to POV-Ray?
08:25:24 <Sgeo|web> Can someone explain to me what's wrong with POV-Ray?
08:25:35 <Sgeo|web> Besides non-GPL
08:27:03 <fizzie> LuxRender is quite different sort of beast; I'd say it's more an alternative for Radiance.
08:27:20 * Sgeo|web is more confused now
08:27:34 <Jafet> POV-Ray is archaic
08:27:41 <Jafet> I know this from experience
08:28:04 <Jafet> Luxrender is based on pbrt, I think
08:28:19 <fizzie> It is, yes; it's very more physics-inspired than something like POV-Ray.
08:28:25 <Sgeo|web> Is LuxRender scenes not meant to be rendered by humans?
08:28:37 <Sgeo|web> fizzie: by physics, you mean the physics of light?
08:28:53 <Sgeo|web> Now I has a sad knowing that traditional ray-tracing isn't based on that
08:29:10 <Jafet> Ray tracing isn't physically correct, not even to classical optics
08:29:23 <Jafet> Read pbrt for the details
08:29:56 <fizzie> Apparently they've stuck in some GPU acceleration into LuxRender too.
08:30:08 <Sgeo|web> When will we get real-time physics-based rendering?
08:30:22 <Sgeo|web> That's my new standard for when graphics are good
08:30:31 <Jafet> I can render a cornell box in real time, does that count?
08:31:02 <fizzie> Pick what looks good; then extrapolate from the current time to render it + Moore's law.
08:31:58 <Jafet> What looks good now is going to look like crap when the hardware to ray-trace it rolls around.
08:32:45 <Jafet> At least, as long as the deciding factor for video games is graphical porn
08:33:16 <Sgeo|web> Would it be possible to re-render POV-Ray scenes in LuxRender or pbrt?
08:33:33 <Sgeo|web> I mean, I guess I have no idea what the fuck radiosity is, but I assume it has no place in pbrt?
08:34:39 <Jafet> POV-Ray scenes are procedural, while Luxrender scenes are descriptive.
08:34:50 <Jafet> That's what "physically based rendering" means.
08:34:56 <Sgeo|web> POV-Ray scenes... wait what?
08:35:16 <Sgeo|web> How is describing where a box is, for example, procedural?
08:35:19 <fizzie> The POV-Ray scene description language is Turing-complete(ish).
08:35:30 <Jafet> Okay, so you've never used POV-Ray
08:35:35 <Jafet> I'll stop then
08:35:43 <Sgeo|web> I've used it, but only for simple stuff following the tutorial
08:35:51 <Sgeo|web> A long time ago
08:36:10 <Sgeo|web> I think I just want to rerender that Glasses thing in something like LuxRender
08:36:12 <Sgeo|web> >.>
08:36:15 <Sgeo|web> See what it looks like
08:36:26 <Sgeo|web> Surely at least shapes should transfer over
08:36:32 <Jafet> In POV-Ray, you declare archaic early pixar era hacks like bump mapping
08:36:57 <Jafet> Actually pixar already used displacement mapping even then
08:37:12 <Sgeo|web> ...?
08:37:19 * Sgeo|web has no idea what displacement mapping is
08:37:29 * Sgeo|web vaguely gets bump mapping, I think
08:37:41 <Jafet> In other words, you have to tell POV-Ray how to draw the scene. You tell Luxrender what the scene is.
08:37:58 * Jafet wonders how many ways to say the above differently
08:38:59 <Sgeo|web> Surely, things like "box here, sphere there", or whatever, at least are in a sense both how to draw the scene and what the scene is? So not a perfect translation over, but something?
08:39:08 <fizzie> There are some converters from POV-Ray scenes to plain meshes, but they obviously only handle a subset of the possible things.
08:39:44 <Jafet> Scenes aren't merely shapes...
08:40:21 <fizzie> Yes; but you can extract the objects, and then recreate the rest.
08:40:36 <Jafet> You make it sound real simple
08:40:52 <Sgeo|web> What is radiosity, and am I correct that it's an artifact of the fact that POV-Ray fakes it?
08:41:32 <Jafet> In POV-Ray you go "lol light_source { color rgb <0, 0, 1> }"; in Luxrender you give the physical colour and intensity
08:42:10 <Jafet> Why do you say rgb <0,0,1>? That's purely an artifact of how rendering software works.
08:42:27 <Sgeo|web> Physical color == frequencies that are being emitted?
08:43:05 <Jafet> Yes
08:44:09 <Sgeo|web> If I make a Luxrender scene today, and tomorrow everyone decides to accomodate tetrachromates, then my scene can be rerendered to look correct to them, as opposed to a POV-Ray scene which would lose necessary information? </least-important-conceivable-reason-for-physical-colors>
08:45:45 <Sgeo|web> I take it that if you place a sun and rain in Luxrender and position the camera properly, you'd get a rainbow? What would happen in POV-Ray, nothing?
08:46:04 <fizzie> I'm not entirely sure it would go quite *that* far.
08:46:08 <Jafet> Your POV-Ray scene doesn't even specify what colours are used, so your comparison is meaningless
08:46:34 <Jafet> fizzie: http://www.luxrender.net/forum/gallery2.php?g2_itemId=1928
08:46:56 <Jafet> rgb <0,0,1> isn't a colour until you specify the colour space being used
08:47:28 <Sgeo|web> How do mere mortals specify color in Luxrender?
08:47:29 <fizzie> Jafet: Yeah, but that's not a rainbow. Do you think you'd really get a physically correct rainbow if you just put bazillion droplets in the sky.
08:47:30 <Jafet> But since the three components are treated independently, you can ignore them la la la
08:47:48 <Sgeo|web> I mean, let's say, the SUn
08:47:48 <Sgeo|web> Sun
08:48:01 <Jafet> fizzie: hm, think so. If you could wait for it to render.
08:48:20 <Jafet> I've watched an animated film where they rendered diffraction in rain
08:48:25 <Sgeo|web> Lots of frequencies, probably a continuous range with continuously varying strenghts
08:49:04 <fizzie> Sgeo|web: You can specify a blackbody temperature.
08:49:11 <fizzie> Sgeo|web: That's a reasonable approximation for sunlight.
08:49:16 <Jafet> It was very subtle, but visible if you knew it was there
08:49:35 <fizzie> Sgeo|web: See http://www.luxrender.net/wiki/LuxRender_Textures_Spectrum for the different ways how you can specify the spectrum for a light source.
08:52:01 <Sgeo|web> I don't see "arbitrary function" on there, but I guess regular data is close enough
08:52:47 <Jafet> In the luxrender community, iirc "arbitrary function" means you monkey patch it in
08:53:15 <Sgeo|web> ...buh?
08:55:17 <Jafet> patch my-colour-function.patch && make
08:58:05 <Sgeo|web> And here I was thinking that LuxRender is awesome
08:58:59 <Vorpal> Jafet, sounds like povray is superior in that regard then.
08:59:29 <Vorpal> maybe luxrender is better at other stuff
08:59:55 <fizzie> Yes, not being able to specify a spectrum is certainly superior to having to write a spectrum into an external file outside the scene description and read it from there.
09:00:25 <Vorpal> huh?
09:00:44 <Vorpal> fizzie, I mean, povray is great for rendering mathematical shapes and so on
09:00:45 <fizzie> You can't specify an "arbitrary function" spectrum for a POV-Ray light.
09:00:46 <Jafet> Perhaps luxrender doesn't trust its users to always pass in a real probability distribution
09:01:14 <Patashu> couldn't it jiggle it until it is one if it isn't?
09:01:23 <Jafet> How could it ever know if it is one?
09:01:37 <Jafet> patch lol-numerical-integration.patch
09:02:31 <Patashu> It can't ever know in the same sense that you can't prove or disprove the afterlife?
09:02:37 <Patashu> Or in a difference sense?
09:02:57 <fizzie> That's pretty much what the "regular data" numerical input is. Just add a thing you give a function to, and a grid specification; then it'll sample that function at those points and use it like it'd use a regular datafile.
09:03:01 <Vorpal> Jafet, do you mean real as in "not complex"?
09:03:18 <Patashu> a probability distribution as in integrates to area 1
09:03:18 <Jafet> Uh, how can you know if int_{-\infty}^\infty f(x) dx = 1
09:03:27 <Jafet> For arbitrary f
09:04:00 <Patashu> Sample it at a coarseness of your choice
09:04:05 <Patashu> And then apply a normalizing factor
09:04:08 <Sgeo|web> Can you do arbitrary mathematical surfaces in Luxrender?
09:04:13 <Patashu> And then ditch the samples if you don't need them anymore
09:04:42 <Sgeo|web> Metal marbles on a metal 2d sin-based sheet
09:04:45 <Sgeo|web> ooh
09:04:49 * Sgeo|web imagines
09:05:17 <fizzie> Does it need to be a probability distribution anyway? I don't see anything about normalizing for the regular/irregular numeric data inputs, and the gaussian spectrum an "energy" value too.
09:05:33 <Vorpal> Jafet, right
09:06:05 <Jafet> fizzie: those aren't arbitrary, so you can normalize them (I don't know if luxrender does)
09:07:26 <fizzie> Anyway, that's no excuse for not providing an integrated "specify a function, then I'll sample it, as if you would have written those numbers down into an external file" feature. (Not having that much use for one is, though.)
09:08:02 <Jafet> Specify a function in what language
09:08:23 <Jafet> Remember that the function may be called a few billion times
09:09:37 <fizzie> You know, a function. Basic mathematical operations. And I don't see how the calling time matters; it would get sampled once (when it loads the scene), and then treated like it treats the existing "external datafile" things, except you wouldn't need to create such files outside the scene.
09:09:53 <fizzie> I'm not saying there'd be any need for something like that.
09:17:53 <Sgeo|web> Is it feasible to make a LuxRender scene by hand like one might make a POV-Ray scene by hand?
09:19:01 -!- ais523 has joined.
09:19:50 <fizzie> Sgeo|web: It is a human-readable format, so for a simple scene one supposes. It's just that all complicated shapes nowadays tend to be approximated by meshes with lots of triangles, generated using graphical modelling tools.
09:19:54 -!- nooga has joined.
09:21:13 <fizzie> There's a reasonably complicated Blender-to-LuxRender exporter, I tried it out few versions ago.
09:22:03 <fizzie> It tries to (up to some degree) snarf the initial LuxRender-specific material/light/whatever values from the Blender settings.
09:22:12 <fizzie> (Then you can go a twiddle with them.)
09:23:27 <fizzie> E.g. (IIRC) for colors it'll take the RGB values from Blender properties; LuxRender will "generate a physically plausible spectrum based on the desired colour" then.
09:24:13 <Sgeo|web> Does LuxRender take relativity into account?
09:24:23 <Sgeo|web> e.g. can I use it to see what things look like near a blac hole?
09:24:26 <Sgeo|web> >:)
09:24:43 <fizzie> I don't think there's gravity in there.
09:25:24 <Jafet> Or plasma physics
09:25:57 <Jafet> It might be interesting to render scenes in a different space
09:26:19 <Jafet> (generalized lenses)
09:26:20 <fizzie> After all, it's just "physically *based*", not a full universe-simulator like the one we're living in.
09:26:51 <Sgeo|web> How difficult would it be to add it?
09:26:59 <Jafet> As a restricted example, the Portal developers hacked the HL2 engine to get recursive portal rendering
09:27:15 <Jafet> Sgeo|web: why don't you find out by adding it
09:30:43 <fizzie> Portals are such a hack; the developer commentary track goes into some detail about them.
09:30:54 <fizzie> "We achieve the impression of infinite recursion by copying part of the previously rendered frame onto the final portal in the recursive chain."
09:31:11 <fizzie> Also lots about how the physics are faked.
09:31:30 <Jafet> Oh; I thought they actually stuck a recursive renderer in there
09:31:45 <Jafet> I guess that would have led to inconsistent performance
09:31:58 <fizzie> It goes up to 9 (not 11) levels of real recursion.
09:32:14 <fizzie> "Initial implementations of this dynamic collision generation system could take up to one half of one second, or 500 milliseconds, to compute the correct collision. This may not sound like a long time in everyday life, but this pause during portal creation was quite noticeable in the context of the game. Ultimately, we designed a system that creates temporary hybrid physics environments in bubbles around the portals using less accurate collision than that produ
09:32:14 <fizzie> ced by Source's standard collision generation, but was accurate enough in practice and reduced the time to create the dynamic collision representation from 500 milliseconds to just 10 milliseconds, which is an imperceptible pause --"
09:32:39 <Jafet> Collisions across portals?
09:34:07 <Jafet> Well, physics in video games still sucks. Fire at a cardboard box and you get decals
09:35:17 <fizzie> They're quite static, but at least you can throw indestructible, rigid cubes around, and they bounce funnily.
09:38:22 -!- Jafet has changed nick to Tefaj.
09:46:59 -!- derdon has joined.
09:52:19 * Sgeo|web wants to see LuxRender renderings of physically impossible scenes
09:55:03 <Sgeo|web> http://www.luxrender.net/forum/gallery2.php?g2_itemId=18353 those letters seriously look as if they could really have been 3d printed
09:56:29 <Sgeo|web> http://www.luxrender.net/forum/gallery2.php?g2_itemId=17898 ok how in the hell was this picture taken?
10:02:23 <Tefaj> Wires, man.
10:02:40 <fizzie> Or magnets.
10:02:46 <fizzie> They do it with mirrors.
10:04:11 <Sgeo|web> Hmm. Wiki says point lights are unphysical. But suppose I wanted my scene to contain a hovering magic light sphere...
10:04:29 <fizzie> A sphere is not a point.
10:04:35 <fizzie> Well, a sphere with radius > 0.
10:05:08 <Sgeo|web> But the sphere emitting lighting emits light in the direction of the normals of the surface, right?
10:05:27 <Sgeo|web> I'm having trouble seeing how adjusting the radius of the sphere would change the lighting
10:06:23 <Tefaj> No, it emits light in all directions.
10:06:39 <Tefaj> From each point on the surface.
10:06:49 <fizzie> A real sphere, that is.
10:06:55 <Tefaj> Well, some of the directions are less important.
10:07:35 <Sgeo|web> "Objects only emit light in the direction that the normals of the object's faces are pointing. For rendering speed it is best to use as few faces as possible on emissive object"
10:07:43 <Sgeo|web> Hmm, maybe I misunderstood that
10:07:55 <fizzie> Sgeo|web: As far as I can deduce, that's just "not backwards at all", perhaps.
10:11:20 <fizzie> For a "normal" sort of lighting fixture you'd usually have an IES profile which specifies the light distribution, even though theoretically speaking you should be able to just specify the internal geometry and the glowing bits, and let the software take care of the rest.
10:11:39 <Tefaj> Heh
10:11:51 <Tefaj> Well, a light bulb really is like a black body.
10:11:57 * Sgeo|web still doesn't know what IES is, although I saw something about using it for lasers
10:12:18 <Sgeo|web> Tefaj: why heh? And what would be wrong with just specifying the internal geometry?
10:13:20 <fizzie> An incadescent light bulb is black-bodyish; but those are highly illegal here in Europe already, aren't they? A fluorescent lamp spectrum is rather spikier.
10:13:22 <Tefaj> Because you run into extremities that are difficult to model, like internal scattering with high light intensity
10:13:49 <Tefaj> When the scattering inside the light affects the whole scene, you can't cop out and fake it with a lower-dimensional model
10:14:39 <fizzie> http://en.wikipedia.org/wiki/File:Spectra-Philips_32T8_natural_sunshine_fluorescent_light.svg "natural sunshine" my ass.
10:15:42 -!- ais523 has quit (Ping timeout: 256 seconds).
10:15:43 <fizzie> Not that sunlight under all this air is all blackbodyish either. (http://en.wikipedia.org/wiki/File:Solar_Spectrum.png)
10:16:49 <Tefaj> Well, there are worse approximations
10:21:44 <fizzie> So do you get a blue sky out of LuxRender if you plonk a 5500K sphere of radius 700000km in the scene, and then set the camera near the surface of a r=6371km sphere some 150 million km away from the sphere, and then put an atmosphere around that and specify the chemical composition and a density function? :)
10:23:13 <fizzie> (Okay, so there's the "sunsky" environment, but that's a hack.)
10:23:17 -!- ais523 has joined.
10:24:17 <Tefaj> I'm not sure how good their volumetric scattering model is
10:24:41 <Tefaj> But you can be sure that if it's any good, you're going to need two weeks and a cluster
10:26:16 <Sgeo|web> Night
10:26:54 -!- Tefaj has quit (Quit: Leaving.).
10:27:13 <fizzie> "[A homogenous volume] can also be used as the world volume, which will enable atmospheric scattering."
10:27:19 <fizzie> Apparently it can do something like that.
10:30:06 -!- MichaelBurge has quit (Read error: Connection reset by peer).
10:31:19 <fizzie> "Heterogenous volumes are not currently supported in the new volume system, although they can be used via the old "volumegrid" system if needed. Note that volumegrid does not fully support other LuxRender features such as the bidirectional integrator, and is eventually scheduled to be deprecated and removed once heterogeneous volume support is added to the new object volume system that is documented on this page."
10:31:24 <fizzie> Seems to be a bit under construction.
10:38:59 -!- Phantom_Hoover has joined.
10:59:57 -!- oerjan has joined.
11:07:18 <oerjan> <Madoka-Kaname> () is completely safe to unsafeCoerce to, as you can't do anything to it, right?
11:07:30 <oerjan> the Any type exists for that purpose.
11:09:17 <oerjan> and its documentation makes me believe unsafeCoerceing to () is _not_ safe from a function type.
11:10:42 <oerjan> 04:05:00: <CakeProphet> where c is a (Num a) => Complex a
11:10:43 <oerjan> 04:06:15: <CakeProphet> er, just Complex a would be fine
11:10:43 <oerjan> 04:06:25: <CakeProphet> since it's a is constrained to RealFloat
11:11:13 <oerjan> no, that is not fine, and is one of the reasons why data type contexts are going away.
11:34:44 -!- derdon has quit (Remote host closed the connection).
11:38:17 -!- Phantom_Hoover has quit (Quit: Leaving).
11:47:49 -!- aloril has quit (Ping timeout: 265 seconds).
11:50:13 -!- aloril has joined.
11:57:45 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
12:05:31 -!- ais523 has quit (Remote host closed the connection).
12:06:30 -!- Madoka-Kaname has quit (Ping timeout: 255 seconds).
12:49:42 -!- Ngevd has joined.
12:50:10 <oerjan> Hello in 10, 9 ...
12:50:16 -!- Jafet has joined.
12:50:16 <Ngevd> Hello1
12:50:22 <Ngevd> *!
12:50:46 <oerjan> oops the final number got stuck
12:50:52 <Ngevd> :P
12:53:56 <oerjan> "ddarius: Well when people say you need a PhD to program Haskell, you can point out that SPJ doesn't have a PhD."
12:54:05 <oerjan> http://contemplatecode.blogspot.com/2011/10/haskell-weekly-news-issue-203.html
13:01:02 -!- ais523 has joined.
13:10:09 <Ngevd> I am proud to have written one of the few esoteric programming languages to be proved Turing-Complete by reduction from a Turing machine directly
13:15:33 <oerjan> hm which one, you already have a bit of a list there...
13:15:39 <Ngevd> Luigi
13:19:16 <ais523> hmm, was it K or R of K&R who invented hello world?
13:19:38 <ais523> (R is now, unfortunately, dead)
13:19:55 <Ngevd> K, I believe
13:21:09 <Ngevd> Quoth wikipedia
13:21:11 <Ngevd> "The example program from that book prints "hello, world" (without capital letters or exclamation mark), and was inherited from a 1974 Bell Laboratories internal memorandum by Brian Kernighan, Programming in C: A Tutorial, which contains the first known version:"
13:21:33 <Ngevd> "The first known instance of the usage of the words "hello" and "world" together in computer literature occurred earlier, in Kernighan's 1972 Tutorial Introduction to the Language B,[1] with the following code:"
13:21:49 <ais523> hmm, good to know
13:22:41 <Ngevd> He is the only person to go down in history for writing a four line program in a memo
13:22:52 <Ngevd> To my admitably lacking knowledge
13:29:35 -!- Madoka-Kaname has joined.
13:32:55 <ais523> hmm, http://colinm.org/language_checklist.html is very upvoted on proggit
13:33:02 <ais523> can we write an esolang that checks /every/ box?
13:33:44 <Ngevd> Hmm...
13:33:51 <ais523> probably not, some contradict each other
13:34:18 <Ngevd> As many as possible. then
13:34:37 <ais523> [ ] You have reinvented Brainfuck but non-ironically
13:35:05 <ais523> this thing seems to handle esolangs pretty well too
13:35:52 <ais523> oh, fun GLR-parsable grammar I was considering: operator precedence is chosen to make the expression type correctly
13:36:05 <ais523> e.g. string_of_int 2 + 2 = string_of_int (2 + 2)
13:36:15 <ais523> but string_of_int 2 + "a" = (string_of_int 2) + "a"
13:36:42 <Ngevd> Sounds intresting
13:36:50 <ais523> it'd be good for golfing, but loses basically all the benefits of static typing
13:37:10 <Ngevd> I may make Uniquode actually usable
13:37:55 <ais523> it'll probably end up with a usable subset just by chance
13:38:01 <ais523> probably several hundred of them, actually
13:38:30 <Ngevd> It'd be an exercise to the programmer to decide what's the best to use
13:40:04 <oerjan> ais523: i think oklopol already invented something like that
13:40:11 <ais523> I suggest you embed MAGENTA
13:40:13 <ais523> /all/ of it
13:40:22 <ais523> wow, I get an uneasy feeling just looking at its name
13:40:56 <oerjan> it's the fnord between the G and E
13:41:52 <ais523> aha, that would explain it
13:44:39 -!- oerjan has quit (Quit: Latefnordr).
13:45:42 -!- Phantom_Hoover has joined.
13:46:17 <Ngevd> Should Uniquode memory be typed or untyped?
13:46:19 <Ngevd> Or both?
13:46:27 <ais523> both, obviously
13:46:37 <Ngevd> >:D
13:46:51 <ais523> both ADT-style and Visual Basic Variant-style
13:46:56 <ais523> for the both
13:48:10 <Ngevd> Hey, Google Wave still exist
13:48:12 <Ngevd> s
13:53:10 <Ngevd> I think functions would have to be numerated rather than named
13:56:57 <ais523> hey, what's the Windows equivalent of ls -R?
13:57:14 <ais523> it's going to be dir /something, presumably
13:59:17 <ais523> oh right, I forgot just how bad Windows cmd sucks; it's not dir, it's tree /f, and it puts garbage at the starts of lines
13:59:18 <Ngevd> dir /S?
13:59:50 <ais523> aha, it is /s
14:00:07 <Ngevd> dir /B /S
14:00:24 <Ngevd> Those letters were chosen because they represent Windows best
14:07:54 <Ngevd> XSL S and K potentially complete!
14:08:10 <Phantom_Hoover> Do they work?
14:08:14 <Ngevd> Haven't tried
14:16:27 * Phantom_Hoover notes that Wikipedia's coverage of Sheldrake has improved considerably since last he checked.
14:19:30 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
14:20:25 <Ngevd> Doesn't work
14:20:33 <Ngevd> Have an idea why
14:21:11 <Ngevd> If I say "./s[position()=2]", does it give the second s, or the second element if it is an s
14:21:26 -!- MSleep has changed nick to MDude.
14:21:49 <Phantom_Hoover> I'm really having a hard time believing that it's this convoluted.
14:22:27 <Ngevd> Found out why it's wrong
14:41:09 -!- copumpkin has joined.
15:15:08 -!- augur has quit (Remote host closed the connection).
15:33:47 -!- DH____ has quit (Read error: Connection reset by peer).
15:43:18 -!- hagb4rd has quit (Ping timeout: 248 seconds).
15:47:33 -!- monqy has joined.
15:51:38 -!- Jafet has quit (Quit: Leaving.).
15:52:29 -!- augur has joined.
16:29:26 -!- zzo38 has joined.
16:38:47 -!- Ngevd has quit (Read error: Connection reset by peer).
16:50:30 -!- Vorpal has quit (Ping timeout: 248 seconds).
16:52:33 -!- elliott has joined.
16:53:02 <elliott> ais523: K-lines can be automatic nowadays, I think
16:53:02 <lambdabot> elliott: You have 3 new messages. '/msg lambdabot @messages' to read them.
16:53:21 <ais523> elliott: they always have been able to be automatic, IIRC
16:53:27 <ais523> but that still doesn't explain why it happened to quintopia
16:53:31 <ais523> @messages
16:53:31 <lambdabot> You don't have any new messages.
16:53:34 <ais523> :(
16:53:40 <elliott> ais523: you misused lambdabot
16:53:56 <ais523> the messages delivered by lambdabot are generally better than those delivered by Rodney or heptagram
16:53:59 <elliott> ais523: and, well, yes, but I mean quintopia might have been banned by software because it thought he was a malicious bot, say
16:54:16 <elliott> joining too many channels in rapid succession, or something, perhaps
16:55:17 <elliott> ais523: anyway, you can hardly expect to get messages if you violate the usage instructions
16:55:33 <ais523> elliott: hey, those instructions were to /you/
16:55:44 <elliott> heh
16:55:54 <elliott> <lambdabot> CakeProphet said 12h 26m 47s ago: TODO: convince Gregor to put ghc and runhaskell on hackego
16:55:58 <elliott> Hey Gregor, do that thing you already did.
16:56:42 <elliott> 21:20:49: <rapido> Phantom_Hoover: what is functional minimalism done right?
16:56:42 <elliott> 21:21:05: <Phantom_Hoover> rapido, Lazy K.
16:56:49 <elliott> Phantom_Hoover: well I dunno, its IO model is not very nice.
16:56:55 <elliott> 21:24:54: <rapido> diversion: anyone into K (or Q) from kxsystems - the only commercial esoteric language out there?
16:57:02 <elliott> I like K but I like J more
16:57:12 <ais523> BANCStar!
16:57:29 <Phantom_Hoover> elliott, erm, what's wrong with Lazy K's IO?
16:57:38 <elliott> Phantom_Hoover: it's equivalent to haskell lazy io
16:57:54 <elliott> it depends crucially on evaluation order for any kind of interactivity
16:57:59 <Phantom_Hoover> "Not being a system under active research" is not a valid wrongness.
16:58:00 <elliott> it's kind of gross and impure in that way
16:58:04 <elliott> Phantom_Hoover: what
16:58:12 <elliott> i'm talking about getContents
16:58:39 <Phantom_Hoover> I'm assuming that were I to ask what you'd use instead you'd say FRP.
16:59:04 <elliott> frp doesn't even deal with console-based io, so obviously you don't actually know what you're talking about
16:59:17 <elliott> 01:52:14: <Sgeo|web> Dennis Ritchie apparently died recently
16:59:17 <elliott> 02:05:04: <variable> RIP Dennis Ritchie :(
16:59:17 <elliott> huh, he wasn't that old...
16:59:35 <Phantom_Hoover> Of course I don't know what I'm talking about.
17:00:02 <elliott> Phantom_Hoover: So stop making assumptions.
17:00:10 <Phantom_Hoover> elliott, why.
17:00:20 <elliott> Phantom_Hoover: Because you just look like an idiot?
17:01:04 <elliott> 03:50:18: <Madoka-Kaname> () is completely safe to unsafeCoerce to, as you can't do anything to it, right?
17:01:09 <elliott> Madoka-Kaname: yes you can, you can coerce it
17:01:09 <elliott> erm
17:01:13 <elliott> Madoka-Kaname: yes you can, you can force it
17:01:32 <elliott> Madoka-Kaname: and that isn't a valid metric for determining whether unsafeCoerce is safe, anyway.
17:02:43 <ais523> what about unsafeCoercing it back to the original type?
17:02:47 <elliott> `rm bin/runperl
17:02:53 <HackEgo> No output.
17:02:58 <elliott> run prefix is gross
17:03:27 <elliott> ais523:
17:03:28 <elliott> The function unsafeCoerce# allows you to side-step the typechecker entirely. That is, it allows you to coerce any type into any other type. If you use this function, you had better get it right, otherwise segmentation faults await. It is generally used when you want to write a program that you know is well-typed, but where Haskell's type system is not expressive enough to prove that it is well typed.
17:03:28 <elliott> The following uses of unsafeCoerce# are supposed to work (i.e. not lead to spurious compile-time or run-time crashes):
17:03:28 <elliott> Casting any lifted type to Any
17:03:30 <elliott> Casting Any back to the real type
17:03:32 <elliott> Casting an unboxed type to another unboxed type of the same size (but not coercions between floating-point and integral types)
17:03:35 <elliott> Casting between two types that have the same runtime representation. One case is when the two types differ only in "phantom" type parameters, for example Ptr Int to Ptr Float, or [Int] to [Float] when the list is known to be empty. Also, a newtype of a type T has the same representation at runtime as T.
17:03:39 <elliott> Other uses of unsafeCoerce# are undefined. In particular, you should not use unsafeCoerce# to cast a T to an algebraic data type D, unless T is also an algebraic data type. For example, do not cast Int->Int to Bool, even if you later cast that Bool back to Int->Int before applying it. The reasons have to do with GHC's internal representation details (for the congnoscenti, data values can be entered but function closures cannot). If you want a saf
17:03:44 <elliott> e type to cast things to, use Any, which is not an algebraic data type.
17:03:46 <elliott> those are GHC's guarantees
17:04:05 <elliott> 05:07:45: <Sgeo|web> Um, I can't imagine Python working really all that well when only given one line
17:04:11 <elliott> Sgeo|web: this is why I wrote braces
17:06:07 <elliott> `url bin/haskell
17:06:09 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/haskell
17:06:19 <elliott> ugh, that needs improvement
17:06:30 <elliott> actually wait just use egobot
17:07:39 <ais523> which isn't here
17:08:42 <elliott> oi Gregor
17:09:28 <elliott> 06:47:13: <CakeProphet> fizzie: if I use a different frontend to manage the db in the future will that conflict with the Django API?
17:09:28 <elliott> 06:47:19: <CakeProphet> like pgadmin
17:09:28 <elliott> 06:47:49: <fizzie> Depends on whether you mess with the tables or not. It won't of course understand the Django object format, so you need to be slightly careful.
17:09:32 <elliott> fizzie: What django object format?
17:09:38 <elliott> There's no serialisation or anything.
17:09:43 <elliott> 06:48:10: <fizzie> Django can autogenerate a database web-admin interface directly from the Python models if you like.
17:09:44 <elliott> 06:48:19: <fizzie> It's... not perfect, but passable.
17:09:44 <elliott> 06:48:24: <fizzie> Looks fancy, anyway.
17:09:53 <elliott> fizzie: You're meant to customise it with the meta-object stuff.
17:10:22 <elliott> fizzie: (It was created to be used as the admin interface in the large project that Django was abstracted from, so it's meant to be able to be pretty good.)
17:10:27 <elliott> 06:48:55: <fizzie> The objects tend to be serialized in a "sensible" way IIRC, so it's possible to edit things "manually" too.
17:10:37 <elliott> fizzie: It's not serialisation, it just maps it to a schema.
17:10:47 <elliott> It doesn't even serialise arbitrary Python objects, you have to tell it the schema.
17:10:59 <elliott> 06:49:41: <fizzie> http://jacobian.org/writing/django-performance-tips/ says "Use PostgreSQL: I’ll probably get lots of push-back from the MySQL community about this one, but in my experience PostgreSQL is much faster than MySQL in nearly every case." but that's just a random web-page.
17:11:05 <elliott> fizzie: By one of the lead Django developers.
17:12:28 <elliott> ais523: You need to crush Vorpal's dreams, I think.
17:12:41 <ais523> elliott: of what/
17:12:51 <elliott> ais523: GPU raytracing as a panacea.
17:12:57 <elliott> 07:11:27: <Jafet> Go through your ray tracer and count how many control structures you use
17:12:57 <elliott> 07:11:37: <Jafet> And count how many indirect pointers you follow
17:12:57 <elliott> 07:11:53: <Jafet> That's how hard it is to ray-trace on a GPU
17:12:57 <elliott> 07:13:04: <Jafet> Also, you can't ray trace water, since it cannot trace caustics
17:12:57 <elliott> 07:13:46: <Jafet> You need path tracing, photon mapping, or good old textured caustics. Guess which one game developers prefer.
17:12:58 <elliott> Damn, beaten to it.
17:13:33 <elliott> 07:16:50: <Jafet> More like building hype for larrabee
17:13:34 <elliott> 07:17:01: <Jafet> Which of course will be available Any Time Now
17:13:41 <elliott> Larabee was explicitly cancelled.
17:14:25 <elliott> http://upload.wikimedia.org/wikipedia/en/f/fe/Wolf_chand1.png The power of raytracing.
17:15:55 <elliott> 07:37:26: <CakeProphet> Haskell needs moar web application framework/
17:15:58 <elliott> CakeProphet: There are about fifty.
17:21:36 <elliott> 08:44:09: <Sgeo|web> If I make a Luxrender scene today, and tomorrow everyone decides to accomodate tetrachromates, then my scene can be rerendered to look correct to them, as opposed to a POV-Ray scene which would lose necessary information? </least-important-conceivable-reason-for-physical-colors>
17:21:36 <elliott> tetrachromates, n. tetrachomats who are you are mates with.
17:22:26 <elliott> 08:47:29: <fizzie> Jafet: Yeah, but that's not a rainbow. Do you think you'd really get a physically correct rainbow if you just put bazillion droplets in the sky.
17:22:26 <elliott> If you waited long enough!
17:24:19 <elliott> 09:01:14: <Patashu> couldn't it jiggle it until it is one if it isn't?
17:24:19 <elliott> 09:01:23: <Jafet> How could it ever know if it is one?
17:24:19 <elliott> 09:01:37: <Jafet> patch lol-numerical-integration.patch
17:24:19 <elliott> 09:02:31: <Patashu> It can't ever know in the same sense that you can't prove or disprove the afterlife?
17:24:19 <elliott> 09:02:37: <Patashu> Or in a difference sense?
17:24:26 <elliott> Patashu discovers that not all propositions are decidable.
17:28:35 <elliott> 10:21:44: <fizzie> So do you get a blue sky out of LuxRender if you plonk a 5500K sphere of radius 700000km in the scene, and then set the camera near the surface of a r=6371km sphere some 150 million km away from the sphere, and then put an atmosphere around that and specify the chemical composition and a density function? :)
17:28:37 <elliott> fizzie: I really hope so.
17:38:12 <zzo38> Is there a spell in Dungeons&Dragons that makes the sun rise in the south?
17:38:57 <Phantom_Hoover> <elliott> tetrachromates, n. tetrachomats who are you are mates with.
17:39:04 <ais523> zzo38: I think some DMs would let you do that with wish/miracle
17:39:09 <Phantom_Hoover> Please keep your fantasies out of this channel.
17:39:10 <ais523> probably not all of them
17:39:39 <elliott> Phantom_Hoover: I'm sorry but Sgeo|web was already talking about his true love (obsolete raytracing).
17:40:13 <zzo38> ais523: OK. Although that was something found in some book my character had; the phrase "the sun rises in the south" was torn out so that I could use it to notify someone.
17:40:42 <ais523> zzo38: there are probably easier ways to notify people than actually moving the position of the sun
17:41:08 <zzo38> ais523: I did not move the position of the sun.
17:41:35 <zzo38> I had nothing to write with, so tore that phrase out of the book, tied it to a rock, and threw it through a window (which I could not get near due to a magical fog).
17:42:31 <zzo38> (The window was north of my position)
17:42:53 -!- zzo38 has quit (Remote host closed the connection).
17:48:55 <Phantom_Hoover> Tell that to Notch
17:54:12 -!- vco has joined.
17:58:02 <elliott> hi vco
17:58:03 <elliott> `? welcome
17:58:05 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
17:58:46 -!- vco has quit (Ping timeout: 252 seconds).
17:58:59 <elliott> bye vco
18:00:51 <Gregor> lol
18:23:30 <elliott> "Now the complete sequence of Yersinia pestis, the most likely cause of the Black Death, has been unearthed from a medieval mass grave in London."
18:23:40 <elliott> Damn, and I even postponed the construction of my bunker.
18:25:34 <Phantom_Hoover> Dude, Y. pestis is endemic to Britain.
18:26:27 <elliott> Phantom_Hoover: It was a joke, you know.
18:26:44 <Phantom_Hoover> Yes?
18:27:59 <ais523> apparently, it can also be cured trivially with modern medicine
18:28:13 <ais523> which isn't surprising, given that it isn't around nowadays and so hasn't had much of a chance to evolve antibiotic resistance
18:28:45 <elliott> They should do an experiment to find out what happens if you breed it intensely for antibiotic resistance and then put it into the water supply of every major city.
18:29:06 -!- augur has quit (Remote host closed the connection).
18:29:41 <Phantom_Hoover> elliott, could work for a biology investigation (did
18:29:54 <Phantom_Hoover> I mention my dwarven chemistry investigation it is the best.)
18:30:06 -!- Ngevd has joined.
18:30:17 <elliott> Actually wait, I have a better experiment idea:
18:30:20 <Ngevd> Hello!
18:30:22 <elliott> They should find out what happens if you kill everyone.
18:31:40 <Ngevd> I need to work out why identifying automatically is misconfigured on this client
18:32:09 <Phantom_Hoover> You need a better client; also to learn you some XML.
18:32:37 <Ngevd> It tries to, it just gets it wrong
18:33:15 <elliott> Ngevd: How do you have it set up.
18:33:24 <elliott> Stop using that thing.
18:33:26 <Ngevd> With my password in the password box
18:33:30 <Ngevd> I need it!
18:33:35 <elliott> Why.
18:33:36 <Ngevd> For my visual basic developement!
18:33:44 <elliott> http://code.google.com/p/xchat-wdk/
18:33:53 <Ngevd> I REFUUU- wait
18:34:02 <Ngevd> XChat exists for windows?
18:34:11 <elliott> >_<
18:34:26 <Ngevd> Why did no-one tell me!
18:34:29 <elliott> We did.
18:34:35 <elliott> You ignored us and kept using that piece of crap.
18:34:40 <elliott> :P
18:34:42 <Ngevd> Really?
18:34:46 <elliott> Well, I did at least.
18:34:49 <Ngevd> That was that Taneb guy, I bet
18:34:50 <elliott> Or at least I think I did.
18:34:54 <Ngevd> Nobody told /me/
18:35:05 <elliott> Well, this is true.
18:35:15 -!- Ngevd has changed nick to Taneb|Hovercraft.
18:35:22 <Taneb|Hovercraft> Nobody told me either
18:36:16 <Gregor> Nobody told me that Windows exists.
18:36:50 <Taneb|Hovercraft> So you're an afenestrist?
18:37:54 <Gregor> I'd like to defenestrate every software fenestrist.
18:39:40 -!- Taneb|Hovercraft has quit (Quit: client experimentation).
18:40:00 -!- Ngevd has joined.
18:41:34 -!- derdon has joined.
18:41:46 <Ngevd> Hello!
18:56:38 <Sgeo|web> .
18:56:50 <Sgeo|web> Is XChat-wdk better than Silverex?
18:57:23 <elliott> Supposedly.
19:06:10 -!- Sgeo|web has quit (Ping timeout: 252 seconds).
19:07:07 -!- Sgeo|web has joined.
19:07:08 -!- augur has joined.
19:30:06 -!- tiffany has joined.
19:30:52 -!- nooga has quit (Ping timeout: 258 seconds).
19:40:05 -!- Slereah_ has joined.
19:48:43 -!- Sgeo|web has quit (Ping timeout: 252 seconds).
19:51:04 -!- oerjan has joined.
19:51:47 <elliott> hi oerjan
19:52:17 <Ngevd> Hello oerjan!
19:52:36 <oerjan> good evening oerjan!
19:52:42 <oerjan> wait, am i doing it wrong
19:52:54 <elliott> :'(
19:53:05 * oerjan hugs elliott
19:53:22 <ais523> good evening, everyone in appropriate timezones!
19:53:22 <elliott> wrongness
19:53:23 <elliott> is bad
19:53:37 <Phantom_Hoover> "Thumbs up if you're watching in 2O11 :)" — YouTube comment.
19:53:41 <ais523> likewise, good morning and good afternoon!
19:53:43 <Phantom_Hoover> It has 38 thumbs up.
19:53:45 <elliott> 2O11
19:53:51 <ais523> Phantom_Hoover: with how many views?
19:54:02 <Phantom_Hoover> 1.1e6.
19:54:02 <ais523> elliott: oh, that's YouTube's fault, it randomly distorts numbers
19:54:11 <elliott> ais523: umm, are you sure
19:54:11 <oerjan> Phantom_Hoover: ...how old is the comment?
19:54:11 <ais523> /why/, I don't know
19:54:17 <Phantom_Hoover> 2 months.
19:54:27 <oerjan> Phantom_Hoover: bah
19:54:28 <elliott> ais523: probably to break spam links
19:54:35 <ais523> elliott: yes, I think that's the reason
19:54:40 <Ngevd> It's going to look stupid in two and a half months
19:54:42 <Phantom_Hoover> I don't know how it happened, but it cannot be a bad sign that YouTube comments have hit their nadir.
19:55:06 <oerjan> Phantom_Hoover: optimist!
19:55:32 <ais523> I've seen some great YouTube comments
19:55:35 <Phantom_Hoover> Ngevd, nah, then everyone'll reminisce about how 2011 was so much better than 2012, thumbs up if you agree.
19:55:39 <ais523> admittedly, most of them were self-parody
19:56:05 <oerjan> thumbs up if you have thumbs
19:56:13 <Phantom_Hoover> ais523, but they are far outweighed by the terrible ones and the ultra-blatant karma whoring, which is all the more hilarious given that YouTube doesn't even /have/ a karma system AFAIK.
19:56:19 <oerjan> (probably done)
19:56:52 <ais523> Phantom_Hoover: it indirectly does; having your comment in the "most popular comments" makes it more likely people will click on your username, deliberately or accidentally
19:56:58 <ais523> which then increases the number of views to your channel
19:57:05 <ais523> which indirectly increases the number of views to your videos
19:57:42 <elliott> Phantom_Hoover: To be fair, reddit barely has a karma system.
19:57:48 <elliott> Beyond extremes, it has literally no effect beyond being displayed.
19:58:02 <ais523> but it's a number! that goes up indefinitely!
19:58:17 <ais523> Slashdot's has a cap to try to stop people karma-whoring, but they do it anyway
19:58:20 <elliott> ais523: it can go down, too
19:58:27 <Phantom_Hoover> elliott, it is at least compiled into a single number.
19:58:28 <ais523> yes, but on average it goes up
19:58:32 <elliott> But one thing's for sure, Phantom_Hoover's will never, ever surpass mine.
19:58:40 <elliott> That is the Law of Karma.
19:58:40 <ais523> is yours currently positive?
19:58:48 <ais523> ISTR you have had comments at negative values before
19:58:52 <Phantom_Hoover> elliott, you know how I said it was over 2000 yesterday, it passed 2100 today.
19:59:01 <elliott> ais523: Yes, I have, but I've been around long enough that it's pretty high.
19:59:13 <elliott> (My comment karma is 6,233; my link karma is 1,769 and never changes because I never submit links.)
19:59:21 <Phantom_Hoover> ais523, in other news, stars not fallen, pope is still a catholic.
20:00:54 <Phantom_Hoover> ais523, haven't /you/ had comments at negative karma, despite having like 10?
20:01:13 <ais523> Phantom_Hoover: I thought all mine were on positives, but I'm not sure
20:01:22 <ais523> hey, how do you type smart quotes?
20:01:37 <ais523> compose-`` doesn't seem to work
20:01:43 <ais523> can you get them with altgr?
20:01:49 <elliott> ais523: {" and "} or something for compose
20:01:52 <elliott> grep the files
20:01:56 <elliott> you can get them with altgr but I never remember how
20:01:59 <Phantom_Hoover> sgeo has become a doctor who fan oh no
20:02:01 <ais523> ""
20:02:06 <ais523> seems to be {" }"
20:02:26 <ais523> wait, no
20:02:30 <ais523> that's just regular quotes
20:02:41 * Phantom_Hoover checks if ais' comments work when sorted by top, notes that they do not.
20:02:44 <ais523> aha, altgr-v altgr-b
20:02:45 <oerjan> Phantom_Hoover: well it should be old enough
20:03:01 <elliott> Phantom_Hoover: "Work"?
20:03:27 <Phantom_Hoover> elliott, mine didn't work when you sorted them that way, so it must be spreading.
20:03:37 <Phantom_Hoover> They just appear the same.
20:05:28 <ais523> you know what Evolution needs? a "mark as handled" flag
20:05:32 <ais523> a state more read than read
20:05:42 <elliott> ais523: that's called Archive
20:05:47 <elliott> (in all implementations I know of it)
20:06:00 <ais523> ah, hmm, that would remove it from my inbox
20:06:07 <elliott> ais523: yes, until someone sends another mail in that thread
20:06:08 <ais523> but I still like the chronological view of everything with no threading
20:06:19 <Phantom_Hoover> ais523, for a second I thought you were talking about biological evolution.
20:06:19 <elliott> well, that's what All Mail is for
20:06:21 <elliott> (or equivalent)
20:06:22 <ais523> wait, /thread/? this has to be per-message
20:06:27 <elliott> ais523: why?
20:06:33 <ais523> because I might have handled some messages in a thread but not others
20:06:48 <elliott> ais523: then it should be two threads
20:06:57 <ais523> elliott: tell that to the people /sending the emails/
20:07:21 <elliott> ais523: Well, it's not exactly burdensome to have a few additional messages visible until you handle them all.
20:07:31 <elliott> Unless you have pathological threads that constitute ten thousand things to handle.
20:07:32 <ais523> elliott: it's not to do with visibility
20:07:38 <ais523> it's to do with /knowing whether I've handled them/
20:07:47 <ais523> I don't care if they stay visible; in fact I want them to
20:07:55 <ais523> and in fact, most of the messages I care about flagging are all in the same thread
20:08:04 <elliott> <elliott> ais523: Well, it's not exactly burdensome to have a few additional messages not-marked-as-handled until you handle them all.
20:08:09 <elliott> Come on, assume a vaguely charitable interpretation.
20:08:11 <ais523> because students have a habit of just hitting "reply" to an arbitrary message authored by the right person
20:08:16 <ais523> elliott: I'm trying to handle each of them exactly ones
20:08:17 <ais523> *once
20:08:31 <elliott> I mean if it's thread-based.
20:08:43 <ais523> well, I don't want it to be thread-based
20:09:00 <elliott> I was just justifying it being thread-based. You're arguing like zzo.
20:09:00 <ais523> I generally find threading to be really awkward because it takes the messages out of chronological order
20:09:19 <ais523> and it's much easier to mentally reconstruct the threading (which is obvious from the content of the email) than the timing (which isn't)
20:38:45 -!- ais523 has quit (Remote host closed the connection).
20:44:40 <elliott> Nooo Programming in the 21st Century redesigned I cannot deal with change.
20:46:22 <oerjan> well go to Programming in the 20th Century, then
20:46:37 <elliott> :D
20:47:26 <Ngevd> Programming in the Seventeenth Century
20:47:47 * oerjan accidentally discovers there's a hexham in new south wales
20:48:09 <oerjan> while stalking LTDave from the iwc forum, no less
20:48:16 <Ngevd> There's one in Victoria too
20:49:57 <oerjan> (it's mentioned in the wikipedia page for the location on his profile)
20:50:52 <oerjan> it's only fair, since he was talking about stalking DMM
20:52:11 <oerjan> leibniz made a calculating machine about then, didn't he
20:52:22 <oerjan> (17th century)
20:54:31 <oerjan> "Hexham is a suburb of the city of Newcastle, about 15 kilometres (9 mi) inland from Newcastle in [...]"
20:55:08 <Ngevd> Very Liebniz
20:55:22 <elliott> oerjan: You're kidding me.
20:55:43 <Ngevd> http://maps.google.co.uk/maps?q=Hexham,+Victoria,+Australia&hl=en&ll=-37.996163,142.69043&spn=2.454485,5.410767&sll=53.800651,-4.064941&sspn=14.745606,43.286133&vpsrc=6&hnear=Hexham+Victoria,+Australia&t=m&z=8
20:56:06 <oerjan> elliott: it's a direct wikipedia quote.
20:56:10 <elliott> oerjan: I know augh.
20:56:19 <elliott> The mosquito species Ochlerotatus alternans is common in the area and adults, famed for their size and ferocity, are referred to as "Hexham Greys".[9] The most famous Hexham Grey is "Ossie the Mossie", (sometimes spelled as "Ozzie the Mozzie") a large model of a mosquito that sits atop the Hexham Bowling Club sign at the corner of the Pacific Highway and Old Maitland Road in Hexham.[10] The previous "Ossie" was replaced with a new "Ossie" (pictur
20:56:19 <elliott> ed) in 2005.[11] Ozzie disappeared from the sign in early February 2010 and was replaced in April 2010
20:56:58 -!- Patashu has joined.
20:57:06 <Ngevd> ...We have a bowling club
20:57:32 <Ngevd> There are two esolangers in Hexham
20:57:38 <Ngevd> There are three Hexhams in the world
20:57:57 <oerjan> mind you LTDave isn't actually from hexham, just close
20:58:06 <oerjan> afaict
20:58:10 <elliott> Ngevd: I refuse to believe that there are any esolangers in any other Hexhams of the world.
20:58:52 <elliott> Does anyone know how to ask Google Maps to tell me about all the Hexhams it knows?
20:58:55 <elliott> It knows at least three, after all.
20:59:06 <elliott> http://en.wikipedia.org/wiki/Hexham_(disambiguation) just lists us plus the two Australian towns.
20:59:12 <Ngevd> I think it's exactly thee
20:59:14 <Ngevd> *three
20:59:56 <elliott> Sigh. OK, who's going to go down there and ask them for their esolangers?
21:00:13 <Ngevd> I nominate itidus20
21:00:38 -!- Nisstyre has quit (Ping timeout: 248 seconds).
21:00:46 <oerjan> hm he hasn't been here in a while, has he?
21:01:01 <Ngevd> Future me wrote an IM in Feather
21:01:02 <elliott> Has he been here since Phantom_Hoover found those videos of him.
21:01:14 <oerjan> wat
21:01:31 <elliott> oerjan: he posted a YouTube video and PH looked at the other videos on the channel and that was when we found the glory of instant coffee.
21:03:10 <Phantom_Hoover> Oh man, the instant coffee.
21:06:41 -!- Nisstyre has joined.
21:16:25 -!- Ngevd has quit (Quit: I'm a cuboid!).
21:28:33 <elliott> oerjan: Hey, tell me why Data.Sequence doesn't export its finger tree implementation.
21:30:20 <oerjan> it's not quite generic, iirc it is specialized to Int weights
21:31:56 <oerjan> so it's more of a use case than a general finger tree
21:35:21 <CakeProphet> lol hi gaiz
21:35:59 <oerjan> i recall i tried genuine Data.FingerTree for http://oerjan.nvg.org/esoteric/Dupdog.hs
21:36:33 <oerjan> (i didn't like Int making it size limited.)
21:36:33 <Phantom_Hoover> http://www.ebay.com/itm/ZEISS-EM-109-ELECTRON-MICROSCOPE-COMPLETE-AND-GREAT-CONDITION-/280753510541?pt=LH_DefaultDomain_0&hash=item415e36988d
21:36:46 <CakeProphet> oerjan: lol dupdog.
21:36:48 <CakeProphet> best language.
21:36:52 <Phantom_Hoover> I live in a world where $500 is a reasonable price for an electron microscope what
21:37:07 <CakeProphet> I've considered creating a new language based on dupdog, but I have absolutely no idea how to make it interesting.
21:37:50 <CakeProphet> Pierogi are of an unknown origin. Myth has it that were invented in the kitchen of humble shoemaker Jonathan Hanigosky. He later died from choking on a rather large perogi.
21:39:13 <oerjan> i'm not convinced that haskell file could possibly compile, i'm using FingerTree unqualified...
21:39:57 <CakeProphet> I made some of these things today. I now desire more delicious eastern European food.
21:40:10 <CakeProphet> also, pierogi would be a good esolang. I think
21:40:20 <CakeProphet> (just to make this train of thought on topic, you know)
21:40:20 <oerjan> oh wait it's not imported qualified
21:40:27 <elliott> back
21:40:28 <Phantom_Hoover> Strax is a good name, but I lent it to elliott.
21:40:31 <elliott> <oerjan> it's not quite generic, iirc it is specialized to Int weights
21:40:35 <elliott> oerjan: yes but my weights are Ints :P
21:40:42 <elliott> http://hackage.haskell.org/packages/archive/fingertree/0.0.1.0/doc/html/Data-FingerTree.html has generic finger trees, but dammit I want the specialised version
21:41:14 <CakeProphet> elliott: couldn't you SPECIALISE it?
21:41:26 <CakeProphet> does Haskell also accept SPECIALIZE?
21:43:36 <CakeProphet> huh, so ruskie apparently means dumpling. But is also American slang for a Russian? wat?
21:44:07 <Phantom_Hoover> Russkie is slang for Russian.
21:44:45 <CakeProphet> ah okay
21:45:35 <CakeProphet> okay so... the question for improving upon the concept of dupdog is.
21:45:47 -!- Sgeo|web has joined.
21:45:49 <CakeProphet> what kinds of source code transformations can one do that resule in meaningful data / control flow changes.
21:45:50 <Sgeo|web> Ooooh http://hackage.haskell.org/trac/haskell-prime/wiki/TypeDirectedNameResolution
21:45:54 <CakeProphet> *result
21:45:58 -!- Nisstyre has quit (Ping timeout: 248 seconds).
21:46:44 <elliott> Sgeo|web: You don't even know Haskell, you have no right getting excited about proposals.
21:47:13 <CakeProphet> I think TypeDirectedNameResolution is kind of bad actually.
21:47:26 <Phantom_Hoover> elliott, he doesn't?
21:47:28 <Sgeo|web> I haven't read it yet, just the problem it's supposed to solve >.>
21:47:59 -!- Nisstyre has joined.
21:49:36 <elliott> Phantom_Hoover: He took about half an hour to write a program to concatenate the files named in the argument list.
21:50:01 <elliott> Phantom_Hoover: I haven't seen any indication that he's written any Haskell program that isn't hello world, either.
21:50:11 <Sgeo|web> elliott: I wrote a BF interpreter once
21:50:17 <Phantom_Hoover> elliott, so wait, even when he was a linguistic Casanova, he didn't bother to learn Haskell?
21:50:21 <elliott> Sgeo|web: You think you could replicate that?
21:50:33 <Phantom_Hoover> I haven't written a BF interpreter in Haskell.
21:50:45 <elliott> Phantom_Hoover: Every time I tell him to learn it instead of whatever he's considering he says he wants something he can use ~practically~ not something MEGA-MATHEMATICAL that would ~~blow his mind~~.
21:50:45 <Phantom_Hoover> I have actually tried, but I gave up.
21:50:48 <CakeProphet> mainly because it doesn't really change anything except for making qualified names a little more convenient via a OO-like syntax, and adds yet another usage for the . lexeme
21:50:56 <elliott> (If he objects to this I'll find a quote saying almost exactly that in the logs.)
21:51:04 <Phantom_Hoover> elliott, I fear you are going to fall into a well of ~s.
21:51:07 <elliott> oerjan: Anyway it still sucks that it isn't exported.
21:51:09 <elliott> Phantom_Hoover: ~~~~~~~~~~`````````
21:51:17 * Phantom_Hoover shoots elliott.
21:51:29 * CakeProphet has a bf interpreter.
21:51:33 <Sgeo|web> elliott: surely that's only for Ruby...
21:51:37 <Sgeo|web> That I said that
21:51:39 <CakeProphet> probably the only meaningful Haskell program I've written, honestly.
21:51:41 * Phantom_Hoover shoots CakeProphet's BF interpreter.
21:51:49 <CakeProphet> Phantom_Hoover: but but... it's so good.
21:52:02 <CakeProphet> actually it's probably not that great.
21:52:13 <CakeProphet> but it does use (wait for it) A ZIPPER
21:52:17 <Phantom_Hoover> CakeProphet, doesn't matter, you may now pick a random point in the file and put the word 'bullet' in it.
21:52:25 <CakeProphet> with.... HIGHER-ORDER FUCTIONS ON THE ZIPPER. -gasp-
21:52:31 <elliott> oerjan: are you sure that FingerTree isn't the one I linked to?
21:52:32 <elliott> in dupdog
21:52:44 <elliott> CakeProphet: A zipper is the obvious way to do a BF tape.
21:52:49 <CakeProphet> yes I know.
21:52:51 <CakeProphet> thus why I used it.
21:52:56 <CakeProphet> there is nothing extraordinary about the choice.
21:53:11 <oerjan> elliott: i would assume it is...
21:53:12 * Sgeo|web for some reason has the currently pointed value be separate from either list
21:53:24 <CakeProphet> Sgeo|web: hey so do I.
21:53:34 <elliott> oerjan: you said you wrote it
21:53:42 <oerjan> elliott: no i didn't
21:53:58 <elliott> oerjan: oh "i tried" ok
21:54:18 <CakeProphet> I would think that an efficient dupdog interpreter is actually somewhat difficult.
21:54:19 <elliott> oerjan: maybe I should just write my own finger trees
21:54:22 <CakeProphet> what with all the reversing and doubling.
21:54:36 <elliott> reversing just changes which end you index from.
21:54:52 <CakeProphet> ah yes you could use a bunch of state...
21:54:55 <oerjan> CakeProphet: my alternative idea would have been using ropes
21:54:58 <elliott> exactly one bit of state.
21:55:07 <elliott> oerjan: that's what _I'm_ trying to write
21:55:14 <elliott> oerjan: except ropes still have O(n) reversing
21:55:15 <CakeProphet> elliott: well no you can use state also for the character translations.
21:55:29 <oerjan> elliott: well of course with a direction bit
21:55:31 <CakeProphet> since I believe they rotate.
21:55:45 <Sgeo|web> Is there a functional data structure that has O(1) access to both ends and less efficient access in the middle?
21:55:58 <oerjan> Sgeo|web: yes, finger trees
21:56:00 <elliott> Sgeo|web: yes, finger trees
21:56:02 <elliott> aka Data.Sequence
21:56:05 <elliott> aka functional lists
21:56:11 <elliott> (list as in python list or whatever)
21:56:31 <CakeProphet> sort of.
21:56:32 <elliott> I kind of wish Seqs were lazy somehow :)
21:56:43 <CakeProphet> that sounds
21:56:46 <CakeProphet> counter-intuitive.
21:56:50 <CakeProphet> oh wait
21:56:53 <CakeProphet> I thought you meant seq
21:56:58 <CakeProphet> like some kind of weird Seq structure
21:57:06 <CakeProphet> nevermind. :P
21:57:44 <CakeProphet> elliott: how do you feel about TDNR?
21:58:17 <CakeProphet> it just kind of looks like a terrible hack to get some OO-style syntax to me.
21:58:27 <elliott> I've already argued with you about TDNR so don't.
21:58:38 <CakeProphet> oh you approve of it. okay.
21:58:56 <elliott> Never said that.
21:59:14 <CakeProphet> not much to argue about then if we agree....
21:59:39 <oerjan> elliott: i am wondering if Data.FingerTree is lazy enough for my Dupdog.hs to actually work efficiently on huge duplications
21:59:55 <oerjan> that was the intent of not using Int, but...
22:00:04 <CakeProphet> hmmmmmmmmmmmmm
22:01:05 <CakeProphet> I'm trying to figure how to make a loop entirely out of source code transformations.
22:01:26 <oerjan> to quine, or not to quine
22:01:58 <elliott> CakeProphet: see SMITH
22:02:45 <oerjan> incidentally, i don't think anyone has proved dupdog conclusively non-tc
22:02:59 <CakeProphet> ...I don't see how it could be TC.
22:03:12 <oerjan> ...that's not a proof >:P
22:03:16 <CakeProphet> well sure.
22:03:22 <elliott> CakeProphet: we said the same about ():^
22:03:35 <CakeProphet> that man has a nose on his forehead.
22:04:11 <CakeProphet> how does one prove something non-TC?
22:04:20 <elliott> tc xs [] = xs; tc xs (Push x:ps) = tc (x:xs) ps; tc (x:xs) (Dup:ps) = tc (x:x:xs) ps; tc (x:xs) (Call:ps) = tc (tc xs x) ps
22:04:22 <elliott> Turing-complete.
22:04:34 <elliott> (given data Ins = Push [Ins] | Dup | Call)
22:05:00 <CakeProphet> well there is technically unbounded memory in that you can just duplicate everything a lot.
22:05:08 <CakeProphet> as long as you want.
22:05:31 <elliott> CakeProphet: (My "tc" interpreter has been proved Turing-complete.)
22:05:37 <elliott> Well. It attempts to implement a language formally proven TC.
22:06:24 <CakeProphet> and then mfit-? is a conditional
22:06:28 <elliott> CakeProphet: Anyway, Dupdog has a way to make the program "larger", which is a kind of control structure, and it has a conditional.
22:06:37 <elliott> It also has another kind of control (reverse).
22:06:40 <CakeProphet> a no-op would probably be helpful for getting precise control.
22:07:04 <CakeProphet> but there are no no-ops. everything does something.
22:08:06 <elliott> oerjan: anyway I don't really want to use the fingertree package because (a) it uses fundeps in a way that should really be type families and (b) I bet it's less tuned than the Data.Sequence specialisation that would work for me :P
22:08:26 <elliott> oerjan: (I want to create a rope type based on a finger tree of UTF-8 bytestrings, because Text is disappointing in its internals)
22:10:56 * Phantom_Hoover → sleep
22:10:57 -!- Phantom_Hoover has quit (Quit: Leaving).
22:11:01 <oerjan> i'm not sure what operations ropes are supposed to have, in particular what you don't get from Seq
22:11:01 <CakeProphet> you should call them ElliottCables
22:11:24 <elliott> oerjan: Seq Char would give me the same operations, but be ridiculously inefficient
22:11:28 <elliott> oerjan: in terms of memory usage, at least
22:11:40 <elliott> oerjan: which is why ropes use packed arrays at the leaves
22:12:05 <oerjan> oh. so you actually _don't_ want Seq, because you don't want the default valuation of 1 for each leaf
22:12:05 <elliott> Obviously (Seq ByteString) doesn't work because the length of the ByteString (in _codepoints_ once decoded) contributes to length, indexing, etc.
22:12:45 <elliott> oerjan: Right.
22:13:11 <oerjan> so even if it _did_ export its data structure, it wouldn't help.
22:13:18 <elliott> oerjan: er are you sure
22:13:28 <elliott> class Sized a where
22:13:28 <elliott> size :: a -> Int
22:13:31 <elliott> --Data.Sequence source
22:13:40 <oerjan> huh
22:14:24 <oerjan> wtf did i have to let windows install an update right now
22:14:29 <elliott> I'm not actually sure what the
22:14:29 <elliott> data Digit a
22:14:29 <elliott> = One a
22:14:29 <elliott> | Two a a
22:14:31 <elliott> | Three a a a
22:14:33 <elliott> | Four a a a a
22:14:35 <elliott> thing is about though
22:14:47 <copumpkin> for fingertrees?
22:15:01 <oerjan> elliott: link to Data.Sequence source please
22:15:02 <copumpkin> read the fingertree paper
22:15:23 <elliott> copumpkin: I probably should, but I swear I've implemented them without that before :-P
22:15:27 <elliott> oerjan: http://www.haskell.org/ghc/docs/latest/html/libraries/containers/src/Data-Sequence.html
22:16:42 <oerjan> thanks
22:19:45 <oerjan> huh indeed the Elem type is what enforces size 1
22:22:57 <Patashu> Is it possible to fix shitty third party peripherals? I have a rock band drum kit that works perfectly...until you decide to play faster than 10 notes per second. Then it starts dropping taps, and if you go even faster it drops all of them.
22:23:08 <Patashu> Is this a problem that would be easy, hard or impossible to fix?
22:26:20 <elliott> oerjan: You should fix this problem in the next Haskell Report you write.
22:26:29 <oerjan> O KAY
22:27:15 <elliott> oerjan: Is it out yet.
22:30:35 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
22:30:45 <elliott> oerjan: Sheesh.
22:32:48 -!- sllide has quit (Read error: Connection reset by peer).
22:33:20 <elliott> -- > a = array (1,100) ((1,1) : [(i, i * a!(i-1)) | i <- [2..100]])
22:33:24 <elliott> huh, I had no idea that was valid
22:34:26 <oerjan> strict in the indices, lazy in the values
22:36:02 <Gregor> http://www.smbc-comics.com/index.php?id=2397 Troof
22:39:28 <elliott> fizzie: The Google Books data omit years in which there were no occurrences, right?
22:41:37 <CakeProphet> `runperl print (("buy new engine", "buy used car")[int(rand(2))])
22:41:39 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: runperl: not found
22:41:42 <CakeProphet> .......
22:41:43 <CakeProphet> :(
22:41:45 <CakeProphet> WHY
22:41:54 <CakeProphet> `haskell main = putStrLn "Hello, World!"
22:41:56 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: haskell: not found
22:41:57 <CakeProphet> WHYYYYYY
22:42:35 <Patashu> `run perl print (("buy new engine", "buy used car")[int(rand(2))])
22:42:37 <HackEgo> sh: -c: line 0: syntax error near unexpected token `(' \ sh: -c: line 0: `perl print (("buy new engine", "buy used car")[int(rand(2))])'
22:42:40 <Patashu> `run haskell main = putStrLn "Hello, World!"
22:42:43 <HackEgo> sh: haskell: command not found
22:43:26 <CakeProphet> elliott: needs improvement how?
22:43:36 <elliott> CakeProphet: See logs.
22:43:48 -!- EgoBot has joined.
22:43:54 <elliott> There we go; there's the improvement.
22:45:00 <CakeProphet> elliott: why not have it on HackEgo as well?
22:45:22 <olsner> Gregor: reminds me of http://www.vbs.tv/en-se/guidetosex/icelandic-elf-sex (the rest of the site might be a bit nsfw, but this video is safe)
22:45:32 <elliott> Because not only was it redundant and clutters the listing of bin, it was distinctly inferior in a number of ways, all of which are satisfied by HackEgo, but none of which I will list because I'm brbing this very second.
22:45:35 <CakeProphet> `run rm bin/runpython
22:45:37 <HackEgo> rm: cannot remove `bin/runpython': No such file or directory
22:45:49 <CakeProphet> elliott: inferior in what way.
22:45:49 <olsner> i.e. for some people, elves coming to fuck you in the night is considered a good thing
22:45:56 <elliott> CakeProphet: As I said, brbing.
22:46:14 <CakeProphet> elliott: inferior in what way. (when you get back, silly billy)
22:48:40 <CakeProphet> please yoursELF bahahahahaha
22:50:27 <CakeProphet> elf sperm is very shimmery.
22:50:51 -!- copumpkin has joined.
22:55:45 -!- nooga has joined.
22:59:50 -!- oerjan has quit (Quit: AAAAAAAAAAAAA).
23:04:51 -!- nooga has quit (Ping timeout: 255 seconds).
23:16:42 -!- Jafet has joined.
23:20:44 <Sgeo|web> Elves are terrific. They inspire terror.
23:21:01 <Sgeo|web> (I don't think that word is suppose to be "inspire", but I forget what it is)
23:21:10 <Sgeo|web> ANd also that quote ruined the word "terrific" for me
23:23:31 <elliott> hi
23:44:09 <Sgeo|web> hi
23:44:19 <monqy> hi
23:48:20 <CakeProphet> `run perl -e 'print (("get new engine", "get used car")[int(rand(2))])'
23:48:22 <HackEgo> get new engine
23:48:28 <CakeProphet> I solve the problems in my life pseudorandomly
23:49:20 <elliott> fizzie: Do you think I should just drop the lines with less than five grams?
23:49:32 <elliott> fizzie: There seem to be rather a lot of them:
23:49:34 <elliott> ("\"* The latter ",54)
23:49:36 <elliott> ("\"* Thus ",73)
23:49:43 <elliott> ("\"* that is ",75)
23:53:41 <elliott> CakeProphet: Hey, give me some Perl to print only the line after the line matching a regex.
23:54:18 <CakeProphet> so a remanufactured engine with 100k mile warranty is $2000, and will basically have my car running good as new for a few years. or I could get a used car for $3000-$6000 that may need lots of work or who knows what...
23:54:31 <CakeProphet> I think the engine is the better choice, even though people traditionally do not replace engines.
23:54:48 <CakeProphet> elliott: hmmm okay
23:55:10 <elliott> Also, move somewhere where cars are unnecessary.
23:55:31 <Jafet> Cars are unnecessary everywhere.
23:55:39 <CakeProphet> lol ^^
23:56:00 <CakeProphet> a car is vital to my everyday existence.
23:56:06 <elliott> Jafet: Not in the US.
23:56:08 <CakeProphet> hmmm
23:56:12 <CakeProphet> I'm trying to think of the best way to do this.
23:56:22 <shachaf> perl -ne 'print if $p;$p=0;$p=/regexp/'
23:56:28 <elliott> Thanks shachaf.
23:56:28 * shachaf doesn't know Perl.
23:56:34 <elliott> (I could have written that myself, but I didn't want to.)
23:56:39 <elliott> shachaf: I don't think = /regexp/ works.
23:56:41 <CakeProphet> er what
23:56:41 <elliott> Hmm, wait.
23:56:44 <elliott> Yes, it should.
23:56:51 <elliott> Since you can do "print if /.../".
23:56:58 <shachaf> That was my reasoning.
23:57:17 <CakeProphet> ....oh, yeah that's the easiest way I guess. lol
23:57:20 <elliott> ("\"",13007218)
23:57:20 <elliott> That would explain why there's a pause before it prints that line.
23:57:32 <shachaf> I don't even initialize the variable.
23:57:38 <shachaf> Because I don't know how to do that in Perl.
23:57:40 * CakeProphet is not in programming-mode currently.
23:57:44 <elliott> shachaf: BEGIN{...}
23:57:44 <CakeProphet> shachaf: you don't need to.
23:57:55 <shachaf> elliot: I like CakeProphet's solution.
23:58:06 <CakeProphet> the $p = 0 is also not necessary.
23:58:11 <CakeProphet> $p equals undef by default
23:58:13 <CakeProphet> which is false.
23:58:16 <shachaf> CakeProphet: It gets reset on every iteration?
23:58:22 <CakeProphet> oh really?
23:58:27 <shachaf> I asked first.
23:58:29 <CakeProphet> uh... are you sure.
23:58:32 <CakeProphet> I don't think so.
23:58:35 <shachaf> If it doesn't, then presumably the =0 is necessary.
23:58:40 <elliott> CakeProphet is wrong.
23:58:42 <elliott> shachaf is right.
23:58:45 <shachaf> Oh, wait.
23:58:50 * shachaf is wrong.
23:58:51 <elliott> If CakeProphet was right, it wouldn't work at all, because the variable would be reset every iteration.
23:58:52 <CakeProphet> why would it reset.
23:58:55 <elliott> It wouldn't.
23:58:58 <elliott> That's why shachaf is right.
23:59:01 <shachaf> CakeProphet is right.
23:59:01 <CakeProphet> that's what I was saying.
23:59:02 * shachaf is wrong.
23:59:04 <CakeProphet> it wouldn't reset.
23:59:13 <elliott> shachaf: How are you wrong?
23:59:16 <elliott> It worked, after all.
23:59:27 <shachaf> elliott: Right, but the $p=0 is unnecessary.
23:59:30 <CakeProphet> it's just that the $p=0 is unecessary not that he's wrong.
23:59:34 <shachaf> It was in fact just stupid.
23:59:39 <elliott> shachaf: Are you sure?
23:59:43 <elliott> It will stay true after the first line printed.
23:59:43 <shachaf> perl -ne 'print if $p;$p=/foo/'
23:59:45 <elliott> Oh, wait.
23:59:50 <elliott> This is why mutable variables suck.
23:59:51 <elliott> Anyway
23:59:52 <elliott> elliott@katia:~/Code/ngrams$ ls -lh googlebooks-eng-all-5gram-20090715-478.csv foo
23:59:52 <elliott> -rw-rw-r-- 1 elliott elliott 19M 2011-10-14 00:52 foo
23:59:53 <elliott> -rw-r--r-- 1 elliott elliott 936M 2010-12-25 00:03 googlebooks-eng-all-5gram-20090715-478.csv
23:59:54 <elliott> Same fucking data.
2011-10-14
00:00:00 <elliott> OK, so I eliminated the years.
00:00:02 <elliott> But come on.
00:00:10 <elliott> Who needs years; I need downloads that are a hundredth the size.
00:00:52 <CakeProphet> yeah my solution was going to involve splits and stuff as I didn't realize you wanted to read a file.
00:01:42 <CakeProphet> you could use pos, assuming the regex consumed all the way to the end of the line.
00:05:00 -!- derdon has quit (Remote host closed the connection).
00:06:24 <CakeProphet> `perl -e '$_ = "a\nb\nc\nd\n"; /b\n/; print ((split /\n/, substr $_, pos)[0])'
00:06:26 <HackEgo> No output.
00:06:29 <CakeProphet> :(
00:06:54 <CakeProphet> `perl -e '$_ = "a\nb\nc\nd\n"; /b\n/; print ((split /\n/, (substr $_, pos))[0])'
00:06:56 <HackEgo> No output.
00:07:01 <CakeProphet> :(:(
00:07:16 <CakeProphet> nevermind I don't know perl. :P
00:08:13 <CakeProphet> ah
00:08:21 <CakeProphet> `perl -e '$_ = "a\nb\nc\nd\n"; /b\n/g; print ((split /\n/, (substr $_, pos))[0])'
00:08:22 <HackEgo> No output.
00:08:24 <CakeProphet> ...
00:09:43 <CakeProphet> but yeah pos SCALAR gives you the offset where the last match ended on that scalar.
00:10:07 <CakeProphet> for /.../g matches only I think. But you can also use it inside of the regex itself to grab indexes
00:11:48 -!- DH____ has joined.
00:12:00 <elliott> elliott@katia:~/Code/ngrams$ ./degrade googlebooks-eng-all-5gram-20090715-478.csv | wc -l
00:12:00 <elliott> 114446
00:12:00 <elliott> elliott@katia:~/Code/ngrams$ wc -l foo
00:12:00 <elliott> 622074 foo
00:12:00 <CakeProphet> `run perl -e '$_="abcdef"; /?{print pos}a?{print pos}b?{print pos}c?{print pos}d?{print pos}e?{print pos}f?{print pos}/;'
00:12:02 <HackEgo> Quantifier follows nothing in regex; marked by <-- HERE in m/? <-- HERE {print pos}a?{print pos}b?{print pos}c?{print pos}d?{print pos}e?{print pos}f?{print pos}/ at -e line 1.
00:12:19 <elliott> fizzie: Degrade was hooked up, there, to print only n-grams that aren't five long. 114446 out of 622074 is very surprising. Do you have any idea why this might be the case?
00:12:43 <CakeProphet> `run perl -e '$_="abcdef"; /(?{print pos})a(?{print pos})b(?{print pos})c(?{print pos})d(?{print pos})e(?{print pos})f(?{print pos})/;'
00:12:45 <HackEgo> 0123456
00:14:34 <CakeProphet> `run perl -e '$_="abcdef"; /abc(?{pos})def/; print $^R;'
00:14:36 <HackEgo> 3
00:18:13 <CakeProphet> `run perl -e '$_="abcdef"; /b/; print ${^POSTMATCH};'
00:18:15 <HackEgo> No output.
00:18:54 <CakeProphet> `run perl -e '$_="abcdef"; /b/p; print ${^POSTMATCH};'
00:18:56 <HackEgo> cdef
00:20:13 <CakeProphet> `run perl -e '$_="abcdef"; /b/p; $_ = ${^POSTMATCH}; /\n/p; print ${^PREMATCH};'
00:20:15 <HackEgo> a
00:20:18 <CakeProphet> er no
00:21:12 <CakeProphet> `run perl -e '$_="a\nb\nc\nd\ne\nf\n"; /b\n/p; $_ = ${^POSTMATCH}; /\n/p; print ${^PREMATCH};'
00:21:14 <HackEgo> c
00:21:32 <CakeProphet> obviously the best solution.
00:25:53 -!- DH____ has quit (Read error: Connection reset by peer).
00:26:03 -!- DH____ has joined.
00:29:59 <elliott> elliott@katia:~/Code/ngrams$ ./degrade googlebooks-eng-all-5gram-20090715-478.csv | wc -l
00:29:59 <elliott> 77362
00:29:59 <elliott> elliott@katia:~/Code/ngrams$ wc -l foo
00:29:59 <elliott> 622074 foo
00:30:02 <elliott> OK, that's slightly better...
00:30:23 -!- DH____ has quit (Read error: Connection reset by peer).
00:41:54 <CakeProphet> `run perl -e 'sub partition($$) { ($r, $_) = @_; /$r/p; (${^PREMATCH}, ${^POSTMATCH})} print scalar (partition qr/\n/, (partition(qr/b\n/, "a\nb\nc\nd\ne\nf\n")[0]));
00:41:56 <HackEgo> sh: -c: line 0: unexpected EOF while looking for matching `'' \ sh: -c: line 1: syntax error: unexpected end of file
00:42:01 <CakeProphet> `run perl -e 'sub partition($$) { ($r, $_) = @_; /$r/p; (${^PREMATCH}, ${^POSTMATCH})} print scalar (partition qr/\n/, (partition(qr/b\n/, "a\nb\nc\nd\ne\nf\n")[0]));'
00:42:03 <HackEgo> syntax error at -e line 1, near ")[" \ Execution of -e aborted due to compilation errors.
00:42:07 <CakeProphet> eh
00:42:08 <CakeProphet> oh well
00:43:12 <CakeProphet> `run perl -e 'sub partition($$) { ($r, $_) = @_; /$r/p; (${^PREMATCH}, ${^POSTMATCH})} print scalar (partition qr/\n/, ((partition qr/b\n/, "a\nb\nc\nd\ne\nf\n")[0]));'
00:43:14 <HackEgo> No output.
00:43:33 <elliott> elliott@katia:~/Code/ngrams$ grep ' ' googlebooks-eng-all-5gram-20090715-478.csv
00:43:34 <elliott> elliott@katia:~/Code/ngrams$
00:43:34 <elliott> Aha -- I can just pad it out.
00:43:43 <CakeProphet> elliott: what are you trying to do, sir?
00:43:55 <elliott> Write degrade/intern/gentry.
00:44:39 <Jafet> Write degrade sounds like what's happening to your data drive
00:52:16 -!- Jafet has quit (Quit: Leaving.).
00:53:34 <elliott> Aw fuck, I missed the Atlas Shrugged film
00:53:39 <elliott> I bet it was comedy of the year :(
01:18:20 <elliott> http://www.brainyquote.com/quotes/authors/d/dennis_ritchie.html
01:18:22 <elliott> Best automated quote database
01:18:25 <elliott> A new release of Plan 9 happened in June, and at about the same time a new release of the Inferno system, which began here, was announced by Vita Nuova.
01:18:25 <elliott> Dennis Ritchie
01:18:28 <elliott> Inspiring words.
01:25:55 -!- augur_ has joined.
01:26:49 -!- augur has quit (Read error: Connection reset by peer).
01:29:40 <elliott> Dammit that fizzie bastard needs to wake up to help.
01:35:07 <elliott> splitTab Ngram 107 93448818 21.4 28.3 21.4 28.3
01:35:09 <elliott> WHY IS THIS MY BOTTLENECK
01:41:44 <elliott> WHAT THE FUCK HOW CAN MAKING IT USE THE UNSAFE VARIANTS SLOW IT DOWN
01:42:37 -!- ive has joined.
01:50:58 <Sgeo|web> The mathematics department at my school has a problem solving competition
01:51:08 <Sgeo|web> The problem here in front of me is laughably trivial.
01:51:22 <Sgeo|web> However, I don't want to state it here at this point
01:58:23 <elliott> WHY WOULD YOU RECOMPILE THE LIBRARY
01:58:32 <elliott> SKJGLKFGHKSDGH
02:01:28 * Sgeo|web recompiles elliott.
02:03:18 <monqy> sgeo.........
02:04:58 <Sgeo|web> monquy.........
02:06:37 <elliott> hi monqy
02:06:41 <elliott> Sgeo|web: his name is monqy
02:07:49 <Sgeo|web> elliott: I am aware of this, and still thing calling him "monquy" is marginally humorous
02:07:55 <elliott> no
02:07:56 <elliott> that is
02:07:58 <elliott> impolite
02:08:03 <elliott> you are a Bad Person
02:10:59 <CakeProphet> whutev elriolttl
02:11:39 <shachaf> elliott: Am I a Bad Person?
02:11:46 <elliott> Yes.
02:12:54 <CakeProphet> elliott: am I a Bad Person?
02:13:00 <CakeProphet> CakeProphet: am I a Bad Person?
02:13:15 <CakeProphet> fungot: am I a Bad PErson?
02:13:15 <fungot> CakeProphet: ( c) a player who makes further play impossible by eir actions or lack thereof, or
02:13:30 <CakeProphet> fungot: am I a ( c) player?
02:13:30 <fungot> CakeProphet: " so that the text box in a post a while it was frustrating. they have no parents ( awwww)
02:13:49 <CakeProphet> fungot: am I a orphan ( awwww)
02:13:49 <fungot> CakeProphet: " and this is a new game. there is no longer the wand the better part made mercie, i should think at least, that is expressions which have not been able, to assume responsibilities. he went on, " the conclusion is, then thou, the greatest soldier, de. she wanna be friends, his state vsurp'd, his realme a slaughter-house, his subjects, the european council decided at its meeting on 30 april, or even this very diffic
02:14:18 -!- tiffany has quit (Quit: Leaving).
02:15:53 <Sgeo|web> hi eliot
02:16:25 -!- TeruFSX has quit (Read error: Connection reset by peer).
02:20:59 <monqy> hi
02:21:08 <CakeProphet> yqnom
02:21:22 <CakeProphet> mqnoy
02:21:33 <CakeProphet> yonqm
02:21:51 <monqy> hi
02:23:23 <CakeProphet> learning Django.
02:23:25 <CakeProphet> fun times.
02:23:42 <monqy> why are you learning django
02:23:54 <monqy> whatever the reason: bad
02:23:57 <CakeProphet> monqy: work
02:23:59 <monqy> oh
02:24:16 <monqy> well work's bad then ;_;
02:24:24 <monqy> nobody should have to do web stuff
02:24:33 <monqy> because im bias against it
02:25:33 <CakeProphet> lol
02:25:34 <CakeProphet> okay.
02:25:54 <elliott> Now THIS is annoying.
02:26:07 <CakeProphet> hmmm I wonder where my word generator is infinitely looping and consuming lots of memory.
02:26:18 <CakeProphet> TO THE DEBUGER
02:28:11 -!- pikhq_ has joined.
02:29:41 <CakeProphet> what perls debugger makes no sense
02:30:12 <monqy> what did you expect
02:31:01 -!- pikhq has quit (Ping timeout: 252 seconds).
02:31:22 <CakeProphet> I mean I can't give it commands.
02:31:39 <monqy> perl takes no orders
02:33:52 <elliott> X-D
02:37:55 -!- Sgeo|web has quit (Ping timeout: 252 seconds).
02:42:27 <CakeProphet> oh it just takes a long time to start.
02:45:56 <CakeProphet> uh... what
02:46:15 <CakeProphet> help I'm afraid of mutable state now.
02:47:29 <Gregor> OK folks, I'm updating the Debian under HackEgo. Watch for falling rocks.
02:48:26 <CakeProphet> so $default_dataset equals "eng-1M"
02:48:31 <CakeProphet> until suddenly, I get to this line
02:48:40 <CakeProphet> %grams = %{$data->{$default_dataset}} unless %datasets;
02:49:06 <CakeProphet> and then I get an undefined hashref error and $default_dataset is suddenly undef...
02:49:51 <CakeProphet> makes no sense...
02:52:13 <elliott> ?hoogle appPrec
02:52:13 <lambdabot> Language.Haskell.TH.Ppr appPrec :: Precedence
02:53:25 -!- MichaelBurge has joined.
02:56:01 <CakeProphet> http://pastebin.com/w4QHZ0gt
02:56:03 <CakeProphet> look at this nonsense.
02:57:13 <CakeProphet> DB<15> print $data->{"eng-1M"}
02:57:13 <CakeProphet> HASH(0x7f080ca75720)
02:57:53 -!- SgeoN1 has joined.
02:58:19 <SgeoN1> sudo apt-get install haskell-platform
02:58:49 <elliott> SgeoN1: No.
02:58:57 <elliott> SgeoN1: You absolutely do not want your distro's Haskell Platform.
02:59:12 <SgeoN1> o.O
02:59:39 <elliott> See http://www.vex.net/~trebla/haskell/sicp.xhtml for why.
02:59:44 <SgeoN1> Not even for a stupid simple palindrome counter?
02:59:49 <elliott> Most likely, you don't even want your distro GHC; but you definitely don't want your distro's Haskell Platform.
02:59:57 <elliott> [asterisk]distro's
03:02:59 <elliott> SgeoN1: What are you doing with a palindrome counter, anyway?
03:04:23 <SgeoN1> Checking that my solution to my school's math problem is correct.
03:04:44 <elliott> a math problem involving counting palindromes?
03:04:50 <elliott> are you _sure_ you're not in pre-school?
03:04:53 <SgeoN1> Article says starting off installing from district, then permanently switching to cabal should be safe...
03:05:13 <SgeoN1> Distro
03:05:30 <elliott> Just install the ghc package.
03:05:36 <elliott> You are unlikely to need anything from the platform for a palindrome checker.
03:06:03 <Gregor> `ls
03:06:13 <SgeoN1> I do want to play with yasod at some point
03:06:18 <Gregor> Oh nice -n10. Why you gotta.
03:06:23 <SgeoN1> >.>
03:06:41 <monqy> haskell platform, a yasod necessity
03:06:44 <elliott> SgeoN1: Yesod. And when you do that, you will download a GHC binary package, install it, and then a Haskell Platform source tarball, and tell it to bootstrap.
03:07:42 -!- HackEgo has quit (Remote host closed the connection).
03:07:42 <SgeoN1> This Linux system isn't long for this world anyway.
03:07:53 -!- HackEgo has joined.
03:08:04 <elliott> `ls
03:08:07 <HackEgo> bin \ canary \ karma \ lib \ paste \ quotes \ share \ wisdom
03:08:08 <HackEgo> Failed to record changes.
03:08:11 <elliott> Gregor: Nice
03:08:30 -!- Jafet has joined.
03:08:35 <Gregor> elliott: I'm aware, gimme a sec here.
03:08:52 * elliott should really get to actually writing his transactional HackEgo system.
03:08:57 <elliott> It would be far superior :P
03:09:45 <SgeoN1> Elliott, it's lightning so scary hexadecimal numbers
03:09:57 <SgeoN1> And by lightning I mean oohh
03:10:10 <elliott> SgeoN1: What the fuck.
03:10:13 <SgeoN1> And this thing insists on capsing you
03:10:22 <elliott> shachaf: I've already tried to convert desaiu to LYAH, don't bother, he's determined to waste his time with YAHT :P
03:10:41 <Gregor> Hm, looks like hg commit with no changes used to return 0, now it returns 1.
03:10:42 <shachaf> elliott: I know, so have I.
03:10:49 <shachaf> he comes to #haskell every day and asks about YAHT, and keeps being told not to use it.
03:10:53 <shachaf> s/./H/
03:11:17 <Gregor> There we go, Debian upgrade complete.
03:11:23 <elliott> shachaf: He seems to find it patronising. (I find his questions that demonstrate a lack of even basic knowledge in the language thanks to his use of a bad tutorial patronising.)
03:11:44 <elliott> `ls
03:11:46 <HackEgo> bin \ canary \ karma \ lib \ paste \ quotes \ share \ wisdom
03:11:53 <shachaf> elliott: Yep.
03:12:07 <elliott> shachaf: Oh well, it's not like #haskell isn't always clogged.
03:12:09 <shachaf> We need LYAH-without-pretty-pictures.
03:12:11 <elliott> clog: Sup.
03:12:19 <SgeoN1> Why is libstdc++ stuff being installed?
03:12:21 <elliott> shachaf: Learn Serious Haskell
03:12:28 <elliott> SgeoN1: Probably build-essential.
03:12:42 <elliott> shachaf: Cause Yourself To Learn Haskell, Yielding Great Advantages
03:12:51 <shachaf> Learn Haskell Without Cutesy Grammatical Errors
03:13:19 <elliott> Real World Haskell-- wait.
03:14:08 <elliott> ?hoogle catEithers
03:14:09 <lambdabot> No results found
03:14:10 <elliott> ?hoogle catRights
03:14:11 <lambdabot> No results found
03:14:12 <shachaf> @karma Haskell
03:14:12 <lambdabot> Haskell has a karma of 62
03:14:14 <shachaf> Haskell++
03:14:16 <elliott> ?hoogle [Either a b] -> [b]
03:14:17 <lambdabot> Data.Either rights :: [Either a b] -> [b]
03:14:17 <lambdabot> Data.Either lefts :: [Either a b] -> [a]
03:14:17 <lambdabot> Data.Graph.Inductive.Graph nodes :: Graph gr => gr a b -> [Node]
03:14:19 <elliott> Ah, rights.
03:14:27 * shachaf catches elliott red-handed.
03:14:28 <elliott> ?hoogle fromRight
03:14:28 <lambdabot> No results found
03:14:30 <elliott> Awww.
03:14:35 <elliott> ?hoogle Either a b -> b
03:14:35 <lambdabot> Data.Either rights :: [Either a b] -> [b]
03:14:35 <lambdabot> Data.Typeable typeOf2 :: Typeable2 t => t a b -> TypeRep
03:14:35 <lambdabot> Prelude either :: (a -> c) -> (b -> c) -> Either a b -> c
03:14:38 <elliott> Hmph.
03:14:50 <shachaf> evilFromRight
03:15:31 -!- Slereah_ has quit (Ping timeout: 240 seconds).
03:16:20 -!- Slereah_ has joined.
03:16:45 <elliott> shachaf: It's not my fault all these functions can fail.
03:16:54 <elliott> Don't they know that the data-set is perfect?
03:17:22 <shachaf> elliott: let Right x = blahBlahReturnsEither
03:18:09 <shachaf> elliott: As a bonus, that gives you an actual semi-helpful error if the pattern-match fails.
03:18:20 <elliott> shachaf: Yeah yeah but I need to map it.
03:18:23 <elliott> (\(Right x) -> x) is ugly.
03:19:21 <CakeProphet> wow perl debugger is bad
03:19:21 <shachaf> @let wrong (Right x) = x
03:19:22 <lambdabot> Defined.
03:19:26 <shachaf> elliott: Use that.
03:19:30 <elliott> Heh.
03:19:32 <shachaf> At least it's appropriately named.
03:19:43 <elliott> CakeProphet: Perl's debugger makes a half-decent REPL.
03:19:51 <shachaf> Much like Spolsky's Wrong.html.
03:20:51 <SgeoN1> I already Google's this, but didn't find it
03:20:52 <elliott> shachaf: Isn't that the pro-Hungarian-notation-but-/actually/-he-wants-a-strong-type-system one?
03:20:54 <elliott> (Okay, I googled.)
03:20:58 <shachaf> elliott: Yep.
03:21:23 <shachaf> «Somebody, somewhere, read Simonyi’s paper, where he used the word “type,” and thought he meant type, like class, like in a type system, like the type checking that the compiler does. He did not. He explained very carefully exactly what he meant by the word “type,” but it didn’t help. The damage was done.»
03:22:18 <SgeoN1> @hoogle (f->a->a->b)->a->b
03:22:19 <lambdabot> Data.Map foldWithKey :: (k -> a -> b -> b) -> b -> Map k a -> b
03:22:19 <lambdabot> Data.IntMap foldWithKey :: (Key -> a -> b -> b) -> b -> IntMap a -> b
03:22:19 <lambdabot> Control.Applicative liftA3 :: Applicative f => (a -> b -> c -> d) -> f a -> f b -> f c -> f d
03:22:50 <SgeoN1> I probably won't actually use it, but still
03:23:36 <Gregor> elliott: So now that Debian is pseudo-semi-up-to-date, what should I install?
03:24:18 <Jafet> Gregor: sid?
03:24:58 <Gregor> Jafet: Naw, using stable under HackEgo, but it was lenny before for historical/hysterical reasons.
03:25:39 <Jafet> Isn't lenny stable?
03:25:48 <Gregor> squeeze. lenny is oldstable.
03:26:02 <elliott> Gregor: Does ghc still work?
03:26:03 <Jafet> I always use sid, so I'm behind on old technology.
03:26:09 <Gregor> `ghc
03:26:16 <elliott> Jafet: You would run sid on a server?
03:26:21 <HackEgo> ghc: no input files \ Usage: For basic information, try the `--help' option.
03:26:29 <Jafet> Uh, probably.
03:26:35 <elliott> Jafet: Responsible.
03:26:39 <elliott> (testing I could understand.)
03:26:55 <Gregor> Jafet: I always use sid locally, testing for servers, stable for places where it's unimportant or I have reason to want long-term consistency *shrugs*
03:26:55 <Jafet> I've never run an important server.
03:27:14 <Jafet> Even sid is fairly consistent these days.
03:27:36 <elliott> When are Debian gonna transition to rolling-release as their main release already?
03:27:47 <Jafet> It's called sid!
03:27:52 <Gregor> Yup :P
03:27:53 <elliott> FSVO main.
03:28:05 <pikhq_> elliott: Same day they switch to Portage.
03:28:06 <pikhq_> :P
03:28:11 <Jafet> And I'll just suppose it's their main release.
03:28:15 <elliott> pikhq_: I thought you said there were possible plans.
03:28:23 <pikhq_> elliott: Yes, yes, I'm just joking.
03:28:26 <elliott> :p
03:28:30 <shachaf> The Potato Has Landed.
03:28:48 <Gregor> shachaf: And here I thought Jafet was out of date :P
03:28:50 <pikhq_> There's a few prominent developers who *really* want a rolling release, and nobody is really against it.
03:29:01 <Gregor> I had an m68k mac that ran potato ...
03:29:03 <shachaf> Gregor: You have a problem with potatoes?
03:29:12 * shachaf never ran Potato.
03:29:18 <shachaf> I ran RedHat 5.2, though.
03:29:43 <pikhq_> I was 10 when Potato came out.
03:29:57 <Gregor> I was a potato when the number 10 was invented.
03:30:01 <pikhq_> I did use woody, though.
03:30:21 <shachaf> Sure, everyone ran Woody.
03:30:32 <pikhq_> When it was still vaguely current.
03:30:43 <shachaf> Right.
03:30:54 <elliott> When was woody again?
03:30:57 * shachaf recalls Linux 2.4.20 with fondness.
03:31:03 <pikhq_> elliott: 2002-2005
03:31:13 <elliott> Strange that they took so long to get to such a main name. :p
03:31:15 * Gregor recalls Linux 2 with nostalgia :P
03:31:18 <elliott> When was buzz again? X-D
03:31:27 <elliott> Gregor: .0?
03:31:27 <pikhq_> 1996.
03:31:35 <elliott> Gregor: The one Raymond Chen wrote the config script for? :-)
03:31:42 * elliott will never get over that.
03:31:46 <Gregor> elliott: No, 2.*
03:31:49 <elliott> Pah :P
03:32:19 <Gregor> I should update Hackiki to use UMLBox ...
03:33:00 <CakeProphet> okay yeah so my word data module takes a very long time to load.
03:33:03 * shachaf looks for "The Potato Has Landed" images and fails to find any.
03:33:37 <CakeProphet> elliott: #perl is saying that gdb does not let you poke around in the symbol table after program termination.
03:33:41 <CakeProphet> but.... I'm pretty sure it can.
03:33:44 <CakeProphet> since I've used that feature of it.
03:33:46 <CakeProphet> many times.
03:34:18 <elliott> I think it can too, but probably they're using some pedantic interpretation by which it is not true.
03:34:27 <CakeProphet> okay so then perl -d is just bad
03:34:33 <CakeProphet> and that's why I got in an argument with these people
03:34:38 <CakeProphet> because I was assuming perl -d was quality software.
03:34:41 <CakeProphet> my mistake.
03:35:10 <elliott> Why are you trying to use a debugger on a language that isn't C?
03:35:42 <CakeProphet> dunno I should just be breadcrumbing.
03:35:55 <CakeProphet> and not asking #perl questions because they're rude.
03:38:47 <elliott> Breadcrumbing?
03:38:59 <monqy> breadcrumbing
03:39:34 <CakeProphet> ....you've never heard that used before?
03:40:04 <CakeProphet> a breadcrumb is a print statement thrown in somewhere to print out the value of some datum
03:40:21 <CakeProphet> the most ancient and sophsticated form of debugging.
03:40:41 <elliott> that's called printf debugging.
03:40:44 <elliott> nobody calls it that.
03:41:41 <shachaf> I'm pretty sure the name "printf debugging" was independently invented dozens of times.
03:42:23 <elliott> And the name "breadcrumbing" once, by CakeProphet :P
03:42:46 <shachaf> It's called printf debugging even in languages that don't have printf.
03:43:29 <CakeProphet> dude I totally got breadcrumb from a different source
03:47:06 <Jafet> Every language that doesn't already have printf is doomed to reinvent printf.
03:48:19 <elliott> Jafet: Even OCaml; even though they had to add special support to the compiler for it.
03:49:28 <SgeoN1> Haskell has trace for that exact reason
03:49:49 <SgeoN1> Using Haskell printf for printf debugging is stupid
03:50:43 <SgeoN1> HTTP://hpaste.org/52603
03:52:11 <Jafet> You can use printf and trace!
03:54:24 <elliott> SgeoN1: Unnecessary parenthesisation of RHS of (==); missing spaces around (->).
03:54:32 <elliott> "Show a" constraint on palindrome is redundant.
03:54:43 <elliott> You are not experienced enough to have a moral objection to length; remove import, use of genericLength.
03:55:04 <elliott> Also, palindrome should be of type (Eq a) => [a] -> Bool, and composed with hex at filter-time.
03:55:06 <shachaf> There needs to be a genericLength' that uses foldl'
03:55:38 <elliott> Also, s/num/n/.
03:55:51 * elliott also doubts you need hat Data.Char import.
03:55:53 <shachaf> elliott: Oh, come on!
03:55:54 <elliott> s/hat/that/
03:56:07 <shachaf> elliott: Not everyone needs to use one-letter identifiers for everything.
03:56:17 <elliott> shachaf: "num" is ridiculous.
03:56:23 <shachaf> number
03:56:35 <elliott> Acceptable, but I'll point and laugh at you like a three year-old.
03:56:40 -!- Jafet has quit (Quit: Leaving.).
03:56:46 <elliott> SgeoN1: Also, do not use chains of ($); use (.) instead.
03:57:05 <elliott> SgeoN1: In conclusion: http://hpaste.org/52603
03:57:18 <elliott> SgeoN1: Also, dude, use showHex.
03:57:39 <SgeoN1> If I was aware there was a showHex function...
03:57:43 <elliott> http://hpaste.org/52605
03:57:49 <elliott> SgeoN1: It's in the SO post you linked, for chrissakes.
03:58:24 <shachaf> genericLength is horrible if you just want an Int.
03:58:36 <elliott> That defaults to Integer, but his list is manifestly within Int bounds.
03:58:41 <shachaf> > length [1..1000000]
03:58:42 <lambdabot> 1000000
03:58:43 <shachaf> > genericLength [1..1000000]
03:58:44 <lambdabot> *Exception: stack overflow
03:59:12 <elliott> SgeoN1: So, since you're anti-length: Let's assume a language without all the nasty historical warts; length returns any Num or Integral or whatever, no monomorphism restriction like most people want, etc.
03:59:20 <elliott> SgeoN1: let n = genericLength xs in (n,n)
03:59:31 <elliott> SgeoN1: How many times can forcing the result of this expression traverse xs?
03:59:33 <SgeoN1> I only looked at the accepted answer... admittedly, that can be really stupid for SO
03:59:37 <elliott> It was not accepted.
03:59:39 <elliott> There was no accepted answer.
03:59:45 <elliott> Now, get on that riddle. :p
03:59:52 <shachaf> elliott: -XYesMonomorphismRestriction
04:00:20 <elliott> SgeoN1: And no googling.
04:00:25 <shachaf> -XMoreMonomorphismRestriction
04:00:32 <shachaf> -XMonoMorephismRestriction
04:00:40 <SgeoN1> One, assuming that the compiler can optimize one of the more well known facts of Haskell...
04:00:47 <elliott> SgeoN1: You get NOTHING! You LOSE! Good DAY sir
04:00:52 <elliott> SgeoN1: It can traverse xs up to TWO times.
04:01:02 <elliott> SgeoN1: Now remove that import and s/genericLength/length/ until you know what you're doing.
04:01:02 <shachaf> elliott: Huh? No.
04:01:05 <SgeoN1> ...why?
04:01:06 <elliott> shachaf: Yes, it can.
04:01:08 <shachaf> It can traverse xs as many times as it wants.
04:01:10 <elliott> Well, yes.
04:01:18 <elliott> But you know what I mean.
04:01:20 <elliott> SgeoN1: :: (Int, Integer)
04:01:21 <shachaf> Good DAY, sir.
04:01:30 <elliott> shachaf: Shut up, it's my /job/ to be a jerk to SgeoN1.
04:01:37 * shachaf was being a jerk to you.
04:01:42 <elliott> True.
04:01:45 <elliott> I'll allow it.
04:02:03 <shachaf> Oh, wait. I read that as "/my/ job", not "my /job/".
04:02:11 <elliott> I like Timwi's big red notice: http://esolangs.org/wiki/Programming_Languages_Glossary
04:02:25 <SgeoN1> I mean, I already have my answer, which agrees with what I did by math
04:03:52 <CakeProphet> elliott: help fast way to prepend something to a file.
04:03:53 <elliott> :t foldM
04:03:54 <lambdabot> forall a b (m :: * -> *). (Monad m) => (a -> b -> m a) -> a -> [b] -> m a
04:04:39 <elliott> CakeProphet: Uhh... fopen r+?
04:04:56 <shachaf> elliott: The foldr/foldl issue is at least as big as the recomputation issue.
04:05:19 <elliott> shachaf: Yes, that too. But I'm not sure SgeoN1 actually knows why a stack overflow would happen, and it's easier to shock with the recomputation problem.
04:05:21 <monqy> CakeProphet: append reversed something to reversed file, reverse file
04:05:37 <shachaf> elliott: Right, but it's easier to demonstrate.
04:05:38 <elliott> shachaf: I still can't get over conal's length xs /= length (map f xs) thing.
04:05:40 <shachaf> As I did above.
04:05:47 <shachaf> elliott: What's conal's thing?
04:05:52 <CakeProphet> monqy: help quick way to reverse a file.
04:05:57 <elliott> shachaf: Lemme check.
04:06:01 <elliott> CakeProphet: I told you how.
04:06:03 <monqy> read entire file, reverse it like so
04:06:10 <shachaf> I trust that you would know, being conal.
04:06:29 <elliott> @let foo = [1,3..10]
04:06:30 <lambdabot> Defined.
04:06:31 <elliott> > (length foo, length (map (/10) foo))
04:06:33 <lambdabot> (5,6)
04:06:34 <elliott> shachaf: Behold.
04:06:46 <shachaf> :-(
04:06:59 * shachaf sad
04:07:06 <shachaf> That's a level below mad, just so you know.
04:07:12 <elliott> ??? -> sad -> mad -> ???
04:07:25 <shachaf> I mean "below" as in "worse".
04:07:32 <monqy> ... -> sad -> mad -> sad -> mad -> sad -> mad -> sad -> mad -> ...
04:07:34 <elliott> Oh. Yikes.
04:07:48 <monqy> shachaf cycle
04:07:53 <shachaf> > map (/10) foo
04:07:55 <lambdabot> [0.1,0.3,0.5,0.7,0.9,1.1]
04:07:59 <shachaf> > foo
04:08:01 <lambdabot> [1,3,5,7,9]
04:08:02 <elliott> > foo :: [Double]
04:08:03 <lambdabot> [1.0,3.0,5.0,7.0,9.0,11.0]
04:08:06 <elliott> :t (/)
04:08:07 <lambdabot> forall a. (Fractional a) => a -> a -> a
04:08:12 * shachaf sighs.
04:08:26 <elliott> shachaf: It's the "let's be ridiculous and allow going over half the step because of floating-point inaccuracy issues" thing.
04:08:34 <elliott> I like how that list doesn't actually contain ten-point-anything.
04:08:39 <elliott> Well, it contains ten point nine recurring.
04:08:49 <shachaf> Stupid floating points.
04:08:52 <shachaf> Stupid computers.
04:08:56 * shachaf gives up on computers.
04:08:59 <elliott> > foo :: [Rational]
04:09:00 <lambdabot> [1 % 1,3 % 1,5 % 1,7 % 1,9 % 1,11 % 1]
04:09:05 <shachaf> What?
04:09:07 <elliott> ...oh, wait.
04:09:10 <elliott> What?
04:09:17 * shachaf concurs with elliott.
04:09:18 <elliott> shachaf: I was wrong in that it shouldn't include ten.
04:09:24 <elliott> It's [1,3..10], not [1..10].
04:09:26 <elliott> But...
04:09:30 <elliott> Why is it applying that rule for Rational?
04:09:33 <elliott> It should stop at 9.
04:09:35 <elliott> Gaaah.
04:10:08 <shachaf> elliott: u sad?
04:10:12 <elliott> I sad.
04:10:27 <CakeProphet> wow these guys are huge assholes.
04:10:34 <elliott> CakeProphet: quotes plz
04:10:38 <CakeProphet> no.
04:10:50 <elliott> CakeProphet: Yes.
04:10:52 <CakeProphet> you will agree with them.
04:12:18 <elliott> CakeProphet: Probably; quotes plz.
04:12:32 <elliott> :t foldM
04:12:33 <lambdabot> forall a b (m :: * -> *). (Monad m) => (a -> b -> m a) -> a -> [b] -> m a
04:12:35 <elliott> Ah.
04:12:52 <elliott> shachaf: Can you download eighty gigabytes of zips for me?
04:13:08 <shachaf> elliott: Sure.
04:13:15 <shachaf> What do you want me to do with them?
04:13:31 <elliott> shachaf: Get them to me faster than my internet connection.
04:13:36 <shachaf> Oh.
04:13:56 * shachaf will do it... For the right price.
04:14:06 <shachaf> That didn't sound as evil as I'd hoped.
04:14:13 <elliott> If the price is a hundred dollars or more, I'll just buy the CDs :P
04:14:21 <shachaf> What are you downloading?
04:14:31 <elliott> shachaf: The Google Books five-grams for English.
04:14:37 <elliott> They come in eight hundred little one-hundred-megabyte zips.
04:14:55 -!- Jafet has joined.
04:15:01 <elliott> intern: user error (Pattern match failure in do expression at intern.hs:21:11-18)
04:15:02 <elliott> Wait, what?
04:15:10 <elliott> My parser is... WRONG???
04:16:00 <CakeProphet> 00:15 < mauke> just like gdb
04:16:00 <CakeProphet> 00:15 < mauke> after the program has terminated, all local variables are gone
04:16:01 <CakeProphet> 00:15 < mauke> all that remains is the global symbol table
04:16:03 <CakeProphet> is this correct?
04:16:14 <shachaf> elliott: What are you going to do with them?
04:16:26 <CakeProphet> I'm pretty sure I've looked up local variables in gdb after termination
04:17:01 -!- ive has quit (Quit: leaving).
04:17:15 <elliott> CakeProphet: Couldn't you just try it?
04:17:31 <CakeProphet> elliott: not as quickly as I can ask, and someone say "yes"
04:17:37 <elliott> CakeProphet: No, I would have to try too.
04:18:00 <elliott> shachaf: Run them through a lot of code I'm writing right now, producing a ~terabyte model file, which I will then use to feed through even more code to produce the most advanced Markov bot this channel has ever seen.
04:18:01 <CakeProphet> our total cumulative effort is smaller than me making a test C program or finding an existing C program that terminates in an error
04:18:05 <elliott> shachaf: It's kind of a tradition.
04:18:10 <CakeProphet> ah okay.
04:18:14 <elliott> CakeProphet: int main(){int x = 99; return 99;}
04:18:50 <elliott> fungot: Demonstrate the tradition to shachaf.
04:18:50 <fungot> elliott: if ( sense ahead foe?) x" to give you a hint:) is already woven, which will face us, i heard, oh, hear, or speak, or for iphicrates in the field is called " robotron"
04:18:56 <elliott> shachaf: Except mine will be way more coherent.
04:19:00 <elliott> Also: slower.
04:19:01 <shachaf> elliott: Would it possibly be cheaper to process on AWS?
04:19:33 <elliott> shachaf: I dunno about that. I'm projecting like ten hours of fully-used CPU to do this thing from scratch, at least.
04:19:53 <elliott> shachaf: That sounds quite expensive, and I suspect storing a one terabyte file on AWS would be ludicrously expensive.
04:20:02 <elliott> Even if not, downloading it would take a very, very long time.
04:20:17 <shachaf> elliott: I meant http://aws.amazon.com/datasets/8172056142375670
04:20:34 <shachaf> That was the first result I found -- I guess the regular download place would be elsewhere.
04:20:46 <elliott> Hmm.
04:21:16 <elliott> Well it might work. I'm sceptical of their compressed size though (221.5? It should be eighty -- or is that in the encoded format?)
04:21:23 <elliott> shachaf: But anyway, the output files from it all would still be a terabyte, no matter what.
04:21:30 <elliott> And I need those on my disk to run a bot on.
04:21:34 <shachaf> Oh.
04:22:01 <pikhq_> elliott: You, sir, are mad.
04:22:06 <pikhq_> Awesome, but mad.
04:22:29 * elliott times how long it takes to download one of the zips, so he can estimate the time to download the whole thing.
04:22:30 <shachaf> Where do you download them?
04:22:36 <CakeProphet> uh....
04:22:41 <elliott> shachaf: http://books.google.com/ngrams/datasets; it's the first set of 5-grams on that page.
04:22:46 <CakeProphet> I have a file named --eng-1M in my current directory
04:22:51 <CakeProphet> how do I delete it?
04:22:53 <elliott> rm -- --eng-1M
04:23:06 <CakeProphet> ah. excellent.
04:23:10 <CakeProphet> forgot about the -- thing
04:23:58 <Gregor> More generally (for e.g. cat that's a jerk and doesn't like --), you can of course use ./--eng-1M
04:24:44 <CakeProphet> ah yes.
04:24:55 * shachaf has access to a server that can download each 100MB file in ~10 seconds.
04:25:00 <shachaf> I guess that doesn't do you much good.
04:25:31 <elliott> Yeah, there's no way that downloading the output file could possibly be quicker than downloading all the sources :P
04:25:42 <elliott> Especially since I likely have more RAM than whatever ~cloud~ substrate I could afford.
04:25:56 <elliott> OK, it took 3m34.263s to download that one.
04:26:06 <elliott> So that's...
04:26:16 <elliott> 46.67 hours to download the entire thing.
04:26:23 <elliott> That's a lot of time.
04:26:32 <elliott> Especially considering it'd peg my connection :P
04:26:53 <shachaf> elliott: You can ship a hard drive to Amazon and have them put data on it.
04:26:59 <shachaf> I don't know if that comes out cheaper/faster.
04:27:08 <elliott> You can?
04:27:26 <shachaf> http://aws.amazon.com/importexport/
04:27:54 <elliott> shachaf: That would just be in the special format you linked to, wouldn't it?
04:28:07 <elliott> I'd prefer the originals; I already have some tools to process them. :p
04:28:15 <shachaf> True, I suppose.
04:28:23 <elliott> Hmm, it's $80.00 + $2.49 times an unspecified number.
04:28:27 <elliott> The DVDs are like a hundred bucks.
04:28:41 <elliott> Doesn't sound like it adds up to me.
04:28:46 <elliott> Grr, http://www.ldc.upenn.edu/Catalog/CatalogEntry.jsp?catalogId=LDC2006T13 is out of order.
04:28:53 * elliott checks the cache for the exact price.
04:29:00 <elliott> Non-member Fee:Please contact the LDC at 1-(215)-573-1275 or ldc@ldc.upenn.edu for all pricing information.
04:29:04 <elliott> What? It had the price not long ago.
04:29:26 <elliott> (Those DVDs are of a different corpus, and probably a lower-quality one, but eh.)
04:29:34 <elliott> Yes indeed:
04:29:34 <elliott> Non-member Fee:US $150.00
04:29:39 <elliott> I wonder if they're charging more for it now?
04:31:51 <shachaf> elliott: Where are you? .uk?
04:32:08 <elliott> .qq; but yes.
04:32:14 <elliott> They should really have .qq domains.
04:32:16 <elliott> q is the best letter.
04:32:38 <shachaf> q is an abomination
04:32:49 <elliott> shachaf: Why.
04:32:53 <elliott> Why would you say such
04:32:53 <elliott> lies
04:33:21 <shachaf>
04:33:25 * Gregor founds Qoqonia to make .qq domains.
04:34:00 <CakeProphet> weeee, generating these datas == more fun than watching paint drying.
04:34:16 <elliott> CakeProphet: If you were smart and didn't use Perl like I'm not not doing, it would go much faster.
04:34:33 <CakeProphet> I am beginning to regret using perl now that I'm in debugging.
04:34:39 * shachaf wonders if there's a service where they download things and ship them to you.
04:34:47 <elliott> shachaf: It's called an ISP, I think. :p
04:34:56 <elliott> The shipping is done over copper.
04:35:06 <CakeProphet> ha, imagine if they shipped like a CD or something.
04:35:15 <CakeProphet> well, multiple DVDs
04:35:23 <CakeProphet> the shipping time would have to be shorter than the download time for the customer.
04:35:53 <elliott> CakeProphet: That's kind of the point.
04:36:05 <CakeProphet> elliott: note that we are saying the same thing.
04:36:09 <elliott> CakeProphet: Except not really, because waiting a week =/= scheduling time to peg my internet connection for forty eight hours.
04:36:43 <shachaf> elliott: Just throttle the download.
04:36:56 <elliott> Yeah, then it'll only take ten years,
04:37:00 <elliott> s/second ,/./
04:37:03 <shachaf> Don't throttle it that much.
04:37:20 <shachaf> Presumably if your Internet connection was half as fast as it is right now it wouldn't be that bad.
04:37:27 <elliott> shachaf: Yes, it would.
04:37:34 <elliott> I only have eight megabits, man. And I never get eight megabits.
04:37:47 <shachaf> That's a lotta megabits, man.
04:37:59 * shachaf gets ~0.8 megabits at home.
04:38:13 <shachaf> And I live in Silicon Valley. If you can believe that.
04:38:33 <elliott> More like Silicon Ha-ha. Vey.
04:38:47 <elliott> Hmm, Valley doesn't end in Vey.
04:39:04 <shachaf> Indeed.
04:39:10 <elliott> But maybe it COULD???
04:39:15 <shachaf> Nope.
04:39:58 <elliott> :(
04:40:03 <shachaf> http://www.canadiandownload.com/
04:41:34 <elliott> Looks legit.
04:41:43 <elliott> It, uh, only supports one URL though.
04:41:56 <elliott> Also I'm not in Canada.
04:41:56 <shachaf> It's a bit of a joke website, I suspect.
04:42:08 <elliott> Well...
04:42:09 <elliott> "We're in the process of burning all the discs for everyone who requested the service (as long as what they requested won't land us in jail for shipping it over international borders)."
04:42:18 <elliott> "Disclaimer: We are unable to download and ship pornography, copyrighted information, or anything else that could get us in the shit with customs or the FBI."
04:42:24 <elliott> Copyrighted information? So almost everything?
04:42:32 * elliott bets Google claim copyright on their corpus.
04:43:23 * shachaf creates a 100000-gram corpus from his favourite book.
04:43:40 <elliott> shachaf: With "cat"?
04:43:44 <shachaf> Yep.
04:43:53 <shachaf> I prefer to call it copyright-adjust.
04:44:06 <shachaf> It's my corpus, after all.
04:44:46 <elliott> It occurs to me that I have no idea how many pages 100000 words is.
04:44:54 <shachaf> Nor I.
04:45:11 <shachaf> http://answers.google.com/answers/threadview?id=608972
04:45:23 <elliott> W|A says five hundred "screenplay pages".
04:45:49 <shachaf> ∀|M
04:47:23 <shachaf> elliott: Whiile you're at it, can you do Hebrew too?
04:47:43 <elliott> Wow, Google actually offer Hebrew data.
04:48:01 <shachaf> Yep.
04:48:02 <elliott> shachaf: Unfortunately I know nearly nothing about Hebrew, so I would be unable to (a) understand what it spits out or (b) tune my code to it.
04:48:11 <elliott> Does Hebrew even have sentence boundaries?
04:48:19 <shachaf> Sure.
04:48:49 <elliott> Weeeeeeell, I /could/ do it, but it's -- oh, the data set is tiny.
04:48:57 <elliott> Sixty K per archive.
04:49:06 <CakeProphet> yeah it takes up to 10 seconds to import my data module...
04:49:19 <CakeProphet> I guess I should switch to Storable.
04:49:24 <elliott> shachaf: I suppose I'll give it a bash once I get everything written.
04:49:29 <elliott> CakeProphet: Ten seconds? That's nothing.
04:49:34 <elliott> Oh, your data module. Okay.
04:49:47 <CakeProphet> yeah.
04:49:51 <elliott> shachaf: But I wouldn't expect much; I'm going to tune it for well-formed punctuation, realistic lengths, full sentences, etc.
04:49:57 <shachaf> Starting up ghci takes me two seconds. :-(
04:49:59 <elliott> None of which I know about in the context of Hebrew.
04:50:04 <elliott> shachaf: What, why?
04:50:19 <shachaf> elliott: Medium two-digit number of imports in .ghci
04:50:27 <elliott> shachaf: That's called a problem.
04:50:33 <elliott> You have a problem; try removing it.
04:50:36 <shachaf> The fact that it takes two seconds? I agree.
04:50:40 <SgeoN1> I can.
04:51:01 <SgeoN1> ..pronounce out loud Hebrew text that has vowels...
04:51:20 <elliott> shachaf: No, your imports.
04:51:27 <Patashu> 10 seconds every time it runs, or only when it compiles?
04:51:30 <shachaf> My imports, my business.
04:51:33 <elliott> Patashu: ghci.
04:51:53 <shachaf> I assume Patashu is talking to CakeProphet.
04:52:05 <elliott> Oh.
04:52:07 <elliott> Patashu: Imports.
04:52:19 <elliott> At least that's what the context implied, with Storable.
04:53:05 -!- Jafet has quit (Quit: Leaving.).
04:53:08 <elliott> shachaf: Have a whine: Interning is probably going to lengthen the corpus by quite a bit, because most words are shorter than eight bytes.
04:53:19 <elliott> Unless, hmm.
04:53:29 <elliott> There are probably fewer than 4 billion words in the corpus.
04:53:33 <elliott> So it should shrink.
04:53:52 <shachaf> Which corpus?
04:53:59 <elliott> shachaf: The English five-grams.
04:54:20 <elliott> The one-grams are a different matter, there's a shitload of them, but they only include five-grams that occurred at least forty times.
04:54:27 <elliott> So I doubt there's many nonce words :P
04:54:43 <elliott> So I would /expect/ (hope) that a thirty-two bit integer would be enough to identify each word in the corpus.
04:55:09 <shachaf> How do you have all this hard drive space?
04:56:05 <CakeProphet> elliott: I might split my datasets into multiple modules
04:56:12 <CakeProphet> and import them dynamically based on command-line options.
04:56:17 <elliott> shachaf:
04:56:19 <elliott> Filesystem Size Used Avail Use% Mounted on
04:56:19 <elliott> /dev/sda5 134G 14G 114G 11% /
04:56:20 <CakeProphet> that should speed up startup times.
04:56:29 <elliott> shachaf: I don't, but one terabyte external disks are pretty cheap.
04:56:43 <elliott> shachaf: I already have a nice ~three hundred gig external disk that I can test subsets of the corpus on.
04:56:54 * shachaf recommends 1TB RAM.
04:57:00 <elliott> Yes, it would be nice.
04:57:10 <elliott> But really:
04:57:10 <elliott> -rw-rw-r-- 1 elliott elliott 20M 2011-10-14 03:08 foo
04:57:10 <elliott> -rw-r--r-- 1 elliott elliott 936M 2010-12-25 00:03 googlebooks-eng-all-5gram-20090715-478.csv
04:57:12 * CakeProphet bought a 1.5 TB external for around $60
04:57:14 <elliott> The former is the reduced version of the latter.
04:57:27 <elliott> The csv (not actually a CSV) has one line per /year/, and useless page/book counts.
04:57:40 <elliott> foo is just a binary form with all the years smushed together and only the full count.
04:57:40 <shachaf> > (compare `on` length) "elliott" "shachaf"
04:57:41 <lambdabot> EQ
04:57:48 <elliott> Huh? Your name totally looks longer.
04:57:51 <shachaf> Weird. That must be why I keep thinking you're me.
04:58:06 <shachaf> elliott: My name is totally shorter in sane languages.
04:58:16 <shachaf> שחף
04:58:20 <CakeProphet> however
04:58:33 <elliott> shachaf: That ש looks so unba- AUGH IT CHANGED WHEN I COPIED IT
04:58:38 <CakeProphet> splitting my script into like 24+ modules makes it annoying to port over to hackego.
04:58:45 <fizzie> It does omit non-occurring years completely, yes. (Given that the years start from 1600-something, it'd make for even hueger files otherwise.)
04:58:47 <elliott> DEVIL'S LANGUAGE DEVIL'S LANGUAGE MY COMPUTER IS BREAKING THE LAWS OF LOGIC AUUUUUGH
04:58:51 <CakeProphet> as I'll have to point perl to the directory where the modules are located.
04:58:57 * elliott cries
04:58:59 <shachaf> elliott: Welcome to the nightmare of handling RTL languages on most computers.
04:59:03 <CakeProphet> `run perl -e "print @INC"
04:59:09 -!- MichaelBurge has quit (Read error: Connection reset by peer).
04:59:09 <HackEgo> ​/etc/perl/usr/local/lib/perl/5.10.1/usr/local/share/perl/5.10.1/usr/lib/perl5/usr/share/perl5/usr/lib/perl/5.10/usr/share/perl/5.10/usr/local/lib/site_perl.
04:59:12 <elliott> shachaf: YOUR LANGUAGE IS BROKEN ;_______;
04:59:16 <shachaf> NO U
04:59:17 * elliott cries some more.
04:59:17 <CakeProphet> `run perl -e '$, = " "; print @INC'
04:59:19 <fizzie> And there certainly seemed to be very many not-really-5grams, though I didn't count them.
04:59:19 <HackEgo> ​/etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .
04:59:33 -!- MDude has changed nick to MSleep.
04:59:41 <elliott> fizzie: Yes, I'm just not sure what to do with them. A lot of them seem to have an extra space signifying an empty word after them (but not more than one space to pad them out fully).
04:59:51 <CakeProphet> yeah I'd have to have some environment variables configured probably... or have all the data modules in bin which is ugly.
05:00:00 <shachaf> elliott: ף is a "final letter". It's only used if it's on the end of a word, otherwise you use פ.
05:00:04 <elliott> fizzie: I can easily process them as less-than-five grams, I'm just not sure what to do.
05:00:20 <CakeProphet> elliott: do you think you could convince Gregor to let me modify the Perl module lookup paths?
05:00:21 <elliott> shachaf: פ is nicer. It's a sane capital letter, just upside down.
05:00:24 <elliott> You know, in real languages.
05:00:28 <elliott> CakeProphet: You can push to @INC.
05:00:38 <CakeProphet> ...bleh. fine.
05:00:59 <fizzie> You can "use lib 'dir';"
05:01:01 -!- pikhq has joined.
05:01:04 <elliott> CakeProphet: What fizzie said.
05:01:06 -!- pikhq_ has quit (Ping timeout: 252 seconds).
05:01:19 <elliott> shachaf: I wonder how mega-slow the babbler will be; it's going to have to do, like, hundreds of seeks, over USB, to produce a single sentence.
05:01:23 <CakeProphet> fizzie: is that the same as pushing to @INC?
05:01:37 <CakeProphet> except at compiletime.
05:01:40 <CakeProphet> "compile"time
05:01:44 <shachaf> elliott: אליוט is shorter, too.
05:01:50 <elliott> shachaf: What's that?
05:01:52 <shachaf> It's pretty much a superior language in every respect.
05:01:59 <shachaf> elliott: http://he.wikipedia.org/wiki/%D7%98%D7%99_%D7%90%D7%A1_%D7%90%D7%9C%D7%99%D7%95%D7%98
05:02:11 <fizzie> Almost. I think there was some subtle difference.
05:02:14 <elliott> shachaf: That page, is, like, backwards.
05:02:19 <elliott> shachaf: Also my name has two "t"s.
05:02:30 <shachaf> Only in redundant languages.
05:02:30 <elliott> Oh, two "l"s too.
05:02:34 <elliott> Can you duplicate the relevant letters for me, please?
05:02:38 <shachaf> No.
05:02:41 <shachaf> It doesn't work that way.
05:02:46 <elliott> Yes, it does. Do it.
05:02:54 <shachaf> If you have two letters in a row, it's pretty stronly implied that there's a vowel between them.
05:03:07 <shachaf> Vowels aren't usually written, you see.
05:03:13 <elliott> Only if you're dumb. People will totally understand what it means.
05:03:18 <fizzie> Oh, right, it also auto-adds $dir/$arch/ too if $dir/$arch/auto exists. And also versions.
05:03:36 <CakeProphet> ...cool, I guess...
05:03:38 <shachaf> אלליוטט
05:03:56 * shachaf doesn't even know what that means.
05:03:56 <elliott> shachaf: Excellent.
05:04:00 <elliott> It means "Elliott".
05:04:09 <elliott> * אלליוטט :Erroneous Nickname
05:04:11 <shachaf> More like Ellelliottett
05:04:15 <elliott> Augh, my input field right-aligned when I pasted that.
05:04:18 <fizzie> CakeProphet: Well, it's less silly-looking than BEGIN { unshift @INC, 'dir' }
05:04:20 <elliott> shachaf: That is also an acceptable name for me.
05:04:30 <shachaf> elliott: When are you moving to CA, by the way?
05:04:49 <elliott> shachaf: I do not plan to move to the US.
05:05:32 <shachaf> Silly elliott.
05:05:36 <shachaf> Silliott.
05:06:07 <CakeProphet> elliott: but the US is such a good country.
05:06:16 <elliott> CakeProphet: It is just too good for me.
05:06:30 <CakeProphet> you can buy pre-sliced roast beef that's /french onion dip/ flavored.
05:06:32 <CakeProphet> what more do you want.
05:06:43 <elliott> Oh.
05:06:44 * shachaf vegetarian
05:06:45 <elliott> shachaf: Tomorrow.
05:06:47 <CakeProphet> also hotdogs wrapped in pancake.
05:06:49 <elliott> Wow.
05:06:52 <elliott> shachaf: In ten minutes.
05:07:35 <CakeProphet> also you guys may have this too, but I've seen hotdogs that are /filled with gross processed cheese stuff/
05:07:46 <elliott> WOOOOOOOOOW
05:07:49 <elliott> shachaf: I am in fact already in the US.
05:07:51 <CakeProphet> America has the best food.
05:08:13 <shachaf> elliott: That's the spirit.
05:08:22 <shachaf> Motivations like that might not get you here to northern CA, though...
05:09:38 <pikhq> America: land of the 3.8L soda.
05:10:21 <CakeProphet> well, I've seen 3L but not that.
05:10:35 <pikhq> Apparently 7-11 carries such a thing.
05:10:41 <pikhq> I've not seen anyone go quite that far.
05:10:52 <pikhq> https://upload.wikimedia.org/wikipedia/en/d/d5/Big_gulp6480.JPG This, sure.
05:11:08 <CakeProphet> I know at quiktrip you can get like 48 oz. sodas for a dollar...
05:11:14 <CakeProphet> which is an obscene liquid to cent ratio.
05:11:35 <elliott> That's, like, forty eight ounces to the dollar.
05:12:38 <shachaf> elliott: Did you know US pints /= UK pints?
05:12:52 <elliott> I thought you guys didn't use pints. Am I wrong?
05:12:59 <elliott> I guess there's nothing else you could use.
05:13:07 <elliott> Metric is communist, and I don't know of anything else even semi-reasonable.
05:13:18 <elliott> "The imperial version is 20 imperial fluid ounces and is equivalent to about 568 mL, while the U.S. version is 16 U.S. fluid ounces and is equivalent to about 473 mL. Thus the traditional British pint of beer is approximately 20% larger than the American pint."
05:13:20 <shachaf> elliott: Something based on base 12 would be better than metric.
05:13:23 <elliott> See, we UK are more hardy folk.
05:13:28 <elliott> shachaf: You mean like the imperial system?
05:13:32 <shachaf> No.
05:13:33 <elliott> (Well. Sort of...)
05:13:35 <shachaf> I don't mean that.
05:13:50 <elliott> shachaf: You're not one of those Dozenal Society folks, are you?
05:14:01 <shachaf> Sure I am.
05:14:03 <shachaf> Well, maybe.
05:14:05 <shachaf> I've never heard of them.
05:14:26 <elliott> "The DSA has been around since World War II"
05:14:30 <CakeProphet> shachaf: they call themselves that because there's probably only a dozen of them.
05:14:33 <CakeProphet> (hhahahahahahauhweiuwe)
05:14:33 <elliott> Talk about priorities.
05:15:37 <shachaf> elliott: So in _1984_, this person talks about how 1L is too much but 0.5L is too little -- it don't satisfy, as I recall.
05:16:19 <elliott> shachaf: You mean "in _1194_".
05:16:21 <CakeProphet> imperial system is why USA is #1!!!!
05:16:36 <elliott> 74A and All That.
05:16:50 <shachaf> elliott: I'm told that balanced ternary > base 12.
05:16:56 <elliott> shachaf: Ah.
05:17:22 <CakeProphet> balanced ternary sounds awful.
05:18:28 * CakeProphet lives about -1-1-1-1-1-1 miles from your house.
05:18:44 <elliott> Distances can't be negative.
05:18:59 <CakeProphet> balanced ternary has -1 as a digit am I right?
05:19:09 <elliott> Sure.
05:20:18 <CakeProphet> so balanced ternary is more like binary but where each digit can have a sign that alternates the sign of the resultant number?
05:20:22 <CakeProphet> each 1
05:20:31 <CakeProphet> >_>?
05:20:41 <elliott> http://en.wikipedia.org/wiki/Balanced_ternary
05:20:53 <shachaf> elliott: How did you do that?!
05:21:01 <elliott> shachaf: What.
05:21:11 <shachaf> You just made this link appear to a page containing relevant information about a topic.
05:21:15 <CakeProphet> elliott: you have the wikimagicks
05:21:30 <shachaf> elliott: If only more IRC users had your powers.
05:21:32 <elliott> shachaf: It's because I'm a secret wizard.
05:21:41 <shachaf> I knew it.
05:22:19 <CakeProphet> man the internet takes all the fun out of conversations.
05:22:24 <CakeProphet> specifically the question-answer part.
05:24:51 * elliott thinks balanced ternary looks nice.
05:25:23 <CakeProphet> elliott: I think YOUR FACE looks nice.
05:26:02 * shachaf agrees about elliott's face.
05:26:15 <elliott> Heh.
05:27:09 <fizzie> They barely have any 2L bottles here :/ -- there are some, but the traditional 1.5L is still far more common.
05:27:53 <CakeProphet> traditional 1.5L
05:28:01 <CakeProphet> 1.5L is like a new thing in the southeastern US.
05:28:24 <elliott> fizzie: Do you think I should just process them as less-than-five-grams I MUST KNOW.
05:28:39 <elliott> fizzie: (And maybe drop the terminating "empty words"?)
05:30:05 <shachaf> Words, words, words.
05:30:09 <pikhq> elliott: The US actually uses a bizarre hybrid of US traditional and metric units for fluid measures.
05:30:23 <pikhq> To Americans, liters are entirely meaningful units.
05:30:24 <elliott> shachaf: Yes.
05:30:28 <elliott> pikhq: Suuuuuuuuure.
05:31:04 <fizzie> elliott: I don't know; I'd just drop them all for consistency's sake. And also parse that quoting while at it. But it's baaaad that they even are there.
05:31:19 <elliott> fizzie: Is "baaaad" meant to signify Great Badness?
05:31:30 <elliott> fizzie: But anyway, you saw my numbers: it's a whole sixth of one of the files and therefore probably of the whole corpus.
05:31:31 <elliott> That's a lot.
05:33:02 <pikhq> elliott: Bottled soda generally comes in 16 fl. oz, 20 fl. oz, and 2L.
05:33:27 <pikhq> Other available sizes include 12.5 fl. oz, 7.5 fl. oz, 1.25L, and 1.5L.
05:33:38 <pikhq> Oh, and 1L, of course.
05:36:16 -!- GreaseMonkey has joined.
05:36:42 <fizzie> elliott: Sure, but I'd still ignore them, since they're so obviously broken. Though I guess if you're going to take less-than-5 subgrams (not a word) of the other 5-grams too, you could also take those truncated ones.
05:37:04 <elliott> fizzie: Well, I'm doing a reverse-context tree, so...
05:37:21 <elliott> fizzie: I don't suppose you have any idea why there could be so many broken ones? They seem to coincide a lot with punctuation.
05:37:27 <elliott> Like things starting ".
05:41:41 <fizzie> All the non-truncated things starting with " seemed to me be things containing " inside, with the inner "s properly escaped by doubling.
05:42:46 <fizzie> Possibly the truncated ones had some other punctuation character which got them split badly. Perhaps you can figure out what would have followed from the context.
05:42:54 <elliott> Weeeell...
05:43:16 <elliott> It's no longer in my backlog.
05:43:24 <elliott> But they did not look that odd.
05:43:43 <elliott> fizzie: Fr'instance:
05:43:43 <elliott> 23:49:34: <elliott> ("\"* The latter ",54)
05:43:43 <elliott> 23:49:36: <elliott> ("\"* Thus ",73)
05:43:43 <elliott> 23:49:43: <elliott> ("\"* that is ",75)
05:43:52 <elliott> That's four words, last word empty.
05:43:58 <elliott> First word "*.
05:45:36 <fizzie> Well, I don't know. But I'm reasonably certain in those the real first word was plain '*'.
05:46:46 <elliott> fizzie: Really? Howso?
05:46:48 <elliott> There's no terminating quote.
05:47:06 <fizzie> Yes, because it got split along with the rest of the words.
05:47:17 <fizzie> As well as in all the [""" And then I said"]-style non-truncated 5-grams, I'm pretty sure it's trying to mean ["][and][then][I][said].
05:47:27 <elliott> fizzie: Split how? Sorry if I'm being dense.
05:48:46 <CakeProphet> #perl is such a friendly community
05:48:48 <CakeProphet> of assholes
05:49:11 <CakeProphet> one guy literally told me I would mess up using a join. Like I don't know how it works...
05:49:15 <elliott> CakeProphet: The one person you've quoted so far is also a #haskell op and has sometimes been in #esoteric. :p
05:49:50 <CakeProphet> elliott: I don't remember why I quoted that guy but it wasn't because he was being an asshole.
05:49:53 <CakeProphet> ...I think.
05:49:56 <elliott> It was the gdb thing.
05:49:57 <fizzie> elliott: I mean it was originally something like ["* The latter "" saints"], representing [*][The][latter]["][saints], in the unbroken dataset, and something broke it.
05:50:08 <CakeProphet> elliott: yeah that was for the purpose of providing context to a question.
05:50:14 <elliott> fizzie: Ah.
05:50:46 <elliott> fizzie: So you think I should basically strip off quotes-as-the-first-character-of-a-first-word-that-is-longer-than-one-character-that-aren't-later-teminated?
05:50:51 <elliott> s/teminated/terminated/.
05:51:00 <CakeProphet> elliott: I was threatened with a kickban for calling out that guy as being a jerk. :P
05:51:02 <elliott> And then de-escape "" inside.
05:51:54 <CakeProphet> *the guy that said I would improperly use a join
05:52:46 <fizzie> Yes, unless you can find an example of a "-starting string that isn't either (a) properly terminated, with any inner quotes escaped, or (b) less than 5 words and lacking the terminating quote.
05:52:51 <elliott> fizzie: Right.
05:53:10 <elliott> fizzie: " as the first word alone should be fine, right, because n-grams don't start with spaces?
05:53:28 <elliott> Oh, and I should apply the same treatment to it being the last character of a last word longer than one character that isn't previously terminated.
05:56:46 <fizzie> " as a first word alone could be fine, but I doubt any are in the set; all I saw was """ foo ..., which is the start of an escaped [" foo ...].
05:57:19 * elliott greps it.
05:57:29 <elliott> Yeah, you're right.
05:57:47 <elliott> fizzie: (Why doubt it? Other than that "s seem to be mushed with the word they're stuck to in practice; SIGH.)
05:57:57 <elliott> I don't suppose you know of a less bad corpus.
05:58:18 <CakeProphet> the only good corpus is a dead corpus.
05:58:27 <CakeProphet> :D :D :D :D :D :D :D :D :D ::D :D :D :D :D D:D :D :D :D : D:D
05:58:32 <fizzie> Oh, so it has [""foo]s too?
05:58:56 <elliott> fizzie: No, it has "foo and bar"s.
05:59:07 <elliott> Hmm.
05:59:12 <elliott> I suppose you'll tell me those are part of the same quoting nonsense.
05:59:16 <elliott> Augh.
05:59:21 <CakeProphet> The unexamined life is not worth living. -- Socrates
05:59:23 <fizzie> All non-doubled dquotes I've seen have been part of the quoting, not the data.
05:59:26 <CakeProphet> I'm not really sure what this quote is supposed to mean.
05:59:31 <elliott> fizzie: It definitely has lines starting """ though:
05:59:33 <elliott> """ "" Tell them nothing"1983333
05:59:35 <CakeProphet> but I don't really agree with it at all and am highly confused when I see it quoted?
06:00:06 <fizzie> Yes: thatms ["]["][Tell][them][nothing] properly quoted.
06:00:19 <CakeProphet> is it saying that there is no point in living if you don't analyze the events of your life, or...
06:00:21 <elliott> fizzie: Like I said, don't suppose you know of a nicer corpus? :p
06:00:32 <CakeProphet> is it saying that your life is worthless if people don't take notice of it and examine it.
06:00:42 <fizzie> Nnno, nothing as large and/or freely available.
06:02:34 <fizzie> You *can* count your own 'grams from Gutenberg, but the texts are predominantly non-modern, and the data is really really messy there too. (There's no consistent standard for the embedded Gutenberg prologues, the metadata often doesn't tell the encoding, and sometimes when it does it's actually a lie.)
06:03:13 <elliott> Well, right.
06:03:24 <elliott> I've done "bring your own corpus" stuff before.
06:03:28 <CakeProphet> real life is so much fun you guys.
06:03:43 -!- pikhq_ has joined.
06:06:22 -!- pikhq has quit (Ping timeout: 244 seconds).
06:09:42 <CakeProphet> oh wow, I forgot perl can do labels and gotos
06:11:27 <fizzie> Come to think of it, I don't really know that many text corpora that would be in the form of n-gram counts anyway, since it strictly limits what you can do with it. Usually it's just a large mass of text, and then you can do dependency grammars or whatever with them. Google Books and Google Web are exceptions, possibly because they'd be so unmanageably large otherwise.
06:11:42 <elliott> Right.
06:13:51 <fizzie> Well, assuming 5 as the average length of a token and one character separating each, the Google Books would be "just" two terabytes. Still.
06:14:27 <fizzie> Or I guess that's after dropping all used-less-than-40-times words.
06:14:45 <fizzie> So, uh, multiply that by some smallish integer.
06:17:23 <elliott> Heh.
06:17:42 <elliott> fizzie: used-less-than-40-times ngrams, I think.
06:17:46 <elliott> Not words.
06:19:06 <fizzie> Words. That calculation was from the unigram total-counts file.
06:19:47 <fizzie> (Sum of second column times six.)
06:20:41 <elliott> ah
06:21:15 -!- monqy has quit (Quit: hello).
06:22:06 <elliott> fizzie: Supposedly the corpus contains four percent of every book ever published in English.
06:22:33 <fizzie> Actually the count might be a real count of words there, pre-filtering, since they say it's useful for getting the relative (i.e. normalized) frequency of each word. I don't feel like summing up the unigram counts to see if it matches or not.
06:22:58 <CakeProphet> wow perl's import system allows you to completely fabricate non-existent modules.
06:24:10 -!- Sgeo|web has joined.
06:24:12 <Sgeo|web> i = 0x5f3759df - ( i >> 1 ); // what the fuck?
06:24:21 <fizzie> From the same file, (sum of column 2)/(sum of column 4) says that the average book has 109698 words. That sounds reasonable enough, it's very close to the book length on Bartledan.
06:24:22 <Sgeo|web> Why does this amuse me?
06:24:44 <CakeProphet> you can place a coderef in @INC that will get run when it's encountered in the import process, and that coderef can optionally return another coderef that generates lines of source code.
06:25:03 <fizzie> "It wasn't even the climax of the book, because there wasn't one. The character died about a third of the way through the penultimate chapter of the book, and the rest of it was just more stuff about road-mending. The book just finished dead at the one hundred thousandth word, because that was how long books were on Bartledan."
06:25:49 <elliott> Heh.
06:25:55 <Sgeo|web> <3 DNA
06:27:05 <Sgeo|web> Hmm, is And Another Thing any good? (Not DNA, which is why I'm asking)
06:27:13 <elliott> Yes and no.
06:27:30 <fizzie> Haven't read it yet, but "yes and no" is the impression what I've gotten from others.
06:28:06 <fizzie> Maybe I should use one of those quaint book-lending-places, what do you call them... lie-brary? Something like that.
06:28:19 <elliott> It tries too hard to imitate Adams. Colfer is very good, certainly he succeeds at that well, and the book is enjoyable. But in some sense it is still, and inevitably, plasticky.
06:28:24 <elliott> Adams he ain't.
06:28:45 <elliott> So, read it, but don't expect the sixth book in the trilogy.
06:28:59 <elliott> It's certainly of stellar quality for fanfiction.
06:29:04 <CakeProphet> fizzie: by "others" do you mean elliott. Because I've gotten that impression from others as well.
06:29:25 <CakeProphet> DNA is a pretty cool guy. eh translates to RNA and doesn't afraid of anything.
06:29:25 <elliott> Hey, I last talked about it in '09.
06:29:33 <elliott> You weren't even here.
06:29:47 <CakeProphet> hmmm, what was I doing in '09...
06:30:13 <CakeProphet> graduating and starting college.
06:30:34 <Sgeo|web> Honestly, I cannot remember the name "Colfer"
06:30:46 <CakeProphet> having a girlfriend. yeah there was like 2 or maybe 3 years where I kind of stopped being an #esoteric regular.
06:30:50 <CakeProphet> and then I came back. aren't you guys glad?
06:30:53 <elliott> Sgeo|web: Eoin.
06:31:43 <fizzie> He's the Artemis Fowl guy; those are some seriously shiny books. (As in, physically, the covers, of the ones I saw in the school lie-brary back then.)
06:32:17 <elliott> Sgeo|web: fizzie: I definitely disliked the focus on minor characters like Wowbagger and (ok, not that minor) Random.
06:32:37 <fizzie> SPOILAGE ALERT SPOILAGE ALERT
06:32:54 <CakeProphet> @hoogle Maybe a -> a -> a
06:32:55 <lambdabot> Data.Maybe fromMaybe :: a -> Maybe a -> a
06:32:55 <lambdabot> Prelude asTypeOf :: a -> a -> a
06:32:55 <lambdabot> Data.Generics.Aliases orElse :: Maybe a -> Maybe a -> Maybe a
06:32:56 <elliott> Feels like Adams would make up new ones for the job (though I could imagine Random being a focus).
06:33:00 <elliott> fizzie: Oh pls.
06:33:04 <Sgeo|web> I think if I thought about it for two seconds, I would expect Random to show up. Wowbagger not so much
06:33:09 <elliott> It's in the first few pages.
06:33:14 <CakeProphet> @hoogle Maybe a -> Maybe a -> a
06:33:14 <lambdabot> Data.Generics.Aliases orElse :: Maybe a -> Maybe a -> Maybe a
06:33:14 <lambdabot> Data.Maybe fromMaybe :: a -> Maybe a -> a
06:33:14 <lambdabot> Control.Applicative (<|>) :: Alternative f => f a -> f a -> f a
06:33:28 <CakeProphet> I guess fromMaybe is like the // of Haskell.
06:33:53 <elliott> fizzie: Sgeo|web: Also the cheat around the last book's ending is cheap and you will groan.
06:33:57 <elliott> That's all.
06:34:16 <CakeProphet> > Nothing <|> Just 3
06:34:17 <lambdabot> Just 3
06:34:25 <CakeProphet> oh okay well <|> for Maybe is also kind of like //
06:34:31 <Sgeo|web> > Just 3 <|> Nothing
06:34:32 <lambdabot> Just 3
06:34:43 <elliott> (Such a perfect ending it was, too.)
06:35:03 <Sgeo|web> > Nothing <|> Nothing -- Just a wild guess, completely chosen from an RNG, but could it be .... NOTHING?
06:35:04 <lambdabot> Nothing
06:35:33 <Sgeo|web> I'm not sure when I'd use this though?
06:35:35 <CakeProphet> Sgeo|web is mad with the logicks
06:35:45 <Sgeo|web> >:?
06:35:55 <fizzie> I think fromMaybe is the flip maybe id of Haskell.
06:35:55 <CakeProphet> when you have a Maybe value that you'd like to substitute in the event that another Maybe value is Nothing.
06:36:24 <CakeProphet> actually <|> looks quite useful
06:36:35 <elliott> Sgeo|web: parseOneFormat x <|> parseAnotherFormat x
06:36:44 <CakeProphet> almost as useful as return .: fromMaybe
06:36:57 <Sgeo|web> !
06:37:00 <CakeProphet> which is almost as useful as fromMaybe
06:37:04 <Sgeo|web> That's exactly what I think Parsec uses
06:37:29 <elliott> Sgeo|web: Yes (but no "x", and the Alternative is different.)
06:37:38 <Sgeo|web> > Left "hi" <|> Right 0
06:37:39 <lambdabot> Right 0
06:38:05 <Sgeo|web> > Just Right <|> Just Left
06:38:06 <lambdabot> Overlapping instances for GHC.Show.Show
06:38:07 <lambdabot> (b -> ...
06:38:12 <elliott> Left = Wrong, by standard interpretation.
06:38:16 <Sgeo|web> ...Overlapping?
06:38:20 <Sgeo|web> Not non-existent?
06:38:26 <Sgeo|web> elliott: I am aware of this
06:38:29 <CakeProphet> elliott: this is because left is traditionally associated with EVIL
06:38:36 <elliott> L.hs is monstrous.
06:38:50 <Sgeo|web> > Right
06:38:51 <lambdabot> Overlapping instances for GHC.Show.Show
06:38:52 <lambdabot> (b -> ...
06:38:57 <elliott> L.hs is monstrous.
06:39:06 <Sgeo|web> > id
06:39:07 <lambdabot> Overlapping instances for GHC.Show.Show (a -> a)
06:39:07 <lambdabot> arising from a use of `...
06:39:11 <elliott> L.hs is monstrous.
06:39:27 <Sgeo|web> > putStrLn "L.hs is monstrous"
06:39:27 <lambdabot> <IO ()>
06:39:32 <Sgeo|web> derp
06:39:53 <elliott> > text "a"
06:39:54 <lambdabot> a
06:39:55 <elliott> brb
06:40:04 <CakeProphet> wow I really cannot decide what is the best way to fix my car situation.
06:40:49 <CakeProphet> it's quite tempting to go get a new used car but I think I might get more value of putting a /brand new engine/ in my car and getting probably another 150k at least for only $2000
06:41:06 <CakeProphet> but everyone I know IRL is saying that's a bad idea. I DON'T UNDERSTAND CAR LOGIC.
06:41:26 <CakeProphet> *value out of
06:41:53 <Sgeo|web> Any explanations?
06:42:00 <CakeProphet> huh?
06:42:25 <CakeProphet> Sgeo|web: about my car situation or about Haskell stuff above? :P
06:42:40 <Sgeo|web> car situation
06:42:46 <Sgeo|web> As in, why it would be a bad idea
06:42:53 * Sgeo|web knows approximately nothing about cars
06:43:06 <CakeProphet> oh well the explanations usually go like "I wouldn't put a new engine in that car". I suppose the reasoning is that I'm putting a lot of money into the car replacing parts...
06:43:20 <CakeProphet> but like, it's the same difference if I go put all my money into new used cars.
06:44:57 <CakeProphet> one benefit of a new car is potential gas mileage improvement. I found a 1995 Honda Accord for $2000 with 137k miles. That most likely has better mileage than my current Buick Skylark (which gets on average 21 MPG)
06:45:13 <CakeProphet> uh, what units do euro people buy gas in?
06:45:15 <CakeProphet> litres?
06:45:20 <fizzie> Litres, yes.
06:46:03 <fizzie> Though I think the commonest fuel efficiency number is the other way around; it's litres per hundred kilometres.
06:46:05 <fizzie> At least here.
06:46:12 <CakeProphet> `run frink 21 miles/gallon -> kilometers/liter
06:46:15 <CakeProphet> oh... weird.
06:46:17 <HackEgo> sh: cannot create kilometers/liter: Directory nonexistent
06:46:22 <CakeProphet> lol wat
06:46:24 <CakeProphet> oh
06:46:29 <CakeProphet> `frink 21 miles/gallon -> kilometers/liter
06:46:38 <HackEgo> 144000/16129 (approx. 8.928017856035712)
06:46:40 <CakeProphet> >_> oh yeah Java.
06:47:08 <CakeProphet> can frink even do that conversion...
06:47:26 <CakeProphet> `frink 21 miles/gallon -> litres/(100*kilometer)
06:47:26 <fizzie> That is the correct result.
06:47:34 <HackEgo> Warning: reciprocal conversion \ 16129/1440 (approx. 11.200694444444444)
06:47:43 <fizzie> Heh.
06:47:52 <fizzie> It is right, though the warning is sillyish.
06:48:18 <CakeProphet> so yeah not great gas mileage.
06:48:27 <fizzie> If you feed "21 mpg" into W|A, the Corresponding quantities: box has "fuel usage from FU = 1/FC" and gives them as L/100 km, L/km and gal/mi.
06:48:28 <CakeProphet> my parents say "that's great"
06:48:30 <CakeProphet> lolamerica
06:49:08 <Patashu> `frink 1 light year -> meters
06:49:16 <HackEgo> 9.4605284048728832955e+15
06:49:32 <CakeProphet> http://www.fueleconomy.gov/feg/noframes/11853.shtml so yeah according to this a 95 Accord gets significantly improved gas mileage.
06:49:40 <CakeProphet> MAY BE A GOOD IDEA?
06:49:47 <fizzie> I know so little about cars that it's silly, but I was under the impression that figure should be <10 nowadays.
06:49:47 <Patashu> `frink 1 light year/gallon -> litres/(100*kilometer)
06:49:58 <HackEgo> Warning: reciprocal conversion \ 4.0012688742102696655e-11
06:50:11 <Patashu> my mileage is so good
06:50:14 <CakeProphet> fizzie: well it's an older model car.
06:50:19 <CakeProphet> 95 Buick Skylark.
06:50:28 <pikhq_> `frink 1 light year/gallon -> square meter
06:50:37 <HackEgo> Warning: reciprocal conversion \ 4.0012688742102696655e-19
06:50:43 <pikhq_> :)
06:50:47 <fizzie> "In Europe, the two standard measuring cycles for "litre/100 km" value are "urban" traffic with speeds up to 50 km/h from a cold start, and then "extra urban" travel at various speeds up to 120 km/h which follows the urban test. A combined figure is also quoted showing the total fuel consumed in divided by the total distance traveled in both tests. A reasonably modern European supermini and many mid-size cars, including station wagons, may manage motorway trave
06:50:47 <fizzie> l at 5 L/100 km (47 mpg US/56 mpg imp) or 6.5 L/100 km in city traffic (36 mpg US/43 mpg imp), with carbon dioxide emissions of around 140 g/km."
06:51:15 <CakeProphet> supermini?
06:51:19 <Patashu> how does light year/gallon -> square meter preserve units?
06:51:22 <fizzie> I don't know what it means.
06:51:30 <fizzie> Except probably "small".
06:51:42 <Patashu> `frink 1 meter -> square meter
06:51:44 <pikhq_> Patashu: Actually, it doesn't, but only because I fucked it up.
06:51:52 <pikhq_> `frink 1 gallon/light year -> square meter
06:51:53 <HackEgo> Conformance error \ Left side is: 1 m (length) \ Right side is: 1 m^2 (area) \ Suggestion: multiply left side by length \ or multiply left side by area^(1/2) \ \ For help, type: units[length] \ or \ units[area] \ to list known units with these dimensions.
06:51:59 <Patashu> ok, so it does notice
06:52:02 <CakeProphet> I think you want lightyear not light year
06:52:03 <HackEgo> Conformance error \ Left side is: 0.00039846219030421139204 m^2 s^2 (unknown unit type) \ Right side is: 1 m^2 (area) \ Suggestion: multiply left side by frequency^2 \ or divide left side by time^2 \ \ For help, type: units[frequency] \ or \ units[time]
06:52:07 <pikhq_> `frink 1 gallon/lightyear -> square meter
06:52:18 <HackEgo> 22532213/56313871860600000000000000 (approx. 4.0011834128146076e-19)
06:52:22 <pikhq_> There we go.
06:52:38 <Patashu> oooh
06:52:43 <Patashu> it's because gallon is volume
06:52:46 <pikhq_> Yup.
06:52:49 <Patashu> m3/m1 = m2
06:52:56 <pikhq_> The square meter is a wonderful unit of fuel efficiency.
06:52:58 <Patashu> m1/m3 = ???
06:53:12 <pikhq_> =m^-2
06:53:18 <Patashu> except isn't gallon more like a unit of energy
06:53:23 <fizzie> m^-2, which is why it complained about reciprocal conversion.
06:53:24 <CakeProphet> no...
06:53:25 <CakeProphet> it's a volume
06:53:27 <CakeProphet> of a substance
06:53:29 <CakeProphet> that contains energy.
06:53:41 <CakeProphet> in the case of fuel efficiency.
06:53:42 <Patashu> when we talk about gallons, we normally talk about burning it to do something
06:53:51 <Patashu> thouhg I guess if we go down that alley we have to talk about the efficiency as well and blah blah
06:53:52 * CakeProphet goes to the store to buy a gallon of milk
06:53:58 <pikhq_> Yes, but a gallon of fuel does not have constant energy content.
06:54:07 * CakeProphet fills his 100 gallon aquarium with water.
06:54:18 <CakeProphet> Patashu: what are you talking about? :P
06:54:27 <Patashu> if a gallon isn't a constant amount of energy how can you talk about something like 'miles per gallon'?
06:54:33 <Patashu> shouldn't it then be 'miles per joule' or something
06:54:38 <CakeProphet> gallons are not a constant amount of energy, dude.
06:54:44 <pikhq_> It's a ballpark figure.
06:54:51 <pikhq_> We use it because it's a hell of a lot easier to measure.
06:54:53 <Patashu> what do you mean mileage varies depending on circumstances patashu???
06:54:55 <Patashu> gosh
06:56:01 <CakeProphet> so yeah if I switch to a 95 accord I'll get roughly 4 extra miles per gallon.
06:56:23 <fizzie> CakeProphet: It's best to go that extra mile.
06:56:28 <CakeProphet> and I found one for $2000, which is actually cheaper than replacing my engine if I consider labor fees.
06:56:31 <CakeProphet> so...
06:56:37 <CakeProphet> I guess I'll out this car. :P
06:56:40 <CakeProphet> *check out
06:56:43 <fizzie> CakeProphet: So, monowheel.
06:56:48 <CakeProphet> lolwat?
06:57:01 <fizzie> Didn't I say it? I was going to, but maybe I got distracted.
06:57:10 <fizzie> "Put your money in monowheel; it sounds a bit like money."
06:57:20 <CakeProphet> uh, what.
06:57:22 <CakeProphet> what is monowheel
06:57:23 <CakeProphet> help
06:57:26 <CakeProphet> fizzie has gone insane.
06:57:28 <fizzie> It's a wheel. You are in it.
06:57:47 <CakeProphet> .........what?
06:57:49 <fizzie> http://www.diseno-art.com/images/mcLean-V8-Monowheel.jpg
06:57:49 <CakeProphet> w h a t?
06:57:54 <fizzie> You know, that sort of thing.
06:58:05 <CakeProphet> what no
06:58:05 <CakeProphet> bad.
06:58:23 <fizzie> It's the only thing you can do the "hamster thing" in if you brake too hard.
06:58:23 <CakeProphet> why would you want to ride around in a circle thing.
06:58:41 <CakeProphet> is that even street legal.
06:59:15 <fizzie> Sounds unlikely.
06:59:57 <CakeProphet> it does appear to have tail lights. but no head lights
06:59:58 <fizzie> Anyway the other one was even better, let me find it. It's
07:00:09 <CakeProphet> or lamps. I believe is how euro people say it. WHY IS OUR CAR TERMINOLOGY ALL DIFFERENT.
07:00:14 <fizzie> Oh yes, the RIOT Wheel.
07:00:25 <fizzie> http://www.theriotwheel.com/
07:00:43 <CakeProphet> wow what.
07:00:47 <CakeProphet> that's like a death machine
07:00:51 <CakeProphet> death tractor.
07:01:19 <fizzie> "Can I BUY one?
07:01:19 <fizzie> Are you NUTS? Then of course you can buy one. These are prototypes, and so stupidly dangerous, but if you'd have bought a Wright Flyer in 1904, then contact us NOW --"
07:01:30 <CakeProphet> What is the RIOT Wheel?
07:01:30 <CakeProphet> It's an 1100lb motorized single-wheel vehicle, with
07:01:31 <CakeProphet> the driver in front. Why, what does it look like?
07:02:22 <fizzie> "So what's the HOLD-UP??
07:02:22 <fizzie> Yeah, I know. Money, of course: a couple o' medical bills --" -- medical bills, how surprising.
07:03:43 <CakeProphet> Will they "design cities around it"?
07:03:44 <CakeProphet> "Prediction is hard, particularly of the future." No.
07:03:58 <CakeProphet> good FAQ
07:03:58 <elliott> :D
07:04:43 <fizzie> It's a bit like a regular monowheel, except when you brake too hard, instead of you going around and around inside the wheel, the (1100lb) wheel rolls over you.
07:04:56 <elliott> :D
07:06:06 <CakeProphet> I think they actually designed it to account for that.
07:06:12 <CakeProphet> http://www.theriotwheel.com/Tech_BigPicture.html
07:06:15 <CakeProphet> see "maximum braking"
07:06:21 <fizzie> Yes, sadly.
07:06:38 <fizzie> But common sense says it's what should happen if you put the guy in front outside the wheel.
07:07:01 <elliott> `addquote <fizzie> It's a bit like a regular monowheel, except when you brake too hard, instead of you going around and around inside the wheel, the (1100lb) wheel rolls over you.
07:07:05 <HackEgo> 709) <fizzie> It's a bit like a regular monowheel, except when you brake too hard, instead of you going around and around inside the wheel, the (1100lb) wheel rolls over you.
07:07:28 <fizzie> Also if you put a solid-enough stone (or curb) on front of the sled, maybe momentum will flip it over.
07:07:32 <shachaf> `quote
07:07:35 <HackEgo> 610) <NihilistDandy> Also Perl, but I don't really consider that a programming language so much as a really heavy implementatino of awk
07:07:38 <CakeProphet> they're apparently going to try to beat the speed record for a single-wheeled vehicle.
07:08:00 <CakeProphet> elliott: what did you say to me once about providing context in a quote?
07:08:15 <shachaf> CakeProphet: "don't do it"?
07:08:24 <CakeProphet> ...no.
07:08:24 <fizzie> CakeProphet: Yeah, though the page looked exactly the same in 2008 or so, so...
07:08:36 <shachaf> @quote
07:08:36 <lambdabot> siracusa says: otherwise `maybe` not $ Just otherwise
07:08:56 <fizzie> "When you context, you make a con out of.. tex.. and T..."
07:12:55 <CakeProphet> ..
07:19:23 <CakeProphet> the riot wheel actually seems like a much better idea than the monowheel.
07:22:55 <CakeProphet> http://www.gizmag.com/embrio-one-wheel-concept/2350/
07:22:56 <CakeProphet> bahahaha
07:23:29 <Madoka-Kaname> @hoogle Char -> Int
07:23:29 <lambdabot> Data.Char digitToInt :: Char -> Int
07:23:29 <lambdabot> Data.Char ord :: Char -> Int
07:23:29 <lambdabot> Data.ByteString.Char8 count :: Char -> ByteString -> Int
07:23:33 <Madoka-Kaname> @hoogle Int -> Char
07:23:33 <lambdabot> Data.Char chr :: Int -> Char
07:23:33 <lambdabot> Data.Char intToDigit :: Int -> Char
07:23:33 <lambdabot> Data.ByteString.Char8 index :: ByteString -> Int -> Char
07:27:28 <CakeProphet> Subroutine references are the simplest case. When the inclusion system walks through @INC and encounters a subroutine, this subroutine gets called with two parameters, the first a reference to itself, and the second the name of the file to be included (e.g., "Foo/Bar.pm"). The subroutine should return either nothing or else a list of up to three values in the following order
07:27:35 <CakeProphet> I wonder why it gets a reference to itself...
07:32:25 <SgeoN1> Dear Chromium: Please stop hero derping
07:33:46 <Sgeo|web> Dear autocorrect: Please die.
07:34:43 <CakeProphet> oh god there's two Sgeo
07:35:25 <Sgeo|web> Dear Sgeo: Please multiply.
07:40:09 <Sgeo|web> > [S] Sgeo: Reproduce
07:40:10 <lambdabot> Not in scope: data constructor `S'Not in scope: data constructor `Sgeo'Not ...
07:49:11 <CakeProphet> another benefit of using multiple modules for the data: adding new modules does not require generating the entire thing again.
07:52:57 <elliott> tmpfs 740M 968K 739M 1% /run
07:52:57 <elliott> none 5.0M 0 5.0M 0% /run/lock
07:52:57 <elliott> none 1.9G 728K 1.9G 1% /run/shm
07:52:58 <elliott> Wait. What?
07:53:04 <elliott> elliott@katia:~/Code/ngrams$ ls /run
07:53:04 <elliott> acpid.pid ConsoleKit dbus lightdm.pid network-interface-security rsyslogd.pid udev upstart-udev-bridge.pid
07:53:04 <elliott> acpid.socket console-kit-daemon.pid dhclient-wlan0.pid lock NetworkManager.pid samba udev-configure-printer utmp
07:53:04 <elliott> atd.pid crond.pid initramfs motd nm-dhclient-wlan0.conf sdp udisks wpa_supplicant
07:53:06 <elliott> avahi-daemon crond.reboot kerneloops.pid mount pm-utils sendsigs.omit.d unattended-upgrades.lock
07:53:09 <elliott> console cups lightdm network pppconfig shm upstart-socket-bridge.pid
07:53:12 <elliott> fizzie: Explain.
07:53:15 <Sgeo|web> Huh. Yesod has a thing that lets it take a Yesod (and perhaps a broader category) site and package it as a desktop application
07:53:30 <Sgeo|web> <elliott> Don't do that
07:53:57 <Sgeo|web> <elliott> Don't put quotes in my mouth
07:55:25 <CakeProphet> `run perl -e '$x = $y = 2; print $y,$x'
07:55:27 <HackEgo> 22
07:56:01 <CakeProphet> `run perl -e '%x = %y = (); $y{x}=2; print %x,%y;'
07:56:03 <HackEgo> x2
07:57:33 <Sgeo|web> It bothers me a bit that "Just trust Google" is a Yesod default
07:57:48 <elliott> How does it trust Google?
07:57:59 <Sgeo|web> -- And tell us where to find the jQuery libraries. We'll just use the defaults, -- which point to the Google CDN. instance YesodJquery Synopsis
07:58:13 <elliott> Sgeo|web: That's an everything default; it's the official way to use jQuery.
07:58:49 * Sgeo|web nods and backs away slowly at the Google takeover of the web
07:59:21 <Sgeo|web> Seriously, how is that... I mean... why....
07:59:31 <elliott> Sgeo|web: Because Google have tons of servers and browsers can cache it.
07:59:36 <elliott> CDNs are not an uncommon tactic.
07:59:55 <elliott> This is why Yahoo tells you to use their Yahoo API stuff that was quite popular a while back directly from their servers.
08:00:06 <elliott> It avoids downloading the same files seven billion times.
08:00:12 <elliott> And if you think /that's/ how Google's taking over the web, then you're blind.
08:00:36 <elliott> Sgeo|web: Anyway, Google is probably _more_ secure than jquery.org or whatever; how many developers would check the minified version before using it?
08:01:08 <Sgeo|web> I may have trust issues
08:01:19 <Sgeo|web> Which is weird because I pretty much trust Google with my life at this point
08:01:39 <elliott> I explicitly detailed reasons why Google's trustability /in this case/ is strictly >= jquery.com.
08:02:07 <Sgeo|web> I meant in terms of trusting that Google is not actively malicious >.>
08:02:39 <Sgeo|web> Or maybe you meant even in those terms too
08:02:56 <elliott> Someone exploiting jquery.com is about ten thousand times more likely.
08:03:06 <elliott> But I'm not sure how much you could do with a hijacked jQuery.
08:03:25 <elliott> There aren't special jQuery calls for handling sensitive data; it would be an unwieldy, and _very_ obvious, hijacking.
08:03:30 <elliott> (Anyone using Firebug would spot it instantly.)
08:06:57 <Sgeo|web> "The widget generated contains only the contents of the form, not the form tag itself. So..."
08:07:11 <Sgeo|web> Hmm, weird, I wonder why. Multiple forms in a single form tag?
08:07:47 <elliott> Things like GET/POST/action/encoding are separate from the actual fields.
08:07:54 <elliott> But seriously stop talking about web stuff, it is really boring.
08:09:09 <Patashu> elliott needs to get with the times
08:09:10 <Patashu> web 3.0
08:10:22 <Sgeo|web> Oh god Web 3.0 is an actual existent buzzword
08:11:55 <Patashu> It's increasing at an exponential rate
08:12:03 <Patashu> Soon we'll be talking about web infinity.0
08:12:04 <shachaf> Web 3.11 is next.
08:12:17 <elliott> Patashu: Like Firefox version numbers!
08:12:18 <Patashu> Or web NaN.0 for those who coded it poorly
08:12:20 <Patashu> Yes
08:12:28 <Patashu> Man, now I want a program that's version NaN.0
08:12:48 <shachaf> Version number components aren't floating point numbers.
08:13:11 <Patashu> But some programming languages treat all numbers as floats
08:13:14 <Patashu> (unless you tell them not to)
08:13:18 <fizzie> I don't know what that /run is all about; it looks like the contents of a regular /var/run.
08:13:24 <elliott> Version numbers also aren't numbers.
08:13:40 <shachaf> elliott: I never claimed they were.
08:13:47 <elliott> That was at Patashu.
08:13:48 <shachaf> <elliott> shachaf: I never claimed you claimed they were.
08:13:49 <elliott> drwxr-xr-x 21 root root 800 2011-10-13 17:52 run
08:13:50 <elliott> The "run" is red, why is it red.
08:13:50 <shachaf> Oh.
08:13:58 <CakeProphet> elliott: what if version numbers were in maths.
08:13:58 <elliott> Im cry.
08:14:09 <CakeProphet> "the set of all version numbers"
08:14:25 <shachaf> elliott sad :-(
08:14:40 <shachaf> When are you changing your name to Trevor?
08:15:46 <elliott> * trevor :Nickname is already in use.
08:16:08 <shachaf> * elliott :Nickname is already in use.
08:16:31 <elliott> * shachaſ :Erroneous Nickname
08:16:35 <Sgeo|web> All version numbers to be used from henceforth must either have been used previously, or submitted to committee for consideration. Average time for definitive rulings expected to be one year.
08:16:43 <fizzie> ORPHAN 40;31;01 # symlink to nonexistent file, or non-stat'able file <- those are red.
08:16:52 <fizzie> At least in the default dircolors db here.
08:17:13 <elliott> http://books.google.com/ngrams/graph?content=afs&year_start=1750&year_end=2000&corpus=0&smoothing=3
08:17:19 <elliott> I don't like Google's OCR system.
08:17:26 <elliott> http://books.google.com/ngrams/graph?content=fuck&year_start=1750&year_end=2000&corpus=0&smoothing=3
08:17:29 <elliott> Come on, guys.
08:17:33 <elliott> It's called a long s.
08:17:38 <shachaf> I just ran `rm *` in my home directory
08:17:40 <shachaf> All the non-hidden non-directories are gone.
08:17:41 <shachaf> What do I do.
08:17:45 <elliott> shachaf: Smile.
08:17:55 <fizzie> You're on candid camera.
08:18:51 <elliott> http://multitude.tv/content/view/471/60/
08:19:02 <fizzie> They know about long s, they're just apathetic. ("Why do I see so many misspellings like thif from pre-1800 Englifh books? Use of the medial s.")
08:19:03 <elliott> fizzie: I swear to god, the Google data actually has "f" for the long s in all the historical data.
08:19:07 <elliott> It's...
08:19:10 <elliott> All the old data is completely unusable.
08:19:14 <elliott> This is so messy.
08:20:13 <fizzie> There isn't very much of the old data, though.
08:20:23 <Patashu> typoing on occasion will add realism
08:20:26 <Patashu> trust me guys
08:20:31 <elliott> fizzie: YES BUT COME ON
08:20:40 -!- SgeoN1 has quit (Read error: Connection reset by peer).
08:21:01 -!- SgeoN1 has joined.
08:22:06 <elliott> fizzie: I SUPPOSE it will all work out but STILL?
08:22:08 <fizzie> http://books.google.com/ngrams/graph?content=efcape%2Cescape&year_start=1750&year_end=2000&corpus=0&smoothing=3 <-- nice crossing there.
08:23:14 <elliott> fizzie: Quite a swift transition, innit.
08:23:34 <fizzie> Also -> http://narf-archive.com/pix/0bedf86c5eff1803888d6e7b8529b3603dedc5a1.jpg <- "By the year 2000" WHERE IS THE FUTURE
08:24:06 <elliott> Can that day happen?
08:24:07 <elliott> Please?
08:24:26 <elliott> (When's that from? It almost seems parody.)
08:24:55 <fizzie> I don't know; it was a link. It could be a parody, I suppose; it sounds surprisingly modern for what it pretends to be.
08:25:17 <elliott> The "hovercar" thing is a bit cliche.
08:26:11 <fizzie> Though it's not very different in tune from the not-a-parody "future" articles I've read in the piles of 1970s magazines we had at the summer cottage place.
08:26:15 <CakeProphet> okay so how would I do something like this, but in bash...
08:26:19 <elliott> Don't.
08:26:41 <CakeProphet> $var? "=$var" : ''
08:27:35 <fizzie> It's in that proggit thing, but no background from there either.
08:27:45 <elliott> elliott@katia:~/Code/ngrams$ grep " \"\t" googlebooks-eng-all-5gram-20090715-478.csv
08:27:45 <elliott> elliott@katia:~/Code/ngrams$
08:27:46 <elliott> Huh??
08:27:54 <elliott> I /know/ there are properly fully quoted entries.
08:27:55 <elliott> Oh, wait.
08:27:57 <elliott> As a word. Dur.
08:27:59 <elliott> Im idiot.
08:28:10 <CakeProphet> fizzie: help
08:28:22 <CakeProphet> I'm a bash noob.
08:29:22 <elliott> elliott@katia:~/Code/ngrams$ grep '" ' googlebooks-eng-all-5gram-20090715-478.csv | egrep -v '^"'
08:29:22 <elliott> elliott@katia:~/Code/ngrams$
08:29:27 <fizzie> CakeProphet: ${var:+=$var} maybe.
08:29:35 <elliott> fizzie: Strange; the imbalanced-quotes thing seems only to be for the beginnings of the n-grams.
08:29:49 <CakeProphet> fizzie: er wait isn't it -?
08:29:59 <CakeProphet> as you've explained something similar before.
08:30:03 <fizzie> CakeProphet: No, that's "use the value if $var is unset".
08:30:08 <CakeProphet> ah okay.
08:30:16 <fizzie> CakeProphet: With + it's "use the value if var is set; empty otherwise".
08:30:33 <fizzie> Well, s/set/non-empty/.
08:30:51 <elliott> fizzie: Be bemused with me.
08:32:08 <fizzie> elliott: It's not surprising space-quote-tab doesn't match, since why would there be a space before the terminating "? But quote-tab should.
08:32:17 <CakeProphet> I wonder if Eng1M is a valid Perl package name.
08:32:19 <elliott> fizzie: Quote-tab does.
08:32:22 <elliott> But
08:32:23 <elliott> <elliott> elliott@katia:~/Code/ngrams$ grep '" ' googlebooks-eng-all-5gram-20090715-478.csv | egrep -v '^"'
08:32:33 <elliott> fizzie: So /all imbalanced quotes are at the start of the line/.
08:32:37 <elliott> That makes no sense, to me.
08:33:08 <fizzie> elliott: Why not? All imbalanced quotes are produced by somehow terminating the n-gram too early, so they all have the starting quote but lack the ending one.
08:33:32 <elliott> fizzie: Weeell, okay. I'd expect it to get split somehow so that the ending-only one would appear somewhere else, but fair enough.
08:33:39 <elliott> fizzie: There are no escapes apart from "", right?
08:34:11 <fizzie> elliott: I haven't seen any, at least.
08:34:17 <elliott> Right.
08:34:38 <fizzie> It could be that embedded tabs would also be escaped somehow by the same thing that escaped the quotes, but one hopes there weren't any anywhere.
08:35:39 <CakeProphet> hey guys check out my somewhat advanced bash usage: http://pastebin.com/PKeH3Gmm
08:36:21 <elliott> fizzie: Something like "a b c d"" is theoretically possible, isn't it...?
08:36:25 <fizzie> Don't you mean ${2:+=$2} instead of ${2+=$2}?
08:36:30 <elliott> So I can't just strip off the last quote and then change "" into " >_<
08:36:34 <CakeProphet> fizzie: er, yes.
08:36:36 <elliott> Because it could be "a b c d""""
08:36:44 <CakeProphet> bash is weird
08:36:46 <elliott> Hmm, wait
08:36:50 <elliott> Doesn't that actually turn out right?
08:37:00 <elliott> CakeProphet: FSVO advanced.
08:37:28 <elliott> CakeProphet: Copied to http://sprunge.us/eiPC.
08:37:43 <CakeProphet> lolwhy
08:37:51 <elliott> Because I don't like expiring pastes.
08:37:57 <CakeProphet> ...why
08:37:59 <fizzie> elliott: I... uh, suppose. Though I believe (unsubstantiated) that a truncated [a][b][c][d"][something] would appear as ["a b c d"" ] with the trailing space in there. But I'm certainly not sure.
08:38:17 <elliott> fizzie: I mean, to strip off the /closing/ quote.
08:38:20 <elliott> fizzie: For fully-formed things.
08:38:35 <Sgeo|web> Is there a Random monad? Is randoms just commonly used?
08:38:47 <CakeProphet> elliott: hey you can't do that. I have intellectual property rights over that piece of code that I just freely gave to a pastebin site.
08:39:15 <elliott> Sgeo|web: The random functions are a trivial state monad over the RndGen; it's easy to construct your own. But usually it's simpler to thread the generator.
08:39:20 <fizzie> elliott: Yes, but I mean even when a truncated thing ends in an escaped "", I think there'd be a trailing space there, so it wouldn't be the very last character like it is for non-truncated quoted things.
08:39:31 <elliott> randoms is based because you can't return the final generator, so you can't really use it with the IO generator.
08:39:52 <Sgeo|web> based?
08:39:56 <elliott> bad.
08:40:06 <elliott> I keep mixing words with things I'm reading.
08:40:19 <elliott> fizzie: Well, I don't want to risk it. But still, if I do "chop off the last quote and then turn "" into ", leaving lone quotes as they are", that should preserve all quote cases with valid escaping... riiiiiight?????
08:40:38 <CakeProphet> is there any sane way to join two paths in bash?
08:40:53 <shachaf> Put a / in between them?
08:40:56 <elliott> /
08:41:04 <CakeProphet> like say $a is foo/bar/ then $a/blah is foo/bar//blah
08:41:08 <CakeProphet> is that fine?
08:41:13 <elliott> Yes.
08:41:15 <shachaf> Unless you care.
08:41:23 <CakeProphet> I kind of do, but not enough to worry about it.
08:41:25 <Sgeo|web> "Excuse me! If the user gives us some input here that read can't read (like "haha"), our program will crash with an ugly error message. If you don't want your program to crash on erronous input, use reads, which returns an empty list when it fails to read a string. When it succeeds, it returns a singleton list with a tuple that has our desired value as one component and a string with what it didn't consume as the other."
08:41:26 <elliott> I like how ByteString doesn't even have a simple replace function.
08:41:29 <fizzie> elliott: I suppose. There shouldn't be any lone quotes (or sequence-of-odd-quotes) left, except for the case where you'd accidentally turn a final "" into a single quote.
08:41:36 <Sgeo|web> Um, why a list, instead of a Maybe?
08:41:39 <elliott> Sgeo|web: ambiguous parses
08:41:51 <Sgeo|web> Ah
08:42:03 <elliott> fizzie: But that shouldn't matter, because I leave lone quotes alone after stripping off the end.
08:42:12 <fizzie> CakeProphet: ${a#/}/blah if you care.
08:42:17 <shachaf> Sgeo|web: Just define safeRead :: Read a => String -> Maybe a, and then use that.
08:42:18 <fizzie> elliott: Yes, it sounds like it should work all right.
08:42:21 <elliott> fizzie: Right.
08:42:44 <fizzie> CakeProphet: Uh, sorry, ${a%/}/blah, I mean.
08:42:46 <shachaf> safeRead is optimally defined by using unsafePerformIO to catch the read exception, as elliott will tell you.
08:42:59 <fizzie> (I can never remember how those go.)
08:43:15 <CakeProphet> oh hey look I decided to use greedy patterns because elliott said it was the most common case
08:43:27 <CakeProphet> and it's not what I wanted.
08:44:40 <CakeProphet> (no fault of elliott's, I just shouldn't blindly do everything he recommends without actually thinking about what I'm doing)
08:44:57 <shachaf> CakeProphet: WRONG
08:45:03 <CakeProphet> 4 < CakeProphet> (no fault of elliott's, I just shouldn't blindly do
08:45:03 <shachaf> Obey elliott without question.
08:45:05 <CakeProphet> er
08:45:07 <CakeProphet> wrong paste
08:45:13 <CakeProphet> BAH EMACS I HATE YOUR CLIPBOARD STUFF
08:45:18 <fizzie> CakeProphet: $ (a="x"; b="x/"; echo ${a%/}/y ${b%/}/y)
08:45:18 <fizzie> x/y x/y
08:45:20 <elliott> > breakSubstring "a" "b"
08:45:22 <lambdabot> Not in scope: `breakSubstring'
08:45:23 <elliott> > Data.ByteString.breakSubstring "a" "b"
08:45:24 <lambdabot> Not in scope: `Data.ByteString.breakSubstring'
08:45:27 <elliott> Bahh.
08:45:46 <CakeProphet> /^--(.+)(?:=(.+))?$/
08:45:54 <CakeProphet> /^--(.+)(?:=(.+))?$/
08:45:56 <CakeProphet> should be
08:45:59 <CakeProphet> /^--(.+?)(?:=(.+))?$/
08:47:04 <fizzie> /^--([^=]+)(?:=(.+))?$/ could *possibly* have less backtracking.
08:47:12 * CakeProphet misses the simple days where he just followed his use-non-greedy-by-default rule.
08:47:19 <shachaf> > (BS.breakSubstring `on` BSC.pack) "a" "b"
08:47:20 <lambdabot> ("b","")
08:47:23 <CakeProphet> fizzie: ah yes it could be optimized but it's not really a critical section of code.
08:47:27 <CakeProphet> it's my option parsing.
08:47:54 <CakeProphet> for this data generation script.
08:48:17 <elliott> http://sprunge.us/ZQic
08:48:24 <elliott> Perhaps I should make some top-level functions.
08:48:39 <elliott> CakeProphet: lern to getopt
08:48:43 <elliott> even bash has it
08:48:52 <CakeProphet> elliott: wow I feel like an actual prophet right now...
08:48:57 <CakeProphet> can't use getopt in this case, I'm pretty sure.
08:49:05 <elliott> "i'm sure."
08:49:40 -!- nooga has joined.
08:49:46 <CakeProphet> because the options designate that the preceding arguments are files that are grouped into the same dataset, up to the next option.
08:49:47 <shachaf> elliott: You're using ByteStrings?
08:49:48 <shachaf> Racist.
08:49:55 <CakeProphet> maybe that can be done with getopt magic but my code works fine.
08:50:05 <elliott> shachaf: Nothing I do breaks the Unicode.
08:50:09 <elliott> shachaf: Text would merely be added overhead.
08:51:15 <shachaf> elliott: Then what's the meaning of Data.ByteString.Char8? Eh?
08:51:25 <shachaf> What if someone uses a Unicode newline character instead of \n?
08:51:42 <elliott> shachaf: Someone, in this case, is Google. :p
08:51:42 <shachaf> What if they write an integer using a Unicode character?
08:51:56 <CakeProphet> so for example to generate all of the english modules you'd write ./construct_grams.pl --eng-all=EngAll googledata/googlebooks-eng-all*.csv --eng-1M=Eng1M googledata/googlebooks-eng-1M-*.csv --eng-fiction=EngFiction ...
08:52:00 <Sgeo|web> For my purposes, given my inexperience, should I be using Text?
08:52:05 <shachaf> elliott: ...Why B8.last instead of B.last?
08:52:09 <elliott> Sgeo|web: What are your purposes?
08:52:19 <elliott> shachaf: So I can pattern-match on a character literal.
08:52:42 <elliott> degrade: Data.ByteString.init: empty ByteString
08:52:42 <elliott> What.
08:52:49 -!- ais523 has joined.
08:52:52 <Sgeo|web> elliott: just in general
08:52:57 <Sgeo|web> Until I get a better grip
08:52:59 <elliott> Sgeo|web: That is not a purpose.
08:53:07 <CakeProphet> the option specifies what the option will be named in the actual word generator script, and the (optional) thing on the other side of the = specifies the perl module to save it to.
08:53:07 <Sgeo|web> Playing around is my purpose
08:53:14 <CakeProphet> so it's kind of a non-standard option usage.
08:53:16 <elliott> Then just use Strings, since you never write actual programs.
08:53:30 <elliott> hi ais523
08:53:34 <ais523> hi elliott
08:53:47 <CakeProphet> Sgeo|web: Text isn't particularly difficult
08:53:49 <CakeProphet> so, sure.
08:53:49 <ais523> bleh, too busy at work to do esoprogramming, or even roguelike development
08:53:51 <ais523> it's annoying
08:54:06 <shachaf> ais523: You develop a roguelike?
08:54:09 <ais523> (I did get a chance to practice my golfing skills when I needed to delete duplicated lines from a file in an emergency)
08:54:10 <elliott> acehack
08:54:10 <shachaf> Oh, *that* ais523.
08:54:13 <ais523> shachaf: AceHack, a NetHack fork
08:54:17 <CakeProphet> Sgeo|web: I think you have Haskellphobia
08:54:17 <elliott> shachaf: There are so many of them.
08:54:18 * shachaf feels like we've been through this before.
08:54:20 <ais523> wait, are there other ais523s?
08:54:24 <elliott> ais523: SO MANY.
08:54:39 <fizzie> CakeProphet: Personally I'd just make construct_grams.pl always construct a single dataset, and call it as ./construct_grams.pl --option="eng-all" --module="EngAll" googledata/googlebooks-eng-all*.csv
08:54:55 <CakeProphet> hmmmm, well...
08:55:03 <CakeProphet> yeah I could do that.
08:55:17 <elliott> fizzie: That lets him run them in parallel, too.
08:55:42 <CakeProphet> bah
08:55:48 <CakeProphet> I don't want to recode this thing /again/
08:55:49 <fizzie> "bah-rallel".
08:56:10 <CakeProphet> I just finished making it awesome.
08:56:40 <ais523> elliott: I have found places where someone else had registered ais523, but they're mostly really massive places like AOL
08:57:55 <ais523> so far, callforjudgement has been unique, but I haven't tried it in too many places
08:58:17 <elliott> fizzie: I found the most pathologicalest ngram:
08:58:18 <elliott> ----------
08:58:18 <elliott> "\""
08:58:18 <elliott> ----------
08:58:26 <ais523> (the YouTube account, I don't have access to, but I did create it; YouTube simply decided not to ask me for a password, then created the account, and now I can't log in as it doesn't have a password)
08:58:47 <elliott> fizzie: What, er, do you think that is? The single word "?
08:58:52 <elliott> fizzie: Literal emptiness?
08:59:05 <elliott> ais523: yes it does, it's tied to your google account
08:59:06 <fizzie> elliott: Ugh. I suppose that's [\"][x][y][z][w] with the other four words lost somewhere.
08:59:11 <fizzie> elliott: Was there a space after?
08:59:19 <ais523> elliott: but there was no google account mentioned
08:59:23 <elliott> fizzie: It's, um, hard to check.
08:59:24 <ais523> I don't think I specified an email address
08:59:26 <elliott> ais523: You were logged into one at the time.
08:59:33 <elliott> ais523: Google Account logins are visible from any google site.
08:59:44 <ais523> elliott: you know how paranoid I am with Google cookies, right?
08:59:52 <fizzie> There's a "fizzlefozzle" on ##c, I'm feeling identity-threatened. (I used to be "Fizzle" earlier.)
08:59:55 <ais523> I was using a separate browser with history deleted
09:00:03 <elliott> fizzie: OK, let's try this again.
09:00:10 <CakeProphet> also, I can still run multiple scripts in parallel, I just don't know if I can do that sanely
09:00:18 -!- copumpkin has quit (Ping timeout: 258 seconds).
09:00:21 <CakeProphet> because I also have to update a record of options -> modules
09:00:38 <CakeProphet> and there could be race conditions of some kind.
09:00:44 -!- copumpkin has joined.
09:00:54 <fizzie> There is this thing called advisory file locking.
09:01:02 <CakeProphet> oh?
09:01:06 <elliott> CakeProphet: Dude, you're overcomplicating things.
09:01:13 <elliott> There is no reason generating two models should have any kind of interaction.
09:01:55 <CakeProphet> they have to update their command-line option -> perl module association into some kind of data structure that the script has access to.
09:02:07 <CakeProphet> I suppose this could just be a text file.
09:02:20 <elliott> ----------
09:02:21 <elliott> "\""
09:02:21 <elliott> ----------
09:02:21 <fizzie> They, or you. I wouldn't bother automatating that sort of thing.
09:02:27 <elliott> fizzie: That's literally the entire thing, there's no quotes around it oranything.
09:02:31 <elliott> or anything.
09:02:37 <elliott> CakeProphet: Dude, just... write one. It'll be like five lines.
09:02:48 <fizzie> Well, there is a starting quote.
09:02:48 <CakeProphet> roughly 24 lines actually.
09:03:04 <elliott> fizzie: Yes, but is that the beginning of some escaping, or an actual double-quote token?
09:04:12 <fizzie> Based on what I've seen, the initial quote is a beginning of a ["a b "" c d"] style quoted-because-of-embedded-double-quote ngram; then the [\""] part is just properly escaped [\"] token; and then it has gotten splut, but it would have been followed with [uh oh ruh roh"] or something.
09:04:41 <fizzie> Of course that's still just a guess.
09:05:10 <elliott> fizzie: Oh.
09:05:12 <elliott> fizzie: You are misinterpreting me.
09:05:17 <elliott> fizzie: That was the print-out of the /Haskell string/.
09:05:24 <elliott> In the file, the n-gram portion of that line looks like this:
09:05:24 <elliott> "
09:05:28 <fizzie> Oh.
09:05:37 <fizzie> Uh.
09:05:49 <CakeProphet> hmmmmmmmm
09:05:52 <elliott> You're going to tell me to just drop it, but I want to know what you think it is first.
09:05:55 <elliott> Other than "a mess".
09:05:55 <CakeProphet> so now I can rewrite my build script to be parallel.
09:05:59 <elliott> CakeProphet: No.
09:06:01 <elliott> CakeProphet: Just use GNU parallel.
09:06:07 <elliott> It's like xargs, but parallel.
09:06:14 <shachaf> xargs is like xargs, but parallel
09:06:17 <fizzie> Or the parallelllling option of xargs.
09:06:21 <elliott> Well, yes, but parallel is simpler.
09:06:26 <shachaf> xargs is simpler.
09:06:34 <elliott> shachaf: FSVO simpler.
09:06:43 <shachaf> FTCVO simpler
09:06:46 <CakeProphet> elliott: what is parallel called in shell?
09:06:55 <elliott> CakeProphet: What? It's called... parallel.
09:06:56 <elliott> http://en.wikipedia.org/wiki/GNU_parallel
09:06:57 <fizzie> elliott: My guess is that it's still a ["a b c d e"] except it has gotten truncated to 0 words this time. But really, who can tell.
09:07:03 <shachaf> xargs also supports -0
09:07:06 <CakeProphet> elliott: ah I need moreutils
09:07:07 <shachaf> And all the other goodies.
09:07:14 <elliott> No.
09:07:16 <elliott> CakeProphet: moreutils is another thing.
09:07:20 <shachaf> CakeProphet: No, you need xargs
09:07:24 <elliott> parallel is just a shell script; pop it into ~/bin
09:07:27 <elliott> shachaf: parallel also does -0.
09:07:30 <CakeProphet> The program 'parallel' is currently not installed. You can install it by typing:
09:07:31 <shachaf> shachaf@argon:~$ dpkg -S `which parallel`
09:07:31 <shachaf> moreutils: /usr/bin/parallel
09:07:33 <CakeProphet> sudo apt-get install moreutils
09:07:35 <elliott> CakeProphet: That is another parallel program.
09:07:38 <elliott> shachaf: That is another parallel program.
09:07:40 <elliott> It is unrelated.
09:07:41 <shachaf> Oh.
09:07:44 <shachaf> That one is better.
09:07:45 <elliott> shachaf: Does xargs have multi-machine support?
09:07:54 <CakeProphet> um.... so what is parallel called in repos/shell
09:07:56 <shachaf> It has multi-datacenter support.
09:08:05 <shachaf> xargs will do anything.
09:08:12 <elliott> CakeProphet: It's called wget and move into ~/bin
09:08:15 <Patashu> does xargs have botnet support
09:08:16 <Patashu> muahahaha
09:08:18 <elliott> ftp://ftp.gnu.org/gnu/parallel/parallel-20110822.tar.bz2
09:08:54 <fizzie> http://www.gnu.org/software/parallel/ http://www.gnu.org/software/pexec/ GNU the Duplicator.
09:08:56 * CakeProphet is having command line overload
09:09:03 <elliott> FSVO upload.
09:09:08 <CakeProphet> is there an option to auto untar stuff.
09:09:12 <elliott> tar xf
09:09:32 <shachaf> xjf
09:09:44 <CakeProphet> don't I need something else for bz2?
09:09:47 <shachaf> Did you know the 'f' stands for 'file'?
09:09:49 <shachaf> CakeProphet: xjf
09:10:01 <fizzie> I always put the compression character in front of the 'x', and everyone thinks I'm all weird for that. :/ :/ :\
09:10:11 <fizzie> (As in, tar zxvf, tar jxvf, and so on.)
09:10:16 <shachaf> fizzie: You're all weird.
09:10:21 <shachaf> xzvf is the One True Order.
09:10:32 <elliott> shachaf: CakeProphet: xf figures it out automatically.
09:10:45 <shachaf> elliott: Only if you're using inferior GNU tools.
09:11:01 <shachaf> Real Programmers type it in by hand.
09:11:07 -!- pikhq has joined.
09:11:08 -!- pikhq_ has quit (Ping timeout: 240 seconds).
09:11:47 <fizzie> Of course Real Tar doesn't have any "z" or "j", so...
09:11:52 <fizzie> "tar: z: unknown function modifier"
09:12:15 <shachaf> Real Tar is GNU tar.
09:12:31 <shachaf> You just ignore whichever features don't make you feel superior enough.
09:13:00 <fizzie> % tar
09:13:01 <fizzie> Usage: tar {c|r|t|u|x}[BDeEFhilmnopPqTvw@[0-7]][bfk][X...] [blocksize] [tarfile] [size] [exclude-file...] {file | -I include-file | -C directory file}...
09:13:01 <fizzie> % gtar
09:13:01 <fizzie> gtar: You must specify one of the `-Acdtrux' or `--test-label' options
09:13:01 <fizzie> Try `gtar --help' or `gtar --usage' for more information.
09:13:07 <elliott> `addquote <shachaf> Real Tar is GNU tar. <shachaf> You just ignore whichever features don't make you feel superior enough.
09:13:10 <HackEgo> 710) <shachaf> Real Tar is GNU tar. <shachaf> You just ignore whichever features don't make you feel superior enough.
09:13:20 <fizzie> The first one looks inherently more superior.
09:13:30 <fizzie> It's not trying too much to be friendly and accessible.
09:13:43 <CakeProphet> how does parallel differ from &?
09:13:51 <CakeProphet> aside from having fancy options
09:14:09 <shachaf> elliott: :-(
09:14:25 <elliott> CakeProphet: By being almost completely unrelated to &?
09:14:37 <shachaf> elliott: Not good enough.
09:14:47 <shachaf> I'm still confused.
09:14:52 <elliott> elliott@katia:~/Code/ngrams$ time cabal-dev/bin/degrade googlebooks-eng-all-5gram-20090715-478.csv >bar
09:14:52 <elliott> real0m44.693s
09:14:58 <elliott> That... that's a problem.
09:15:08 <elliott> I have a: problem.
09:15:10 <elliott> Time to: profile.
09:15:14 <shachaf> @whatis degrade
09:15:14 <lambdabot> I know nothing about degrade.
09:15:16 <fizzie> elliott: Your impatience is a problem. A day or two is not a problem.
09:15:24 <elliott> fizzie: That's for _one step_.
09:15:28 <elliott> fizzie: It was _eight seconds_ before.
09:15:41 <elliott> Something I messed with now has fiflicated the time it'll take.
09:15:47 <fizzie> Well, in that case.
09:15:49 <ais523> heh, I like quote 710
09:16:11 <elliott> fizzie: Nine hours is really not very acceptable for the "just clean it up into something vaguely reasonable so that intern can transform it" stag.e
09:16:12 <elliott> stage.
09:16:14 <CakeProphet> does bash have any kind of sensible map?
09:16:21 <CakeProphet> map as in Haskell or perl map
09:16:25 <fizzie> elliott: I don't know, you only have to do it once.
09:16:25 <elliott> for
09:16:38 <fizzie> CakeProphet: for k in $space_separated_list; do a_thing_with $k; done.
09:16:40 <elliott> fizzie: Yes, but for something that was going to take an hour...
09:16:44 <elliott> fizzie: Micro-optimising will pay off here.
09:17:19 <CakeProphet> hmmm okay
09:17:45 <shachaf> for k in "${come_on_fizie_bash_has_arrays[@]"; do a_thing_with "$k"; done
09:17:53 * shachaf can't spell without tab completion.
09:18:02 <shachaf> ...Or close {}.
09:19:54 <fizzie> while read col1 col2; do a_thing_with $col1 $col2; done < a_file_with_two_columns, also.
09:20:25 <shachaf> I like how bash...
09:20:34 <shachaf> Hmm, no, I can't think of any honest way of finishing that sentence.
09:20:35 <Sgeo|web> There's nothing wrong with using <$> without <*>, right? Even though it's basically a more restricted fma.... well, that would be a reason to use fmap
09:20:46 <shachaf> Sgeo|web: It's not more restricted.
09:20:50 <shachaf> @src <$>
09:20:51 <lambdabot> f <$> a = fmap f a
09:20:55 <Sgeo|web> Oh
09:21:01 * Sgeo|web might be a little tired right now
09:21:12 <elliott> Sgeo|web is always tired iff he's wrong.
09:21:31 <shachaf> Aren't we all?
09:21:36 <Sgeo|web> No, it's more like: If I'm wrong, then I'm tired.
09:21:49 <Sgeo|web> Since I'm always tired, I can be either right or wrong
09:21:50 <elliott> That's what I said.
09:21:55 <elliott> Well, almost.
09:22:05 <shachaf> Well, it's pretty much not what you said.
09:22:07 <shachaf> You must be tired.
09:22:30 <CakeProphet> so a for loop with parallel should work well yes.
09:22:32 <fizzie> I support the "let's make tires out of him" proposal, yes.
09:22:32 <elliott> Very.
09:22:38 <elliott> CakeProphet: parallel does the for loop for you.
09:22:40 <elliott> That's kind of the point.
09:22:48 <fizzie> Parallel and/or xargs. :p
09:22:51 <CakeProphet> elliott: but what I meant was that & spawns new processes... which is a form of parallelization right?
09:23:02 * elliott decides to let you figure it out yousrelf.
09:23:06 <elliott> s/yousrelf/yourself/.
09:23:22 * shachaf figures it out hismelf.
09:23:35 <CakeProphet> ah okay I missed the ... on the end of parallel usage string
09:23:46 <CakeProphet> but then.... how does it differentiate between commands and arguments.
09:24:00 <elliott> fizzie: See, that's why it was so slow: I had a major bug.
09:24:07 <CakeProphet> parallel cat a b c cat d
09:24:41 <shachaf> CakeProphet: It just splits whenever it sees an argument equal to "cat".
09:24:54 <elliott> "therapeutialliance"? Some word.
09:25:00 <CakeProphet> parallel cat a b c ls d
09:25:07 <shachaf> Doesn't work.
09:25:15 <shachaf> It'll cat a file called "ls".
09:25:21 <shachaf> In parallel.
09:25:53 <CakeProphet> okay well then I still want a for loop to construct the arguments to parallel I think.
09:26:16 <fizzie> Just pipe the arguments into it; that's what I'd do.
09:26:38 <CakeProphet> how so.
09:26:57 <CakeProphet> (Note: it's getting late, my brain starts to shut down and I become more dense than usual)
09:27:20 <fizzie> Just look at the parallel examples.
09:27:37 <fizzie> I don't know what exactly you want to do with it, after all.
09:28:13 <elliott> unescape Main 121 7781622 4.1 1.7 4.1 1.7
09:28:13 <elliott> That's better.
09:30:08 <elliott> parse Main 107 31149605 39.3 52.5 65.3 84.1
09:30:08 <elliott> clean Main 109 52212026 2.7 3.5 6.9 5.2
09:30:08 <elliott> unescape Main 121 7781622 4.1 1.7 4.1 1.7
09:30:08 <elliott> splitTab Ngram 108 88837691 19.1 26.4 19.1 26.4
09:30:08 <elliott> Gah.
09:30:12 <elliott> I guess I should optimise splitTab?
09:30:26 <elliott> splitTab :: ByteString -> (ByteString, ByteString)
09:30:26 <elliott> splitTab b = (B.take n b, B.drop (n+1) b)
09:30:26 <elliott> where Just n = B8.elemIndex '\t' b
09:30:26 <elliott> Not much to optimise.
09:31:41 <elliott> elliott@katia:~/Code/ngrams$ time cabal-dev/bin/degrade googlebooks-eng-all-5gram-20090715-478.csv >/dev/null
09:31:41 <elliott> real0m26.433s
09:31:46 <elliott> Hokay, splitting is definitely quite slow for some reason.
09:32:58 <fizzie> CakeProphet: E.g. something like this:
09:33:05 <fizzie> $ parallel -n 2 echo ./doit.pl <<ARGS
09:33:05 <fizzie> > --eng-all EngAll
09:33:05 <fizzie> > --eng-blah EngBlah
09:33:05 <fizzie> > ARGS
09:33:05 <fizzie> ./doit.pl --eng-all EngAll
09:33:05 <fizzie> ./doit.pl --eng-blah EngBlah
09:33:06 <lambdabot> not an expression: `--eng-all EngAll'
09:33:06 <lambdabot> Not in scope: data constructor `ARGS'
09:33:06 <lambdabot> not an expression: `--eng-blah EngBlah'
09:33:23 <fizzie> (Obviously without the "> "s, those are just the interactive prompt of "please continue".)
09:33:52 <CakeProphet> also without the echo
09:34:03 <fizzie> You may need to do something else if you want a globbed list-of-files in there, though.
09:34:07 -!- ais523 has quit (Remote host closed the connection).
09:34:13 <CakeProphet> fizzie: I do
09:34:51 <elliott> This is very, very annoying.
09:35:09 <CakeProphet> fizzie: couldn't I just construct a list of options separated by newlines or something?
09:35:19 <CakeProphet> and pipe that to parallel?
09:36:08 <elliott> AKA what fizzie said.
09:37:03 <fizzie> Here's one way:
09:37:14 <fizzie> $ while read opt mod fglob; do echo --option=$opt --module=$mod $fglob*; done <<ARGS | parallel echo ./doit.pl
09:37:15 <fizzie> > eng-all EngAll all-
09:37:15 <fizzie> > eng-blah EngBlah blah-
09:37:15 <fizzie> > ARGS
09:37:15 <fizzie> ./doit.pl --option=eng-all --module=EngAll all-1 all-2 all-3
09:37:16 <lambdabot> Not in scope: data constructor `ARGS'
09:37:16 <lambdabot> <no location info>: parse error (possibly incorrect indentation)
09:37:16 <lambdabot> <no location info>: parse error (possibly incorrect indentation)
09:37:16 <fizzie> ./doit.pl --option=eng-blah --module=EngBlah blah-1 blah-2
09:38:06 <CakeProphet> ....
09:38:10 <CakeProphet> I feel there is perhaps
09:38:12 <CakeProphet> an easier way.
09:38:51 <elliott> CakeProphet: It's kind of your fault that your tool is awkward to script.
09:39:06 <CakeProphet> elliott: ...okay?
09:39:44 <CakeProphet> next time I'll magically forsee this situation.
09:39:55 <CakeProphet> and other situations that I have no knowledge of.
09:39:59 <CakeProphet> I am after all, a prophet.
09:40:04 -!- oerjan has joined.
09:41:10 <CakeProphet> http://pastebin.com/HnuGcVE4
09:41:15 <CakeProphet> does anything look wrong with this?
09:41:51 <CakeProphet> the option is now just --ModuleName
09:42:07 <CakeProphet> as I took elliott's advice and will just manually upkeep the options
09:42:29 <elliott> It looks completely and utterly wrong.
09:42:35 <elliott> I'll let fizzie tell you how.
09:43:10 -!- GreaseMonkey has quit (Quit: The Other Game).
09:43:57 <fizzie> At the very least you should be piping the arguments into parallel (and it's lacking the command to run with those arguments); or I think there's some sort of ::: syntax to take them from the command line too, but still.
09:44:05 <oerjan> well, canadian-english-insane looks a bit redundant.
09:44:10 <CakeProphet> lol
09:44:14 <CakeProphet> I thought so too.
09:45:01 <fizzie> Oh, the command is in the x_opt() already. Well, that works too.
09:45:06 <CakeProphet> fizzie: it seems that according to the man page you can just intersperse arguments with commands?
09:45:12 <fizzie> (Without a command line it'll execute each input line.)
09:45:14 <elliott> Haskell loop unrolling:
09:45:15 <elliott> littleSplit :: ByteString -> [ByteString]
09:45:15 <elliott> littleSplit b = [first,second,third,fourth,fifth]
09:45:15 <elliott> where (first, b') = (B.take n b, B.drop (n + 1) b)
09:45:15 <elliott> where n = fromMaybe 0 (B8.elemIndex ' ' b)
09:45:15 <elliott> (second, b'') = (B.take n b', B.drop (n + 1) b')
09:45:16 <elliott> where n = fromMaybe 0 (B8.elemIndex ' ' b')
09:45:18 <elliott> (third, b''') = (B.take n b'', B.drop (n + 1) b'')
09:45:20 <elliott> where n = fromMaybe 0 (B8.elemIndex ' ' b'')
09:45:22 <elliott> (fourth, b'''') = (B.take n b''', B.drop (n + 1) b''')
09:45:24 <elliott> where n = fromMaybe 0 (B8.elemIndex ' ' b''')
09:45:25 <fizzie> CakeProphet: Which 'parallel' is this, the moreutils or the GNU one?
09:45:26 <elliott> (fifth, _) = (B.take n b'''', B.drop (n + 1) b'''')
09:45:28 <elliott> where n = fromMaybe 0 (B8.elemIndex ' ' b'''')
09:45:30 <CakeProphet> GNU one.
09:45:31 <elliott> fizzie: More importantly, he has a bunch of commands with no delimiters, unquoted.
09:45:44 * elliott waits for oerjan to scream.
09:45:56 <CakeProphet> parallel doesn't seem to specify that I need to delimit or quote anything
09:45:59 <CakeProphet> it is somehow magical.
09:46:22 * elliott lets fizzie express his scepticism for him.
09:46:24 <oerjan> AAAAAAAAAAAAAAAA
09:46:29 <fizzie> CakeProphet: Well, going by http://www.gnu.org/s/parallel/man.html#synopsis I think you should either paste or separate by other means.
09:47:02 <fizzie> s/paste/pipe/
09:47:14 <CakeProphet> the ... seems to suggest that I can repeat the [command [arguments ...]] pattern...
09:47:56 <elliott> shachaf: I wish the English corpus was only forty megs.
09:48:03 <CakeProphet> parallel ::: "gzip file1" "gzip file2"
09:48:05 <elliott> shachaf: That's the one good thing about your language.
09:48:06 <CakeProphet> hmmm
09:48:08 <CakeProphet> that's a new one.
09:48:12 <CakeProphet> but I could use this form probably.
09:48:16 <fizzie> CakeProphet: It doesn't suggest that to me, but I've just been using xargs.
09:48:17 <shachaf> elliott: It's because Hebrew is more compact.
09:48:25 <elliott> CakeProphet: You could just generate a bunch of arguments, and then | parallel ./foo.pl, dude.
09:48:30 <shachaf> elliott: Translate book from English to Hebrew => They get shorter.
09:48:31 <shachaf> It's true.
09:48:40 <elliott> Whaaat, my unrolled loop slowed my code down.
09:48:43 <elliott> That never happens.
09:48:50 <CakeProphet> elliott: I was trying to use as much of my existing code as possible.
09:48:54 <CakeProphet> as I am a bash nub
09:49:02 <oerjan> pesky vowels, who needs them
09:49:03 <elliott> CakeProphet: It's three lines. You barely have any code.
09:49:15 * CakeProphet is a bash nub.
09:49:19 <fizzie> CakeProphet: What I'd do is (gb_opt eng-1M Eng1M; gb_opt eng-all EngAll; gb_opt eng-fiction EngFiction; ...) | src/parallel
09:49:19 <CakeProphet> it scares me.
09:49:30 <fizzie> (It seems to work.)
09:49:32 <CakeProphet> ...what am I looking at.
09:49:40 <elliott> fizzie: Yes, that also works.
09:49:45 <elliott> fizzie: But use {} instead of (), please.
09:49:51 <CakeProphet> help what is this.
09:49:58 <CakeProphet> is that an array syntax or something?
09:50:02 <elliott> Sigh.
09:50:18 <elliott> fizzie: I'm wondering if I perhaps imagined this thing taking eight seconds.
09:50:36 <fizzie> elliott: Maybe. It took over a minute for my Perl script, and everyone knows Perl is the fastest thing.
09:50:46 <elliott> fizzie: Oh, wait, no, I distinctly felt superior because ha ha, mine only took eight seconds.
09:51:08 <CakeProphet> help what is () and {} with semicolon delimited list of commands.
09:51:16 <fizzie> CakeProphet: (a; b; c) is just "execute a, then b, then c in subshell"; and elliott is right, {a; b; c} would probably be better.
09:51:22 <elliott> fizzie: {a;b;c;}
09:51:27 <elliott> Bit of a wart there; you need the final semicolon.
09:51:29 <fizzie> Oh, right.
09:51:38 <CakeProphet> ...and you can.... pipe that?
09:51:40 <fizzie> And whitespace, I think.
09:51:40 <elliott> But on multiple lines it's swell:
09:51:41 <elliott> {
09:51:41 <CakeProphet> okay.
09:51:42 <elliott> a
09:51:42 <elliott> b
09:51:43 <elliott> c
09:51:44 <elliott> } | foo
09:52:03 <elliott> CakeProphet: I would pass along the arglist to parallel.
09:52:04 <fizzie> Certainly you can pipe the output of a command.
09:52:10 <elliott> CakeProphet: With "$@".
09:52:13 <elliott> (With quotes.)
09:52:19 <elliott> CakeProphet: Then you can specify things like job limit, etc.
09:52:55 <CakeProphet> I have no idea what "pass along the arglist to parallel" means.
09:53:09 <fizzie> The arguments to your script, perhaps.
09:53:18 <CakeProphet> isn't that what I have to do?
09:53:26 <fizzie> The thing that you pasted.
09:53:26 <CakeProphet> in order for it to work properly?
09:53:45 <fizzie> So that you can call "./build_all.sh -j 4" or something to make it run four jobs in parallel.
09:53:51 <CakeProphet> oh
09:53:52 <CakeProphet> that arglist
09:53:58 <CakeProphet> okay.
09:53:59 <CakeProphet> sure.
09:53:59 <elliott> | parallel "$@" should do it.
09:54:00 <fizzie> Though you'd need to shift that optional $1 out in that case.
09:54:05 <CakeProphet> right
09:54:22 <oerjan> > take 5 . map (take 4) . iterate (drop 5) $ "abcdefghijklmnopqrstuvwxyz"
09:54:25 <lambdabot> mueval-core: Time limit exceeded
09:54:26 <CakeProphet> er, how do I shift out that optional 1 :P
09:54:34 <oerjan> sheesh
09:54:37 <oerjan> > take 5 . map (take 4) . iterate (drop 5) $ "abcdefghijklmnopqrstuvwxyz"
09:54:37 <CakeProphet> help write bash for me.
09:54:40 <lambdabot> ["abcd","fghi","klmn","pqrs","uvwx"]
09:55:10 <fizzie> Just add a "shift" command somewhere. (After the D=... part.)
09:55:26 <fizzie> It does mean you'd need to "./build_all.sh . -j 4" to pass arguments to parallel, though.
09:55:39 <CakeProphet> hmmm, okay.
09:55:52 <fizzie> If you don't feel like it, you can just stick whatever parallel args you want right in the script.
09:55:56 <elliott> CakeProphet: It should probably just not take a directory.
09:56:02 <CakeProphet> D=$1
09:56:03 <CakeProphet> shift $@
09:56:04 <CakeProphet> ?
09:56:08 <fizzie> D=$1
09:56:09 <fizzie> shift
09:56:11 <elliott> CakeProphet: I mean.
09:56:14 <elliott> CakeProphet: You can just use "cd".
09:56:30 <CakeProphet> elliott: no I need the current directory elsewhere.
09:56:35 <CakeProphet> the cd is where the modules are output
09:56:39 <CakeProphet> but the googledata is on my external
09:56:49 <elliott> Seriously? It's not that big.
09:56:58 <CakeProphet> eh, I like it there. :P
09:57:08 <CakeProphet> I've only got like 70 gigs left on my laptop anyway.
09:57:29 <elliott> CakeProphet: See, those of us in the _serious_ n-gram business have to buy two-terabyte disks to store all our data files.
09:57:42 <elliott> And max out our connections for two days to get the data.
09:57:56 <fizzie> desmond:/project/puhe
09:57:57 <fizzie> 8.0T 3.9T 4.1T 49% /fs/project/puhe
09:57:57 <fizzie> desmond:/scratch/users/htkallas
09:57:57 <fizzie> 11T 9.0T 2.0T 83% /fs/scratch/users/htkallas
09:58:07 <elliott> nICE.
09:58:08 <elliott> Nice.
09:58:18 <fizzie> They recently expandated it a bit.
09:58:21 <elliott> fizzie: All them Hitchhikers books, eh?
09:58:37 <fizzie> Of course there's quite a lot more than one user too, so per-user it's not really very much.
09:59:04 <elliott> fizzie: Incidentally, how long does a seek over USB to a presumably-five-four-hundred-rpm mechanical hard disk take these days?
09:59:12 <elliott> (USB two.)
09:59:16 <CakeProphet> elliott: I am a nub. :( :( :(
09:59:17 <fizzie> (Also despite how the per-user automounts make it look, it's not exactly a 11T-disk-for-each-user.)
09:59:19 <CakeProphet> at the ngram business.
09:59:50 <fizzie> I don't know, but I don't think USB latency is very much compared to the actual seek time of the disk.
10:00:11 <CakeProphet> http://pastebin.com/JnhEYfDt
10:00:14 <CakeProphet> hi does this look good?
10:00:16 <elliott> fizzie: Hmph.
10:00:24 <elliott> fizzie: I have no idea how many I'll need to do per sentence.
10:00:26 <CakeProphet> er why did I tell it to highlight as perl
10:00:38 <elliott> CakeProphet: Yes, except you have ridiculous duplication there.
10:00:47 <elliott> You could do the gb_opt and d_opt things in a for loop.
10:00:57 <CakeProphet> jhweriuhwerhweorhwetoihasfiuhwetiuhwer
10:01:06 <elliott> Oh, er.
10:01:08 <elliott> } | parallel "$@" perl ./construct_grams.pl {}
10:01:11 <elliott> gb_opt() { echo perl ./construct_grams.pl --${2:-$1} $D/googlebooks-$1-*.csv; }
10:01:11 <fizzie> CakeProphet: Either "./construct_grams.pl" in x_opt() or on the parallel command line, not on both.
10:01:11 <elliott> d_opt() { echo perl ./construct_grams.pl --${2:-$1} /usr/share/dict/$1; }
10:01:19 <elliott> Yeah, I'd remove it from the _opt functions.
10:01:20 <CakeProphet> right my bad.
10:01:21 <elliott> Cleaner.
10:02:07 <CakeProphet> okay so how would I pipe a for loop into parallel. I'd have to use something like read right?
10:02:21 <fizzie> for ...; done | parallel?
10:02:30 <CakeProphet> oh.....
10:02:33 <CakeProphet> uh, okay.
10:02:38 <CakeProphet> bash = magic
10:02:42 <CakeProphet> arcane magic.
10:03:06 <CakeProphet> eh I'll just leave it as is
10:03:09 <CakeProphet> because.... I feel like it.
10:03:18 * elliott wonders if he's reporting /r/haskell trolls too much.
10:03:20 <CakeProphet> and because some options have second arguments and others don't
10:03:23 <elliott> shachaf: Am I reporting /r/haskell trolls too much?
10:03:38 <shachaf> elliott: How should I know?
10:03:43 <elliott> shachaf: You're the expert.
10:03:45 <shachaf> I don't usually read /r/haskell.
10:03:52 <shachaf> Do there exist trolls there?
10:03:55 * CakeProphet is now a master irp programmer.
10:04:00 <CakeProphet> I use irp to generate code in bash.
10:04:12 <CakeProphet> because I don't know how to do shit in bash.
10:04:37 <fizzie> CakeProphet: Should canadian-english-insane also have a module name? All the other dashful ones do.
10:04:45 <fizzie> (Or is that 'dashing'?)
10:05:15 <elliott> shachaf: Well, one guy has been trying to argue with me that, because his original post was to be interpreted as formal logic with a very torturous interpretation and not Haskell, his blatantly inflammatory "the only reason to learn Haskell is intellectual curiosity, only" comment was actually just saying close to nothing at all, and all my days of telling him that no, Visual Basic isn't better than Haskell in any way, and his "all that matters i
10:05:15 <elliott> s what the customer wants!!" argument is fallacious, were completely wasted.
10:05:22 <elliott> (As opposed to the 99 percent wasted I went in expecting.)
10:05:28 <elliott> Now he's posted this gem:
10:05:28 <elliott> [[
10:05:28 <elliott> v
10:05:29 <elliott> The first slide says Haskell is uniquely suited to help build programs from composable parts. How are classes in OOP languages not similar?
10:05:30 <CakeProphet> fizzie: ah yes
10:05:31 <elliott> And please, it's not a troll question. Please discuss with constructive arguments.
10:05:33 <augur_> elliott: "would whoever's milk shake is bringing all the boys to the yard please stop it"
10:05:33 <elliott> ]]
10:05:36 <augur_> good? bad?
10:05:39 <augur_> if good, what does it mean
10:05:42 <elliott> augur_: Milkshake is one word.
10:05:49 <augur_> yeah yeah typo
10:05:49 <elliott> augur_: It's certainly hard to read.
10:05:50 <augur_> jesus christ
10:05:55 <elliott> augur_: But it is amusing.
10:05:59 <augur_> ok and what does it mean
10:06:02 <CakeProphet> fizzie: it could also stand to have a shorter option name but that would complicate my script somewhat.
10:06:10 <augur_> "would whoever's milkshake is bringing all the boys to the yard, please stop it"
10:06:10 <shachaf> elliott: Be constructive!
10:06:11 <augur_> better?
10:06:28 <elliott> augur_: It is a request that the person P s.t. P's milkshake is bringing all the boys to the yard, to please stop their milkshake bringing all the boys to the yard.
10:06:40 <elliott> That doesn't parse, but anyway.
10:06:54 <augur_> everyones saying that. its amazing.
10:07:09 <augur_> it sounds perfectly fine to me, meaning only that, and i cannot see how that can work
10:07:11 <augur_> its beautiful
10:07:18 <elliott> shachaf: But the /r/haskell mod just came back like a few weeks ago to tell us he'd be more strictly enforcing the deletion of trolling and promoted copumpkin and some others to mod status :-(
10:07:18 <augur_> well i mean, i can see exactly how it can work but
10:07:21 <elliott> THE NEW REGIME HAS FAILED
10:07:35 <elliott> augur_: I keep wanting to say that "whoever" should be "whomsoever".
10:07:39 <elliott> It just... seems to read better like that.
10:07:45 <augur_> elliott: well thats fine
10:07:46 <elliott> Like you're obscuring the nonsense with formality.
10:07:48 <augur_> you're just a weirdo
10:07:56 <elliott> :D
10:07:59 <augur_> <3
10:08:04 <elliott> WHY IS THIS CODE SO SLOW
10:08:08 <augur_> also shachaf knows what i perceive better than i do
10:08:10 <augur_> via the internet
10:08:14 <shachaf> augur_: It's true.
10:08:20 <shachaf> It only works for Internet people.
10:08:43 <Sgeo|web> liftM = fmap except different types BLARGH
10:08:47 * Sgeo|web shoots someone
10:09:01 <elliott> Sgeo|web: What would you have preferred happen?
10:09:07 <augur_> :t liftM
10:09:10 <CakeProphet> fizzie: I don't think this script is working correctly.
10:09:12 <augur_> ...
10:09:14 <lambdabot> forall a1 r (m :: * -> *). (Monad m) => (a1 -> r) -> m a1 -> m r
10:09:27 <augur_> that makes sense.
10:09:29 <Sgeo|web> All monads be functors?
10:09:34 <augur_> Sgeo|web: yes
10:09:34 <shachaf> class Monad extends Functor {
10:09:41 <CakeProphet> shachaf: die
10:09:52 <elliott> Sgeo|web: Functors were not around when liftM was invented.
10:09:54 <elliott> (Well, yes, they were.)
10:09:55 <augur_> Sgeo|web: i suspect that liftM has laws that map doesnt have
10:09:56 <elliott> (But Functor wasn't.)
10:09:58 <oerjan> elliott: whomsoever is _wrong_ there, dammit.
10:09:59 <elliott> augur_: No it doesn't.
10:10:02 <augur_> elliott: oh?
10:10:10 <CakeProphet> fizzie: yeah so the script ends very quickly and nothing happens for some reason.
10:10:10 <fizzie> CakeProphet: Put an "echo" before the "perl" on the parallel command line and check what's it doing.
10:10:15 <augur_> so liftM is just fmap
10:10:17 <CakeProphet> okay
10:10:19 <oerjan> whom is _not_ a catchall replacement for who
10:10:23 <elliott> oerjan: :D
10:10:30 <elliott> Sgeo|web: So you'd have just removed liftM and broken all the code in existence?
10:10:33 <shachaf> oerjan: Whom said it was?
10:10:49 <elliott> Sgeo|web: I take it you'd do the same for ap when Applicative popped up even more recently (like six, seven years ago)?
10:10:49 <CakeProphet> oerjan: whomse English are we speaking? can I speak to the owner?
10:11:13 <elliott> I'm so glad we live in a world of slightly redundant functions being exported rather than a world in which nobody codes Haskell because they keep fucking breaking it.
10:11:30 <shachaf> elliott: WRONG
10:11:41 <shachaf> They keep breaking it *and* there are slightly redundant functions being exported.
10:11:42 <CakeProphet> fizzie: hmmm, well...
10:11:46 <elliott> shachaf: Well, yes.
10:11:48 <shachaf> Also, fmap can be more efficient than liftM, I believe.
10:11:49 <CakeProphet> is it just supposed to work in the background?
10:11:54 <elliott> shachaf: Well, yes.
10:11:57 <elliott> (>>=) can be slow.
10:11:59 <CakeProphet> or does it terminate when every parallel job terminates?
10:12:11 <fizzie> CakeProphet: By default it will wait until all the commands have been run.
10:12:15 <shachaf> http://www.haskell.org/pipermail/haskell-cafe/2006-November/019190.html
10:12:30 <CakeProphet> fizzie: oh well they finish way too fast for some reason... hmmm it may be an issue with my script
10:12:59 <Sgeo|web> Why not, in some library, do instance (Functor a) => Monad a where...
10:13:02 <fizzie> You could try running one of the lines the 'echo' printed out manually.
10:13:03 <Sgeo|web> Wait, no
10:13:09 <elliott> Sgeo|web: Because that (a) doesn't do what you want, and
10:13:10 <shachaf> Sgeo|web: Overlapping.
10:13:11 <elliott> (b) breaks everything.
10:13:14 <Sgeo|web> instance (Monad a) => Functor a....
10:13:15 <elliott> shachaf: It's not even overlapping.
10:13:18 <elliott> shachaf: it just doesn't work.
10:13:22 <elliott> Well, it is overlapping.
10:13:23 <shachaf> elliott: I meant what Sgeo|web meant.
10:13:33 <elliott> Right.
10:13:36 <elliott> Sgeo|web: Anyway, no.
10:13:40 <elliott> The answer is no.
10:13:41 <CakeProphet> fizzie: it seems to run fine that way.
10:13:47 <shachaf> However, in GHC 7.4, I hear they might be able to do it.
10:13:48 <CakeProphet> the lines are constructed well.
10:13:50 <shachaf> Or was it 7.6?
10:14:02 <elliott> shachaf: They're adding a Prolog interpreter?
10:14:02 <shachaf> Anyway, somethign about default implementations given constraints, or something like that.
10:14:15 <elliott> shachaf: That's already in, for methods:
10:14:31 <elliott> class Foo a where foo :: a -> (); default foo :: (Show a) => a -> (); foo a = show a `seq` ()
10:14:46 <shachaf> Oh.
10:14:56 <shachaf> In that case, what's stopping them from adding it?
10:14:57 <oerjan> <Sgeo|web> instance (Monad a) => Functor a.... <-- overlapping, which means it would make it impossible to define Functors that were not Monads
10:15:07 <elliott> shachaf: Because you'd still need an empty "instance Functor M" line for every M.
10:15:18 <fizzie> CakeProphet: Weird; in that case I'd expect it to work. You could try adding something like die join(" ", map { "[$_]" } @ARGV); at the beginning of the Perl script to see exactly what the arguments are.
10:15:33 <fizzie> (And whether there's any difference in running it manually or by parallel.)
10:15:38 <elliott> http://www.willamette.edu/~fruehr/logos/PNGs/RealHackers.png Oh man, 2006, so wild.
10:16:09 <elliott> fizzie: What if I just didn't parse the quotes?
10:16:14 <elliott> FOOD FOR THOUGHT.
10:16:15 <CakeProphet> fizzie: hmmmm it seems to be passing in the arguments as a single argument?
10:16:23 <CakeProphet> Constructing manx /usr/share/dict/manx dataset...
10:16:24 <shachaf> elliott: Oh. Well, there was some way they were going to add it.
10:16:29 <CakeProphet> should just say manx dataset
10:16:30 <elliott> CakeProphet: Well, it works like xargs.
10:16:34 <elliott> CakeProphet: It bundles up arguments and all.
10:16:35 <Sgeo|web> oerjan: Ah, that makes sense
10:17:00 -!- derdon has joined.
10:17:03 <CakeProphet> oh, well, I don't want that.
10:17:33 <Sgeo|web> Ooh, how about an AutoMonadToFunctor class, empty of functions, and instance (Monad a, AutoMonadToFunctor a) => Functor a
10:17:40 <Sgeo|web> So that lazy monad writers can just do
10:17:47 <elliott> CakeProphet: I'll let fizzie tutor you in basic xargs use.
10:17:57 <Sgeo|web> instance AutoMonadToFunctor MyMonad where...
10:17:59 <shachaf> Sgeo|web: The issue is old code.
10:17:59 <elliott> Sgeo|web: Lazy monad writers can just do instance Functor M where fmap = liftM.
10:18:06 <shachaf> Sgeo|web: And what elliott said.
10:18:09 <oerjan> Sgeo|web: still overlapping. only the part to the right of => counts.
10:18:13 <elliott> Sgeo|web: And instance Applicative M where pure = return; (<*>) = ap
10:18:32 <Sgeo|web> elliott: fair enough. oerjan, o.O
10:18:44 <elliott> Sgeo|web: GHC does not embed a complete constraint solving algorithm.
10:18:46 <elliott> It is not Prolog.
10:18:48 <Sgeo|web> I should go eat dinner... at 6:18 AM
10:19:05 <shachaf> elliott: It should be.
10:19:09 <Patashu> GHC should be able to solve my calculus homework
10:19:16 * shachaf votes for Oleg to replace SPJ.
10:19:22 <elliott> Patashu: The type-system is TC these days.
10:20:33 <CakeProphet> elliott: erm will learning basic xargs usage magically not pack all the arguments into $ARGV[0]?
10:20:53 <elliott> You use the word "magically" a lot.
10:21:36 * shachaf >>=
10:21:52 <CakeProphet> is there a way I could magically not do that magically?
10:23:37 <elliott> fizzie: Magically.
10:24:29 -!- ais523 has joined.
10:24:33 <CakeProphet> -m looks promising
10:24:44 <ais523> what does it say about me that I checked to see if I could connect to Freenode to see if I was online?
10:24:56 <elliott> heh
10:24:57 <ais523> opening IRC is more convenient than connecting a web browser
10:25:06 <ais523> and the firewall here blocks pings, so I can't just ping Google or something to check
10:25:21 <elliott> CakeProphet: an xargs interface makes irrelevant how many processes are pinged
10:25:29 <elliott> it is meant to be used on a tool s.t. f x; f y == f x y
10:25:39 <elliott> you need to specify options if you want a shell interpretation.
10:25:51 <elliott> CakeProphet: You could just re-add the perl things and remove the rest of the parallel line.
10:25:54 <shachaf> Or just use -n1
10:25:54 <elliott> That will work correctly.
10:25:59 -!- copumpkin has quit (Ping timeout: 248 seconds).
10:26:03 <elliott> shachaf: Except he has multiple arguments on a line.
10:26:13 <CakeProphet> of varying number
10:26:23 -!- copumpkin has joined.
10:26:27 <shachaf> Oh, well, just pipe them to sh -c.
10:26:31 <shachaf> Or something.
10:26:33 <shachaf> I don't know.
10:26:49 * shachaf >>=
10:26:54 <fizzie> CakeProphet: -m will just add multiple lines' worth of arguments. The easy way to have a shell interpret and word-split it is to use parallel -q sh -c "perl foo.pl {}" in place of parallel perl foo.pl {}
10:27:01 <elliott> fizzie: Dude.
10:27:01 <fizzie> There might be some useful options too for all I know.
10:27:02 <elliott> fizzie: Or just.
10:27:04 <elliott> parallel
10:27:07 <elliott> And include the "perl foo.pl" in the lines.
10:27:10 <elliott> That will work fine.
10:27:14 <fizzie> That is also possible, yes.
10:27:23 <fizzie> But you yourself said it's cleaner that way. :p
10:27:44 <CakeProphet> fizzie: elliott: LIFDOFF
10:27:54 <CakeProphet> my computer is going to explode.
10:28:03 <fizzie> Anyway, also ... | sed -e '/^/perl foo.pl /' | parallel for the truu sed user.
10:28:08 <CakeProphet> or most likely overheat.
10:28:23 <elliott> CakeProphet: You should have set a job number other than 9.
10:28:32 <elliott> Even for that much IO-boundness it's likely not going to perform well like that.
10:28:34 <CakeProphet> but I'm using %100 CPU all the time compared to the 25% or so I was using before
10:28:37 <CakeProphet> so that's good
10:28:49 <fizzie> I think by default it runs as many parallel tasks as there are cores.
10:28:55 <elliott> fizzie: I thought it was 9.
10:28:59 <CakeProphet> also I'm not getting any output.
10:29:07 <elliott> CakeProphet: It serialises the output
10:29:08 <elliott> CakeProphet: It serialises the output.
10:29:14 <fizzie> CakeProphet: It buffers the output so that it can then spew it out in the correct order.
10:29:14 <CakeProphet> ah okay.
10:29:23 <fizzie> There's an "immediate-output" option if you don't mind getting it mixed.
10:29:30 <CakeProphet> eh, no thanks.
10:29:35 <fizzie> -u I guess.
10:29:51 <CakeProphet> parallel is quite excellent.
10:29:57 <CakeProphet> good use of time.
10:30:00 <CakeProphet> to learn.
10:30:31 <fizzie> There are so many of them. 'xargs' got the feature added; then there's GNU parallel, GNU pexec, and that other parallel. Everyone keeps solving the same thing.
10:30:36 <Patashu> wtf is this shit
10:30:36 <Patashu> http://web.archive.org/web/20090106022617/http://www.forteanbureau.com/sept2004/Schoffstall/printerfriendly.html
10:30:42 <Patashu> what does 'We were unable to get the robots.txt document to display this page.' mean
10:30:45 <fizzie> ("then" is not trying to imply any sort of chronological order.)
10:30:55 <elliott> http://www.forteanbureau.com/robots.txt
10:31:11 <CakeProphet> yeah by default it's number of cores
10:31:13 <Patashu> it's a redirect
10:31:18 <CakeProphet> I've got four perl's running at 100%
10:31:24 <elliott> Patashu: Right, probably it barfs on that.
10:31:29 <Patashu> does that mean that, since there's no url forteanbureau.com with a robots.txt on it, it can never retrieve a cached page for me ever????
10:31:31 <Patashu> FUCK
10:31:37 <Patashu> I don't have a saved copy of that page
10:31:45 -!- pikhq has quit (Ping timeout: 245 seconds).
10:31:46 -!- pikhq_ has joined.
10:31:49 <elliott> Patashu: Just call them up and ask for a copy.
10:31:51 <elliott> (This might even work.)
10:32:43 <CakeProphet> I'm glad I bought this cooling pad thing.
10:33:05 <CakeProphet> if my laptop were sitting on my bed at max CPU usage I would have already disconnected...
10:33:15 <Patashu> Hmm, I guess I'll ask
10:33:38 <elliott> Patashu: I meant the archive.org folks, but that sounds even more plausible.
10:33:58 <CakeProphet> really the extra fans don't do much, but the fact that there's airflow beneath it allows the laptop fan to do its thing.
10:34:34 <CakeProphet> but I guess the extra fans help too. especially on max speed.
10:36:40 <CakeProphet> I've read that hyperthreading is inefficient. I wonder if that's why I've had overheating problems.
10:37:20 <elliott> Hyperthreading is not inefficient.
10:37:21 <elliott> It's a mth.
10:37:23 <elliott> myth.
10:37:40 <elliott> CPU speed so significantly outweighs speed of communications with everything else that it's almost as good as having another core.
10:37:50 <ais523> wow, it seems that I can send over 100 emails in a few seconds and still end up with a negative spam score
10:38:02 <fizzie> All the air is getting tangled in those hyperthreads and that's why it overheats.
10:38:09 <elliott> ais523: what did you do...
10:38:32 <oerjan> elliott: he just writes that interesting emails
10:39:12 <ais523> elliott: my automated marking script sends a summary of the reasons for its marks, to everyone it marked, every week
10:39:47 <ais523> it's a bit of a testament to Perl that I learnt to use Email::Sender::Transport::SMTP::Persistent in less than an hour
10:40:04 <fizzie> That's one long module name.
10:40:16 <elliott> Yes, that's also a testament to Perl.
10:41:05 <elliott> fizzie: I'm really annoyed that there's a five-times performance impact that I can't explain.
10:41:10 <elliott> It is all your fault.
10:41:25 <ais523> fizzie: it's a little long for Perl, and a little short for Java
10:42:52 <elliott> ais523: hi, I'm spending effort and money on n-grams again
10:43:30 <ais523> ouch
10:49:10 -!- copumpkin has quit (Ping timeout: 258 seconds).
10:49:48 <fizzie> eShipment::Purolator::WSDL::Interfaces::ServiceAvailabilityService::ServiceAvailabilityServiceEndpoint
10:50:00 <elliott> Me.
10:50:06 <fizzie> aWebService::Edgecast::auto::MediaManager::Interface::EdgeCastWebServices::EdgeCastWebServicesSoap
10:50:07 <fizzie> Microsoft::AdCenter::NotificationManagementService::ApproachingCreditCardExpirationNotification
10:50:40 <fizzie> Those were some of the longest module names from ~/.cpan/Metadata; disregard the few spurious leading lowercase letters.
10:50:52 <fizzie> eBay::API::XML::Call::AddTransactionConfirmationItem::AddTransactionConfirmationItemRequestType is also pretty long.
10:51:04 -!- copumpkin has joined.
10:51:21 <fizzie> eBay::API and Microsoft::AdCenter dominate the top-50.
10:51:27 -!- elliott_ has joined.
10:51:33 <fizzie> Oh, but Universe::ObservableUniverse::Filament::SuperCluster::Cluster::Group::Galaxy::Arm::Bubble::InterstellarCloud::SolarSystem::Earth is the winner.
10:51:53 <ais523> please tell me that's a joke
10:51:55 <fizzie> http://search.cpan.org/~jkutej/Universe-Galaxy-0.03/lib/Universe/ObservableUniverse/Filament/SuperCluster/Cluster/Group/Galaxy/Arm/Bubble/InterstellarCloud/SolarSystem/Earth.pm
10:52:00 <ais523> I strongly suspect it's a joke from the name
10:52:02 <fizzie> It looks like a joke.
10:52:06 <fizzie> And it quacks like a joke.
10:52:12 <fizzie> Must be a joke.
10:53:09 <ais523> indeed, it only has two methods: ultimate_answer which always returns 42, and AUTOLOAD which always returns "Mostly harmless"
10:54:04 <elliott_> fizzie: Oh, I think I know what was meant to take eight seconds:
10:54:05 <fizzie> "SEE ALSO: aliased", presumably because the name is tad on the long side.
10:54:07 <elliott_> elliott@katia:~/Code/ngrams$ time cabal-dev/bin/intern foo >/dev/null
10:54:07 <elliott_> real0m4.875s
10:54:15 -!- elliott has quit (Ping timeout: 245 seconds).
10:54:35 <elliott_> fizzie: I guess my micro-optimisation can't hurt much, though.
10:55:29 <elliott_> ?hoogle (a -> Bool) -> [a] -> [a]
10:55:30 <lambdabot> Prelude dropWhile :: (a -> Bool) -> [a] -> [a]
10:55:30 <lambdabot> Prelude filter :: (a -> Bool) -> [a] -> [a]
10:55:31 <lambdabot> Prelude takeWhile :: (a -> Bool) -> [a] -> [a]
10:55:33 <elliott_> (Looking for something precomposed with not.)
10:55:43 <Patashu> I emailed both clockpunkstudios and archive.org about it in the end
10:55:48 <Patashu> The more people I complain to the more likely it is to be solved
10:55:49 <Patashu> \o/
10:55:49 <myndzi> |
10:55:49 <myndzi> /|
10:55:52 <Patashu> Ty
10:58:20 -!- Phantom_Hoover has joined.
10:59:51 <elliott_> http://sprunge.us/JbiJ
10:59:54 <elliott_> I guess this is as far as it goes.
11:00:55 -!- ais523 has quit (Ping timeout: 245 seconds).
11:02:38 <elliott_> fizzie: I sure wish the ngrams came pre-reversed.
11:02:49 <CakeProphet> speaking of long module names
11:03:09 <CakeProphet> I learned today that you can also write ${Module Name Goes Here var}
11:03:18 <elliott_> CakeProphet: eh?
11:03:44 <CakeProphet> you know, if that's what you're into.
11:03:53 <Phantom_Hoover> elliott_, so Strax will never see the light of day?
11:04:04 <elliott_> Phantom_Hoover: This isn't Strax, you buffoon.
11:05:02 -!- ais523 has joined.
11:05:22 <Phantom_Hoover> elliott_, you have *another* n-gram project?
11:05:40 <elliott_> Phantom_Hoover: strax isn't an n-gram project yyou just totally made that up.
11:05:43 <CakeProphet> today/tonight has been #esoteric-ngram
11:05:47 <elliott_> sy
11:05:49 <elliott_> s/yy/y/
11:06:46 <Phantom_Hoover> elliott_, help what
11:08:14 <CakeProphet> sy\y\yy\yy
11:09:02 <ais523> list of possible errors that my marking script can produce that nobody's triggered yet: message too long; message cannot be parsed as MIME; message submitted for nonexistent question number; program took too long to execute; program output junk on stderr; OCaml compiler errored out trying to compile program; program tried to violate sandboxing
11:09:13 <elliott_> fizzie: You think the number of words in the corpus will fit into a thirty-two bit word, right?
11:09:26 <ais523> elliott_: what is strax, then?
11:09:42 <elliott_> ais523: what, nobody's submitted an invalid program yet?
11:10:02 <ais523> that's happened quite a lot
11:10:09 <ais523> but it doesn't cause the compiler to error, but rather to reject the program
11:10:16 <fizzie> elliott_: Yes, I would be very surprised if it didn't, given that one file had barely a hundred thousand words, and most of them are common between files. (Even if they were all unique, that'd be just 80 million words.)
11:10:26 <elliott_> fizzie: Right.
11:10:46 <elliott_> fizzie: That's good; words are about five letters, right? (I hear that's the standard.)
11:10:48 <elliott_> Well an int is like FOUR.
11:10:51 <elliott_> SMALLER.
11:11:11 <ais523> elliott_: but you're not trying to encode the words directly into ints, are you?
11:11:24 <elliott_> ais523: No, I'll have a big old lookup table.
11:11:47 <ais523> there are unlikely to be over four billion unique words
11:11:49 <elliott_> ais523: The primary reason is seekability and space; the model is going to be about a terabyte, so...
11:11:54 <elliott_> Yes, but these are Google words.
11:12:23 <ais523> even so, a billion is a huge value
11:12:25 <CakeProphet> I wonder if "I'd push my stable branch into her repository" would be an 8-gram if Google had 8-grams.
11:12:32 <Phantom_Hoover> ais523, apparently you are an expert on how esoteric heraldry language is.
11:12:48 <ais523> Phantom_Hoover: I wouldn't call myself an expert on it, but it is pretty eso, indeed
11:13:00 <Phantom_Hoover> Can we have an article about it on the wiki?
11:13:03 <fizzie> elliott_: 5 sounds like a reasonable guess for the average, and then with words you usually need one length byte and/or a terminator and/or something.
11:13:55 <CakeProphet> and/or should just become some kind of new conjunction word
11:13:56 <CakeProphet> andoror
11:14:16 <ais523> Phantom_Hoover: it isn't a programming language, really
11:14:26 <ais523> it's like, umm, an esoteric vector image format
11:14:30 <Phantom_Hoover> ais523, neither is the lambda calculus.
11:14:38 <elliott_> fizzie: Yes, a length byte is what I've been doing.
11:14:39 <ais523> but you can program with that
11:14:43 <ais523> I don't think you can program with heraldry
11:14:55 <elliott_> ais523: Has anyone tried yet?
11:14:57 <ais523> unless it somehow ends up possible to encode TC equations in it, or something silly like that
11:14:59 <Phantom_Hoover> I don't know, is there a Turing-complete problem in heraldry?
11:15:03 <elliott_> ais523: Maybe we can send the people who draw them into an infinite loop.
11:15:04 <ais523> elliott_: not to my knowledge
11:15:08 <CakeProphet> I'm not entirely sure I understand what makes LC no a programming language.
11:15:14 <CakeProphet> *not
11:15:15 <elliott_> ais523: Like, something tiered piecewise argent in pale itself.
11:15:17 <elliott_> Or something.
11:15:24 <Phantom_Hoover> Like, you describe a coat of arms, and there are really complex rules dictating what is and isn't a legal coat-of-arms.
11:15:25 -!- Jafet has joined.
11:15:46 <Phantom_Hoover> And it ends up that computing whether a given coat of arms is valid is Turing-equivalent.
11:16:10 <ais523> I thought the main validity rule was no colors touching colors, no metals touching metals
11:16:16 <ais523> although that one's been bent on occasion, maybe even broken
11:16:21 <Phantom_Hoover> Hmm.
11:16:23 <fizzie> In fact, given that a single file had only 622735 5-grams, even if every word of every 5-gram was unique, and all the 799 other files had as many, that'd be just 800*622735*5 = 2490940000 = 2^31.21... unique words. So as long as your ints are unsigned... (Okay, it's not even theoretically possible for them all to be unique, since they're overlapping.)
11:16:35 <Phantom_Hoover> So it's just planar two-colouring; not TC.
11:16:40 <ais523> yep
11:16:42 <Patashu> Someone make Heraldry eso lang
11:16:43 <Phantom_Hoover> *TE
11:17:10 <Phantom_Hoover> Dammit WP, I need a list of TE problems.
11:18:26 <CakeProphet> my LMD got stuck in EROP while the FSF stopped TOW from being KE
11:18:29 <elliott_> fizzie: 2^31.21 juuust steps outside the guarantees Haskell gives for Int :P
11:18:38 <elliott_> CakeProphet: Those are awful acronyms.
11:18:40 <elliott_> Especially FSF.
11:19:00 <Phantom_Hoover> <Patashu> Someone make Heraldry eso lang
11:19:04 <Phantom_Hoover> Nononononono that won't do.
11:19:07 <CakeProphet> note: RDBMS is a real acronym and worse.
11:19:14 <Patashu> heraldry vector graphics format
11:19:14 <Phantom_Hoover> Encoding a program into it is just *boring*.
11:19:21 <Phantom_Hoover> No, no, no, no, no.
11:19:24 <fizzie> elliott_: Word32 to the rescue!
11:19:40 <Phantom_Hoover> Is 3-colouring TE?
11:19:41 <elliott_> fizzie: Kind of redundant, since HashMap will be giving me Ints I think, but sure :P
11:20:00 <elliott_> CakeProphet: Seriously though, is that the results of your process?
11:20:02 <Phantom_Hoover> OK, I am getting really tired of DDG right now.
11:20:03 <Patashu> phantom_hoover: I know wang tiling is
11:20:09 <elliott_> CakeProphet: You've tuned too much for acronyms instead of words.
11:20:14 <CakeProphet> elliott_: my, process?
11:20:18 <Phantom_Hoover> Patashu, yeah, something similar.
11:20:18 <CakeProphet> no. I just made up some acronyms
11:20:20 <elliott_> Phantom_Hoover: Why?
11:20:24 <CakeProphet> to make fun of recent heavy acronym usage.
11:20:24 <elliott_> CakeProphet: I thought that was your script.
11:20:38 <CakeProphet> because #esoteric is all about the acronyms.
11:21:00 <Phantom_Hoover> elliott_, because I searched for '3-colouring' and then '4-colouring' and it gave me colouring books for both; Google has WP's page on graph colouring in first place.
11:21:15 <elliott_> Phantom_Hoover: Well colouring books are good, you know.
11:21:19 <Phantom_Hoover> I don't think this is an isolated incident, although my memory is hazy.
11:21:39 <CakeProphet> elliott_: rest assured it will likely be many days before I get a working version of this word generator
11:21:44 <CakeProphet> I am bad at programming. :P
11:21:47 <elliott_> CakeProphet: I thought you were almost done.
11:22:02 <Phantom_Hoover> Putting WP articles at the top is cute, but not very useful: if I *want* the WP article, I can just type wi<tab> and circumvent DDG's long response times.
11:22:24 <CakeProphet> elliott_: no I've switched the format like 4 times now so I need to recode the generator to match the new file layout.
11:22:43 <elliott_> Phantom_Hoover: Let's be honest, you always want the WP article.
11:22:47 * elliott_ always wants the WP article.
11:23:06 <Phantom_Hoover> elliott_, yeah, so DDG is just adding a long response time.
11:23:10 <fizzie> An ORDBMS is just like a RDBMS except you can inherit tables.
11:23:19 <elliott_> Phantom_Hoover: Well, yes, but the question is whether you'll ever actually use wi<tab>.
11:23:29 <Phantom_Hoover> elliott_, I always use it if I want Wikipedia.
11:23:50 <oerjan> <Phantom_Hoover> Dammit WP, I need a list of TE problems. <-- you might look for undecidable, it's not precisely the same but includes TE
11:23:53 <Phantom_Hoover> I use it for the Minecraft and DF wikis as well; it's actually one of Chrome's neatest features.
11:24:09 <Phantom_Hoover> http://en.wikipedia.org/wiki/Turing_degree
11:24:19 <elliott_> Phantom_Hoover: Firefox has search keywords too, y'know.
11:24:22 * CakeProphet is working on his Turing degree.
11:24:31 <CakeProphet> requirements are kind of tough though.
11:24:36 <Patashu> What's chrome's magical 'go to wikipedia' feature?
11:24:39 <Phantom_Hoover> elliott_, well, I must have switched before it added them.
11:24:43 <fizzie> I use "wp foo" quite a lot.
11:24:47 <elliott_> Phantom_Hoover: They've been in for years.
11:24:50 <Patashu> ooo
11:24:51 <Patashu> handy
11:24:51 <elliott_> Like, literally since two thousand and four.
11:24:52 <elliott_> At least.
11:24:56 <fizzie> And they've been really there for ages.
11:24:57 <oerjan> <Phantom_Hoover> Is 3-colouring TE? <-- NP-complete
11:25:06 <Phantom_Hoover> elliott_, in that quickly-accessible way?
11:25:12 <elliott_> Phantom_Hoover: "wp foo", sure.
11:25:13 <Phantom_Hoover> And automatic?
11:25:18 <Phantom_Hoover> I never noticed, but OK.
11:25:25 <fizzie> You just make a regular bookmark, give it a keyword-name, and put a %s in the string.
11:25:43 <fizzie> It's worked for... a long time.
11:25:52 <CakeProphet> assuming that my data generator works correctly now I should /never have to do this shit again/
11:26:02 <Phantom_Hoover> fizzie, well yeah, but like I said, Chrome does it automatically, which makes it useful if you have multiple reference sites.
11:27:21 <fizzie> Phantom_Hoover: How does that happen automatically? Who/what defines the abbreviations?
11:27:28 <Phantom_Hoover> I'm not sure.
11:27:44 <oerjan> Phantom_Hoover: probably TE if you use some kind of infinite graph
11:28:02 <fizzie> Bookmark keywords have been there since Firefox 2.0, maybe earlier.
11:28:09 <elliott_> fizzie: It uses bookmark completion.
11:28:15 <Phantom_Hoover> But I never did any kind of manual setup for the DF or MC wikis, and it works, so I suspect that it's recognising MediaWiki or something.
11:28:16 <elliott_> Bookmark<tab> -> search that site.
11:28:18 <elliott_> Erm.
11:28:21 <elliott_> fizzie: Bookmark/history completion.
11:28:37 <Phantom_Hoover> Or whatever elliott_ says, he probably knows more about it
11:28:39 <elliott_> Phantom_Hoover: It's OpenSearch.
11:28:48 <fizzie> elliott_: Fancy-schmancy.
11:29:20 <Phantom_Hoover> Ah.
11:29:27 <CakeProphet> so uh... does keeping my computer cooler make it somehow run faster?
11:29:38 <Phantom_Hoover> Yes.
11:29:43 <CakeProphet> oh good.
11:29:51 <Phantom_Hoover> Lower entropy means better computation.
11:29:55 <Phantom_Hoover> It's basic thermodynamics.
11:30:05 <fizzie> It could be keeping the therman auto-throttling thing offline.
11:30:09 <Patashu> I better clean up my room then
11:30:21 <elliott_> fizzie: Too fancy-schmancy; my "wi" completion isn't WIkipedia. :p
11:30:54 <Phantom_Hoover> It's particularly important if you're searching: the enthalpy change is negative and the entropy change is large and positive, so if the temperatures are too high the reaction ceases to be feasible at all.
11:31:01 <Phantom_Hoover> Erm, s/searching/sorting/
11:31:27 <Patashu> But wait what if I'm using a quantum computer
11:31:27 <fizzie> My "wp" completion probably especially wouldn't be, and I've been trained to use that instinctively.
11:31:31 <CakeProphet> so quicksort doesn't work at high temperatures?
11:31:35 <Phantom_Hoover> No.
11:31:40 <CakeProphet> :P
11:33:05 <Phantom_Hoover> (I hope you realise that this is all bullshit.)
11:33:42 <elliott_> fizzie: OTOH, you can explicitly manage search engines.
11:33:47 <elliott_> fizzie: Fill in percent-s strings, etc.
11:34:04 <elliott_> fizzie: And give them keywords.
11:34:23 <CakeProphet> Phantom_Hoover: it became increasingly obvious.
11:34:28 <elliott_> fizzie: Yep, you can set Wikipedia's keyword to wp.
11:34:35 <elliott_> fizzie: Then "wp foo" does the expected.
11:34:38 <elliott_> As does wp<tab>foo.
11:34:41 <Phantom_Hoover> CakeProphet, it's perfectly valid chemistry, I should point out.
11:35:02 <Phantom_Hoover> http://en.wikipedia.org/wiki/List_of_undecidable_problems
11:35:15 <Phantom_Hoover> OK guys, we need to encode one of these into a coat of arms elegantly.
11:35:30 <Patashu> Is there a coat of arms for 'prime number'?
11:35:44 <oerjan> <Patashu> But wait what if I'm using a quantum computer <-- there is "quantum entropy". it's the same except no one understands it.
11:35:56 <elliott_> `addquote <oerjan> <Patashu> But wait what if I'm using a quantum computer <-- there is "quantum entropy". it's the same except no one understands it.
11:35:58 <Patashu> oerjan: By adding quantum before any word I can make the reader's brain turn off
11:35:58 <HackEgo> 711) <oerjan> <Patashu> But wait what if I'm using a quantum computer <-- there is "quantum entropy". it's the same except no one understands it.
11:36:12 <elliott_> `quote
11:36:14 <HackEgo> 74) <fungot> i am sad ( of course by analogy) :) smileys)
11:36:16 <elliott_> `quote
11:36:16 <elliott_> `quote
11:36:17 <elliott_> `quote
11:36:17 <elliott_> `quote
11:36:18 <elliott_> `quote
11:36:18 <elliott_> `quote
11:36:19 <elliott_> `quote
11:36:21 <Phantom_Hoover> oerjan, people understand normal entropy?
11:36:24 <HackEgo> 503) <Taneb> I can't afford one of those! <Taneb> A grandchild, not a laser printer
11:36:30 <HackEgo> 378) <oklopol> esperanto is just spanish with a diarrhea
11:36:32 <HackEgo> 451) <elliott> It's a Toy Story character, you uncultured fuck.
11:36:38 <oerjan> Phantom_Hoover: some claim to.
11:36:44 <HackEgo> 665) <elliott> Second Life is like... real life, modelled by people who've READ about real life, you know, in books.
11:36:45 <HackEgo> 567) <itidus20> what i mean by afk is <itidus20> i can see how dumb it is.. ill make a coffe instead
11:36:45 <HackEgo> 236) <tswett> elliott: just to bring you up to speed, you are now my baby nephew. <olsner> wtf, elliott is a nephew and his uncle is here? <nooga> what <tswett> Heck yes I'm elliott's uncle.
11:36:45 <HackEgo> 572) <monqy> the classic "souls have mass" hypothesis
11:37:03 <elliott_> <HackEgo> 567) <itidus20> what i mean by afk is <itidus20> i can see how dumb it is.. ill make a coffe instead
11:37:07 -!- ais523 has quit (Read error: Connection reset by peer).
11:37:07 <elliott_> Phantom_Hoover: Possibly even an instant coffee.
11:37:17 <Phantom_Hoover> When was 572 added, I remember that being a fun conversation.
11:37:24 <elliott_> `log the classic "souls have mass" hypothesis
11:37:48 <HackEgo> 2011-08-09.txt:22:55:56: <elliott> `addquote <monqy> the classic "souls have mass" hypothesis
11:37:53 <elliott_> >_<
11:37:53 <CakeProphet> I believe the toy story character thing was directed at me.
11:37:57 <elliott_> `logurl 2011-08-09.txt:22:55:56:
11:37:59 <HackEgo> http://codu.org/logs/log/_esoteric/2011-08-09
11:38:01 <elliott_> Phantom_Hoover: Somewhere thereabouts.
11:38:08 <elliott_> 22:55:28: <monqy> the classic "souls have mass" hypothesis
11:38:08 <elliott_> Yes.
11:38:16 <elliott_> It's > #jesus.
11:38:20 <elliott_> s/> //
11:38:53 <Patashu> new idea
11:38:55 <Patashu> souls == higgs boson
11:38:59 <Patashu> when someone dies they become massless
11:39:02 <Patashu> and float away from the planet
11:39:16 -!- ais523 has joined.
11:39:17 <Phantom_Hoover> Makes sense.
11:39:18 <elliott_> http://en.wikipedia.org/wiki/File:Sphaerodactylus_parthenopion_004.jpg
11:39:21 <elliott_> Phantom_Hoover: oh ;my god
11:39:25 <elliott_> it is so small
11:39:28 <Phantom_Hoover> So the LHC is basically voodoo?
11:39:52 <Phantom_Hoover> elliott_, awwwwwwwwwwwwwwww (wasn't that on an Attenborough programme?)
11:39:55 <Patashu> The LHC is attempting to break into the afterlife and bring back a soul
11:40:02 <elliott_> Phantom_Hoover: Wasn't everything on an Attenborough program.
11:40:03 <Phantom_Hoover> But WHOSE
11:40:09 <elliott_> Phantom_Hoover: I mean he has to be running out of animals by now.
11:40:12 <elliott_> Also Higgs'.
11:40:16 <elliott_> They're going to ask him if his boson is real.
11:40:22 <Phantom_Hoover> elliott_, aren't we all on an Attenborough programme in some sense?
11:40:26 <elliott_> `quote monad tutorial
11:40:29 <HackEgo> 477) <Phantom_Hoover> oerjan, little do you realise that everything you say and do is part of that great monad tutorial we call life.
11:40:32 <Phantom_Hoover> Higgs is still alive you idiot.
11:40:36 <Patashu> LOL
11:40:37 <elliott_> Phantom_Hoover: Yes, exactly.
11:40:42 <elliott_> Phantom_Hoover: That's the genius of it.
11:40:54 <elliott_> Patashu: What was that lol at?
11:40:58 <Patashu> higgs being alive
11:41:00 <Phantom_Hoover> I can get a bus and ask him right now if you want.
11:41:03 <Patashu> so it's like
11:41:03 <elliott_> "Higgs was born in Wallsend, Newcastle upon Tyne."
11:41:04 <Patashu> instant murder
11:41:05 <elliott_> Phantom_Hoover: Oh my god.
11:41:07 <Patashu> to grab his soul
11:41:18 <Patashu> science........can kill you............
11:41:20 <elliott_> Phantom_Hoover: Anyway no it grabs his soul from the Omega Point.
11:41:29 <elliott_> Phantom_Hoover: When he knows whether the Higgs boson is real or not.
11:41:30 <elliott_> Duh.
11:41:44 <elliott_> This then ensures with causality etc. that his soul will exist at the time of the Omega Point, granting him immortality.
11:41:48 <Phantom_Hoover> Hell, I'm going to King's Buildings later today; I can ask him then.
11:41:55 <elliott_> Phantom_Hoover: Do you understand me.
11:42:41 <elliott_> oerjan: so is ():^ underload TC if stack elements have some arbitrary runtime maximum length >:)
11:43:28 -!- ais523_ has joined.
11:43:30 <ais523_> `quote
11:43:33 <HackEgo> 611) <Gregor> ANOTHER THUNDERSTORM, INDIANA? <Gregor> That's three today. <elliott> Gregor: It FEELS like it should be a really simple fix :P
11:43:36 <oerjan> yes. there are no commands to construct truly new elements, after all
11:43:42 -!- ais523 has quit (Disconnected by services).
11:43:44 -!- ais523_ has changed nick to ais523.
11:43:51 <elliott_> oerjan: oh right
11:44:00 <elliott_> `delquote 611
11:44:03 <HackEgo> ​*poof*
11:44:37 <oerjan> the context police has spoken
11:45:18 <fizzie> Oh, I thought it was just the quality police.
11:46:29 <ais523> are out-of-context quotes not allowed?
11:46:32 <ais523> `quote
11:46:34 <HackEgo> 660) <shachaf> elliott: GHC bug? Come on, it's the parentheses. <shachaf> The more parentheses you add, the closer it is to LISP, and therefore the more dynamically-typed.
11:46:47 <ais523> `quote
11:46:49 <HackEgo> 652) <Gregor> IF YOU DON'T SHUT UP I'LL K-LINE YOU TO THE AETHEREAL PLANE
11:46:56 <ais523> we need a `recentquote, really
11:46:58 <elliott_> `delquote 652
11:47:00 <ais523> that's weighted towards more recent quotes
11:47:01 <HackEgo> ​*poof*
11:47:04 <ais523> `quote
11:47:06 <HackEgo> 91) <apollo> Actually, he still looks like he'd rather eat her than have sex with her.
11:47:14 <elliott_> It's so low-numbered.
11:47:17 <elliott_> Do I dare remove it for low quality?
11:47:21 <ais523> elliott_: yes
11:47:24 <ais523> `quote
11:47:25 <elliott_> `delquote 91
11:47:27 <HackEgo> 569) <ais523> oerjan: I'm not imaginative enough to write truly great slash fiction
11:47:37 <elliott_> HackEgo: Come on, go poof.
11:47:39 <HackEgo> ​*poof*
11:47:39 <elliott_> You are the worst bot.
11:47:41 <elliott_> Thank you.
11:47:54 <ais523> `quote
11:47:56 <HackEgo> 219) <olsner> DAMN YOU, I'm leaving <Vorpal> olsner, FINALLY NOTHING BETWEEN ME AND WORLD DOMINATION!
11:48:06 * elliott_ reboots for esolang duties.
11:48:11 <ais523> is the metajoke there intentional?
11:48:14 <ais523> `quote
11:48:16 <HackEgo> 118) <Keiya> I want a patent on common sense <Keiya> It wouldn't get me much though >_>
11:48:17 -!- elliott_ has quit (Read error: Connection reset by peer).
11:49:01 -!- elliott_ has joined.
11:49:14 <Sgeo|web> Note to self: Read manual before deciding that an arbitrary IDE is crap
11:49:18 <ais523> why does esolanging require rebooting?
11:49:27 <elliott_> ais523: Esolang duties, not esolanging.
11:49:30 <ais523> Sgeo|web: no need, /all/ IDEs are crap
11:49:43 <ais523> elliott_: what's the distinction, and why does it require rebooting?
11:49:55 <Sgeo|web> ais523: I was expecting something like that, but from elliott_
11:50:02 <ais523> I was just pre-empting it
11:50:25 <ais523> hmm, if such responses are so predictable, is there even, platonically, a need to make them?
11:50:25 <elliott_> Unix is a fairly good IDE.
11:50:38 <ais523> elliott_: I disagree with the I part of "IDE"
11:50:38 <elliott_> ais523: the distinction will be obvious soon :-)
11:50:46 <ais523> it is a good development environment, though
11:50:47 <elliott_> ais523: Unix is very interactive.
11:50:57 <ais523> the I stands for "integrated", doesn't it?
11:51:03 <CakeProphet> `quote`
11:51:05 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: quote`: not found
11:51:05 <CakeProphet> `quote
11:51:07 <HackEgo> 607) <fizzie> They're (according to current plans/rumours) going to release a grand total of approximately 1.1 MeeGo devices; the N9, plus the N950 "developers only" phone, which I'm counting as 0.1 because (even though it is a MeeGo device) it's not going to actually be released.
11:51:09 <elliott_> ais523: oh, right
11:51:17 <elliott_> ais523: well, Unix is pretty integrated, if everyone would follow its philosophy
11:51:33 <oerjan> <ais523> are out-of-context quotes not allowed? <-- not if the lack of context makes them unfunny
11:52:08 <fizzie> The slowest possible recent-weighted quote; manages to make it O(N^2) in the number of quotes, after all:
11:52:10 <fizzie> `run allquotes | perl -ne 'print $_ x $n++;' | shuf -n 1
11:52:14 <HackEgo> 642) <ais523> oh no, I think we've managed to mix three metaphors in a way that actually makes sense
11:52:15 <fizzie> But it's a short line.
11:52:21 -!- ais523_ has joined.
11:52:25 <ais523_> <Wikipedia> Integrated development environment, a software application that provides comprehensive facilities to computer programmers for software development
11:52:27 -!- ais523 has quit (Read error: Connection reset by peer).
11:52:33 -!- ais523_ has changed nick to ais523.
11:52:52 <ais523> [12:50] <ais523> the I stands for "integrated", doesn't it?
11:52:53 <ais523> [12:51] <ais523> which is more or less the opposite of the UNIX philosophy
11:53:33 <ais523> elliott_: something that IMO all OS-with-applications combinations need is composability of basic operations to perform more complex tasks on them
11:53:51 <ais523> I'm not sure if doing it UNIX-style with text files is the best method, but so far it's the only one that's been demonstrated to work
11:53:59 <Sgeo|web> Leksah... what exactly is the point of trying to autocomplete me when I'm in a string?
11:54:00 <fizzie> What, the I in UNIX stands for "integrated"?
11:54:08 <ais523> fizzie: no, in IDE
11:54:16 <fizzie> *Ohhhh*.
11:54:19 <ais523> I wasn't aware hat UNIX stood for anything
11:54:20 <fizzie> That makes more sense.
11:54:28 <ais523> *that
11:55:12 <elliott_> ais523: well, it's integrated, because everything can talk to each other
11:55:18 <elliott_> not integrated would be, two tools that can't communicate or operate together
11:55:21 <elliott_> consider, two WIMP applications
11:55:51 <ais523> I always took integrated as meaning that one executable tries to do everything, (possibly delegating Emacs-style, but taking control of the UI of the result)
11:55:56 -!- sadhu has joined.
11:56:01 <sadhu> hello
11:56:26 <ais523> hi
11:57:06 <sadhu> ais523:are you on github?
11:57:31 <elliott_> sadhu: rant incoming
11:57:33 <ais523> sadhu: the people in #esoteric who know me are now likely to be scared of my answer to that question
11:57:53 <ais523> I'm not sure if I have the effort for a proper rant, though
11:57:57 <ais523> I'm not very good at them
11:58:04 <ais523> elliott_: how wide does github render tabs?
11:58:11 <sadhu> lol...i am not #esoteric regular...so i don't know...but what happened?
11:58:15 <elliott_> ais523: as wide as your browser (so four spaces)
11:58:55 <ais523> sadhu: a) I dislike git, b) I dislike github in particular (and use gitorious for hosting git repos, when I happen to have a need to do that)
11:58:59 -!- Vorpal has joined.
11:59:19 <ais523> I grudgingly acknowledge that git is actually usable for about 90% of what people try to use it for, although it makes their life harder for no good reason
11:59:23 <oerjan> comments on a postcard was funny today
11:59:33 <sadhu> so sad u dislike git
11:59:44 <ais523> when I use a VCS through choice, I generally use darcs, although I acknowledge that it's not perfect either
11:59:49 <ais523> just a lot better than git
12:00:03 <elliott_> git is pretty badly designed
12:00:10 <ais523> (which is better than svn, which is better than CVS, which is better than Visual SourceSafe)
12:01:31 * oerjan recalls a reddit (?) discussion where someone claimed that Visual SourceSafe was the only vcs which actually _harmed_ productivity
12:01:45 <oerjan> and there seemed to be general agreement
12:01:58 <ais523> oerjan: it's generally worse, rather than better, than no VCS at all
12:02:15 <ais523> due to its habit of getting corrupted and deleting the files it's meant to version
12:02:16 <Patashu> how bad can it be :downs:
12:02:18 <Patashu> ... what
12:02:20 <Patashu> that bad
12:06:58 <tswett> By the way, elliott_ is now capable of standing up if you hold his hands.
12:07:07 <elliott_> Yaaaay
12:07:33 <tswett> He doesn't really know any words yet. One day, he said "dit" a bunch of times, but unfortunately, there's no such thing as a dit.
12:07:59 <Patashu> So when will elliott be acing the SAT
12:08:30 <ais523> Patashu: confusingly, the term "SAT" is meaningful in both US and UK education, but has a different meaning in each
12:08:41 <Patashu> that is confusing!
12:08:50 <tswett> I dunno. Ten years at the very very least.
12:08:52 <Patashu> how does wikipedia disambiguate it?
12:08:57 -!- DH____ has joined.
12:09:11 <ais523> This article is about the college admissions test in the United States. For the exams in England colloquially known as SATs, see National Curriculum assessment. For other uses, see SAT (disambiguation).
12:09:33 <Patashu> so it doesn't basically
12:09:36 <Patashu> it calls it something else
12:09:43 <elliott_> ais523: my esolang duties are done
12:09:58 <ais523> I /just/ noticed I didn't have my RSS reader open
12:10:02 <ais523> and now, I'm worried as to what I'll find
12:10:07 <ais523> you didn't create an esolang with a spam name again, did you?
12:10:29 <elliott_> no, unfortunately my esolang wheels have not been in motion much as of late
12:11:16 <ais523> ah, aha, you just gainfully decompressed a screenshot
12:11:31 <ais523> (what is the inverse operation to lossy compression called?)
12:11:41 <oerjan> ENHANCE
12:11:43 <elliott_> heh
12:11:47 <elliott_> ais523: technically, I completely changed it :-)
12:11:52 <elliott_> ...but it's prettier now anyway
12:12:03 <elliott_> wow, my snowman looks really grumpy with this Mac's fonts: http://i.imgur.com/tSbiF.png
12:12:27 <Patashu> lossy decompression sounds like what google does, when it only extracts part of its cache for a page
12:12:32 <ais523> not the most effort in drawing a Unicode snowman that I've seen from font designers
12:12:44 <fizzie> There's not even any snow falling.
12:12:54 <elliott_> ais523: what kind of snowman has a fez?
12:12:55 <fizzie> And what's with that skewed hat?
12:12:58 <ais523> Patashu: lossy decompression is also what happens to interlaced images while they're partially loaded
12:13:13 <ais523> elliott_: a Gregor snowman?
12:13:18 <elliott_> ais523: ah.
12:13:21 <Sgeo|web> elliott_: if the snowman was a Doctor...
12:13:25 <ais523> btw, is the underscore significant?
12:13:32 <ais523> or have you just not bothered to remove it?
12:13:37 <elliott_> ais523: Which underscore?
12:13:40 <ais523> you've been elliott_ for a while, now, IIRC
12:13:42 <elliott_> Oh.
12:13:52 <ais523> so I was wondering if it had a meaning
12:13:55 <tswett> elliott_: say. I didn't know all the trolls' names by the end of 5.1. Does that mean you're mad at me?
12:14:02 <elliott_> There appears to be no "elliott" online right now.
12:14:07 <elliott_> So I wonder why my client did this.
12:14:40 <elliott_> tswett: Yes, but you would have to try really, really hard to have a looser grip on the plot than Sgeo|web.
12:14:48 <fizzie> How about gainful compression?
12:15:03 <tswett> elliott_: I dunno; I'm bad at plots.
12:15:04 <elliott_> ais523: by the way, you should just delete [[Programming Languages Glossary]]
12:15:05 <Vorpal> <elliott_> So I wonder why my client did this. <-- maybe there was when you connected but it timed out shortly after or such?
12:15:19 <elliott_> ais523: I'm not sure why Timwi has started filling it in while also maintaining the page is pointless and should be deleted, but it doesn't really mater
12:15:20 <elliott_> matter
12:15:24 <Patashu> fizzie: When saving your image, it looks on google iamge search/google street view to see if it can add more relevant information
12:15:24 <Patashu> ??
12:15:40 <fizzie> Patashu: When saving your image, it adds more artistic merit.
12:15:48 <ais523> elliott_: get him to split it into separate pages, then delete?
12:15:52 <oerjan> <elliott_> So I wonder why my client did this. <-- elliott pinged out a while ago, after elliott_ entered
12:15:52 <Vorpal> heh
12:15:55 <elliott_> ais523: there already are separate pages
12:15:57 <ais523> alternatively, replace the content with an esolang
12:16:07 <elliott_> ais523: apart from definitions of stdin and stdout, which aren't very esolang-related
12:16:33 <Vorpal> oerjan, as I suggested just above
12:16:34 <elliott_> ais523: but the only person who said anything about not deleting it was Taneb, "How about we start putting things in this page? One or the other", which is a pretty bad reason for keeping a page, and there is that "one or the other"
12:16:43 <elliott_> also, I can't be bothered to create an esolang to replace it
12:16:50 <elliott_> ais523: ooh, what if I replace it with a really bad brainfuck derivative
12:16:52 <elliott_> will you delete it then?
12:17:04 <Phantom_Hoover> http://myownscientia.blogspot.com/2011/09/researchers-developing-new-form-of-life.html
12:17:05 <ais523> well, I didn't delete Brainlove, IIRC
12:17:14 <elliott_> ais523: mine will be /even worse/
12:17:16 <Phantom_Hoover> Help I have this urge to study biochemistry.
12:17:23 <Patashu> Wow
12:17:27 <Patashu> I wish I had urges to study
12:17:29 <ais523> elliott_: I still want to make the worst BF derivative myself
12:17:32 <Patashu> Rather than needing to force myself
12:17:36 <Phantom_Hoover> :D
12:17:41 <ais523> or, well, it's going to be a version with command letters permuted
12:17:45 <ais523> *command characters
12:17:48 <ais523> via the null permutation
12:17:53 <Vorpal> elliott_, what about this one: It is brainfuck but with 1 added to the ASCII codepoints for the instructions?
12:17:59 <elliott_> ais523: but brainfuck isn't that bad a language, so it's not a bad BF derivative
12:18:08 <sadhu> elliott_ are you still in high school
12:18:09 <ais523> it's really bad /at/ being a BF derivative
12:18:12 <Vorpal> elliott_, or even better: id(brainfuck syntax)
12:18:15 <sadhu> or maybe KG ?
12:18:35 <ais523> or perhaps I'll make a BF derivative that's completely unrelated to BF, that would be fun
12:18:36 <elliott_> sadhu: I'm actually a fetus.
12:18:41 <Sgeo|web> elliott_: I think I've improved my grip on the plot
12:19:03 * ais523 tries to figure out how that makes sense
12:19:15 <sadhu> elliott_: awesome!
12:19:29 <oerjan> ais523: there was a functional one a while ago...
12:19:58 <Phantom_Hoover> Dammit, I found the Brainlove talk page a month too late.
12:20:02 <ais523> I suppose there's the class of "languages that embed BF", some of which can potentially be quite good
12:20:08 <ais523> Phantom_Hoover: you can just fake dates on it, we won't mind
12:20:13 <Sgeo|web> What about a language that uses the symbols +-<>,.[] but uses them for something completely unrelated
12:20:19 <ais523> it's been done
12:20:35 <Phantom_Hoover> No that would violate the SACRED LAWS OF MEDIAWIKI
12:20:36 <Vorpal> Sgeo|web, sounds like a subset of befunge :P
12:20:43 <Patashu> you know how there are creatures that mimic different creatures? like spider mimics and ant mimics and so on
12:20:48 <Patashu> this is like a programming language mimic
12:20:55 <ais523>
12:21:01 <Patashu> that's trippy. how does such a thing evolve? what biological niche is it filling? we need to film a mockumentary on this
12:21:15 <elliott_> `addquote <Patashu> that's trippy. how does such a thing evolve? what biological niche is it filling? we need to film a mockumentary on this
12:21:17 <HackEgo> 709) <Patashu> that's trippy. how does such a thing evolve? what biological niche is it filling? we need to film a mockumentary on this
12:21:20 <elliott_> CULLING TIME:
12:21:21 <elliott_> `quote
12:21:22 <elliott_> `quote
12:21:22 <elliott_> `quote
12:21:24 <elliott_> `quote
12:21:25 <HackEgo> 236) <Anti-X> i didn't like jquery, until i decided to use it because it made development faster. now i can't go back to women...
12:21:25 <HackEgo> 111) <Warrigal> Making a small shrine to Lawlabee in my basement is something I should get around to at some point.
12:21:26 <elliott_> `quote
12:21:29 <HackEgo> 77) <coppro> SF.net porn :/ <ehird> Oh yeah, baby, gimme that... bloated download page?
12:21:30 <HackEgo> 514) <Taneb> Look, I often walk my dog through a field with cows in it. And I punched myself in the face once.
12:21:30 <Patashu> wait
12:21:31 <ais523> what could be interesting would be a language that /looked/ like BF, not just used the same symbols
12:21:35 <Patashu> doesn't that quote need context?
12:21:35 <HackEgo> 361) <oklopol> and then there's the slightly annoying one where suddenly, i start rolling forward and i can't stop <oklopol> like i can be having some great sex dream or whatever and then suddenly "oh god not this again" <oklopol> (i go "not this again" but not necessarily realize it's a dream)
12:21:41 <fizzie> Remember to account for changing line numbers when poofing.
12:21:42 <Phantom_Hoover> Patashu, it's quite simple, AFAIK.
12:21:43 <elliott_> Patashu: no, it's the mockumentary part that's funny
12:21:46 <ais523> so you could recognise [-] and so on
12:21:47 <elliott_> `delquote 236
12:21:49 <HackEgo> ​*poof*
12:21:51 <Patashu> mockumentary was a real word
12:21:55 <elliott_> Yes it is.
12:21:59 <elliott_> It's also a funny word in context.
12:22:06 <Patashu> you're the boss
12:22:10 <ais523> and things like [<<+>+>-] loops
12:22:15 <Phantom_Hoover> I mean, you can imagine a spider which raids ant nests; mimicking ants clearly has a survival advantage there.
12:22:17 <ais523> and yet, they had nothing to do with their meanings in BF at all
12:22:25 <Patashu> phantom_hoover: yeah it's shit like that
12:22:30 <elliott_> ais523: the perfect BF derivative is not some immense tower of complexity
12:22:42 <ais523> elliott_: that's not meant to be a perfect BF derivative
12:23:03 <elliott_> it's mimicking the perfect twelve year old just discovering BF at the perfect time with the perfect, equally-matched curiosity, enthusiasm, inexperience, and lack of attention span
12:23:10 <elliott_> like, assuming a perfectly spherical twelve year old
12:23:19 <elliott_> and producing the BF derivative they would produce, under perfect conditions
12:23:27 <elliott_> this makes total sense (C) me
12:23:28 <ais523> OK, how about this for worst BF derivative ever: you can write anything you want, as English, and the computer just understands and executes it, but you have to write it as a BF program that outputs the English you want
12:23:42 <ais523> that checks all the boxes for being a really bad esolang
12:23:51 <ais523> somewhere between BF and QWERTY Keyboard Dot Language
12:23:55 <elliott_> ais523: I'm actually laughing.
12:23:56 <Patashu> english is too ill defined. let's make a brainfuck program that outputs C
12:24:00 <ais523> so am I
12:24:01 <Patashu> now there's a language with consistency and oomph
12:24:06 <ais523> but not very loud as there are other people in my office
12:24:08 <tswett> [ ] Is the source code an analog signal?
12:24:14 <elliott_> ais523: Wait, make it as Hungarian instead.
12:24:17 <Patashu> Woah
12:24:21 <elliott_> That's ~random~.
12:24:22 <Patashu> A language with an analog input.......
12:24:27 <Patashu> Oscilloscope?
12:24:30 <ais523> elliott_: but I only know a few words of Hungarian
12:24:37 <elliott_> ais523: perfect
12:24:51 <Sgeo|web> ais523: good reason to switch it to a language you know 0 words of.
12:24:52 <ais523> and I imagine most people don't know any at all
12:24:57 <tswett> Proce is already a language where the storage stuff is analog. The programs themselves are just ASCII text.
12:25:14 <Vorpal> ais523, how come you know any Hungarian words at all?
12:25:20 <Sgeo|web> Ooh, voynich manuscript
12:25:24 <ais523> Vorpal: I've been to Hungary
12:25:27 <Vorpal> ah
12:25:30 <ais523> you tend to be able to deduce some
12:25:39 <tswett> I guess you could have an interpreter written in Proce that takes an analog signal as the program. But you still have to design the language.
12:25:47 <elliott_> ais523: I was hoping you'd learned them for nomic or something.
12:25:59 <oerjan> <elliott_> like, assuming a perfectly spherical twelve year old <-- hey don't mock the poor guy, obesity is hard at that age
12:26:02 <ais523> I have been to very few countries in my life
12:26:07 <ais523> the UK, France, Canada, and Hungary
12:26:30 <elliott_> [http://code.google.com/p/esolang-geom/downloads/list http://code.google.com/p/esolang-geom/downloads/list]
12:26:30 <Vorpal> tswett, what is Proce?
12:26:32 <ais523> <QWERTY Keyboard Dot Language> The above dots say HELLO. I decided not to write all of HELLO WORLD because it would take too long.
12:26:33 * Sgeo|web has only been here and Canada, iirc
12:26:34 <tswett> I suddenly feel the need to go on a trip abroad.
12:26:38 <elliott_> ais523: UUOMWMU award up there
12:26:42 <Sgeo|web> And I was too young to remember anything in Canada
12:26:49 <tswett> North America makes it hard to visit other countries. We only have, like, three here. Europe has fifty.
12:26:59 <Vorpal> Sweden, Denmark, Norway for me.
12:27:06 <Patashu> But you can visit such cultured places as...canada
12:27:12 <tswett> Vorpal: esolangs.org/wiki/Proce or some such.
12:27:13 <Patashu> And such lawless places as mexico where you'll probably be shot
12:27:13 <ais523> elliott_: not completely useless, if the next character isn't a space
12:27:14 <ais523> or a newline
12:27:14 <ais523> but close, I admit
12:27:31 <oerjan> <ais523> elliott_: but I only know a few words of Hungarian <-- just fake it with hungarian notation for the rest
12:27:36 <ais523> oh, QKDL /is/ one of zzo38's
12:27:46 <ais523> I thought i recognised his writing style, but it doesn't seem to be the sort of thing he'd come up with
12:28:04 <Patashu> QKDL?
12:28:17 <Sgeo|web> QWERTY Keyboard Dot Language
12:28:51 <Patashu> ah
12:28:55 <Patashu> shouldn't zzo38 know better?
12:29:10 <Sgeo|web> It is categorized as a joke language
12:29:16 <Phantom_Hoover> <Patashu> shouldn't zzo38 know better?
12:29:24 <Phantom_Hoover> You have talked to zzo, right?
12:29:25 <Sgeo|web> By Keymaker
12:29:52 <ais523> hey, I just found [[Super Stack!]] on random page patrol
12:29:59 <ais523> uncategorized, and not stupid
12:30:02 <Phantom_Hoover> It often seems that if there are two things to know, one of them better, he will know the worse one.
12:30:26 <fizzie> Finland, Sweden, Norway, Denmark, Estonia, Germany, Netherlands, Belgium, France, Switzerland, UK, Italy, Czech Republic, Greece, Russia, Egypt, Tunisia, Thailand, Barbados, Saint Vincent and the Grenadines; and I don't consider I've done much travelling at all, compared to some folks who make a hobby out of it.
12:30:28 <ais523> I'm trying to categorize it now, but am not sure on computational class; it's obviously PDA, and may be TC if there's some trick scope for TCness in there
12:30:30 <Patashu> super stack! seems like it should be isomorphic to a different stack based lang
12:30:32 <Patashu> like forth or something I dunno
12:30:45 <fizzie> (Also "Saint Vincent and the Grenadines" is a silly name for a country.)
12:30:56 <Phantom_Hoover> * Sgeo|web has only been here and Canada, iirc
12:31:03 <Vorpal> fizzie, where is that?
12:31:05 <Phantom_Hoover> This would explain why you didn't know where Scotland was.
12:31:06 <ais523> aha, TC, it has a "cycle" command that lets you use both the top and bottom of the stack
12:31:13 <ais523> even if it doesn't have arbitrary-precision ints (that's not clear)
12:31:27 <Phantom_Hoover> Vorpal, Wikipedia, have you heard of it?
12:31:39 <Vorpal> fizzie,
12:31:42 <Vorpal> err
12:31:49 <Vorpal> Phantom_Hoover,* no, what is it?
12:31:50 <oerjan> A megtúdunk az integerben külföldük nebbene rajtad háromvan köztársaság.
12:32:12 <Phantom_Hoover> oerjan, excuse me this is a xenophobically English-only channel please leave.
12:32:23 <fizzie> Vorpal: It's a group of islands between the Caribbean Sea and the Atlantic Ocean, near the south end of the chain there.
12:32:27 <Patashu> the only programming language we speak here is english
12:32:32 <Vorpal> fizzie, ah
12:32:39 <ais523> oerjan: you used Google Translate for that, right?
12:32:59 <Vorpal> oerjan, hm, Hungarian?
12:32:59 <elliott_> ais523: what's the character code for |?
12:33:01 <oerjan> ais523: nope
12:33:09 <ais523> some other translation service?
12:33:14 <elliott_> `translate A megtúdunk az integerben külföldük nebbene rajtad háromvan köztársaság.
12:33:20 <HackEgo> Traceback (most recent call last): \ File "/hackenv/bin/json", line 4, in <module> \ data = json.loads(sys.stdin.read().decode('utf-8')) \ File "/opt/python27/lib/python2.7/json/__init__.py", line 310, in loads \ return _default_decoder.decode(s) \ File "/opt/python27/lib/python2.7/json/decoder.py", line 346,
12:33:24 <elliott_> gah
12:33:29 <ais523> elliott_: not sure; I vaguely remember that 62 is the char code for something that may or may not be |, though
12:33:38 <ais523> perhaps 92 if it isn't 62
12:33:41 <Vorpal> weird language to have a short sentence for a stacktrace!
12:33:43 <oerjan> vague memory of my mom's hungarian course
12:33:59 <ais523> 0x7C according to character map
12:34:10 <ais523> `run sh echo $((0x7C))
12:34:12 <HackEgo> sh: Can't open echo
12:34:17 <ais523> `run echo $((0x7C))
12:34:18 <HackEgo> 124
12:34:22 <ais523> elliott_: 124, it seems
12:34:25 <fizzie> 92 would be the one that's 32 below it.
12:34:31 <elliott_> oh, wait, we have {{!}}
12:34:35 <fizzie> The middle of [\] as opposed to {|}.
12:34:37 -!- derdon has quit (Remote host closed the connection).
12:34:49 <fizzie> \, the lowercase |.
12:34:57 <fizzie> Er, the uppercase.
12:34:58 <ais523> yay, uppercase/lowercase punctuation marks
12:35:11 <fizzie> Much as [] are the uppercase {}.
12:35:15 <ais523> let's categorise punctuation mark case by Unicode codepoint & 32
12:35:24 <ais523> regardless of where in Unicode it i
12:35:26 <ais523> *is
12:36:31 <fizzie> ais523: Does that also mean that whenever there are two punctuation marks a, b where a = b^32, they should compare equal in case-insensitive comparisons?
12:36:39 <ais523> I think so
12:36:45 <Patashu> One of these days documentation needs to be made for FlogScript
12:36:53 <elliott_> ais523: You can add to the MW stylesheet easily, right?
12:37:07 <ais523> elliott_: not trivially, but relatively easily
12:37:23 <elliott_> ais523: Can you table.centrefirst td:first-child { text-align: center }? :-P
12:37:29 <ais523> for which skin? all of them?
12:37:35 <elliott_> I don't want to centre every single td by hand, that would be really annoying.
12:37:37 <elliott_> ais523: Yes please.
12:38:34 <ais523> what's the :first-child for?
12:38:36 * elliott_ is improving [[Geompp]]'s presentation.
12:38:39 <elliott_> ais523: Only the first td in a row.
12:38:52 <elliott_> It's widely-supported CSS3.
12:38:54 <ais523> oh, it means "first child of their parent"?
12:38:57 <elliott_> Yes.
12:39:12 <ais523> IIRC there's mediawiki syntax for that already, but it might have been proposed rather than adopted
12:39:14 <ais523> let me check
12:39:43 <elliott_> ais523: our MW is /really old/ :P
12:39:55 <ais523> indeed
12:40:27 <Phantom_Hoover> It is the oldest.
12:40:35 <Phantom_Hoover> Also not TC, which is terrible.
12:40:41 <elliott_> ais523: hmm, maybe I should email Graue and ask him to update MW
12:40:46 <oerjan> s/háromvan/harminc/
12:41:04 <Phantom_Hoover> elliott_, I think I tried that? Or wait, I just asked him to install the LaTeX support.
12:41:20 <ais523> elliott_: yep, doesn't work
12:41:24 <ais523> I'll just add the style
12:41:49 <ais523> elliott_: should I also to the same for th:first-child?
12:41:51 <Sgeo|web> MW is TC now?
12:41:53 <ais523> actually, why not just use th?
12:41:59 <elliott_> ais523: probably; and th bolds
12:41:59 <ais523> Sgeo|web: http://esolangs.org/wiki/Wiki_Cyclic_Tag
12:42:07 <elliott_> ais523: I think you could even do
12:42:12 <elliott_> ais523: table.centrefirst tr :first-child
12:42:14 <elliott_> (note the space before the colon)
12:42:16 <fizzie> Heh, you can use foo:nth-of-type(4n+2) {...} to select every fourth (starting from the second) sibling-element of the same type there are in the tree.
12:42:18 <elliott_> that's probably the cleanest way
12:42:33 <elliott_> fizzie: Have you seen CSSthree's ASCII-art layout DSL?
12:42:37 <ais523> elliott_: yes, I was wondering why no mention of tr
12:43:06 <elliott_> ais523: (and that would handle both td and th)
12:43:30 <ais523> elliott_: CSS updated; bypass your cache, then let me know if it works
12:43:30 <ais523> the actual update takes about a month, because that's the TTL on the cached version, and admin isn't high enough privs to clear the cache
12:43:31 <ais523> of other people's browsers
12:43:32 <ais523> (which is done by changing the URL)
12:43:52 <elliott_> ais523: heh
12:43:56 <elliott_> ais523: that's, umm, problematic?
12:43:59 <ais523> it's shift-reload on most browsers, IIRC
12:44:05 <ais523> elliott_: I said it wasn't trivial
12:44:17 * elliott_ just saves it and works out how to clear Safari's cache
12:44:19 <ais523> but it'll be centered for everyone /eventually/
12:44:23 <ais523> that's good enough, right?
12:44:23 <elliott_> I bet... option-click.
12:44:25 <elliott_> Yep, that did it.
12:44:32 <elliott_> http://esoteric.voxelperfect.net/wiki/Geompp#Operators
12:44:38 <ais523> http://en.wikipedia.org/wiki/Wikipedia:BYPASS#Safari
12:44:40 <elliott_> Now I just need to make the rest of it nice.
12:45:06 <ais523> seems shift-reload on Safari 4 or later; Cmd-R on Safari 3 and earlier
12:45:08 <Phantom_Hoover> Hmm, I need to get icons for Minecraft and Oolite in my games menu.
12:45:17 <elliott_> ais523: you have a superfluous ; :-(
12:45:21 <elliott_> it's a separator, not a terminator
12:45:28 <ais523> it feels like half my talk page responses on Wikipedia were linking WP:BYPASS
12:45:31 <elliott_> heh
12:45:38 <fizzie> elliott_: Wouldn't "table.centrefirst tr :first-child" apply to all elements inside the <tr>? Shouldn't that be "table.centrefirst tr > :first-child" or something?
12:45:42 <ais523> elliott_: it's both, you're allowed it at the end
12:45:47 <elliott_> I'm on Safari 5, which did even more redesigning.
12:45:51 <elliott_> fizzie: No.
12:45:59 <elliott_> fizzie: Implicit asterisk before the :.
12:46:07 <elliott_> So it's any element that is the first child of its parent, that is a child of a tr.
12:46:18 <elliott_> ais523: no, CSS just allows empty statements, I think
12:46:21 <fizzie> elliott_: That's not what I meant. "a b" is "any b that is descendant of a", not "child of a".
12:46:31 <elliott_> ais523: Did you ever work out if we could import the nice wikitable class or not?
12:46:33 <elliott_> fizzie: Oh.
12:46:35 <elliott_> fizzie: Right.
12:46:36 <fizzie> And with the (implicit) asterisk, that's all descendants.
12:46:40 <elliott_> ais523: Change that to table.centrefirst tr > :first-child.
12:46:52 <ais523> elliott_: I think we can't
12:46:53 <ais523> unless it's used on mediawiki.org, in which case we an
12:46:53 <ais523> *can
12:47:02 <elliott_> ais523: it is, I think
12:47:34 <elliott_> yep
12:47:35 <elliott_> http://www.mediawiki.org/wiki/MediaWiki:Common.css
12:47:36 <ais523> elliott_: there's a class called wikitable there, but it seems strangely different
12:47:40 <elliott_> although, hmm
12:47:41 <elliott_> yes
12:47:44 <elliott_> ugh
12:48:10 <elliott_> ais523: just wait until Timwi notices you changed the CSS
12:48:17 <ais523> why?
12:48:29 <ais523> if something really bad will happen, I can change it back and delete the evidence
12:48:53 <elliott_> ais523: he'll start asking for admin privs again :-)
12:49:02 <elliott_> his main argument last time was all the CSS improvements he'd do, after all
12:49:05 <ais523> oh right
12:50:01 <elliott_> I wonder if we could get the Esme guy to join us on IRC.
12:50:06 <elliott_> He was so... inexplicable.
12:50:33 <elliott_> ais523: also, what page title should be used for a language whose name is a NUL byte?
12:50:43 <Sgeo|web> PSOX
12:51:12 <Sgeo|web> [insert not actually witty remark about people hating me here]
12:51:24 <Patashu> Esme is the best language
12:51:44 <Patashu> And of course zzo38 in the talk page for Esme
12:51:45 <Patashu> He he
12:53:21 <Sgeo|web> http://esolangs.org/wiki/User_talk:Dagoth_Ur%2C_Mad_God
12:54:07 -!- ais523 has quit (Ping timeout: 260 seconds).
12:55:35 <fizzie> It takes a certain sort of person to say "please start making sense" to Dagoth Ur.
12:56:06 <elliott_> It's a fairly reasonable request. :p
12:59:11 <Sgeo|web> Eating dinner at 9AM: Good idea or best idea?
12:59:58 <Patashu> Is there an ergonomic reason why websites are always black text on searing pure white?
13:00:08 <elliott_> Patashu: Yes: White on black is worse.
13:00:09 <Patashu> I found a bookmarklet that turns it into white on black and now I use it habitually
13:00:18 <elliott_> Patashu: It really is worse.
13:00:33 <elliott_> Off-black on yellow-ish pale grey is something close to the ideal.
13:00:37 <Patashu> Well when I say white on black it's more like #EEEEEE on black
13:00:40 <Patashu> Hmm
13:00:42 <Patashu> I could accept that
13:00:43 <elliott_> Patashu: Nothing on black is a good idea.
13:00:49 <elliott_> I mean, OK, off-white on dark grey, sure.
13:01:06 <elliott_> But any light on top of black on an LCD is like making every letter a lightbulb.
13:01:48 <Patashu> Hmmmmm
13:04:04 <sadhu> hey anybody know about that 35$ netbook
13:04:19 <Patashu> Does it come with a mcdonalds happy meal
13:04:25 <elliott_> Wasn't that a tablet.
13:04:27 <elliott_> Pretty sure that was a tablet.
13:04:37 <elliott_> sadhu: How's your asm->bf thing getting on?
13:05:11 <sadhu> elliott_: its going nice...i will sort all things out and put it on github and will tell about it here
13:05:21 <elliott_> Cool; can it translate much yet?
13:05:43 <Patashu> how is bf going to emulate sys calls
13:05:53 <elliott_> Patashu: Does it need to?
13:06:03 <elliott_> write() and read() are not hard for stdin and stdout.
13:06:09 <elliott_> Nothing else matters.
13:06:11 <elliott_> Well.
13:06:14 <elliott_> I guess you want an allocator.
13:06:19 <elliott_> But that doesn't need any syscalls in bf.
13:06:28 <sadhu> Patashu: i dont think i will implement all those syscalls but some methods for I/O will be given
13:06:32 <Patashu> ok
13:06:35 -!- pikhq has joined.
13:06:49 -!- pikhq_ has quit (Ping timeout: 255 seconds).
13:08:15 -!- oerjan has quit (Quit: Lateral).
13:08:30 <sadhu> BTW,here is my git repo...maybe you will like that "KeyComb" tool
13:08:32 <sadhu> https://github.com/turiya
13:08:44 <sadhu> i had pretty much fun with that
13:10:53 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
13:16:42 <elliott_> I don't think many people here run Windows
13:17:20 <sadhu> elliott_:me too...i hardly go in it..but i had setup it to dual boot...the other one is FreeBSD
13:23:18 <Vorpal> sadhu, is that x86 asm you are translating to bf? Quite impressive if so.
13:23:26 <Vorpal> What with dealing with segment registers and what not
13:23:40 <Vorpal> err segment selectors
13:24:24 <sadhu> Vorpal:yeah its *like* it....though i have no plans to implement everything but only if it becomes quite popular in esoteric world :)
13:25:09 <Vorpal> sadhu, in what sort of mode? real mode? protected mode?
13:27:28 <sadhu> it can be said like a real mode,but it won't matter much because everything will depend on the brainfuck interpreter for which it generates code...and i don't think bf is complex enough to differentiate between real or protected modes
13:28:40 <Vorpal> sadhu, well it does matter for register access and such iirc
13:28:57 <Vorpal> though that is just a vague memory of how stuff work
13:29:04 <Vorpal> sadhu, also what about x87?
13:29:44 <Sgeo|web> I was biased by the statements of the person who linked to this article, so I can't give an objective opinion, so what are your thoughts on http://www.cringely.com/2011/10/the-second-coming-of-java/ ?
13:30:15 <elliott_> Hey, it's Cringely. That person I ignore and don't remember why.
13:30:20 <sadhu> if i am lucky and crazy enough to implement it then yes... ;)
13:30:31 <elliott_> I suggest you do like I do. Wait, here is a reason, Sgeo|web: That header image is unbelievably terrible.
13:31:10 <elliott_> "In 1998, it was revealed[6][7][8] that Stephens had falsely claimed to have received a Ph.D. from Stanford University and to have been employed as a professor there. Stanford's administration stated that while Stephens had been a teaching assistant and had pursued course work toward a doctoral degree, he had never held a professorship nor had he been awarded the degree. Stephens then stated that while he had received a master's degree from
13:31:10 <elliott_> the department of communications and completed the classes and tests required for the Ph.D., he acknowledged that he failed to complete his dissertation. Asked about the resulting controversy, Stephens told a reporter: "[A] new fact has now become painfully clear to me: you don't say you have the Ph.D unless you really have the Ph.D."[9]"
13:31:13 <elliott_> There's another reason!
13:31:18 <Sgeo|web> elliott_: I.... the person who linked it essentially (though not in those words) called the article stupid. I am inclined to agree.
13:31:22 <elliott_> Good, now I can justify not reading this thing about Java to myself.
13:31:40 <elliott_> Sgeo|web: http://en.wikipedia.org/wiki/Robert_X._Cringely does not say anything about him having any programming knowledge or experience or any kind of CS backgronud at all.
13:31:42 <elliott_> background
13:31:46 <elliott_> I see absolutely no reason to read those words.
13:32:09 <Phantom_Hoover> Help how did I never realise Simon Pegg played Scotty in the last Star Trek film
13:32:18 <elliott_> "JVM’s took care of cleaning up memory and automatically profiling and optimizing our programs — tasks that had to be done by hand back in C++."
13:32:20 <elliott_> Ooh, this is great.
13:32:33 <Sgeo|web> elliott_: tl;dr: Solid State storage makes Ruby and other interpreted languages the bottleneck when it comes to speed, so Java, as it's faster, will make a comeback as the speed becomes noticable
13:32:39 <elliott_> "Under Ruby, we put C++. On top of Ruby we put the Rails web framework. It’s not very common to actually code anything in Ruby. You pretty much only see people coding Ruby while using the Rails framework which governs the whole thing."
13:32:44 <elliott_> You can almost tell he can't program.
13:32:46 <elliott_> By almost, I mean .
13:32:58 <Vorpal> <Sgeo|web> elliott_: tl;dr: Solid State storage makes Ruby and other interpreted languages the bottleneck when it comes to speed, so Java, as it's faster, will make a comeback as the speed becomes noticable <-- that makes zero sense
13:33:00 <Phantom_Hoover> "Using a radical new technology known as 'garbage collection', it rapidly endeared itself to theoreticians and engineers alike."
13:33:08 <elliott_> Vorpal: No, this is the best article.
13:33:12 <Vorpal> unless ruby has terrible IO performance.
13:33:16 <elliott_> Vorpal: It's like the Markov chain version of computing.
13:33:18 <Vorpal> elliott_, right, so bad it is good?
13:33:41 <Sgeo|web> Vorpal: well, it's saying that when IO performance speeds up, the speed of the language itself will dominate considerations
13:33:45 <elliott_> I present my Abbreviated Translation of Cringely's Article "The second coming of Java" from Insane to English:
13:33:46 <elliott_> "The big story here (since from the comments below it apparently wasn’t obvious) is the JVM. Ruby is already migrating to that JRuby as will all similar tools. So far, it just hasn’t mattered that much — but it will."
13:33:48 <elliott_> I am high as a kite.
13:34:46 <Sgeo|web> Oh, I misread it
13:34:56 <Sgeo|web> It's saying that JVM is making a comeback, not Java language
13:35:07 <Sgeo|web> ...did it become a little less insane?
13:35:44 <Sgeo|web> ...or am I misrepresenting the article by saying that it's saying JVM, not Java language, is making a comeback?
13:36:20 -!- MSleep has changed nick to MDude.
13:36:35 <elliott_> OK, I have this horrible, horrible urge to make a Deadfish IDE.
13:36:51 <Vorpal> heh
13:37:16 <Sgeo|web> From the comments: "Databases are not slow and disk access is almost irrelevant. "
13:37:47 <Sgeo|web> Um.... someone please tell that to the Yesod devs? They are storing session data encrypted in cookies partly (but perhaps not entirely) for performance reasons
13:38:11 <fizzie> "web frameworks based on interpreted, dynamic languages only exist at all because disks are just so damned slow" is quite a statement to make.
13:38:12 <elliott_> You should do that for RESTfulness.
13:38:20 <elliott_> Not performance. Performance is just a handy benefit of REST architectures.
13:38:50 <Sgeo|web> Is it safe to say that Seaside is the anti-REST?
13:39:40 <elliott_> Well, not the component parts.
13:39:46 <fizzie> If an architecture is not RESTful, is it proper to call it AGITated?
13:39:49 <elliott_> The dialogue parts not really either, but in their implementation, sure.
13:39:56 <Vorpal> besides I can't think of any directly interpreted language. Most compile to bytecode internally which is then executed. Lisps just execute the AST quite often. Not sure what bash does?
13:40:05 <elliott_> Vorpal: FSVO lisps, often.
13:40:11 <elliott_> bash probably uses regexps or something :P
13:40:17 <Vorpal> probably
13:40:20 <Vorpal> would explain the speed
13:41:00 <Vorpal> or rather, lack of same
13:42:08 <fizzie> I'm reasonably sure there was something that really interpreted the textual source all the time (did jumps by changing the pointer to the source text etc.) but I can't recall what it was.
13:42:15 <fizzie> Maybe it was just a bad esolang interpreter or something.
13:42:26 <fizzie> Maybe it was fungot's Underload interpreter. :p
13:42:27 <fungot> fizzie: i am just as confused. you, in that line, that i have gone totally wanting, and then you can choose fnord, but don't want to get somewhere
13:42:54 <elliott_> I think it's time for everyone to admire:
13:42:55 <elliott_> http://esoteric.voxelperfect.net/wiki/Deadfish#C.2B.2B_templates
13:43:06 <elliott_> I mean, come on, I am so good.
13:43:32 <fizzie> Even TI-BASIC has a bytecode, of sorts. (Though it's mostly just turning command words into tokens.)
13:43:46 <elliott_> fizzie: Well, there's BashForth. :p
13:44:26 <fizzie> "In Tcl, everything is a string—sort of. Tcl 8.x allows you to write scripts which pretend that everything is represented as a string, while it silently uses a dual-ported object system to cache native types." <- oh, it no longer really is all strings?
13:45:58 <elliott_> fizzie: They're strings, cached as other things behind the scenes.
13:46:06 <elliott_> fizzie: It's like a JIT, if JITs were... strings.
13:49:43 <Vorpal> fizzie, well, befunge93 interpreters could interpret the textual data after loading it into an array. Would even be a quite sensible way to implement a simple one
14:09:56 * elliott_ briefly re-reboots.
14:10:07 -!- elliott_ has quit (Remote host closed the connection).
14:14:20 -!- elliott_ has joined.
14:16:26 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
14:26:14 -!- pikhq_ has joined.
14:26:16 -!- pikhq has quit (Ping timeout: 260 seconds).
14:36:42 -!- sadhu has quit (Quit: Leaving).
14:38:56 -!- copumpkin has joined.
14:52:31 <Phantom_Hoover> For reasons I cannot comprehend my right ear is incredibly hot.
14:52:34 <Gregor> `addquote <elliott> fizzie: It's like a JIT, if JITs were... strings.
14:52:36 <HackEgo> 709) <elliott> fizzie: It's like a JIT, if JITs were... strings.
14:52:59 <Gregor> Phantom_Hoover: You autoaurophilic creep.
14:54:01 <Vorpal> btw it was -5 C this morning.
14:54:03 <elliott_> Time for another purge.
14:54:06 <elliott_> `quote
14:54:07 <elliott_> `quote
14:54:08 <elliott_> `quote
14:54:08 <HackEgo> 465) <Gregor> decrypt 'illustrates the "can do" approach of conservatism in a patriotic way'
14:54:09 <elliott_> `quote
14:54:10 <elliott_> `quote
14:54:11 <HackEgo> 374) <pikhq> o.O <pikhq> There's a birth defect which results in the formation of a cloaca. <Gregor> It's called "not being a mammal" :P
14:54:12 <HackEgo> 11) <Lil`Cube> wouldn't that be considered pedophilia? <Quas_NaArt> No. They all go by stage names.
14:54:13 <HackEgo> 342) <catseye> wow, thinkgeek really makes me hate being alive
14:54:13 <HackEgo> 644) <itidus20> according to physics and maths can we theoretically have a box with infinite cookies inside?
14:54:23 <elliott_> Hmmmmm
14:54:28 <elliott_> `delquote 11
14:54:31 <HackEgo> ​*poof*
14:54:35 <elliott_> Gregor: Think we just gotta face up to the fact that your early Sine quotes are terrible
14:54:39 <Phantom_Hoover> This is seriously getting uncomfortable.
14:54:51 <elliott_> Phantom_Hoover: Try setting fire to it.
14:54:58 <elliott_> `pastequotes
14:55:00 <Phantom_Hoover> Maybe if I got a little spray bottle of water— OH DEAR GOD I'VE TURNED INTO MOSS
14:55:01 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.26214
14:55:11 <elliott_> Gregor: PLEASE FIX THOSE FUCKING HTTP HEADERS YOU PIECE OF SHIT
14:55:35 <Phantom_Hoover> `delquote 3, unquestionably.
14:55:37 <HackEgo> No output.
14:55:48 <Phantom_Hoover> `quote 3
14:55:49 <elliott_> Phantom_Hoover: Three was not in that list.
14:55:50 <HackEgo> 3) <Quas_NaArt> Hmmm... My fingers and tongue seem to be as quick as ever, but my lips have definitely weakened... <Quas_NaArt> More practice is in order.
14:55:55 <elliott_> Don't.
14:56:00 <elliott_> That is not the way of the purging.
14:56:04 <Phantom_Hoover> But... it's a terrible qquote.
14:56:15 <elliott_> Phantom_Hoover: It's funnier than average, and that says something.
14:56:21 <elliott_> Phantom_Hoover: But the early quotes only rarely come up.
14:56:32 <Gregor> ... dafuq? That's hg giving the wrong headers, not me.
14:56:36 <elliott_> There's a lot more non-early quotes and those have a lot of chaff, which is my purge method is best :P
14:56:39 <elliott_> Gregor: It's been happening for AGES.
14:56:43 <elliott_> Gregor: `url too.
15:00:24 <Phantom_Hoover> `quote 359
15:00:26 <HackEgo> 359) <oklopol> and then there's the slightly annoying one where suddenly, i start rolling forward and i can't stop <oklopol> like i can be having some great sex dream or whatever and then suddenly "oh god not this again" <oklopol> (i go "not this again" but not necessarily realize it's a dream)
15:01:11 <Phantom_Hoover> Future oklopol: but the sex part doesn't necessarily stop?
15:01:49 <Vorpal> 4) <AnMaster> that's where I got it <AnMaster> rocket launch facility gift shop <-- how is that funny?
15:02:07 <Vorpal> besides it didn't taste very good (the topic was freeze dried ice cream)
15:02:49 <elliott_> Vorpal: Oh come on, you already spent about ten hours deleting it after multiple people kept putting it back.
15:03:00 <elliott_> We, as a community, have decided that we want that quote, if only to irritate you slightly.
15:03:14 <elliott_> Also can I have some.
15:03:18 <Vorpal> elliott_, did I? doubtful. I'm not that persistent
15:03:19 <elliott_> Was it like nougart.
15:03:23 <elliott_> And yes, you really did.
15:16:22 -!- pikhq has joined.
15:16:44 -!- pikhq_ has quit (Ping timeout: 258 seconds).
15:20:14 <Gregor> ncdu
15:20:19 <Gregor> So glad I finally found that package.
15:20:27 <Gregor> Console equivalent of kdirstat, filelight etc.
15:20:39 <Gregor> My ultimate plan to never use graphical applications continues.
15:22:47 * elliott_ does not understand why you would want to replace a WIMP application with an Xorg backend with a WIMP application with a very limited curses backend.
15:23:09 <elliott_> I can definitely understand replacing a WIMP application with a composable tool, but curses ain't that.
15:24:08 -!- ive has joined.
15:32:35 -!- Ngevd has joined.
15:32:40 -!- Ngevd_ has joined.
15:32:48 <Ngevd> Great
15:32:56 <Ngevd> I connected twice and I'm using my old client
15:32:57 <Ngevd> brb
15:33:02 -!- Ngevd_ has quit (Read error: Connection reset by peer).
15:33:03 -!- Ngevd has quit (Read error: Connection reset by peer).
15:33:33 -!- Ngevd has joined.
15:33:40 <Ngevd> Now I've got that sorted
15:33:44 <Ngevd> Here comes the important bit
15:33:46 <Ngevd> Hello!
15:36:38 <Ngevd> Don't CTCP VERSION me!
15:36:41 <Ngevd> It's rude!
15:36:44 <Ngevd> You can just ask!
15:36:48 <Phantom_Hoover> http://twitter.com/#!/qntm/statuses/124529807865286656
15:37:01 <Phantom_Hoover> I HATE YOU I WAS PROCRASTINATING ON LOOKING AT THAT VERY DOCUMENT AAAAAAAAAAAAA
15:39:33 -!- ais523 has joined.
15:39:56 <Phantom_Hoover> http://www.irregularwebcomic.net/3183.html
15:40:15 <Ngevd> I had that page open already
15:40:15 <Phantom_Hoover> And IWC's plot was coming very near to actually progressing.
15:40:23 <elliott_> Phantom_Hoover: I...
15:42:03 <elliott_> Phantom_Hoover: I can only conclude that IWC's plot will conclude with DMM going on a canonical yet real-world attempt to create alt.fan.irregularwebcomic.
15:42:16 <elliott_> Each comic will be an update on this attempt.
15:42:20 <elliott_> When he succeeds, the comic will end.
15:42:21 <Ngevd> Shall we beet him to it?
15:42:27 <elliott_> Yes, let us beet him to it.
15:42:37 <Ngevd> Oh, you know what I meant
15:42:39 <elliott_> ais523: Oi, how do you make Usenet groups? It's a post and no-one has to challenge it or something, right?
15:42:42 <Ngevd> Don't make fun
15:42:49 <elliott_> ais523: And then you have to convince everyone to route it?
15:43:10 <ais523> elliott_: the only thing you need to do is to convince everyone to route it
15:43:18 <ais523> there is a reasonably established process for doing so, though
15:43:30 <elliott_> ais523: how likely is it to succeed?
15:43:36 <ais523> which if not followed, is unlikely to result in the creation of a group
15:43:43 <elliott_> heh
15:43:44 <ais523> IIRC, there's a group somewhere for debating the creation of new groups
15:45:19 <elliott_> does anyone have a good approximation for what a book's paper looks like under standard yellow-ish light?
15:45:23 <ais523> and if it's agreed there that it makes sense for the group to exist, there's an automated please-route-this-group message you can send out
15:45:23 <ais523> and the servers tend to honour it
15:45:24 <ais523> if it was approved beforehand
15:45:26 -!- ais523_ has joined.
15:45:27 -!- ais523 has quit (Remote host closed the connection).
15:45:29 <elliott_> it's light beige, I'm just not sure which light beige
15:45:30 <ais523_> [16:43] <ais523> IIRC, there's a group somewhere for debating the creation of new groups
15:45:31 <ais523_> [16:44] <ais523> and if it's agreed there that it makes sense for the group to exist, there's an automated please-route-this-group message you can send out
15:45:44 <elliott_> What if I just send that without asking? :-)
15:46:40 <ais523_> [16:44] <ais523> and the servers tend to honour it
15:46:40 <ais523_> [16:44] <ais523> if it was approved beforehand
15:46:41 -!- ais523_ has changed nick to ais523.
15:46:48 <ais523> typically, some servers will honour it, most won't, IIRC
15:47:51 <ais523> also, people are rather more tolerant of requests to route groups in alt.
15:49:09 <Phantom_Hoover> http://www.reddit.com/r/askscience/comments/lc0rk/do_bears_have_elbows/
15:49:13 <Phantom_Hoover> Actual best question.
15:49:52 <ais523> elliott_: for the alt.* hierarchy, alt.config is the place where you try to convince people to accept group creation messages
15:50:20 <elliott_> Phantom_Hoover: Yes.
15:50:23 <ais523> ooh, useful FAQ: http://www.faqs.org/faqs/alt-creation-guide/
15:54:22 <elliott_> > length "irregularwebcomic"
15:54:22 <lambdabot> 17
15:54:28 <elliott_> o the group name can convey more meaning than just what
15:54:29 <elliott_> can fit in 14 letters. (e.g. alt.music.monkees vs.
15:54:29 <elliott_> alt.monkees)
15:54:33 <elliott_> ais523: sounds like it may be a hopeless cause
15:54:47 <Ngevd> alt.fan.iwc
15:54:50 <Ngevd> IT IS THE ONLY WAY
15:54:55 <ais523> yep, weird abbreviations get used sometimes as a result
15:55:03 <ais523> also, it seems very specific to have a newsgroup for one webcomic
15:55:05 <ais523> they're normally wider than that
15:55:10 <elliott_> ais523: yes, but it's _prophesised_
15:55:11 <ais523> (e.g. one about webcomics in general)
15:56:07 <ais523> correct naming would be something like alt.webcomic.irregular, probably with an extra component in there somewhere
15:56:20 <ais523> under the same hierarchy as other webcomics, if they even have one
15:56:59 * ais523 checks if there is one
15:58:28 <Ngevd> brb, tesco
15:58:29 -!- Ngevd has quit (Quit: I'm a cuboid!).
16:01:49 -!- ais523 has quit (Ping timeout: 256 seconds).
16:04:11 <elliott_> `quote
16:04:11 <elliott_> `quote
16:04:12 <elliott_> `quote
16:04:13 <elliott_> `quote
16:04:15 <elliott_> `quote
16:04:17 <HackEgo> 56) <GregorR> ??? <GregorR> Are the cocks actually just implanted dildos? <GregorR> Or are there monster dildos and cocks? <GregorR> Or are both the dildos and cocks monster?
16:04:22 <HackEgo> 517) <elliott> Do one better! Pretend to be an idiot until YOU DIE.
16:04:24 <HackEgo> 326) <oklopol> shit would make great currency, because everyone would have it and you could literally be filthy rich
16:04:27 <HackEgo> 161) <cheater99> you don't have an urethra, you're a girl.
16:04:27 <HackEgo> 386) <crystal-cola> 3 = 7/2
16:05:22 -!- monqy has joined.
16:05:29 <Phantom_Hoover> `delquote 161
16:05:32 <HackEgo> ​*poof*
16:05:39 <elliott_> the harsh judgement process
16:06:21 <monqy> bad quotes
16:06:35 <elliott_> Let's have another round of judgement.
16:06:35 <elliott_> `quote
16:06:36 <elliott_> `quote
16:06:37 <elliott_> `quote
16:06:39 <elliott_> `quote
16:06:39 <HackEgo> 666) <Gregor> But whereas the Zune UI makes one think "I want to kill myself", the Windows CE UI makes one think "I want to kill myself, but first kill my parents as punishment for bringing into this world someone who would one day own a Windows CE device."
16:06:41 <elliott_> `quote
16:06:41 <HackEgo> 143) <Aftran> I have a feeling iPods still beat me.
16:06:43 <HackEgo> 550) <fungot> fizzie: i, myself, will bring an end to all.
16:06:45 <HackEgo> 585) <ais523> (Enigma is two games; one is solving Enigma puzzles, the other is working out how to represent things as Enigma puzzles, preferably with the minimal amount of lua and player-hidden information possible)
16:06:51 <HackEgo> 342) <elliott> ais523: quick, say something funny <oklopol> something funny hagrea:D <oklopol> can'tä sopt laughitn
16:06:58 <elliott_> `delquote 143
16:07:01 <HackEgo> ​*poof*
16:07:04 <monqy> rip
16:07:07 <elliott_> It's like natural selection, except you're just killing the weak.
16:13:50 <elliott_> Gregor: Deewiant: I remembered that iTunes had that thing to stream shit over WiFi, so I looked into it and the iPhone can do it, and it just requires a bunch of jailbreaking and painstaking, awful VPN crap setup to get it to work over threegee :P
16:13:55 <elliott_> So what I talked about is TECHNICALLY POSSIBLE
16:14:28 <elliott_> It's probably a lot easier with Android but I had no such epiphany about an Android app.
16:21:41 -!- Jafet has quit (Quit: Leaving.).
16:21:43 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
16:26:57 <elliott_> Let's do this again.
16:26:58 <elliott_> `quote
16:26:59 <elliott_> `quote
16:26:59 <elliott_> `quote
16:27:01 <elliott_> `quote
16:27:02 <HackEgo> 267) <oklopol> oerjan: also actually A(4, 4) is larger than any other integer, i learned this the other day when i was reading about this algo, it had complexity O(n a^-1(n)) = O(n a^-1(4))
16:27:02 <HackEgo> 428) <oklopol> yes i use the services of a psychic, but i'm considering getting a live one since stuff like "hello $name, your first name $first_name has |$first_name| letters, so by using numerology we can tell ..." is getting kind of boring
16:27:03 <elliott_> `quote
16:27:06 <HackEgo> 481) <ais523> the thing about modern semiconductor design is, 0s are more powerful as 1s
16:27:07 <HackEgo> 495) <oklopol> you know that thing in the movies where they put a pillow on someone's face and try to suffocate them <oklopol> that doesn't work. <oklopol> we tried that with my ex once, but we just couldn't kill each other that way
16:27:14 <HackEgo> 504) <Gregor> I have a WRT120N <fizzie> Gregor: The WRT160NL has 40 units more of... stuff. Plus an L.
16:27:46 <elliott_> None of those are that bad.
16:27:53 <Gregor> OH NOOOOOOOOOOO
16:27:58 <elliott_> So they stay.
16:28:05 <elliott_> The last one is the worst out of them though.
16:28:09 <elliott_> I like how they were in strictly ascending order.
16:32:05 <elliott_> Gregor: BTW, I might get around to that Transactional HackEgo(tm) thing sometime soon.
16:32:21 <Gregor> Sure you will.
16:32:39 <elliott_> Gregor: Is this more of your "mockery is the only way to ensure victory" things?
16:32:44 <Gregor> Yup
16:33:02 <Gregor> With no one saying you can't, you won't.
16:33:19 <elliott_> It's likely :P
16:37:41 <Vorpal> oblivon's alchemy is quite amazing. I managed to create a poison of cure poison. Not sure how.
16:38:40 <Vorpal> also there is a poison named "Restore Magicka" here... but the tooltip indicates no such effect. It is silence for 12 seconds...
16:40:46 -!- Ngevd has joined.
16:41:07 <Ngevd> elliott_, can you recommend me a resturant in Hexham?
16:41:15 <Ngevd> Except spelt correctly
16:43:40 <Ngevd> No wait, think about it and tell me later
16:43:41 -!- Ngevd has quit (Client Quit).
16:44:53 -!- Ngevd has joined.
16:44:57 <Ngevd> Thought about it yet?
16:45:02 <Ngevd> Also, hello!
16:47:39 -!- Ngevd has quit (Read error: Connection reset by peer).
16:47:54 <Gregor> Wowsa
16:48:06 -!- Ngevd has joined.
16:49:15 <monqy> hi
16:49:30 <Ngevd> Hello!
17:01:08 -!- Ngevd has quit (Read error: Connection reset by peer).
17:01:34 -!- Ngevd has joined.
17:02:27 <Madoka-Kaname> > f x = x : f * 2
17:02:28 <lambdabot> <no location info>: parse error on input `='
17:03:26 <Madoka-Kaname> > (\f -> f f) (\f x -> x : f * 2) 1
17:03:27 <lambdabot> Occurs check: cannot construct the infinite type: t = t -> t1 -> t2
17:04:41 <elliott_> > let f x = x : f * 2 in ()
17:04:42 <lambdabot> Couldn't match expected type `[a]' against inferred type `a -> t'
17:04:50 <elliott_> > let f x = x ++ f * 2 in ()
17:04:51 <lambdabot> Occurs check: cannot construct the infinite type: m = m -> t
17:04:56 <elliott_> > let f x = x + f * 2 in ()
17:04:57 <lambdabot> Occurs check: cannot construct the infinite type: a = a -> t
17:05:04 <elliott_> > let f x = fromIntegral x + f * 2 in ()
17:05:05 <lambdabot> Occurs check: cannot construct the infinite type: t = a -> t
17:05:13 <elliott_> > let f x = truncate x + f * 2 in ()
17:05:14 <lambdabot> Occurs check: cannot construct the infinite type: t = a -> t
17:05:16 <elliott_> Bah.
17:05:20 <Ngevd> It's because you're multiplying a function by 2?
17:05:27 <elliott_> That can work.
17:05:28 <Madoka-Kaname> > fix fix (\x -> 1:last x)
17:05:29 <lambdabot> Occurs check: cannot construct the infinite type: a = a -> a
17:05:38 <Madoka-Kaname> > fix (\x -> 1:(last x)*2)
17:05:38 <lambdabot> Occurs check: cannot construct the infinite type: t = [t]
17:06:06 <Madoka-Kaname> > fix (\x -> (last x*2):x) 1
17:06:07 <lambdabot> Couldn't match expected type `t1 -> t' against inferred type `[a]'
17:06:16 <Madoka-Kaname> > fix (\x -> (last x)*2:x) 1
17:06:17 <lambdabot> Couldn't match expected type `t1 -> t' against inferred type `[a]'
17:06:22 <Ngevd> Any restaurant reccomendations, elliott_?
17:06:36 <Madoka-Kaname> > fix (\x -> ((last x)*2):x) 1
17:06:37 <lambdabot> Couldn't match expected type `t1 -> t' against inferred type `[a]'
17:06:39 <Madoka-Kaname> :<
17:07:16 <Ngevd> > (\x -> ((last x)*2):x) [1]
17:07:17 <lambdabot> [2,1]
17:07:27 <Ngevd> :t fix
17:07:28 <lambdabot> forall a. (a -> a) -> a
17:08:32 <Madoka-Kaname> > 1 .&. 3
17:08:33 <lambdabot> Ambiguous type variable `a' in the constraint:
17:08:33 <lambdabot> `Data.Bits.Bits a'
17:08:33 <lambdabot> a...
17:09:47 <Madoka-Kaname> > 1 .&. 3 : Int
17:09:47 <lambdabot> Not in scope: data constructor `Int'
17:09:48 <Madoka-Kaname> > 1 .&. 3 :: Int
17:09:49 <lambdabot> 1
17:11:07 <Ngevd> Bye
17:11:08 -!- Ngevd has quit (Quit: I'm a cuboid!).
17:11:13 <Madoka-Kaname> @pl f a b = (a .&. b) == b
17:11:14 <lambdabot> f = join . ((==) .) . (.&.)
17:13:27 -!- Madoka-Kaname has left ("Huggles for everybody~♪ ^_^").
17:13:30 -!- Madoka-Kaname has joined.
17:14:04 <Madoka-Kaname> @hoogle join
17:14:05 <lambdabot> Control.Monad join :: Monad m => m (m a) -> m a
17:14:05 <lambdabot> System.FilePath.Posix joinDrive :: FilePath -> FilePath -> FilePath
17:14:05 <lambdabot> System.FilePath.Windows joinDrive :: FilePath -> FilePath -> FilePath
17:15:02 <Deewiant> join f x = f x x
17:17:37 <elliott_> ?free a -> f a
17:17:38 <lambdabot> Extra stuff at end of line
17:17:42 <elliott_> ?free ah :: a -> f a
17:17:43 <lambdabot> Extra stuff at end of line
17:17:48 <elliott_> >:?
17:17:51 <elliott_> ?free ah :: a -> a
17:17:51 <lambdabot> f . ah = ah . f
17:17:55 <elliott_> ?free ah :: a -> Maybe a
17:17:55 <lambdabot> $map_Maybe f . ah = ah . f
17:17:58 <elliott_> meh
17:19:13 <Madoka-Kaname> ?free unsafeCoerce :: Int
17:19:13 <lambdabot> unsafeCoerce = unsafeCoerce
17:19:20 <Madoka-Kaname> What does free do?
17:19:29 <Deewiant> ?free foldr
17:19:30 <lambdabot> (forall x. g . h x = k (f x) . g) => g . foldr h y = foldr k (g y) . $map f
17:19:38 <elliott_> Madoka-Kaname: free theorems
17:19:39 <Deewiant> ?help free -- Madoka-Kaname
17:19:39 <lambdabot> free <ident>. Generate theorems for free
17:20:01 <elliott_> ?free (.)
17:20:02 <lambdabot> Pattern match failure in do expression at Plugin/Free/FreeTheorem.hs:54:20-34
17:20:06 <elliott_> sigh
17:20:10 <Madoka-Kaname> ?free map
17:20:11 <lambdabot> g . h = k . f => $map g . map h = map k . $map f
17:20:16 <elliott_> ?free compose :: (b -> c) -> (a -> b) -> a -> c
17:20:16 <lambdabot> g . k = p . f => f . q = f1 . h => g . compose k q = compose p f1 . h
17:20:35 <Madoka-Kaname> ?free unsafeCoerce
17:20:36 <lambdabot> Extra stuff at end of line in retrieved type "Not in scope: `unsafeCoerce'\n\n"
17:20:39 <Madoka-Kaname> ?free unsafeCoerce :: a -> b
17:20:40 <lambdabot> g . unsafeCoerce = unsafeCoerce . f
17:20:58 <elliott_> Heh.
17:21:09 <Madoka-Kaname> ?free unsafeCoerceIO :: IO a -> a
17:21:10 <lambdabot> f . unsafeCoerceIO = unsafeCoerceIO . $map_IO f
17:21:20 <elliott_> s/Coerce/Perform/
17:21:25 <elliott_> ?free unsafeBlah :: Askjhd a -> a
17:21:26 <lambdabot> f . unsafeBlah = unsafeBlah . $map_Askjhd f
17:21:32 <elliott_> Madoka-Kaname: Note how it doesn't actually know about your types.
17:21:41 <Madoka-Kaname> =p
17:21:59 <Madoka-Kaname> ?free ((.)$(.))
17:21:59 <lambdabot> Pattern match failure in do expression at Plugin/Free/FreeTheorem.hs:54:20-34
17:22:40 <Madoka-Kaname> ?free owl :: (Functor f, Functor f1) => f (a -> b) -> f (f1 a -> f1 b)
17:22:40 <lambdabot> Extra stuff at end of line
17:23:19 <Madoka-Kaname> ?free owl :: (a -> b -> c) -> a -> (d -> b) -> d -> c
17:23:20 <lambdabot> (forall x. h . p x = q (f x) . g) => g . f1 = f2 . k => h . owl p y f1 = owl q (f y) f2 . k
17:25:10 <Madoka-Kaname> ?free owl :: (a -> b -> c -> d) -> a -> (e -> f -> b) -> e -> (g -> f) -> g -> (h -> i -> c) -> h -> (j -> i) -> j -> d
17:25:11 <lambdabot> (forall x y. k . f5 x y = f6 (f x) (g y) . h) => (forall u. g . f7 u = f8 (p u) . q) => q . f9 = f10 . f1 => (forall b. h . f11 b = f12 (f2 b) . f3) => f3 . f13 = f14 . f4 => k . owl f5 z f7 v f9 a
17:25:11 <lambdabot> f11 c f13 = owl f6 (f z) f8 (p v) f10 (f1 a) f12 (f2 c) f14 . f4
17:25:20 <Madoka-Kaname> @djinn (a -> b -> c -> d) -> a -> (e -> f -> b) -> e -> (g -> f) -> g -> (h -> i -> c) -> h -> (j -> i) -> j -> d
17:25:20 <lambdabot> f a b c d e f g h i j = a b (c d (e f)) (g h (i j))
17:25:27 <Madoka-Kaname> @pl f a b c d e f g h i j = a b (c d (e f)) (g h (i j))
17:25:29 <lambdabot> f = ((((const .) .) .) .) . flip flip ((.) .) . ((flip . ((flip . ((flip . (liftM2 ((.) . (.) . (.)) .)) .)) .)) .) . flip flip ((.) .) . (((.) . (.) . (.) . (.)) .)
17:25:45 <elliott_> Does this have a point?
17:25:48 <Madoka-Kaname> Nope.
17:25:53 <elliott_> Take it to /msg.
17:25:55 -!- Slereah has joined.
17:26:45 -!- pikhq has quit (Ping timeout: 245 seconds).
17:26:51 -!- pikhq_ has joined.
17:27:48 -!- Slereah_ has quit (Ping timeout: 260 seconds).
17:37:30 <Madoka-Kaname> >:3
17:37:32 <Madoka-Kaname> @djinn (t->t20->t25->t30->t31)->t->(t1->t17->t19->t20)->t1->(t2->t16->t17)->t2->(t3->t16)->t3->(t4->t18->t19)->t4->(t5->t18)->t5->(t6->t22->t24->t25)->t6->(t7->t21->t22)->t7->(t8->t21)->t8->(t9->t23->t24)->t9->(t10->t23)->t10->(t11->t27->t29->t30)->t11->(t12->t26->t27)->t12->(t13->t26)->t13->(t14->t28->t29)->t14->(t15->t28)->t15->t31
17:37:32 <lambdabot> f a
17:37:33 <lambdabot> b
17:37:33 <lambdabot> c
17:37:33 <lambdabot> d
17:37:33 <lambdabot> e
17:37:34 <lambdabot> f
17:37:36 <lambdabot> g
17:37:40 <lambdabot> h
17:37:42 <lambdabot> i
17:37:44 <lambdabot> j
17:37:46 <lambdabot> k
17:37:46 <elliott_> Madoka-Kaname: I believe I said: take it to message.
17:37:48 <lambdabot> Plugin `djinn' failed with: thread killed
17:40:43 -!- Ngevd has joined.
17:41:32 <Ngevd> Hello!
17:45:08 -!- pumpkin has joined.
17:45:52 -!- copumpkin has quit (Ping timeout: 258 seconds).
17:46:13 <Ngevd> God, "I'm a cuboid!" is a stupid quit message
17:46:20 <Ngevd> Wait, God isn't on this channel
17:48:26 <Gregor> Yes I am.
17:48:29 <Gregor> Pay more attention.
17:48:42 <Ngevd> So you are
17:48:48 <Ngevd> Many apologies
17:51:23 <Ngevd> NOW TO RECORD A VLOG!
17:52:53 <Gregor> You better!
17:54:35 <elliott_> Gregor: Do you do any sort of LD_PRELOADing with the current HackEgo system?
17:54:38 -!- pumpkin has changed nick to copumpkin.
17:55:15 <Gregor> elliott_: No.
17:55:31 <elliott_> Gregor: Do static binaries work?
17:55:36 <Gregor> Yes.
17:55:46 <elliott_> Gregor: How should I override syscalls :P
17:55:55 <Gregor> You shouldn't :P
17:56:17 <Gregor> Or ... FUSE?
17:56:28 <elliott_> That's what tup replaced LD_PRELOAD with, so it's tempting.
17:56:29 <Gregor> I mean, UML is doing it all for me as it stands.
17:56:48 <elliott_> Gregor: Hmm... I could make it work based on the resulting filesystem /after/ the command runs, but that (a) is brittle, (b) very slow.
17:56:49 <elliott_> So
17:56:50 <elliott_> Yeah
17:56:53 <elliott_> FUSE sounds like a good idea
17:57:25 <Gregor> That's more or less how it works now.
17:57:36 <Gregor> It does an hg clone and then checks hg status to see if it needs to commit anything.
17:57:44 <Gregor> And yeah, it's slow and terrible :P
17:57:57 <elliott_> Right, you could do it pseudo-transactionally like that, but it would be even more terrible
17:57:59 <elliott_> .
17:58:12 <elliott_> I think I have a workable, fully-ACID FUSE-based design in my head.
17:58:13 <Gregor> But it was pretty easy to implement X-P
17:58:14 <elliott_> Now I just gotta write it out :P
17:58:43 <Gregor> Incidentally, since UML is a kernel after all, it may (or may not) be more practical (or faster or something) to write it as an actual kernel module instead of FUSE.
17:59:29 <elliott_> Gregor: Yeah, but... I can do FUSE shit in Python.
17:59:37 <elliott_> You can't write kernel modules in anything but C :P
18:00:04 <Gregor> I'll bet if you were a truly awful human being, you could write kernel modules in C++. It would take an enormous amount of hackery though.
18:00:17 <elliott_> Yeaaaaaaah
18:00:31 <Gregor> :P
18:01:47 <elliott_> Gregor: I wonder how I can handle aliasing through hardlinks...
18:01:58 <elliott_> Gregor: I suppose I can mark dirty changes as inode /plus/ filepath
18:02:21 <elliott_> That makes both, e.g. replacing the filepath to point to some other inode, and modifying an inode pointed to by multiple filepaths, properly
18:02:24 <elliott_> s/properly/work properly/
18:03:24 <Gregor> I don't think HackEgo really supports hardlinks anyway.
18:03:32 <Gregor> `run touch foo; ln foo bar
18:03:39 <HackEgo> No output.
18:03:50 <Gregor> `run ls -l foo bar
18:03:52 <HackEgo> ​-rw-r--r-- 1 5000 0 0 Oct 14 18:03 bar \ -rw-r--r-- 1 5000 0 0 Oct 14 18:03 foo
18:04:01 <Gregor> Yeah, it doesn't support hardlinkes.
18:04:03 <Gregor> *hardlinks
18:04:07 <Gregor> `run rm foo bar
18:04:10 <HackEgo> No output.
18:04:34 -!- calamari has joined.
18:07:22 <elliott_> Gregor: It doesn't?
18:07:25 <elliott_> Howso?
18:08:55 -!- Taneb has joined.
18:09:11 <elliott_> Gregor: So is every inode referenced by at most zero or one file names?
18:09:13 <Gregor> elliott_: Note how the number of links for foo and bar there were both 1.
18:09:17 <elliott_> `ls /proc
18:09:19 <HackEgo> 1 \ 11 \ 2 \ 267 \ 271 \ 272 \ 273 \ 274 \ 275 \ 276 \ 277 \ 278 \ 3 \ 4 \ 40 \ 42 \ 44 \ 5 \ 6 \ 64 \ 65 \ 7 \ 8 \ buddyinfo \ bus \ cmdline \ config.gz \ consoles \ cpuinfo \ crypto \ devices \ diskstats \ driver \ execdomains \ exitcode \ filesystems \ fs \ interrupts \ iomem \ ioports \ irq \ kallsyms \ kcore \ kmsg
18:09:24 <elliott_> I guess /proc isn't writable so it doesn't matter.
18:09:26 <elliott_> Okay, cool.
18:09:27 <Gregor> elliott_: I mean the /hackenv filesystem doesn't.
18:09:32 <elliott_> Right.
18:10:55 <Gregor> I mean, I suppose it could in principle, but not supporting them wouldn't be a regression *shrugs*
18:12:07 -!- Ngevd has quit (Ping timeout: 248 seconds).
18:12:58 * elliott_ wonders if a lock-based system might actually work better here...
18:13:09 -!- Taneb|Hovercraft has joined.
18:13:33 <elliott_> Gregor: Is there any reason to not just cause any open-for-write operation to lock a file, such that any attempts to open that file block (not counting to their total allocated execution time) until the writing command finishes and "hg commit"s?
18:13:39 <elliott_> (And then a re-checkout is done, etc.)
18:13:40 <elliott_> Oh wait
18:13:46 <elliott_> That's just the transactional system in disguise :P
18:13:52 <elliott_> Except I removed the atomicity guarantee.
18:14:00 <elliott_> Finally I have become pro.
18:15:00 <Gregor> We care about atomicity for revertability, but in principle you could have only half-broken revertability without atomicity.
18:15:14 <elliott_> Gregor: No, I care about atomicity because I care about atomicity :P
18:15:35 <elliott_> Gregor: I like building things like the quote system from simple queries and imperatives.
18:15:48 <elliott_> Not doing everything as one fopen-fwrite-fclose shouldn't break them.
18:16:08 -!- Taneb has quit (Ping timeout: 255 seconds).
18:22:36 <elliott_> Gregor: Hmm, if something tries /reading/ a file BEFORE another thread tries /writing/ it, should the reading transaction fail and go after the write, or should the writing transaction fail and be retried after the reading?
18:23:32 <elliott_> Gregor: I have a feeling I should prioritise writes above all else: Even if minor timing makes a difference, quote should make sense after delquote :P
18:23:58 <Gregor> Writes should be even more rare here than they are in typical transactional systems.
18:24:04 <elliott_> Right.
18:24:05 <Gregor> So it's unlikely that writes will ever starve reads.
18:24:42 <coppro> what's the name of that metric used in spell checking? Kblablabmorov distance?
18:25:04 <Gregor> pooppy: Yeah, I'm pretty sure that's it.
18:26:10 -!- pikhq has joined.
18:26:28 -!- pikhq_ has quit (Ping timeout: 252 seconds).
18:27:42 <elliott_> Gregor: How's this sound: http://sprunge.us/TORd
18:28:08 <Gregor> It sounds TOR'd
18:28:20 <elliott_> Gregor: TOR'd?
18:28:22 <elliott_> Oh.
18:30:03 <Gregor> Makes sense.
18:30:26 <Gregor> The gritty details are probably going to make this harder to implement than it seems, so I anticipate failure. And maybe crying.
18:31:02 <Taneb|Hovercraft> Why am I hovercraft?
18:31:11 <elliott_> Gregor: One thing that occurs to me is that it should try and preserve the given order of commands...
18:31:20 -!- Taneb|Hovercraft has changed nick to Ngevd.
18:31:23 <elliott_> Gregor: You don't want `delquote a, `delquote b to run the latter before the former.
18:31:28 <elliott_> Because the numbers will change, etc. :P
18:31:41 <Gregor> 'struth.
18:31:53 <elliott_> Gregor: Remind me why complete sequential execution is untenable >_>
18:32:28 <Gregor> It's not untenable per se, just untenably slow.
18:33:47 <elliott_> Gregor: Here's my super-smart transactional HackEgo: If any writes are done, kill all commands executed since and discard their results (nothing gets committed until no previous (chronologically) commands at all are running), then it re-executes them in sequence :P
18:35:04 <Ngevd> ++
18:35:08 <Ngevd> +
18:35:09 <Ngevd> +
18:35:10 <Ngevd> +
18:35:16 <Ngevd> +-
18:35:16 <Ngevd> -
18:35:43 <elliott_> hi Ngevd
18:35:48 <Ngevd> Hello
18:36:16 <Ngevd> Can you reccomend a restaurant?
18:36:29 <elliott_> No. It is a fundamental facet of the human condition.
18:36:39 -!- MDude has quit (Ping timeout: 248 seconds).
18:37:13 -!- SimonRC has quit (Ping timeout: 260 seconds).
18:43:00 -!- SimonRC has joined.
18:43:53 -!- pikhq_ has joined.
18:44:44 <Madoka-Kaname> :t runCont
18:44:45 <lambdabot> forall r a. Cont r a -> (a -> r) -> r
18:46:14 <Madoka-Kaname> @djinn (((a -> b) -> b) -> c -> d) -> c -> a -> d
18:46:14 <lambdabot> f a b c = a (\ d -> d c) b
18:46:59 -!- pikhq has quit (Ping timeout: 260 seconds).
19:00:31 -!- Phantom_Hoover has joined.
19:05:42 -!- oerjan has joined.
19:06:28 <Ngevd> Man, my vlogs are accidentally hilarious
19:06:35 <Ngevd> Shame I don't watch them
19:18:04 -!- calamari has quit (Quit: Leaving).
19:19:11 <Phantom_Hoover> Ngevd, the law of the channel dictates that you must link.
19:19:26 <Ngevd> But then elliott_ will know what I look like!
19:19:43 <Ngevd> http://www.youtube.com/watch?v=cbCVGq2y5io
19:19:55 <elliott_> I'm going to click that link and see my own face staring back at me.
19:19:56 <Phantom_Hoover> Your photo is publicly visible on Facebook you idiot.
19:20:04 <Ngevd> That's an old photo
19:20:17 <Phantom_Hoover> elliott_, wait, you have the Moustache of Inability to Shave, don't you?
19:20:26 <elliott_> X-D
19:21:27 <pikhq_> Hmm. D no longer has 2 stdlibs.
19:21:32 <elliott_> What happened
19:21:37 <pikhq_> Tango pretty much died.
19:21:52 <elliott_> pikhq_: As opposed to the incredibly vibrant rest-of-D community
19:22:10 <pikhq_> elliott_: Yes, as opposed to the rest-of-D community.
19:22:15 <elliott_> Wow :P
19:22:20 <elliott_> So it, like, makes negative one commits per second?
19:22:26 <elliott_> It's just rolling back to the big bang.
19:22:37 <Ngevd> I think I can make XSLT S and K work better if instead of having s and k elementsd
19:22:53 <Ngevd> I have combinator elements with the type as an attribute
19:22:57 -!- tiffany has joined.
19:23:12 <Sgeo|web> On Stack overflow, am I not allowed to suspect X-Y problem?
19:23:24 -!- ive has quit (Read error: Operation timed out).
19:23:33 <Phantom_Hoover> Ngevd, you look very silly mandatory insult complete
19:23:50 <Ngevd> Should see my older videos
19:23:53 <Ngevd> Before my haircut
19:24:02 <Phantom_Hoover> Ah, gerunds.
19:24:08 <Phantom_Hoover> I remember not knowing what they are.
19:24:42 <pikhq_> elliott_: Also, D *might* even become vaguely reasonable to use.
19:24:46 <Phantom_Hoover> Ngevd, what is it with people and not realising that I can click the channel link and see all their videos.
19:24:50 <pikhq_> It's getting merged into GCC.
19:24:58 <Phantom_Hoover> wat
19:25:01 <Ngevd> I don't really care
19:25:04 <elliott_> pikhq_: No, Digital Mars want gdc to be :P
19:25:07 <Phantom_Hoover> In all channels and/or dialogues I am in.
19:25:16 <elliott_> gdc is not only terrible, but also I doubt anyone gives a shit.
19:25:20 <Sgeo|web> Oh, um. Maybe as an "answer" is the wrong place to say X-Y problem
19:25:26 <pikhq_> elliott_: You really think the GCC devs will say "no"? These people don't know how.
19:25:29 <Phantom_Hoover> Ngevd, jesus christ you look like a twat with that haircut.
19:25:49 <elliott_> We have such quality discussion in here.
19:25:57 <Sgeo|web> Of course, it might not actually be
19:25:58 <Phantom_Hoover> http://www.youtube.com/watch?v=Fi2Q_5yw1MM&feature=channel_video_title
19:26:04 <Phantom_Hoover> Where is the glitch here.
19:26:11 <elliott_> Phantom_Hoover: Beds.
19:26:15 <Ngevd> Zombie spawned
19:26:21 <Ngevd> Skeleton, actually
19:26:21 <elliott_> Monsters waking enclosed beds due to lack of wall thickness.
19:26:29 <Phantom_Hoover> That's intended behaviour, for some reason.
19:26:35 <elliott_> No it isn't.
19:26:39 <elliott_> Or at least it's nonsense.
19:26:43 <Phantom_Hoover> I... how...
19:26:54 <Phantom_Hoover> I mean, it cannot not be a one-liner to fix.
19:27:01 <Phantom_Hoover> And it must have been coded explicitly in.
19:27:25 <pikhq_> I must admit, it still seems strange that many people's concept of a high-level language seems to be "add things to C".
19:28:02 <Sgeo|web> There are people in the Cringley comments AGREEING with Cringley
19:28:13 <Ngevd> For me, a high level language is pretty much "not assembly or machine code"
19:28:19 <Ngevd> I have poor taste in languages
19:28:20 <Sgeo|web> Cringely
19:28:26 <Ngevd> And non-portable tastes...
19:28:54 <Phantom_Hoover> You have the worst stastes.
19:29:04 <pikhq_> Yeah, even Phantom_Hoover has better taste.
19:29:08 <Sgeo|web> "I refuse to believe that Bob Cringely wrote this article. I typically enjoy your writing sir, but I sincerely hope this was a joke."
19:29:12 <elliott_> Don't call it Cringely for nothin'
19:29:19 <Sgeo|web> elliott_: lol
19:29:21 <Phantom_Hoover> I have notoriously bad tastes (do I?).
19:29:36 <pikhq_> You like Perl.
19:29:50 <Phantom_Hoover> I do?
19:30:06 <Phantom_Hoover> I... don't know how to tell you this, but... I think you've confused me with CakeProphet.
19:30:08 <Phantom_Hoover> For some time.
19:30:13 <pikhq_> God dammit.
19:30:17 <pikhq_> I need more coffee.
19:30:21 <Ngevd> I used to do that
19:30:23 <Phantom_Hoover> Instant coffee?
19:30:28 <pikhq_> CakeProphet: STOP HAVING SUCH BAD TASTE I CONFUSE YOU WITH OTHER PEOPLE
19:30:31 <pikhq_> Phantom_Hoover: No.
19:30:33 <elliott_> Phantom_Hoover: pls link to instant coffee video
19:30:36 <elliott_> I must relive the experience.
19:30:53 <Phantom_Hoover> Oh no I can't remember
19:31:23 <Ngevd> I'm mildly disturbed
19:31:33 <Phantom_Hoover> http://www.youtube.com/watch?v=wlL4o9N9vdM YES
19:31:45 <Ngevd> MS Visual Studio has a decent all bells and whistles XSLT writing thingy
19:32:02 <Sgeo|web> One person makes fun of the article.... while entirely missing the point Cringely is trying to make
19:32:04 <elliott_> Phantom_Hoover: THAT IS NOT INSTANTC OFFE
19:32:07 <elliott_> I DEMAND INSTANT COFE
19:32:19 <Phantom_Hoover> Oh, right you are.
19:32:44 <Phantom_Hoover> http://www.youtube.com/watch?v=qdP2l5oEK4E
19:32:47 <Phantom_Hoover> INSTANT
19:32:49 <Phantom_Hoover> COFFEE
19:33:37 <elliott_> They should advertise instant coffee with this.
19:35:29 <oerjan> <coppro> what's the name of that metric used in spell checking? Kblablabmorov distance?
19:35:38 <oerjan> levenshtein?
19:35:41 <coppro> possibly
19:35:46 <coppro> thought it was a k though
19:36:09 <pikhq_> Phantom_Hoover: The eff?
19:36:18 <elliott_> coppro: you're thinking of kolgomorov complexity
19:36:20 <elliott_> which is unrelated.
19:36:27 <coppro> oh
19:36:32 <elliott_> pikhq_: Instant coffee.
19:37:05 <elliott_> coppro: There is also the Hamming distance, which doesn't have substitution.
19:37:39 <Phantom_Hoover> I don't know, instant coffee is pretty well related to Kolmogorov complexity.
19:37:50 <Phantom_Hoover> Although I can't speak for Kogomorov complexity.
19:37:57 <Phantom_Hoover> Or Kolgomorov.
19:38:51 <Phantom_Hoover> I love how all of the evidence points to iti living in a shack.
19:39:01 <copumpkin> you can't compute colmogorov complexity
19:39:07 <copumpkin> but you can kompute kolmogorov komplexity
19:39:32 <Ngevd> Open University:
19:39:35 <Ngevd> "Now that you have installed Ubuntu (in the Study Week 2), visit https://help.ubuntu.com/ community/ Games
19:39:35 <Ngevd> [Tip: hold Ctrl and click a link to open it in a new tab. (Hide tip)
19:39:36 <Ngevd> ] . Would the selection amuse the average teenager?"
19:39:45 <Ngevd> "The collection includes many small games as well as complex three-dimensional gaming environments."
19:40:46 <Phantom_Hoover> I wish the maths course I did had made cracks at teenagers like that.
19:41:18 <elliott_> Are you sure they're cracks?
19:42:03 <Phantom_Hoover> They may be fractures, admittedly.
19:47:19 <Ngevd> You know what I miss?
19:47:28 <Ngevd> Frequent Homestuck updates
19:48:21 <Phantom_Hoover> Badum-tshhh?
19:48:33 <Ngevd> No, I'm serious
19:49:44 <Ngevd> I really want to see more Homestuck
19:50:17 <Ngevd> Hold on, I have an entire MSPAFA to myself
19:50:20 <Ngevd> What do I care
19:50:23 <Sgeo|web> Ngevd: somehow I doubt this hiatus nis permanent
19:50:29 <Ngevd> 11 MORE DAYS
19:50:36 <elliott_> Sgeo|web: Yes it is.
19:50:55 <Sgeo|web> Ooh, 81%
19:51:00 <Ngevd> http://www.mspaforums.com/showthread.php?34749-PixelQuest-the-one-with-you-know-pixels
19:52:51 -!- SgeoN1 has quit (Read error: Connection reset by peer).
19:52:57 -!- SgeoN2 has joined.
19:54:31 -!- pumpkin has joined.
19:55:32 -!- copumpkin has quit (Ping timeout: 240 seconds).
19:57:15 <Ngevd> I AM GOING TO UPDATE MY MSPAFA!
19:59:33 <Phantom_Hoover> Ngevd, pixel: replicate self into 9 pixels, delete middle pixel, shrink self by scale factor 3, repeat ad infinitum; become, in the limit, Douglas Hofstadter.
20:01:20 <Phantom_Hoover> (Is 2 Hofstadter jokes in one day too many? Who knows.)
20:01:40 -!- zzo38 has joined.
20:01:42 <Ngevd> If you want me to do it, post it in the thread
20:01:50 <Ngevd> I've done virtually every submission
20:02:04 <Phantom_Hoover> Can you post it in the thread for me?
20:02:19 <Ngevd> No
20:02:22 <pikhq_> Long live zoneinfo!
20:02:24 <elliott_> Why not.
20:02:25 <zzo38> This is SQL-Report program I made for FreeGeek: http://sprunge.us/XLWg
20:02:36 <Ngevd> Because that would be cheating
20:03:13 <zzo38> I can send a plain C code file too if you want that one.
20:03:58 -!- pumpkin has changed nick to copumpkin.
20:12:12 <Sgeo|web> Phantom_Hoover: I can post for you
20:12:40 <Sgeo|web> Wait, I have no idea if that even makes sense in the current context
20:12:41 <zzo38> Is this program good to you?
20:17:30 <Phantom_Hoover> Ngevd, are you happy now, Mr picky.
20:17:38 <Ngevd> NOT QUITE
20:20:26 <oerjan> he still lacks the conquest of his enemies and the lamenting of their women.
20:22:22 <Sgeo|web> OOH
20:22:35 <Sgeo|web> Any binary on Heroku, or something
20:22:39 <Sgeo|web> Haskell on Heroku
20:23:11 <elliott_> Time for a massacre.
20:23:12 <elliott_> `quote
20:23:13 <elliott_> `quote
20:23:13 <elliott_> `quote
20:23:15 <elliott_> `quote
20:23:17 <elliott_> `quote
20:23:25 <HackEgo> 407) <oklofok> i hope that isn't child pornography <oklofok> whew <oklofok> equally cute tho, have to admit
20:23:26 <HackEgo> 425) <Phantom_Hoover> https://bugs.launchpad.net/ubuntu/+source/pam/+bug/790538 <Phantom_Hoover> APT GUY STRIKES AGAIN <Gregor> APT GUUUUUUUY NANANANANANANANANANANANANANANANA APT GUUUUUUUUUUUUUY
20:23:38 <HackEgo> 453) <coppro> elliott: actually, it's worse right now, I'm in the USA <coppro> where the solution to counterfeiting problems is "add more ink" <coppro> eventually all US bills will just be solid green
20:23:38 <HackEgo> 83) <Warrigal> What do you call the husband of my first cousin once removed? <apollo> Warrigal: "Hey, Sexy."
20:23:38 <HackEgo> 66) <oklopol> hmm, this is hard
20:23:52 <elliott_> `delquote 425
20:23:53 <elliott_> Rest in peace.
20:23:55 <HackEgo> ​*poof*
20:24:25 <oerjan> Gregor: elliott_ does not appreciate your humor
20:24:34 <elliott_> oerjan: No you don't understand.
20:24:39 <elliott_> I'm culling the quote database on grounds of badness.
20:24:51 <monqy> `quote
20:24:53 <HackEgo> 172) <cpressey> Never ever use a quote which contains both the words "aloofness" and "gel" (verb).
20:24:58 <Phantom_Hoover> I suspect elliott_ may have added that.
20:25:03 <elliott_> oerjan: So every now and then I do `quote five times, and then delete the worst one.
20:25:09 <elliott_> Unless they're all really good.
20:26:51 -!- pikhq_ has quit (Ping timeout: 252 seconds).
20:26:54 -!- pikhq has joined.
20:28:32 -!- elliott_ has quit (Remote host closed the connection).
20:29:17 <Phantom_Hoover> I'd point out the flaw but he's just quit.
20:37:34 -!- GreaseMonkey has joined.
20:38:38 -!- GreaseMonkey has quit (Client Quit).
20:39:16 <Phantom_Hoover> `quote
20:39:16 <Phantom_Hoover> `quote
20:39:17 <Phantom_Hoover> `quote
20:39:17 <Phantom_Hoover> `quote
20:39:17 <Phantom_Hoover> `quote
20:39:27 <HackEgo> 9) <Madelon> Lil`Cube: you had cavity searches? <Lil`Cube> not yet <Lil`Cube> trying to thou, just so I can check it off on my list of things to expirence
20:39:28 <HackEgo> 177) <ais523> you should be eating corpses more
20:39:41 <HackEgo> 138) <fungot> AnMaster: intercal-72 c-intercal clc-intercal j-intercal yes all versions all versions
20:39:42 <HackEgo> 653) <shachaf> elliott: GHC bug? Come on, it's the parentheses. <shachaf> The more parentheses you add, the closer it is to LISP, and therefore the more dynamically-typed.
20:39:42 <HackEgo> 336) 00:07 Sgeo has quit (IRC is taking up too much of my time. I need time to study the Bible and find Christ.) 00:12 Sgeo has joined #esoteric.
20:40:40 <Phantom_Hoover> http://en.wikipedia.org/wiki/Glasgow_Ice_Cream_Wars
20:41:04 <Phantom_Hoover> "The conflicts, in which vendors raided one another's vans and fired shotguns into one another's windscreens, were more violent than might typically be expected between ice-cream salesmen.
20:41:06 <Phantom_Hoover> *"
20:41:34 <Ngevd> The ice cream man outside of school has gone away
20:41:42 <zzo38>
20:41:44 <Ngevd> Turns out, I was the only person who bought his ice cream
20:41:45 <Phantom_Hoover> Those damn Glaswegians.
20:41:54 <Ngevd> Everyone else bought his drugs
20:42:43 -!- GreaseMonkey has joined.
20:42:57 <oerjan> Phantom_Hoover: [citation needed]
20:43:06 <Phantom_Hoover> oerjan, well indeed.
20:46:00 <Phantom_Hoover> http://en.wikipedia.org/wiki/Lothian_Buses
20:46:11 <Phantom_Hoover> This article is far, far, far longer than it has any right to be.
20:46:29 <Ngevd> "Edingburgh, Scotland"!?
20:48:51 -!- pikhq has quit (Read error: Operation timed out).
20:54:07 <Ngevd> Well, I've updated my MSPAFA
20:55:40 <Phantom_Hoover> Excuse me Taneb it is updated INADEQUATELY
20:55:52 <Ngevd> Screw you.
20:55:56 <Ngevd> I'm the author
20:56:04 <Ngevd> And the artist.
20:56:26 <Phantom_Hoover> Neither of which you do reliably.
20:56:44 <Ngevd> That is the author's and the artist's shared perogative
20:56:49 <Ngevd> Look at MegaTokyo.
20:56:57 <Ngevd> I NEVER resort to filler art
20:57:00 <Phantom_Hoover> Or indeed with any quality at the peak.
20:57:01 -!- ive has joined.
20:57:21 <Ngevd> And I do it for fun
20:58:49 <Ngevd> I don't care if everyone hates me for ti
20:59:03 <Ngevd> hngs that I do
20:59:14 <Ngevd> See, I can turn one typo into another!
20:59:23 <Phantom_Hoover> No you don't get it I hate you for things that you *don't* do.
20:59:40 <Ngevd> Such as?
20:59:53 <Phantom_Hoover> Responding to my suggestion.
21:00:23 <Sgeo|web> I don't think AH always responded to all suggestions even in the early days?
21:00:26 <Ngevd> All in good time, Phantom_Hoover, all in good time
21:00:39 <Ngevd> I respond to all suggestions always
21:00:47 <Ngevd> Just after some delay
21:00:52 <Ngevd> Say, three months
21:02:38 <Ngevd> Goodnight
21:02:42 <Sgeo|web> Night
21:02:46 -!- Ngevd has quit (Quit: Goodbye).
21:08:40 <CakeProphet> fizzie: any idea what encoding /usr/share/dict/* is in?
21:08:59 <CakeProphet> I'm guessing UTF-8, but I'm getting a lot of warnings about bytes not mapping to code points.
21:11:33 <Deewiant> file /usr/share/dict*
21:16:07 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
21:18:56 <CakeProphet> yeah UTF-8
21:23:30 <CakeProphet> hrm... I dunno then.
21:23:42 <CakeProphet> I would think that the data is properly encoded.
21:26:40 -!- derdon has joined.
21:31:54 -!- pikhq has joined.
21:35:55 -!- Phantom_Hoover has joined.
21:38:16 <CakeProphet> I... have no clue what is happening
21:38:27 <CakeProphet> it's not write any of the /usr/share/dict data
21:41:17 <Sgeo|web> My /usr/share/dict is empty
21:41:52 <CakeProphet> I've downloaded everything in the repos
21:49:58 -!- Patashu has joined.
22:01:22 <fizzie> Some of them may not be UTF-8; e.g. the /usr/share/dict/finnish wordlist from 'wfinnish' is in ISO-8859-1.
22:04:08 <CakeProphet> oh.
22:04:14 <CakeProphet> uh.... halp
22:04:33 <CakeProphet> Perl doesn't seem too good at automatically detecting encodings or anything like that.
22:04:49 <CakeProphet> I have it set to explicitly read UTF-8 at the moment.
22:05:11 <fizzie> What do you mean not good? "use Encoding::Guess" and all that.
22:05:18 <fizzie> Sorry, Encode::Guess.
22:05:48 <fizzie> It's doable manually with plain Encode, but it's a little more complicated.
22:06:09 <fizzie> Though even with plain Encode it should be reasonably easy to read "utf-8 with fallback to latin-1".
22:06:20 <Phantom_Hoover> Dammit elliott why did you need to sleep before opening that envelope.
22:06:36 <Phantom_Hoover> I am HIGHLY IRRITATED
22:06:58 <fizzie> Okay, so Encode::Guess is not very good at guessing on single-byte encodings where all bytes are valid; those always count as matching guesses. But still.
22:08:26 <CakeProphet> fizzie: hmmm, so it'll be kind of difficult to read any encoding and convert it all to one encoding?
22:08:48 <fizzie> (Possibly UTF-8 with CP1252 fallback can also work; it's about the same as latin-1/9 fallback, except the 0x80-0x9f control character block of latin-X is filled with "smart quotes" and such.
22:08:53 <Phantom_Hoover> "
22:08:54 <Phantom_Hoover> Please make sure you access the EUCLID channel when you are requested by email to do so." — University of Edinburgh
22:09:01 <Phantom_Hoover> I wonder if they have a KETER channel.
22:10:51 <fizzie> There's an Encode::Detect too, but I've heard of Encode::Guess more.
22:11:13 <CakeProphet> fizzie: well with single-byte formats I really don't care what the encoding is, I think.
22:11:23 <CakeProphet> except I do want to normalize it to UTF-8
22:11:31 <oerjan> Phantom_Hoover: yeah it's address is [REDACTED]
22:11:35 <oerjan> *its
22:11:56 <fizzie> It's kind of hard to guess encodings well.
22:12:15 <CakeProphet> fizzie: could I extract the encoding data from file?
22:12:19 <CakeProphet> and then, use that? :P
22:13:06 <fizzie> I guess you... could, though I don't really think file's guess is any cleverer.
22:15:35 <Phantom_Hoover> oerjan, all the lecture notes are just page upon page of [DATA EXPUNGED].
22:15:51 <fizzie> I mean, it's literally just "check for UTF-like stuff; no? well, check if there's anything in the latin-1 control character regions? oh, there were? well, then it's 'extended non-ISO' and that's that".
22:16:03 <fizzie> If you do extract it from file, use the --mime-encoding flag.
22:16:10 <fizzie> (It's more parseable that way.)
22:17:29 <fizzie> Though use Encode; use Encode::Guess qw/latin1/; my $utf8 = decode("Guess", $data); probably does approximately as well. Needs to preload the data, though. ("file" just looks at the first N bytes, I think.)
22:18:05 <oerjan> fungot: [REDACTED]
22:18:05 <fungot> oerjan: it's what that guy in medina, a village near the mystic mountain" 65,000,000 b. c.? yes, i'd have done something very brave? fnord 06:22, 29, no. 2, 2, 3, 4, 8, 13, 1(::**) ...bad insn!
22:18:22 <fizzie> oerjan: I think you broke it.
22:19:43 <Phantom_Hoover> fizzie, no, it's just a result of the [DATA EXPUNGED].
22:19:54 <oerjan> the unbeatable combination of lovecraft and underload
22:20:27 -!- azaq23 has joined.
22:20:36 -!- azaq23 has quit (Max SendQ exceeded).
22:21:02 -!- azaq23 has joined.
22:22:13 <fizzie> At least the comment looks exactly like the sort of stuff you'd expect from the rogue AI as you disconnect its component cards one by one to stop it from killing you.
22:22:57 <Phantom_Hoover> fizzie, what if fungot's component cards are being connected, and this is the boot sequence.
22:22:58 <fungot> Phantom_Hoover: is that something you know and and the cases that required to actually mutate the original ( sorted, perhaps, it may be said that particularly here, parliament will give a single instance,
22:24:08 <Phantom_Hoover> Oh dear.
22:24:30 <Phantom_Hoover> fungot, think of a number.
22:24:30 <fungot> Phantom_Hoover: c has an ignore restarter, restart/ ignore do? the symbols, pairs, procedures, and so am i just being anal here or am i misunderstanding how these were the people skills of a plane alone
22:24:37 <Phantom_Hoover> fungot, a *number*.
22:24:37 <fungot> Phantom_Hoover: i, myself, will bring an end to all. ghosts lurk in the ruins were in truth, and everything in readiness for fnord. under these is concerned, the use of " coup" here is one that only takes predicates and has not named a
22:24:57 <Phantom_Hoover> fizzie, OK wait what would happen if you gave fungot the OEIS.
22:24:57 <fungot> Phantom_Hoover: agora alice c64 ct darwin discworld europarl ff7 fisher ic irc* jargon lovecraft nethack pa speeches ss wp youtube
22:25:36 <CakeProphet> fizzie: so by ISO-8859 do you mostly mean latin-1?
22:27:08 <CakeProphet> er, mo.
22:27:10 <CakeProphet> *no
22:29:12 <CakeProphet> latin-1 doesn't cover finnish or swedish completely
22:29:44 <Phantom_Hoover> I hate it when all conversation on the channel collapses for no readily apparent reason.
22:30:30 <CakeProphet> mainly because fizzie isn't replying to your millions of questions. :P
22:30:35 <CakeProphet> *our
22:31:06 <Phantom_Hoover> You mean my one question.
22:31:38 <CakeProphet> yes and my one question
22:31:39 <CakeProphet> that's two
22:31:44 <CakeProphet> which is very close to millions.
22:32:19 <Phantom_Hoover> Well of course, but it's also very close to G.
22:33:53 <fizzie> I don't think I said "ISO-8859" anywhere; by ISO-8859-1 I obviously mean latin-1, because they're the same thing. (As are ISO-8859-15 and latin-9, for some inexplicable reasons.)
22:33:57 <fizzie> Phantom_Hoover: Digits would come out.
22:35:23 <CakeProphet> fizzie: why would they use latin-1 if it doesn't completely cover Finnish?
22:35:47 <Phantom_Hoover> fizzie, yes, this was not so much a "what if" question as a "this would be so cool I would tell you to do it now if it didn't make me look like a prick".
22:36:13 <Deewiant> CakeProphet: It covers all the parts that most people ever use
22:36:42 <fizzie> CakeProphet: Because that's what was the standard for all text here, before latin-9 and Unicode came along. (After the silly 7-bit things.)
22:37:38 <CakeProphet> hmmm, okay so how would I go about converting latin-1 to utf-8... is that even a thing?
22:38:08 <Deewiant> Latin-1 byte x is Unicode code point x
22:40:14 <fizzie> And you can use something like use PerlIO::encoding; open my $foo, '<:encoding(latin-1)', $foofile or die "urgh" to read a latin-1-encoded $foofile.
22:42:19 <CakeProphet> so wait, that means I don't actually have a problem right? or does latin-1 not correspond to the same bytes as UTF-8?
22:42:33 <fizzie> Certainly not.
22:42:41 <CakeProphet> ah okay.
22:43:06 <fizzie> Unicode codepoint x is not represented by byte x, because the codepoints are rather larger than bytes.
22:43:18 <CakeProphet> right right I understand that.
22:43:23 <CakeProphet> I just wasn't sure how UTF-8 did it.
22:44:00 <fizzie> It's not possible for it to represent latin-1 as the way latin-1 is, because there would be no bytes left over to do anything else, like escaping or whatever.
22:44:34 <CakeProphet> so I think my best option is to use Encode::Guess and then convert latin-1 to utf-8 via... something.
22:44:36 <fizzie> (But UTF-8 does happen to correspond to ASCII for any codepoints <0x80.)
22:44:50 <CakeProphet> fizzie: yes I knew that much.
22:45:22 <fizzie> use Encode; use Encode::Guess qw/latin1/; my $utf8 = decode("Guess", $data); already converts, assuming $data is what you read from a file with :raw or something.
22:46:00 <CakeProphet> raw is not default right?
22:47:06 <CakeProphet> open my $f, '<:raw', $filename
22:47:07 <CakeProphet> like that?
22:47:40 <fizzie> I'm not entirely sure. I think it reads bytes (that you can then decode(); as opposed to UTF-8 or something) by default if you don't 'use' anything, though.
22:48:08 <CakeProphet> ah okay.
22:48:43 <CakeProphet> according to PerlIO you can also use binmode, which is more backwards compatible.
22:49:21 <CakeProphet> but otherwise they're equivalent.
22:50:10 <CakeProphet> but no I don't think :raw is default
22:51:41 -!- Vorpal has quit (Ping timeout: 252 seconds).
22:52:10 <fizzie> It's not the default, but I think the default is bytey enough. But that's just a guess.
22:52:38 <CakeProphet> also I want qw{utf-8 latin-1} I think
22:52:41 <CakeProphet> for the suspects.
22:52:49 <fizzie> No, Unicode is in there by default.
22:53:56 <Gregor> (to police officer) "I'm sorry, but my TV is broken and I didn't know who to call!" "Normally you'd call a TV repair man. If that repair man tried to kill you or steal your purse, then you'd call us." -- Corner Gas
22:54:42 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
22:55:06 <zzo38> I should try to think of what spell I want for D&D game; if I make up something I can ask the Dungeon Master. Such as, a spell that causes creatures in range to attack the caster to the best of their ability and they even get bonuses if targeting the caster (including higher save DC). What level and name would be such a spell?
22:56:37 <CakeProphet> zzo38: try one of these: http://thesaurus.com/browse/distract
22:56:52 <zzo38> OK thank you
22:57:09 <CakeProphet> divert or distract sound good.
22:57:18 <zzo38> I don't want to open a web browser right now, actually, but OK
22:57:20 <CakeProphet> or engross.
22:59:53 <zzo38> Another idea of a spell, makes the caster have a penalty of their choice to an ability score of their choice and is dismissible as an immediate action
23:00:06 <CakeProphet> impel, incite, compel.
23:00:09 <zzo38> Another idea of a spell, is a spell that affects the phase of the moon but only locally
23:00:15 <zzo38> And only temporarily
23:00:23 <CakeProphet> zzo38: sounds like a daily perhaps?
23:03:15 <zzo38> I am sorry, can you explain better?
23:03:39 <CakeProphet> the moon spell sounds like a daily spell. that's a thing in D&D right?
23:03:47 <CakeProphet> or is it daily ability? not
23:03:50 <CakeProphet> spell
23:04:01 <zzo38> Are you talking about 4th edition? I am playing 3.5 edition
23:04:06 <CakeProphet> oh, yes.
23:04:09 <CakeProphet> disregard.
23:04:22 <CakeProphet> I don't know anything about 3.5
23:04:28 <CakeProphet> and I only know a little about 4
23:05:04 <zzo38> I finished typing the recording for the session I have played last, except for some of the level-up stuff.
23:05:51 <CakeProphet> fizzie: oh hey, what did I need Encode for in your example above
23:06:13 <zzo38> Another idea, is spell that writes information such as the time of day, current position, mass, length, etc, on a provided paper, even if you have no writing equipment
23:07:36 <CakeProphet> what about a spell that makes you INSANE WITH SMARTNESS.
23:07:37 <fizzie> CakeProphet: To export the 'decode' funnction, I suppose. It was from some example.
23:07:49 <CakeProphet> fizzie: but decode exists in Encode::Guess.
23:07:51 <Phantom_Hoover> I love how there will never be a third world war.
23:07:53 <Phantom_Hoover> Really.
23:07:59 <Phantom_Hoover> The term is so vague as to be useless now.
23:08:09 <CakeProphet> Phantom_Hoover: WW3 = apocalypse
23:08:19 <Phantom_Hoover> CakeProphet, yes, exactly.
23:08:45 <fizzie> CakeProphet: It does? Weird. Maybe it automatically re-exports it for convenience, then.
23:08:51 <CakeProphet> God bless the atomic bomb.
23:08:52 <Phantom_Hoover> But it's used for _any_ apocalyptic war, and so it's useless to refer to any real war that way.
23:08:58 <Phantom_Hoover> Even an apocalyptic one.
23:10:10 <Phantom_Hoover> It'd be called the War of Fred's Accidental Button Press or something similarly specific.
23:10:13 <fizzie> fis@eris:~$ perl -e 'use Encode; use Encode::Guess qw/latin-1/; decode("Guess", "");'
23:10:16 <fizzie> Empty string, empty guess at /usr/lib/perl/5.10/Encode.pm line 174
23:10:18 <fizzie> fis@eris:~$ perl -e 'use Encode::Guess qw/latin-1/; decode("Guess", "");'
23:10:19 <CakeProphet> fizzie: I wonder if decoding line by line will result in a larger number of errors.
23:10:21 <fizzie> Undefined subroutine &main::decode called at -e line 1.
23:10:21 <fizzie> Looks like it doesn't.
23:10:36 <zzo38> I need to select two spells to level-up. I think I might select the Extend Tentacles spell, and possibly also the Object Mirroring spell that I made up if the DM approves it
23:10:45 <Phantom_Hoover> zzo38, pervert.
23:10:59 <zzo38> You think it is perverse?
23:10:59 <CakeProphet> fizzie: because it will croak if more than two encodings match
23:11:11 <CakeProphet> which could easily happen between UTF-8 and latin-1 I think?
23:11:45 <CakeProphet> well, no.
23:11:53 <fizzie> CakeProphet: Only if two suspects match, I think. Not for Unicode and a suspect.
23:11:57 <CakeProphet> hopefully it's smart enough to realize that when that happens the encodings are equivalent.
23:12:03 <CakeProphet> ah okay.
23:12:09 <Phantom_Hoover> <zzo38> You think it is perverse?
23:12:12 <zzo38> Select a line crossing the object which direction to mirror it in. That object becomes mirror-imaged of itself, but other than that it will be the same object. (If the object contains writing, the writing will now be backwards.)
23:12:19 <Phantom_Hoover> Yes, such are the times we live in.
23:12:30 <zzo38> O, you mean the times we live in are perverse.
23:12:42 <CakeProphet> and full of perverted tentacles, yes.
23:12:56 <Phantom_Hoover> No, I mean such are the times we live in that any reference to tentacles will be viewed in a sexual light.
23:13:08 <CakeProphet> though mirror-images sound pretty sexy too.
23:13:14 <CakeProphet> I'm getting hot and bothered just thinking about it.
23:13:31 <zzo38> Phantom_Hoover: O, that is why I said, the times we live in are perverse. So, it is same thing. However, neither of these two spells have anything to do with sexual light.
23:13:45 <CakeProphet> bahahahaha. sexual light.
23:13:57 <Phantom_Hoover> Tentacles of sexual light.
23:14:05 <zzo38> It has nothing to do with sexual anythingelse, either.
23:14:39 <Phantom_Hoover> Mirroring of sexual anythingelse objects.
23:15:55 <zzo38> (Extend Tentacles increases reach of caster's tentacle attacks by 5 ft (no effect if the caster is human); Object Mirroring causes an object to become a mirror image of itself, so that if it contains writing, it will now be written backwards.)
23:16:51 <zzo38> (Effects of mirroring molecules, atoms, and subatomic particles, is ignored)
23:16:52 <CakeProphet> zzo38: also it would reverse asymmetrical things.
23:16:58 <CakeProphet> such as large asymmetrical monsters.
23:17:02 <CakeProphet> that I'm sure exist.
23:17:08 <Phantom_Hoover> So you could use Object Mirroring on a person and watch them slowly starve to death?
23:17:11 <zzo38> CakeProphet: Yes it does. Creatures get a saving throw, though.
23:17:12 <CakeProphet> they'll be so confused. their sense of right and left will be all messed up.
23:17:23 <zzo38> And it is also temporary if used on creatures.
23:17:30 <Phantom_Hoover> Or indeed invoke CP symmetry and watch for a short time as they explode.
23:17:35 <zzo38> Because it is designed to use on objects.
23:17:45 <CakeProphet> CakeProphet symmetry?
23:18:04 <Phantom_Hoover> No, charge-parity.
23:18:07 <CakeProphet> child porn symmetry?
23:18:07 <CakeProphet> oh
23:18:09 <CakeProphet> okay.
23:18:14 <zzo38> Phantom_Hoover: You cannot invoke CP symmetry because one of the paragraphs in the spell description says such effects are ignored
23:18:40 <Phantom_Hoover> zzo38, oh well, at least we have our tentacles of sexual light.
23:18:41 <zzo38> That is what I meant by "Effects of mirroring molecules, atoms, and subatomic particles, is ignored"
23:18:59 <Phantom_Hoover> How does that work, then?
23:19:01 <zzo38> Phantom_Hoover: No, the tentacles and mirrors have nothing to do with sexual anything
23:19:03 <CakeProphet> iso-8859-1 or utf8 at /usr/local/lib/perl/5.10.1/Encode.pm line 174
23:19:08 <CakeProphet> fizzie: lies
23:19:27 -!- copumpkin has joined.
23:19:28 <Phantom_Hoover> If chirality of proteins etc. is left as-is, the overall reflection would stop them from fitting together at all.
23:19:47 <CakeProphet> fizzie: well, it's just a warning so... I guess it doesn't matter?
23:20:02 <Phantom_Hoover> Not to mention things like polymers and chiral ionic lattices.
23:20:38 <zzo38> Phantom_Hoover: O! I forgot about that. Although what I meant is that at the molecular level things just change so that they are the same thing, by magic; and at larger scales everything is mirrored.
23:20:58 <Phantom_Hoover> Magic doesn't excuse logical inconsistency.
23:21:06 <CakeProphet> I think it's probably best to leave chemistry out of D&D.
23:21:14 <zzo38> Phantom_Hoover: Are you sure?
23:21:15 * oerjan throws a paradox spell at Phantom_Hoover
23:21:48 <Phantom_Hoover> I could quite easily construct a system wherein macroscopic parity reversal would result in qualitatively different properties than the unmirrored version.
23:22:15 <CakeProphet> Phantom_Hoover: do it. stopwatch has started.
23:22:37 <zzo38> Probably, then in those kind of cases, the spell can be used.
23:22:50 <Phantom_Hoover> http://en.wikipedia.org/wiki/Carvone
23:22:52 <Phantom_Hoover> Bam.
23:23:13 <CakeProphet> does D&D even specify that its unvierse consists of the same kinds of units of matter as ours?
23:23:25 <CakeProphet> I imagine there's some kind of magical theory behind it.
23:23:32 <CakeProphet> involving like, I dunno, elements and other magicky things.
23:23:39 <Phantom_Hoover> Well, if zzo38 defines his own laws of physics, and they're consistent, I have no quarrel.
23:24:05 <zzo38> Note the spell allows mirroring on whatever axis is wanted, as long as some restrictions are followed, having to do with supporting objects, moving the center of gravity, and ensuring at least one point of the object remains part of the object relative to the current position.
23:24:18 <Phantom_Hoover> But the explicit reference to molecular structure implies that it does use real-world chemistry.
23:24:44 <Phantom_Hoover> zzo38, ah, so you can't fling a rock 500km into the air with it?
23:24:52 <Phantom_Hoover> That never occurred to me.
23:25:28 -!- Phantom_Hoover has left ("Leaving").
23:25:31 -!- Phantom_Hoover has joined.
23:25:41 <Phantom_Hoover> http://en.wikipedia.org/wiki/Cetonia_aurata
23:25:43 <zzo38> Phantom_Hoover: Yes, you cannot use it to fling a rock 500km into the air.
23:25:50 <Phantom_Hoover> Let us suppose I mirror one of these.
23:26:29 <Phantom_Hoover> The light it reflects is still circularly polarised in the same direction; however, if you chipped its carapace on one side, the chip would move.
23:28:13 <Phantom_Hoover> Aha, of course!
23:28:21 <Phantom_Hoover> What if you mirrored an LCD display?
23:28:38 <oerjan> CakeProphet: http://www.giantitp.com/comics/oots0423.html
23:28:41 <Phantom_Hoover> (Don't bother, I'm too tired.)
23:28:44 * Phantom_Hoover → sleep
23:29:06 -!- Phantom_Hoover has quit (Quit: Leaving).
23:29:45 <CakeProphet> oerjan: ..
23:29:49 <CakeProphet> heh
23:31:41 -!- kmc has quit (Quit: Leaving).
23:33:05 <CakeProphet> okay, but for some reason my /usr/share/dict datasets aren't writing to a file.....
23:33:14 <CakeProphet> but the googledata ones did.
23:40:30 -!- oerjan has quit (Quit: Good night).
23:44:32 <CakeProphet> yeah I'm getting blank results for those...
23:46:30 <CakeProphet> well, I guess it's time to explicitly specify encoding...
23:53:54 <CakeProphet> file /media/Elements/googledata/googlebooks-ger-all-1gram-20090715-1.csv
23:53:55 <CakeProphet> /media/Elements/googledata/googlebooks-ger-all-1gram-20090715-1.csv: ASCII text
23:53:59 <CakeProphet> wat
2011-10-15
00:00:39 <CakeProphet> file /usr/share/dict/gaelic
00:00:39 <CakeProphet> /usr/share/dict/gaelic: ISO-8859 C program text
00:00:41 <CakeProphet> .....
00:01:08 <CakeProphet> I no longer trust this information
00:14:48 <CakeProphet> hmmmmmmmmmm
00:25:27 <CakeProphet> oh for some reason this condition is always failing
00:25:33 <CakeProphet> next if $seen{$word} || $word =~ /[^\p{Alphabetic}\p{Letter}\p{Dash_Punctuation}\p{Connector_Punctuation}']/
00:25:40 <CakeProphet> fizzie: anything look wrong with that regex?
00:27:03 -!- kmc has joined.
00:29:39 <CakeProphet> fizzie: right now I'm using an optional encoding option and then interpolating the value of that option into :encoding($blah)
00:33:10 -!- pikhq_ has joined.
00:33:31 -!- pikhq has quit (Ping timeout: 256 seconds).
00:39:52 <zzo38> I implemented part of the "Funreps" system that I have discussed. I implemented Show instance, so that, Case [(LocalP, Apply (Apply (Arith 0 True Add) (Local 0)) (Literal $ NumLit 1) )] is displayed as { L: <<s0.Add L0> 1>; }
00:41:34 -!- azaq23 has quit (Quit: Leaving.).
00:41:52 -!- ive has quit (Ping timeout: 244 seconds).
00:46:56 -!- derdon has quit (Remote host closed the connection).
00:48:39 <zzo38> (It means a function to increment a signed bignum)
00:55:49 <CakeProphet> what the hell is happening.....
00:55:59 <CakeProphet> this must be encoding hell.
00:58:51 -!- nooga has quit (Ping timeout: 245 seconds).
01:07:35 * CakeProphet should buy a desktop, overclock the processor to 5 Ghz, and get some kind of ridiculous liquid nitrogen cooling system.
01:09:06 <Gregor> Flourinert.
01:09:52 <Gregor> *Fluorinert
01:11:07 <CakeProphet> sounds like overkill perhaps.
01:15:07 <pikhq_> Liquid nitrogen? Lame.
01:15:25 <pikhq_> Your computer should be cool enough that superconducting wiring is practical.
01:16:17 * CakeProphet maintains a CPU temp of 0 K
01:17:37 -!- augur_ has changed nick to augur.
01:28:42 -!- ive has joined.
01:31:13 -!- ive has quit (Client Quit).
02:18:06 -!- Madoka-Kaname has quit (Changing host).
02:18:06 -!- Madoka-Kaname has joined.
02:32:32 <CakeProphet> bleh. looking for apartments on craigslist. :P
02:37:03 <CakeProphet> a lot of these ads are very creepy
02:37:14 <CakeProphet> especially when it specifically requests a gender.
02:38:33 <shachaf> CakeProphet: According to craigslist, those are illegal except in the case of shared housing.
02:39:04 <CakeProphet> shachaf: it's shared.
02:39:09 <shachaf> CakeProphet: http://www.padmapper.com/ , by the way.
02:39:21 <CakeProphet> the apartments are way too expensive
02:39:45 <shachaf> @whereis CakeProphet
02:39:45 <lambdabot> Maybe you meant: where where+
02:40:08 <CakeProphet> Atlanta
02:41:44 <CakeProphet> oh look some of these were already on craiglist
02:42:06 <shachaf> Right, it just scrapes craigslist etc.
02:43:20 <CakeProphet> I wonder how many places are cool with pet snakes.
02:43:22 <CakeProphet> I imagine most are.
02:43:32 <CakeProphet> since they're not like cats and dogs in terms of mess.
02:44:45 * shachaf ought to move somewhere with a window, as he keeps telling himself.
02:46:14 -!- TeruFSX has joined.
02:46:43 <shachaf> Apparenlty housing is 77% cheaper in Atlanta than here.
02:46:45 * shachaf sighs.
02:47:07 <CakeProphet> fortunately yes. my budget can really only handle like $400 at the most.
02:47:21 <CakeProphet> I've found some retardedly cheap places at like $125
02:47:24 <CakeProphet> I might try those.
02:47:36 <shachaf> You should move to Palo Alto.
02:48:33 <CakeProphet> why?
02:48:47 <CakeProphet> I think Mark Zuckerberg lives there.
02:48:57 <CakeProphet> yeah no thanks I'd rather not be homeless.
02:49:53 <CakeProphet> this one is $224 a month for 842ft^2 but it says ??? bathrooms
02:49:55 <CakeProphet> I wonder what that means.
03:02:36 -!- Sgeo|web has quit (Ping timeout: 265 seconds).
03:10:11 <zzo38> Do you have any pet snakes?
03:35:52 <SgeoN2> It means you get 0/0 bathrooms
03:51:17 -!- CakeProphet has quit (Ping timeout: 256 seconds).
03:56:55 <zzo38> I changed char 'a' >> return '\BEL' to '\BEL' <$ char 'a' it seem to work OK.
04:05:31 -!- |-|ak has joined.
04:07:22 <|-|ak> #join
04:07:31 -!- |-|ak has left.
04:09:38 <tiffany> .-.
04:24:30 -!- Zuu has quit (Read error: Connection reset by peer).
04:29:06 -!- Zuu has joined.
05:08:39 <zzo38> I remember in some mathematics class I had in school, they called the calculator's exponent button the "roof" button.
05:13:06 -!- pikhq has joined.
05:13:11 -!- pikhq_ has quit (Ping timeout: 258 seconds).
05:15:21 -!- tiffany has quit (Quit: Leaving).
05:16:32 <zzo38> Should the Funreps (Functional Representation System) program I have, should I add a way to make annotations? Possibly, by making the Exp and Pat types take a type argument, and the Annotation constructor which takes a value of that type and the another Exp/Pat. Does this seem good idea to you, or is there better way?
05:44:49 <SgeoN2> So hyperreals provide infinite and infinitesimal numbers.... and still can't handle 1/0. Is there any system which can?
05:47:43 <SgeoN2> Note to self: Stop mixing up Euler and Euclid.... that shouldn't have even been possible really, Euler's connected with e. Of course he was around after Newton if I thought about it.
05:47:45 <zzo38> I think I read something about some system that can divide by zero, although this causes other things to stop working
05:48:27 <Patashu> what you want is nullity
06:24:00 -!- zzo38 has quit (Remote host closed the connection).
07:11:35 -!- monqy has quit (Quit: hello).
07:24:51 -!- SgeoN2 has quit (Read error: Connection reset by peer).
07:34:32 -!- CakeProphet has joined.
07:34:32 -!- CakeProphet has quit (Changing host).
07:34:32 -!- CakeProphet has joined.
07:48:28 <fizzie> CakeProphet: Apparently what I've done with Encode::Guess earlier is:
07:48:34 <fizzie> fis@eris:~$ od -tx1z utf8.txt | head -n 1
07:48:34 <fizzie> 0000000 6d c3 a4 68 0a >m..h.<
07:48:34 <fizzie> fis@eris:~$ od -tx1z latin1.txt | head -n 1
07:48:34 <fizzie> 0000000 6d e4 68 0a >m.h.<
07:48:34 <fizzie> fis@eris:~$ perl -e 'use Encode; use Encode::Guess; for $f (@ARGV) { open D, "<:raw", $f; $d = join "", <D>; $e = guess_encoding($d, "latin1"); $u = ref $e ? $e->decode($d) : decode("latin1", $d); print "unikoed: $u"; }' utf8.txt latin1.txt
07:48:37 <fizzie> unikoed: mäh
07:48:39 <fizzie> unikoed: mäh
07:48:41 <fizzie> Something like that.
07:50:40 <fizzie> Or like:
07:50:47 <fizzie> fis@eris:~$ perl -e 'use Encode; use Encode::Guess; for $f (@ARGV) { open D, "<:raw", $f; $d = join "", <D>; $e = guess_encoding($d, "latin1"); $enk = ref $e ? $e->name : "latin1"; $u = decode($enk, $d); print "$enk -> unikoed: $u"; }' utf8.txt latin1.txt
07:50:47 <fizzie> latin1 -> unikoed: mäh
07:50:47 <fizzie> iso-8859-1 -> unikoed: mäh
07:50:49 <fizzie> Like that.
07:51:08 <fizzie> Then it won't be croaking.
07:51:47 <fizzie> Though I really was under the impression that it didn't count the defaults as suspects in the "more-than-two" rule; but apparently it does.
07:52:23 <fizzie> Wait, that's not right. The first one should be from utf8.
07:52:25 <fizzie> Hrm.
07:53:55 <fizzie> Right, it fails (returns non-ref) when it matches both utf8 and latin-1, so the default fallback there should be utf8. And optimally it should distinguish that failure from the rare "neither matched" one.
07:54:00 -!- pikhq_ has joined.
07:54:39 -!- pikhq has quit (Ping timeout: 260 seconds).
08:07:09 -!- monqy has joined.
08:19:16 -!- copumpkin has quit (Ping timeout: 245 seconds).
08:19:42 -!- copumpkin has joined.
08:33:23 -!- CakeProphet has quit (Read error: Operation timed out).
08:50:41 -!- hagb4rd has joined.
08:58:58 -!- monqy has quit (Quit: hello).
08:59:40 -!- nooga has joined.
09:08:30 -!- Phantom_Hoover has joined.
09:10:22 -!- CakeProphet has joined.
09:15:43 -!- Phantom_Hoover has quit (Ping timeout: 255 seconds).
09:20:21 <CakeProphet> fizzie: I switched to explicit encoding via the command line option.
09:20:44 <CakeProphet> less of a headache. Dealing with approximate guessing is a pain.
09:25:27 -!- Jafet has joined.
09:27:08 -!- Phantom_Hoover has joined.
09:34:36 -!- Vorpal has joined.
09:54:38 -!- Jafet has quit (Quit: Leaving.).
10:06:54 -!- oerjan has joined.
10:13:14 <oerjan> <CakeProphet> I wonder how many places are cool with pet snakes.
10:13:24 <oerjan> i think i'll expect a dichotomy there.
10:13:39 <oerjan> (1) Oh, Cool, or (2) AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
10:17:21 <oerjan> <SgeoN2> So hyperreals provide infinite and infinitesimal numbers.... and still can't handle 1/0. Is there any system which can?
10:17:28 <oerjan> Wheel theory
10:39:33 <Patashu> wheel theory?
10:42:48 <oerjan> http://en.wikipedia.org/wiki/Wheel_theory
10:44:33 <Patashu> what is wheel theory useful for?
10:44:57 <Patashu> it seems to be a mathematical construct of the type 'let's modify the premises and see how much we can prove before running into a brick wall'
10:45:03 <oerjan> answering questions like "Is there any system which can handle 0/0?"
10:45:39 <oerjan> Patashu: which is probably what 99% of mathematicians do :P
10:45:43 <Patashu> yes
10:45:45 <Patashu> lol
10:45:48 <Patashu> poor mathematicians
10:46:24 <oerjan> might be a _slight_ exaggeration.
10:46:30 <Patashu> x - x = 0x^2? trippy.
10:49:34 <hagb4rd> i really dont see any clue in defining x - x != 0
10:49:50 <Patashu> it's like a mathematical hat trick
10:50:03 <Patashu> it's saying, we've altered the rules of algebra...but we won't tell you what the result is, just what the result -isn't!-
10:50:11 <Patashu> think I'm using the wrong words
10:51:02 <hagb4rd> is x -x +1 = 1?
10:51:43 <hagb4rd> i never get it
10:53:07 <Patashu> if x-x != 0 (in the general sense) then x-x +1 != 1 (in the general sense)
10:53:11 <Patashu> I doubt wheel theory breaks addition
10:53:59 <hagb4rd> so you cannot really say what x-x+1 is right?
10:54:04 -!- DH____ has quit (Read error: Connection reset by peer).
10:54:08 -!- AndChat| has joined.
10:54:14 <oerjan> well it's 1 + 0 x^2 >:)
10:54:20 <hagb4rd> lol
10:54:27 <Patashu> ... oh god
10:55:34 <oerjan> well ok if x = 0/0, then x-x+1 is 0/0
10:55:47 <oerjan> 0/0 is sort of all-absorbing for addition
10:55:51 <Patashu> eww
10:56:03 <Patashu> it's like infinity but 3 times as worse
10:56:08 <Patashu> is it in any way better than NaN?
10:56:20 <oerjan> yes. it is at least equal to itself :P
10:56:24 <hagb4rd> good question
10:56:29 <Patashu> ha ha
10:56:33 <Patashu> what an improvement :)
10:56:44 <Patashu> somehow I don't think #esotericmath would be a very popular channel
10:57:02 <oerjan> we do that here when we do it
10:58:42 <oerjan> but i do suspect little has been done with wheels since they were invented
10:59:05 <hagb4rd> lol
10:59:17 <Patashu> this video is very enlightening. this is how the modern republican thinks. and the people she debates with are so polite and informed it's a stunning difference http://www.youtube.com/watch?v=qA1py9erpVk
10:59:21 <oerjan> also, i wrote part of that wikipedia article
10:59:28 <Patashu> oh, you did? haha
10:59:29 <hagb4rd> quoted
11:00:19 <oerjan> mind you, i might have been pointed to it from this channel before i did so
11:00:38 -!- AndChat| has quit (Read error: Connection reset by peer).
11:02:29 <oerjan> i think it was during a discussion of that nullity thing (which iirc was _not_ equal to itself)
11:04:05 <Patashu> we should just define x/0 to be equal to -1.
11:04:10 <Patashu> hey, it breaks some mathematical identities...
11:04:15 <Patashu> but it means -I- don't have to write error checking code
11:04:53 <Patashu> or maybe have a special syntax, x/y?z, which equals z if y equals 0.
11:05:27 <Patashu> would be ambiguous with :?s around though, hmm...
11:06:24 <hagb4rd> u would stil have problems with division by null
11:06:32 <oerjan> well yes it is easy to define things if you don't need to preserve any rules
11:07:12 <oerjan> the wheels keep commutativity and associativity pretty well
11:07:32 <oerjan> x+0 = x and 1x = x
11:08:14 <Patashu> a language where null can be a number is a language I don't want to use
11:08:15 <Patashu> :P
11:08:44 <oerjan> if you say so, mr. ancient greek
11:08:53 * Patashu adjusts his laurels a bit
11:27:12 -!- Phantom_Hoover has quit (Ping timeout: 260 seconds).
11:30:03 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
11:30:36 -!- derdon has joined.
11:31:34 -!- GreaseMonkey has quit (Quit: The Other Game).
11:32:36 -!- Phantom_Hoover has joined.
12:01:51 <Phantom_Hoover> http://en.wikipedia.org/wiki/Zonule_of_Zinn
12:01:54 <Phantom_Hoover> Best name
12:12:10 <oerjan> wait, you mean it is _not_ an arcane object of power...
12:12:17 <oerjan> also, who is Zinn.
12:13:30 <oerjan> http://en.wikipedia.org/wiki/Johann_Gottfried_Zinn, apparently
12:19:28 * oerjan adds that
12:21:45 <oerjan> hm is "after" a good preposition to use there, or is my norwegian seeping through?
12:22:25 <oerjan> hm looks good
12:25:45 <Phantom_Hoover> What did you add?
12:25:59 <oerjan> YOU WILL NEVER KNOW
12:26:01 <Phantom_Hoover> Oh, right, you added Zinn to the article on his Zonule.
12:26:08 <oerjan> darn
12:26:23 <Phantom_Hoover> Yeah, 'after' is the standard word.
12:26:40 <Phantom_Hoover> 'For' is sometimes used, but it's not all that natural in that context.
13:13:04 -!- tiffany has joined.
13:15:10 -!- sebbu has quit (Ping timeout: 240 seconds).
13:16:15 -!- sebbu has joined.
13:29:21 -!- DH____ has joined.
13:37:10 -!- oerjan has quit (Quit: Later).
14:08:27 -!- pikhq_ has quit (Read error: Operation timed out).
14:08:29 -!- pikhq has joined.
15:11:14 -!- Ngevd has joined.
15:12:47 <Ngevd> Hello!
15:15:15 <Ngevd> I got bored earlier today
15:15:29 <Ngevd> So I began to make Python versions of Haskell prelude functions
15:34:44 <Phantom_Hoover> Oh dear.
15:37:23 -!- ive has joined.
15:40:04 -!- monqy has joined.
15:45:28 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
15:46:17 -!- Phantom_Hoover has joined.
15:55:34 -!- Ngevd has quit (Read error: Connection timed out).
15:58:49 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
16:06:03 -!- sllide has joined.
16:11:59 -!- Phantom_Hoover has joined.
16:16:56 -!- copumpkin has quit (Ping timeout: 255 seconds).
16:17:22 -!- copumpkin has joined.
16:17:51 -!- elliott has joined.
16:21:11 -!- Zuu has quit (Ping timeout: 244 seconds).
16:22:52 <elliott> CakeProphet: http://www.youtube.com/watch?v=tCRPUv8V22o
16:22:53 <lambdabot> elliott: You have 4 new messages. '/msg lambdabot @messages' to read them.
16:23:23 -!- Zuu has joined.
16:27:29 -!- Phantom__Hoover has joined.
16:28:26 -!- Phantom_Hoover has quit (Ping timeout: 252 seconds).
16:44:46 -!- yiyus has quit (Ping timeout: 240 seconds).
16:47:21 -!- yiyus has joined.
16:54:00 -!- Phantom___Hoover has joined.
16:56:40 -!- Phantom__Hoover has quit (Ping timeout: 252 seconds).
16:58:33 -!- Phantom___Hoover has quit (Ping timeout: 248 seconds).
17:02:33 -!- Phantom___Hoover has joined.
17:17:33 <Madoka-Kaname> @hoogle Int => IO()
17:17:33 <lambdabot> Did you mean: :: IO () /count=20
17:17:34 <lambdabot> Network.BSD endHostEntry :: IO ()
17:17:34 <lambdabot> Network.BSD endNetworkEntry :: IO ()
17:17:36 <Madoka-Kaname> @hoogle Int -> IO()
17:17:36 <lambdabot> Control.Concurrent threadDelay :: Int -> IO ()
17:17:37 <lambdabot> System.Console.Editline.Readline setCompletionQueryItems :: Int -> IO ()
17:17:37 <lambdabot> System.Console.Editline.Readline setEnd :: Int -> IO ()
17:18:08 <Madoka-Kaname> @hoogle Int -> IO Int
17:18:09 <lambdabot> System.Console.Editline.Readline complete :: Int -> Char -> IO Int
17:18:09 <lambdabot> Control.Exception evaluate :: a -> IO a
17:18:09 <lambdabot> Control.OldException evaluate :: a -> IO a
17:18:17 <elliott> Madoka-Kaname: /msg.
17:18:20 <Madoka-Kaname> :<
17:51:07 <elliott> http://esoteric.voxelperfect.net/wiki/Us
17:51:10 <elliott> Good esolang name.
17:54:15 <monqy> good esolang
17:55:07 <monqy> D# is not rocket surgery although here's what you might not expect from using it. WD# to your chaps.
17:55:11 <monqy> D#? oh dear
17:57:29 <elliott> WD# to your chaps.
17:59:29 -!- zzo38 has joined.
18:01:31 -!- Ngevd has joined.
18:02:25 <Ngevd> Hello!
18:10:30 <elliott> pikhq: Does bps do well on non-SNES-ROMs?
18:14:55 -!- sllide has quit (Ping timeout: 260 seconds).
18:21:31 <Ngevd> A thought occurs
18:22:04 <Ngevd> All turing complete languages can in theory be translated to a turing machine
18:22:53 <elliott> Yeeeees.
18:23:18 <Ngevd> Even the really weird ones like Unlambda that are nothing like Turing machines
18:23:45 <Ngevd> I'd imagine there are numerous turing machines that are functionally equivalent to eachother on all inputs
18:24:53 <Ngevd> Indeed, I'd imagine for any turing machine there are an infinite number of other turing machines that do the exact same thing on all inputs
18:25:22 <elliott> Go on.
18:25:35 <Ngevd> Really, I'm just thinking aloud
18:25:47 <Ngevd> Now I'm thinkng about the Big Bang Theory
18:25:51 <Ngevd> As in the TV show
18:26:05 <Ngevd> With very little to do with the actual big bang
18:26:05 <elliott> Ngevd: Wait, I thought there was going to be something interesting after all that.
18:26:08 -!- CakeProphet has quit (Ping timeout: 252 seconds).
18:26:09 <Ngevd> Nope
18:26:13 <monqy> :(
18:26:21 <Ngevd> monqy evolved, though
18:26:26 <Ngevd> He's now a Vigaroth
18:27:14 <elliott> http://cdn.bulbagarden.net/media/upload/6/61/288Vigoroth.png monqy
18:27:30 <monqy> :(
18:27:43 <monqy> http://cdn.bulbagarden.net/media/upload/d/d2/287Slakoth.png much better
18:28:55 <Ngevd> Conversely, it should be possible to translate any turing machine into a program in any turing complete programming language
18:29:20 <Ngevd> Whether it be brainfuck, Piet, Iota or Funge-98
18:29:52 <Ngevd> That's not saying there is only four turing complete programming languages
18:29:56 <Ngevd> They were examples
18:30:00 <Ngevd> I will have to go soon
18:30:21 <elliott> Ngevd: That's... obvious.
18:30:37 <elliott> You can compile any TC language to any other TC language (modulo ℒ).
18:31:11 <Ngevd> Some languages have features that cannot be translated into other languages
18:31:31 <elliott> Ngevd: No.
18:31:33 <Ngevd> For instance, many esoteric programming languages have no graphic of file IO or sound or network capabilities
18:31:39 <elliott> IO can be trivially modelled.
18:31:46 <elliott> It does not affect computational class.
18:31:51 <elliott> This is a common misconception.
18:31:56 <Ngevd> They are nonetheless features
18:32:03 <Ngevd> I have to go now
18:32:04 -!- Ngevd has quit (Quit: Goodbye).
18:32:09 <elliott> You're still wrong.
18:32:33 <Phantom___Hoover> Define 'features', I guess.
18:32:41 <pikhq> elliott: BPS is quite general, in my experience.
18:32:41 <elliott> <Ngevd> For instance, many esoteric programming languages have no graphic of file IO or sound or network capabilities
18:33:02 <pikhq> elliott: The main problem is that it needs quadratic space, and so gets rather unreasonable above ~20M.
18:33:16 <Phantom___Hoover> Well, you can't exactly play music with BF; he's right in that sense.
18:33:29 <pikhq> Phantom___Hoover: Sure you can.
18:33:38 <pikhq> bfi foo.bf>/dev/dsp
18:33:39 <Phantom___Hoover> Well, OK.
18:33:56 <elliott> Phantom___Hoover: Note that Turing machines have no IO.
18:33:59 <Phantom___Hoover> It all hinges on a particular IO model which is far from the only one.
18:34:07 <Phantom___Hoover> elliott, that wasn't what he was saying?
18:34:22 <elliott> Phantom___Hoover: My point is that you define the IO by an interpretation of the final state.
18:34:34 <elliott> Or even intermediate states (e.g. when the first cell is in state blah, interpret the rest accordingly).
18:34:55 <elliott> Phantom___Hoover: I mean, every form of IO comes out to a stream of bits; Turing machines can hardly do anything continuous.
18:35:01 <Phantom___Hoover> No, you define the O by an interpretation of the final state.
18:35:33 <elliott> Phantom___Hoover: Erm, right. But I is just an initial state.
18:35:47 <elliott> Phantom___Hoover: I mean, OK, you can say that I adds some kind of computational power because it lets "cat" compute Chaitin's number.
18:36:01 <elliott> But none of this nonsense is present in the theoretical model at all, so it's stupid to talk about, really.
18:36:29 <Phantom___Hoover> True enough, but he wasn't *wrong*.
18:37:02 <elliott> Phantom___Hoover: He was, because he was claiming that you can't translate all TC (implicitly: and not super-TC) languages to each other.
18:37:20 <elliott> Which is the definition of TC. (Well, one of many possible definitions, but it's one removed from the most common definition.)
18:37:38 <Phantom___Hoover> Oh, all I saw was <Ngevd> Some languages have features that cannot be translated into other languages
18:37:55 <elliott> <Ngevd> Conversely, it should be possible to translate any turing machine into a program in any turing complete programming language
18:37:55 <elliott> <Ngevd> Whether it be brainfuck, Piet, Iota or Funge-98
18:37:55 <elliott> <Ngevd> That's not saying there is only four turing complete programming languages
18:37:55 <elliott> <Ngevd> They were examples
18:37:55 <elliott> <Ngevd> I will have to go soon
18:37:57 <elliott> <elliott> Ngevd: That's... obvious.
18:37:59 <elliott> <elliott> You can compile any TC language to any other TC language (modulo ℒ).
18:38:01 <elliott> <Ngevd> Some languages have features that cannot be translated into other languages
18:39:59 <pikhq> Derp!
18:40:49 <elliott> pikhq: hi
18:42:15 <Phantom___Hoover> <elliott> <elliott> You can compile any TC language to any other TC language (modulo ℒ).
18:42:33 <Phantom___Hoover> It's not just modulo ℒ, it's modulo which definition you use.
18:42:47 <elliott> Phantom___Hoover: I don't think anyone seriously believes ℒ is TC.
18:43:00 <elliott> Phantom___Hoover: Anyway, ℒ relies on input.
18:43:06 <elliott> No input in the theoretical model; problem solved.
18:43:09 <Phantom___Hoover> You're using the compilation definition; ℒ is designed to flag up the absurdity of the UTM definition.
18:43:16 <elliott> Phantom___Hoover: See above; it's not absurd.
18:43:29 <Phantom___Hoover> Why?
18:43:34 <elliott> If you embed the input into the program, then... congratulations, ℒ is a Brainfuck derivative where you have to escape the string according to Pascal's rule.
18:43:38 <elliott> rules.
18:43:42 <elliott> And put a Pascal BF interpreter around it.
18:43:47 <elliott> It's literally isomorphic to brainfuck.
18:44:00 <elliott> Phantom___Hoover: So no, ℒ only demonstrates the absurdity of naively mixing input into the definition.
18:44:31 <elliott> Phantom___Hoover: The whole point of ℒ is that it contains a program that can be made to compute anything a UTM can /given the appropriate input/.
18:44:45 <Phantom___Hoover> I may have misinterpreted something.
18:45:07 <elliott> Phantom___Hoover: Define ℒ for me.
18:45:24 <Phantom___Hoover> For every pair of a Turing-complete language L and a program P written in L that simulates a universal Turing machine (for example, by being an interpreter for a Turing-complete language) (L,P) is a member of ℒ.
18:45:47 <elliott> Phantom___Hoover: I was trying to get you to give me what you think it is so I can tell you what your misunderstanding is.
18:45:58 <Phantom___Hoover> That *is* what I think it is.
18:46:19 <elliott> Phantom___Hoover: Oh for god's sake, stop being deliberately dense; I'm asking you to state it in your own words so I can tell you what you've misinterpreted.
18:46:36 -!- CakeProphet has joined.
18:46:36 -!- CakeProphet has quit (Changing host).
18:46:36 -!- CakeProphet has joined.
18:46:58 <Phantom___Hoover> It consists of a program in some language which is a UTM?
18:47:19 <elliott> Phantom___Hoover: Define interpreter.
18:47:26 <elliott> An interpreter TAKES INPUT.
18:48:10 <Phantom___Hoover> Yes? Why the capitals.
18:48:30 <elliott> Phantom___Hoover: The UTM definition doesn't include any notion of input, so how the fuck does ℒ show it absurd?
18:49:49 <Phantom___Hoover> My interpretation of this was built on what others had said in various discussion.
18:49:52 <Phantom___Hoover> *discussions
18:50:22 <elliott> Oh no, Google Code Search id dying.
18:50:41 <elliott> s/id dying/is dying/
19:05:42 -!- hagb4rd has quit (Ping timeout: 255 seconds).
19:08:37 <CakeProphet> ah, but consider a triangle
19:08:40 <CakeProphet> it has 3 sides.
19:11:32 <CakeProphet> in what sort of geometry could a 2-sided polygon be made?
19:20:02 -!- lifthrasiir has quit (Ping timeout: 252 seconds).
19:25:11 -!- oerjan has joined.
19:29:55 -!- ais523 has joined.
19:31:06 <elliott> hi oerjan, hi ais523
19:31:14 <elliott> oerjan: I replied to you on the wiki
19:31:28 <oerjan> hi elliott, hi ais523
19:31:48 <oerjan> oh noes i must have started a flame war
19:32:04 <elliott> oerjan: btw, I originally tried to make it just wrap properly, but the CSS for that didn't work
19:32:13 <oerjan> oh :(
19:32:25 <oerjan> i was thinking about asking you about if there was such a feature
19:32:48 * elliott waits for you to read my reply, anyway, so I can pester ais523 about it :P
19:32:49 <oerjan> since my wrapping for the /// quine doesn't seem to work in all browsers
19:33:00 <ais523> I'm, umm, eating atm
19:33:25 <elliott> oerjan: how did you wrap it?
19:33:33 <elliott> hmm, that is indeed problematic
19:33:38 <elliott> it's only one word, which is why it doesn't wrap
19:33:59 * elliott thinks a horizontal scrollbar is preferable for that one, too
19:34:11 <oerjan> but it looks so nice in IE where it _does_ wrap :P
19:34:50 <elliott> oerjan: well, Firefox wraps it, but Chrome and Safari don't.
19:35:17 <oerjan> and that way you can see its size at a glance
19:35:42 <elliott> oerjan: that doesn't matter if it plain doesn't work in some of the most common browsers :P
19:35:49 * elliott tries to get it to wrap in Chrome
19:36:11 <elliott> aha, hmm
19:36:31 * elliott tries it with the other examples
19:36:59 <elliott> oerjan: ok, I have it word-wrapping
19:37:04 <fizzie> CakeProphet: That's a digon.
19:37:25 <elliott> oerjan: argh, in Chrome but not Firefox
19:37:55 <elliott> oerjan: let me play with this...
19:37:58 -!- lifthrasiir has joined.
19:38:57 <elliott> oerjan: sigh, ok, I might be able to get this to work
19:39:03 <elliott> oerjan: firefox seems to respect the word-wrap for a div but not a pre
19:39:59 <elliott> oerjan: (with the problem being that you can't add an extra div with CSS...)
19:40:08 <elliott> oerjan: does http://esoteric.voxelperfect.net/wiki/Slashes#Quine wrap for you in IE?
19:40:39 <elliott> ais523: argh, how do you get pre without nowiki?
19:41:02 <oerjan> um isn't that the default?
19:41:03 <ais523> elliott: leading space
19:41:10 <elliott> ais523: what
19:41:16 <elliott> ais523: um right
19:41:21 <ais523> <pre> is a MediaWiki tag that's equivalent to HTML <pre> plus a partial <nowiki>
19:41:23 <elliott> ais523: how do you do that and also change attributes
19:41:25 <elliott> on the pre
19:41:28 <ais523> you don't
19:41:31 <ais523> I never said MediaWiki made sense
19:41:33 <elliott> ais523: I hate MediaWiki
19:41:34 -!- ive has quit (Ping timeout: 240 seconds).
19:41:38 <oerjan> elliott: yes, it looks nice in IE
19:41:54 <elliott> ais523: leading spaces followed by {{ do _not_ produce a pre.
19:42:18 <ais523> I think you can use a different block element and give it styling that makes it equivalent to a pre
19:42:24 <elliott> Since any /// program not containing &lt;code&gt;/&lt;/code&gt; or &lt;code&gt;\&lt;/code&gt; is trivially a quine, here is one containing ''only'' &lt;code&gt;/&lt;/code&gt; and &lt;code&gt;\&lt;/code&gt;.
19:42:24 <elliott> {{div|_=style=&quot;word-wrap: break-word&quot;|text=/\/\/\/\\\\/\\\\\\\/\\\\\\\/\\\\\\\/\\\\\\\\\\\\\\\\\\\\\\//\/\/\/\\\/\/\\////\\////\\\///\\////\\\///\\////\\\///\\////\\\///\\\///\\\///\\\///\\////\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\////\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\////\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\////\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\//
19:42:24 <elliott> /\\\///\\\///\\\///\\\///\\\///\\////\\////\\\///\\////\\\///\\////\\\///\\////\\\///\\\///\\\///\\////\\\///\\////\\\///\\\///\\////\\////\\////\\////\\\///\\////\\\///\\////\\////\\\///\\////\\////\\\///\\////\\\///\\////\\\///\\////\\\///\\\///\\\///\\////\\\///\\\///\\\///\\////\\\///\\\///\\////\\////\\////\\////\\\///\\////\\////\\\///\\////\\////\\\///\\////\\\///\\////\\\///\\////\\\///\\\///\\\///\\\///\\////\\\///\\\///\\////\\////\\\//
19:42:27 <elliott> /\\\///\\\///\\////\\\///\\\///\\\///\\////\\\///\\\///\\\///\\////\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\////\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\////\\\///\\\///\\\///\\////\\\///\\\///\\\///\\\///\\////\\////\\////\\////\\\///\\////\\////\\\///\\////\\////\\\///\\////\\\///\\////\\\///\\////\\\///\\\///\\\///\\\///\\////\\\///\\\///\\\///\\////\\\///\\\///\\\///\\////\\\///\\\///\\\///\\////\\\///\\\///\\\///\\\///\\\///\\\///\\\//
19:42:32 <elliott> /\\\///\\\///\\\///\\////\\////\\////\\////\\\///\\////\\\///\\////\\\//\/\/\/\\\/\\\/\\////\//\//\/\/\/\\\\/\\//\\\/\\\/\\\/\\\\\\\/\\\\\\\/\\\/\\\\////\//\//\/\/\/\\\\/\\\/\\\/\\\/\\\\\\\\\\////\/\/\}}
19:42:32 <ais523> style="white-space:preserve", IIRC
19:42:35 <elliott> MEDIAWIKI
19:42:37 <elliott> WHY WOULD YOU PRODUCE THAT MARKUP
19:42:39 <elliott> YOU MAKE NO SENSE
19:42:43 <elliott> ais523: yep, but you can't put that in common.css :P
19:42:52 * elliott continues trying to make this work
19:43:17 <elliott> wtf, I'm on the latest firefox, too
19:43:55 * elliott reads mozilla docs
19:45:00 <fizzie> Put a zero-width space between each character, then they all are potential wrapping-points. Elegant! (Assuming the problem is that "it's only one word" thing. I can't really be bothered to read full context.)
19:45:16 <elliott> aha, I think I've fixed it
19:45:21 <elliott> fizzie: that breaks copying :P
19:46:08 <elliott> oerjan: ok can you force reload that page
19:46:17 <elliott> or wait
19:46:25 <elliott> oerjan: http://esoteric.voxelperfect.net/w/index.php?title=Slashes&oldid=24876#Quine
19:46:26 <elliott> does that work?
19:48:52 <oerjan> yes, although the right margin of the box is strangely larger than usual
19:49:20 <elliott> oerjan: How much larger?
19:50:25 <oerjan> about 2.5 times the left margin, i think
19:50:58 <elliott> oerjan: Does it matter?
19:51:00 <elliott> Nobody uses IE.
19:51:01 <elliott> :p
19:51:07 <oerjan> O KAY
19:51:08 <elliott> oerjan: Also it's just balancing out since I removed the : before it.
19:51:13 <elliott> oerjan: So you're happy with this?
19:52:00 <oerjan> it's not so bad, and it still copies as one line
19:52:21 <elliott> oerjan: It could be fixed with an IE-specific stylesheet, most likely.
19:52:22 <oerjan> btw there's another copy on the Quine page :P
19:52:27 <elliott> But eh.
19:52:37 <elliott> oerjan: And yeah, yeah, but I'm about to fix 'em all:
19:52:39 <elliott> ais523: Can you add "pre { word-wrap: break-word; white-space: pre-wrap }" to common.css, please?
19:53:00 <ais523> ouch, that's a really major change
19:53:05 <elliott> ais523: No it's not.
19:53:14 <ais523> it is, because the whole point of pre is that it doesn't break lines
19:53:16 <elliott> ais523: It just wraps overly-long lines visually (in Chrome, IE, Firefox).
19:53:23 <elliott> No, the whole point of pre is that it preserves whitespace.
19:53:25 <elliott> Also, copying works the same way.
19:53:30 <ais523> well, exactly, and that can completely change the meaning of programs
19:53:40 <elliott> ais523: It does not do any hard breaking.
19:54:02 <elliott> ais523: Anyway, the alternative is a horizontal scrollbar on the pre element, which has far more problems.
19:54:05 <ais523> it still does visual breaking, though, which makes programs much harder to read
19:54:16 <ais523> what about just a horizontal scrollbar on the page? a pre doesn't widen the page to its own width
19:54:22 <ais523> so it'd just be useful for scrolling pres
19:54:28 <elliott> That breaks the design; see [[MediaWiki talk:Common.css]].
19:54:37 <elliott> ais523: Nothing is harder to read than a horizontal scrollbar; that's why oerjan explicitly did hacks to make it wrap for his Slashes quine.
19:54:46 <elliott> Note that Slashes /does/ change behaviour on newlines.
19:55:55 <ais523> I can see perhaps wrapping individual programs visually, if people can guess that the line breaks aren't actual newlines
19:57:06 <elliott> ais523: I've already made changes to add horizontal scrollbars to two examples, and now one to do this new method to Slashes; if you won't add it, I'll just have to keep adding it to the examples I come across /shrug
19:57:23 <elliott> ais523: I really very much doubt anyone is confused by wrapping; every programmer's editor I know of defaults to it.
19:57:54 <elliott> (Emacs notifies about it in the margin, but vi and vim don't.)
19:58:07 <elliott> (Nor does Notepad with word-wrapping on (admittedly not the default, but I don't know of anyone who uses it for programming and doesn't turn it on.))
19:58:14 <elliott> s/\.))/).)/
19:58:27 <ais523> Kate goes and puts eight characters of hatching at the start of an overwrapped line
19:58:45 <elliott> gedit also wraps silently by default.
19:58:51 <ais523> I actually find vim's behaviour pretty confusing there
19:59:04 <ais523> and I change gedit's behaviour there quite a lot, /because/ it's so misleading
19:59:10 <elliott> Yes, it's obvious _you_ find it confusing.
19:59:21 <elliott> Clearly most other programmers don't.
19:59:34 <ais523> I often turn wrapping off for the buffer in Emacs in order to make lines line up correctly
19:59:45 <ais523> elliott: think of it this way: suppose someone writes a Funge-98 program that's wider than the page
19:59:51 <ais523> would wrapping that make any sense at all?
20:00:00 <ais523> a horizontal scrollbar would be /significantly/ better than wrapping
20:00:13 <elliott> ais523: It can be overriden on a per-pre basis.
20:00:28 <elliott> Wrapping makes far, far more sense as a default; see: all the changes I've made so far.
20:00:59 <ais523> if you want it to wrap, then why use <pre> rather than <code>? preservation of horizontal whitespace?
20:01:14 <oerjan> btw User:Nthern/Archive is one page which contains code which is both wide enough to give a scrollbar if that's the default, and tall enough to make it awful to use
20:01:25 <elliott> ais523: <code> looks totally different to <pre>, and doesn't preserve newlines, duplicated whitespace, doesn't turn off wiki markup, blah blah blah.
20:01:40 <ais523> elliott: <code><nowiki>turns off wiki markup
20:01:51 <ais523> we really need a separate tag for "preserve horizontal whitespace"
20:02:15 <elliott> ais523: So? It has all the other disadvantages listed.
20:02:21 <elliott> It also looks really bad multi-line.
20:02:28 <elliott> Are you even meant to make a <code> multiline? It's an inline element by default.
20:02:49 <ais523> well, you're suggesting making <pre> act like not a <pre>
20:02:56 <elliott> Anyway, whatever; you're within rights to annoy everyone else on the wiki because of a personal dislike of the saner behaviour.
20:03:30 <oerjan> ...
20:04:08 <elliott> ....................
20:04:43 <ais523> elliott: I'm within my rights to not arbitrarily change the meaning of a well known HTML and wiki tag?
20:05:07 <elliott> ais523: Note the part where I dropped it because you're being unreasonable and it was rapidly heading towards a flamewar.
20:05:25 <ais523> fair enough; the attempt to drop it looked rather like egging on instead, anwyay
20:05:28 <ais523> *anyway
20:06:10 <elliott> ais523: No, this is egging on: When are you going to make <pre>s show tabs as eight spaces?
20:06:20 <ais523> they do already, don't they?
20:06:22 * ais523 tests
20:06:42 <elliott> ais523: Nope.
20:06:46 <elliott> ais523: Four spaces in every browser since forever.
20:06:53 <oerjan> elliott: http://www.smbc-comics.com/index.php?db=comics&id=2373#comic
20:07:11 <oerjan> (that was _far_ longer ago than i thought)
20:07:39 <ais523> elliott: Firefox renders it as eight in the edit box, which makes sense
20:07:44 <ais523> and eight on the page too
20:07:55 <elliott> ais523: that's certainly not what older Firefoxes did
20:08:01 <ais523> http://esoteric.voxelperfect.net/wiki/Esolang:Sandbox
20:08:06 <ais523> do those lines line up in your browser?
20:08:12 <ais523> and I'm using an old Firefox (3.6.something)
20:08:18 <elliott> that's not old
20:08:28 <ais523> it's four versions out of date!
20:08:29 <elliott> I bet it's a Linux thing; certainly they've never done that on Windows or OS X
20:09:11 <tiffany> bleh
20:09:19 <tiffany> firefox needs to stop going lightspeed with version numbering
20:10:20 <oerjan> to infinity and beyond!
20:10:26 <Madoka-Kaname> Linux 3.0 after how many years?
20:10:28 <oerjan> sorry, *aleph-null
20:11:06 <ais523> I know I threatened to just double AceHack's version number with every release
20:12:57 <ais523> elliott: just tested Chromium and Epiphany on Linux; both have tab=8
20:13:03 <elliott> <elliott> I bet it's a Linux thing; certainly they've never done that on Windows or OS X
20:13:29 * ais523 tests IE6
20:14:17 <ais523> yep, line up in IE6 too
20:14:26 <ais523> also, in Firefox 10 for Mac (I just asked a friend to test that)
20:14:48 <tiffany> Sooner or later firefox is going to start skipping every other major version number
20:14:58 <tiffany> wait wha-
20:14:58 <ais523> elliott: admittedly I was running IE6 on Linux, but I doubt it special-cases it
20:15:12 <elliott> Things that are totally not completely boring at this point: Firefox versioning rants
20:15:12 <tiffany> ie6 on linux? .-.
20:15:16 <elliott> Above sentence comes from "book of lies".
20:15:32 <ais523> tiffany: well, I have to do cross-browser testing /somehow/
20:15:41 <ais523> and Wine's quite good nowadays, right? no reason you can't run IE6 in it
20:15:52 <elliott> ais523: I guess there was some movement to change it for some reason or another, but I am completely certain that a few years ago on a Mac tabs renderd as four spaces in browsers
20:15:59 <ais523> admittedly, it crashed twice during startup, but still managed to load somehow
20:16:13 <elliott> (it's also the default of a twenty year old editor, for what that's worth)
20:16:20 <ais523> which one?
20:16:55 <elliott> BBEdit
20:17:18 <elliott> I know you're going to counter this with "people have been living a lie for a very long time" so don't bother.
20:17:19 <oerjan> lines up in IE 8 fwiw
20:18:48 <ais523> elliott: nah, I'm just going to take it as a data poitn
20:18:49 <ais523> *point
20:19:10 <elliott> ais523: actually, I think tabs-as-four-spaces might be a /Mac OS/ default in general (it certainly is an OS X default)
20:19:18 <elliott> ais523: so it might be twenty-five years old
20:19:22 <elliott> wait
20:19:24 <elliott> thirty-five
20:19:41 <elliott> umm
20:19:42 <ais523> 'twouldn't be the first time Mac OS were nonstandard
20:19:43 <elliott> twenty-seven
20:19:55 <ais523> I can completely believe that it was using a different tab size to the rest of the universe
20:19:59 <ais523> because it was using a different newline too
20:20:02 <elliott> ais523: how can it be standard, when I'm sure terminal control for tabs was available back then?
20:20:08 <elliott> it predates Windows
20:20:08 <ais523> which is a lot more important for interoperability
20:20:21 <elliott> it predates desktop computers by being the first; there's not really much "standard" to compare to
20:20:23 <ais523> elliott: it's a standard default; tab size has been customizable since typewriters
20:20:38 <ais523> because their intended purpose is for writing tables efficiently
20:20:41 <elliott> ais523: people have been wrong for a very, very long time, then
20:20:44 <ais523> for which, you need tab stops
20:21:04 <ais523> for another data point, QBasic defaults to tab=14, as do many other basic impls, I think
20:21:13 <ais523> so that the columns are actually wide enough to fit data in
20:21:20 <ais523> the use of tabs for indentation is rather more recent
20:21:37 <elliott> ais523: umm, what?
20:21:43 <elliott> ais523: tabs for indentation dates back to at /least/ the original Unix sources
20:22:03 <ais523> elliott: typewriters are older than UNIX, aren't they?
20:22:12 <elliott> ais523: you said that after talking about QBasic
20:22:40 <pikhq> Tabs for indentation in UNIX is courtesy of the first UNIX display being a teletypewriter.
20:24:39 <elliott> pikhq: I'm sure it dates back to at least Multics
20:24:40 <elliott> probably further
20:26:34 <pikhq> elliott: It's an artifact of typewriter design, though.
20:27:08 <pikhq> So, of course it dates back further.
20:27:24 <elliott> It's a more reasonable artifact than deciding to hammer the space key a lot, and then going "ooh, we should build this into the editor".
20:27:37 <elliott> pikhq: But yes, people wrote code on typewriters a lot, didn't they?
20:27:49 <oerjan> as a norwegian, i am disappointed by the lack of whales in http://www.smbc-comics.com/index.php?db=comics&id=2393#comic
20:28:10 <elliott> pikhq: I mean, what else would you write Fortran on in 1957? Surely people didn't publish punchcards when they shared code. Although admittedly probably they didn't share code much.
20:28:31 <pikhq> Quite true.
20:29:09 <pikhq> Additionally, until the invention of the glass teletype, any interactive input to a computer was going to be with a typewriter.
20:29:09 <fizzie> Ooh, a pneumatic-tube-based punchcard-github.
20:29:35 <elliott> Pneumatic tubes are so cool.
20:29:46 <elliott> (My first exposure to them was Grim Fandango, which is odd in retrospect.)
20:29:55 <ais523> hmm, what was the original application for teletypewriters, before they were used as computer terminals?
20:29:56 <elliott> (The exposure, I mean. Not the game. That was odd at the time too.)
20:30:03 <Phantom___Hoover> Didn't you study them at school or something
20:30:04 <ais523> some sort of substitute for telegrams?
20:30:08 <elliott> ais523: communication
20:30:20 <elliott> http://upload.wikimedia.org/wikipedia/commons/8/89/WACsOperateTeletype.jpg
20:30:22 <ais523> so you'd type at one end and it'd print at the other end?
20:30:26 <pikhq> Yes.
20:30:28 <ais523> typos would be a little hard to notice
20:30:31 <elliott> Phantom___Hoover: I played Grim Fandango at a rather early age.
20:30:36 <elliott> ais523: I'm sure it printed locally too.
20:31:14 <pikhq> Also, it wasn't a substitute for telegrams, it was telegrams. :)
20:31:23 <fizzie> There used to be a tube-driven cigarette sales system in our supermarket (and many others) -- you punch a button on a big table to indicate the brand, and after a moment a box pops out on the grocery-conveyor-belt. But it's been "temporarily broken" more often than not lately, and I have a feeling they're trying to give it up.
20:31:43 -!- sllide has joined.
20:31:45 <Phantom___Hoover> elliott, wait, you actually *did* study pneumatics at school?
20:31:56 <elliott> Doesn't EVERYONE???
20:32:11 -!- Phantom___Hoover has changed nick to Phantom_Hoover.
20:32:38 <Phantom_Hoover> Well, you mentioned it as being an available choice or something.
20:33:53 <fizzie> Oh, and a friend once told a story about a hospital, where the blood bags were delivered using a series of tubes, and they had a habit of breaking. That's... quite an awkwardly cleanable mess.
20:34:05 <ais523> pikhq: ah, it was how telegrams were implemented? I assumed they were morse code, for some reason
20:34:49 <elliott> ais523: A telegraph message sent by an electrical telegraph operator or telegrapher using Morse code (or a printing telegraph operator using plain text) was known as a telegram. A cablegram (see cablegram) was a message sent by a submarine telegraph cable,[1] often shortened to a cable or a wire. Later, a Telex was a message sent by a Telex network, a switched network of teleprinters similar to a telephone network.
20:34:56 <elliott> teleprinters being ttys
20:35:10 <ais523> yep
20:35:19 <ais523> well, the word "tty" isn't used with its original meaning any more
20:35:21 <ais523> and hasn't been for decades
20:35:22 <pikhq> ais523: A telegram is pretty much any form of remote signalling, especially ones sending directly over the wire like a Morse keyer would.
20:35:43 <pikhq> A teletypewriter messaging scheme could be used for telegrams, as could More code.
20:35:57 <ais523> I think telegrams still theoretically exist, although I forget who's responsible for delivering them
20:36:02 <ais523> I suspect it's the post service
20:36:13 <fizzie> Doesn't the Telex network also still theoretically exist?
20:36:54 <pikhq> Barely.
20:36:56 <fizzie> "Telex is still in operation, but has been mostly superseded by fax, email, and SWIFT, although radiotelex (telex via HF radio) is still used in the maritime industry and is a required element of the GMDSS" -- apparently, if you can trust Wikipedia. And if you can't trust Wikipedia, what *can* you trust?
20:37:11 <fizzie> (Except W|A, of course.)
20:45:11 -!- ive has joined.
20:45:16 <zzo38> Why is the sunrise/sunset displayed in Astrolog a few minutes off from the official sunrise/sunset? Solar noon appears to be correct, though.
20:48:50 <ais523> zzo38: do you live right in the middle of your timezone?
20:48:55 <elliott> Haven't you already asked that?
20:48:57 <ais523> and at the exact same latitude?
20:50:22 -!- Patashu has joined.
20:51:40 <zzo38> ais523: I have computed solar noon using different programs, and at least at 0N 0E the times of solar noon appear to correspond with the start of the tenth house in some systems (including Equal (MC)) and with the times displayed on the rising/setting charts. But rise/set mismatch; if I set the ayanamsa to -3.6 it works but the ayanamsa has nothing to do with sunrise/sunset, so why does it do that?
20:52:06 <oerjan> zzo38: could it be difference between center and edge of sun?
20:53:17 <zzo38> oerjan: Yes, maybe. I know there are different sunrise/sunset values, such as official, nautical, civil; but the ones shown by default in the rising/setting chart in Astrolog match none of those.
20:53:54 <zzo38> However, Swiss Ephemeris is probably better; I read its documentation and it can calculate rise/set with nautical twilight, and civil twilight, and so on.
20:54:27 <elliott> zzo38: Why do you want to use Astrolog, anyway?
20:54:30 <zzo38> Maybe I should make the program that uses Swiss Ephemeris; unlike Astrolog, it is compatible with GNU GPL so it is properly Free software/open source software.
20:54:53 <zzo38> I could probably even include better search functions.
20:56:55 <zzo38> And as far as I can tell, Astrolog has no option to set the zoom level for the solar system view.
21:07:31 -!- kwertii has joined.
21:12:43 <zzo38> Other features I would like to have (and might implement) are:
21:13:34 <zzo38> * Order of a pair of objects with an aspect is relevant (except Conjunct and Opposite).
21:14:10 <zzo38> * Set the zero point of the zodiac such that a specific object is fixed at zero.
21:14:47 <zzo38> * Ability to automatically plot things with exposure, instead of stepping manually.
21:15:24 <zzo38> * Search function for aspects and other things.
21:16:06 <zzo38> * In transit search, specify number of divisions of the circle; and use any display of angles (zodiac names, hours/minutes, or degrees)
21:16:49 <zzo38> * Use of other calendar systems.
21:17:43 <zzo38> * Ability to set orb values based on diameters of objects.
21:18:25 <zzo38> * Barycentric and astrometic modes.
21:18:44 <zzo38> * Ability to use true positions or apparent positions.
21:19:48 <zzo38> * Can switch on/off precession, nutation, gravitational deflection, aberration of light, etc.
21:20:08 <zzo38> * Can use radians for angular measurement.
21:21:01 <CakeProphet> fizzie: ah, so a digon is like an eyelid. :D
21:21:11 <zzo38> * Four-house system: rise, solar noon, set, and midnight.
21:21:15 <CakeProphet> a big eyelid on a spherical eye alien.
21:21:50 <zzo38> * Ability to plot any set of variables on a calendar, graph, or text chart.
21:22:10 <zzo38> * Ability to display the IAU zodiac.
21:22:31 <CakeProphet> well no, it's the eyelid, but the surface of the eye itself.
21:22:35 <CakeProphet> *not the eyelid
21:22:39 <Phantom_Hoover> CakeProphet, how did bigons become a topic of discussion.
21:23:47 <CakeProphet> I asked about it earlier.
21:23:53 <CakeProphet> replying to something fizzie said.
21:25:23 <Phantom_Hoover> Ah, right
21:25:41 <zzo38> * Ability to toggle any of the outer rings on the horoscope (Astrolog has three and you cannot change them).
21:27:06 <zzo38> Is this good enough? However, there are some features I intend to purposely omit, such as the interpretation mode of Astrolog.
21:28:06 <CakeProphet> http://en.wikipedia.org/wiki/Sphere#Eleven_properties_of_the_sphere
21:28:14 <CakeProphet> I read this as "Elven properties of the sphere"
21:28:21 -!- nooga has quit (Ping timeout: 255 seconds).
21:28:22 <Phantom_Hoover> Bloody elves.
21:31:11 <oerjan> the elven harmony of the spheres
21:31:47 <CakeProphet> Great cuicuboctahedron
21:31:56 <CakeProphet> good polyhedron or best polyhedron?
21:32:07 <CakeProphet> *great *greatest
21:32:17 <CakeProphet> *cubicuboctahedron
21:32:20 <Phantom_Hoover> No, the cuboctahedron is.
21:33:00 <CakeProphet> booooring.
21:33:07 <fizzie> Great Cubicuboctahedron in the Sky, we beseech you.
21:33:26 <Phantom_Hoover> CakeProphet, cuboctahedrons are the best.
21:34:31 <CakeProphet> Noncovex great rhombicuboctahedron is pretty cool guy too.
21:34:46 <CakeProphet> I wonder if there is a rhombicubicuboctahedron?
21:34:50 <CakeProphet> that... probably doesn't make sense.
21:35:33 -!- Timwi has joined.
21:35:37 <CakeProphet> or a rhombiChewbaccahedron?
21:35:58 <Timwi> Good day!
21:37:03 <Timwi> Anyone active?
21:37:25 <CakeProphet> No I live a very sedentary lifestyle.
21:37:43 <Phantom_Hoover> I am in fact an IRC zombie.
21:38:06 <monqy> me too
21:38:26 <Phantom_Hoover> monqy has decayed more.
21:38:51 <Timwi> Oh OK then
21:39:35 <Timwi> I really just wanted to ask whether anyone has seen my esolang, Ziim, which I posted yesterday, and what the first impression was
21:41:27 <monqy> lots of arrows
21:41:45 <Timwi> That was the idea :-p
21:42:42 <CakeProphet> Timwi: I can see that there a lot of points to point out.
21:43:34 <CakeProphet> so it's a 2D dataflow language of osrts.
21:43:37 <CakeProphet> *sorts
21:43:49 <Timwi> Yes
21:43:54 <CakeProphet> that goes left to right, it seems.
21:44:09 <Timwi> Left to right? It goes all over the place :)
21:44:20 <CakeProphet> as if you reverse the direction of the arrows they can have different meanings.
21:44:20 <Timwi> I conjecture that it’s harder to program in than Malbolge
21:44:32 <Timwi> Reverse yes, rotate no
21:44:46 <CakeProphet> I... didn't mention rotation.
21:44:54 <elliott> Malbolge isn't that hard to code in. OK so it is.
21:44:58 <Timwi> No, but you mentioned left to right :)
21:45:25 <Timwi> I hate that Malbolge is constantly mentioned as an example of a hard-to-program-in language. There are loads on the wiki that are harder than Malbolge :)
21:45:26 <CakeProphet> right there's an inherent meaning to left and right. specifically in label vs. concat
21:45:27 <monqy> what's a 45 degrees rotation
21:46:05 <Timwi> monqy: I know, I know, you can’t just rotate a whole program 45° :)
21:46:18 <Phantom_Hoover> Timwi, no, you misunderstand.
21:46:28 <elliott> Timwi: Pah, only if you're restrained to textual file formats.
21:46:35 <Phantom_Hoover> monqy comes from a dimension where the quantum of angular motion is 90°.
21:46:39 * elliott takes a screenshot of program, prints it out, puts on wooden table, photographs, rotates photograph.
21:47:01 <Zwaarddijk> is there any programming lang with rotations and rotation-resistant elements?
21:47:05 <CakeProphet> elliott: don't forget to scan it and then use an image to text translator program.
21:47:07 <Timwi> elliott: No image editing program available, eh? :)
21:47:10 <elliott> Wow, Zwaarddijk spoke.
21:47:19 <Zwaarddijk> been busy recently
21:47:25 <elliott> Timwi: It was an old TDWTF reference. I probably messed it up though.
21:47:32 <Timwi> Zwaarddijk: Yes, Ziim and Funciton (mine :-p)
21:47:36 <elliott> Zwaarddijk: Well, lots of CAs are rotation-invariant.
21:47:48 <Timwi> Ah yeah, CAs, forgot about those
21:47:53 <Zwaarddijk> CAs?
21:47:53 <CakeProphet> Timwi: or is the label vs concat distinction a before and after one rather than whether the arrows are pointing left or right?
21:47:56 <elliott> Zwaarddijk: Cellular automata.
21:47:59 <Zwaarddijk> ah, k
21:48:01 <Zwaarddijk> interesting
21:48:04 <elliott> (The "s" is silent and invisible.)
21:48:07 <Madoka-Kaname> Timwi, what was that language called?
21:48:09 <Madoka-Kaname> "Aura?"
21:48:09 <Timwi> CakeProphet: It’s determined by the relative angles
21:48:11 <oerjan> it would seem that a square greed of arrows doesn't really support an invertible 45 degree symmetry operation
21:48:15 <oerjan> *grid
21:48:20 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
21:48:28 <monqy> the s killed the on and all that's left is a mangled heap of a
21:48:34 <monqy> rip on
21:48:35 <Timwi> oerjan: Correct... unfortunately
21:48:35 <oerjan> although if you just increase the spacing a bit, it should work
21:48:37 <monqy> ;_;
21:49:14 <Timwi> Anyone know how to apply for adminship on the wiki?
21:49:32 <Timwi> I would really like to add some CSS rules and make some articles (especially tables) more readable
21:49:47 <Timwi> It’s really annoying to have to add them to every single table cell...
21:50:49 <oerjan> Zwaarddijk: backflip has two different kind of elements that might be thought of as rotating, also you can make a combined structure which acts as a rotation-resistant mirror
21:51:32 <Zwaarddijk> I as more thinking like coding with two layers
21:51:37 <Zwaarddijk> one which rotates, and one which stays put
21:51:57 <Timwi> Is anyone of you an admin on the wiki and could add some CSS rules for me perhaps?
21:52:13 <elliott> Timwi: ais523 is
21:52:18 <elliott> I think he's away right now though
21:52:44 <Zwaarddijk> and these are indistinguishable by the 'head' that reads the code - but the thing that rotates parts of the code does distinguish them
21:53:04 <Timwi> Whoa, only 7 admins
21:53:14 <CakeProphet> what if esowiki was converted to a hackiki :)
21:53:25 <monqy> less spambots
21:53:37 <CakeProphet> more awesome.
21:53:44 <elliott> Timwi: There's more admins than there are active editors. :p
21:53:49 <CakeProphet> though I do like the mediawiki look and feel.
21:53:49 <monqy> but spambots are good
21:53:51 <Phantom_Hoover> CakeProphet, a poll was held, popular opinion was in favour, and precisely nothing happened.
21:53:57 <elliott> Phantom_Hoover: No it wasn't.
21:54:07 <elliott> Popular opinion was in favour of Gregor making an adjacent Hackiki so we could all ignore it.
21:54:08 <Timwi> I wasn’t planning on changing the MediaWiki look and feel
21:54:18 <CakeProphet> Timwi: right this is unrelated.
21:54:20 <CakeProphet> to that.
21:54:33 <Timwi> Right
21:54:38 <CakeProphet> I brought up hackiki because I believe it would allow you to do precisely what you want to do without an admin.
21:54:47 <CakeProphet> (...?)
21:55:03 <elliott> I don't think any sane Hackiki configuration would allow you embed site-wide arbitrary CSS.
21:55:07 <elliott> That's a big ol' security hole.
21:55:08 <Timwi> Not having restrictions on users would also allow me to do it :-p
21:55:22 <CakeProphet> elliott: well wouldn't it be local to a page though?
21:55:32 <CakeProphet> *couldn't
21:55:38 <Timwi> Not if I could edit MediaWiki:Common.css
21:55:41 <elliott> Timwi: It'd also let you create massive security holes
21:56:08 <Timwi> I agree that it gives users the ability to make drastic changes to the entire site, which would be problematic
21:56:32 <monqy> i want to see a spambot replace the entirety of mediawiki:common.css with compliments
21:56:34 <Timwi> But honestly, thinking that “let’s completely lock them out” is the only alternative solution is really dumb
21:56:52 <elliott> It doesn't lock them out, it lets sysops edit them :p
21:56:59 <Timwi> That’s what I’m saying
21:57:02 <Timwi> It locks everyone else out. Completely
21:57:32 <Timwi> Well anyway
21:57:35 <monqy> how completely is completely
21:57:39 <Timwi> So how do I best contact someone about adminship?
21:57:50 <elliott> Email Graue
21:57:50 <monqy> there are ways to pester people who can edit the page to make the edits you want
21:57:53 <Timwi> elliott: addr?
21:58:03 <elliott> Timwi: graue@oceanbase.org; didn't you already do that, though?
21:58:24 <Timwi> I thought I did, but there’s nothing in my Sent folder, and I had no address of him in my address book, so I guess not
22:02:04 -!- nooga has joined.
22:02:15 <zzo38> I do not agree to convert esolang wiki to Hackiki; I do agree to make up a seperate esolang wiki which is Hackiki, so that you have both. And allow the Hackiki programs to have read access to the Mediawiki installation.
22:03:05 <zzo38> With Hackiki, any user can add skins, add-ins, new commands, and more.
22:03:19 <elliott> Hmm, Hackiki /does/ allow people to create skins?
22:05:03 <Timwi> Why can’t we just be more liberal in giving adminship :( I mean it’s not like everyone’s going to jump in and kill everything
22:05:27 <Timwi> I know I’m sounding pushy :p I’m just frustrated with this
22:06:12 <elliott> Timwi: Well, only one person has the authority to do it in the first place, software-wise.
22:07:00 <Timwi> I know...
22:07:10 <Timwi> I’m amazed more people aren’t frustrated about it as I am
22:07:13 <Timwi> Especially on Wikipedia
22:07:41 <Phantom_Hoover> Join RationalWiki— wait, I think they changed that because it turns out that doing that is stupid.
22:08:29 <Timwi> Doing what? I haven’t even suggested anything specific :)
22:08:47 <CakeProphet> I'd say templates are the best way to go if you're tired of entering repetitive style info.
22:09:17 <Timwi> I don’t see how that can help styling tables. You’d still need to add the template for every cell.
22:09:38 <elliott> Timwi: My point was, if you want more liberalisation of the adminshipness, there's only one person to go to about it.
22:09:47 <Timwi> elliott: Yeah, I know
22:09:50 * elliott thinks we're fine with the set of admins we have; ais523 is active here, and all the spam gets cleaned up rapidly.
22:10:14 <Timwi> The old “we have enough admins therefore we shouldn’t have any more” argument?
22:10:30 <Timwi> (in case it wasn’t clear, I don’t understand that argument; it makes no sense)
22:11:14 <zzo38> I found article in Wikipedia about digital sundial.
22:11:33 <CakeProphet> Timwi: "We have enough /active/ admins" makes perfect sense.
22:11:42 <CakeProphet> having only one inactive admin/op/whatever is awful though.
22:11:45 <elliott> Timwi: I don't think we need more, so why have more?
22:11:49 <Timwi> CakeProphet: why?
22:12:00 <elliott> it's strictly more load for Graue to add them, so it's obviously very slightly inferior at the very least
22:12:19 <CakeProphet> as long as the admins are active and numerous enough to handle current demands then there's no need for more.
22:12:21 <zzo38> Hackiki allows users to create whatever program they want, and that can include skins too
22:12:23 <Timwi> What, you mean because he need to go in and flip a switch?
22:12:26 <elliott> and making more people admin carries the risk of making the wrong people admin
22:12:29 <elliott> Timwi: I said slightly
22:12:45 <elliott> Timwi: if the admin workload is fully accounted for, then adding more admins doesn't benefit anything, and it's a slight amount of work for Graue to add them
22:12:53 <elliott> so, the situation is at /least/ very slightly inferior
22:12:58 <elliott> and probably moreso, because <elliott> and making more people admin carries the risk of making the wrong people admin
22:13:13 <Timwi> My ability to add styling rules doesn’t benefit anything? Are you sure you know what you’re saying there?
22:13:44 <Timwi> “making the wrong people admin” — what’s the worst that can happen? That you have to de-admin them back
22:14:04 <elliott> Timwi: Well, you haven't told us what rules you want yet.
22:14:09 <elliott> And no, they could execute a major security exploit.
22:14:23 <elliott> At least one very common browser lets CSS execute arbitrary JS, I believe; almost certainly more than that.
22:14:34 <Timwi> You mean there’s a known security vulnerability that admins can exploit?
22:14:34 <elliott> hmm, can't admins edit .js files anyway?
22:14:42 <Timwi> Ah, I see
22:14:43 <elliott> Timwi: yep, that's why you don't make non-trustable people admins
22:14:45 <Timwi> Yes, they can
22:14:51 <elliott> which is why you have a process
22:14:54 <elliott> and are conservative about it
22:15:00 <Timwi> So where’s the process in esolangs wiki? :-p
22:15:20 <Phantom_Hoover> <elliott> At least one very common browser lets CSS execute arbitrary JS, I believe; almost certainly more than that.
22:15:27 <Timwi> But anyway, like I said before, the biggest mistake is to have an all-or-nothing; either you can do everything (including dangerous) or almost nothing
22:15:28 <Phantom_Hoover> Hell, MW lets you edit the site-wide JS.
22:15:36 <elliott> Timwi: all the people who are admins are community elders, and the workload is handled, so we don't really need a process :)
22:15:44 <Phantom_Hoover> You can hijack people's accounts with it easily enough.
22:16:05 <monqy> how almost nothing is almost nothing
22:16:15 <Timwi> With all due respect, the workload is clearly not handled; there are still no styling rules for anything, most notably tables :)
22:16:31 <elliott> Timwi: well, have you asked anyone to add them? there is a table styling rule, btw
22:16:39 * CakeProphet would make the best wiki admin.
22:16:39 <Phantom_Hoover> http://www.reddit.com/r/AskReddit/comments/ld633/what_is_something_that_never_fails_to_blow_your/c2rr33b
22:16:48 <Phantom_Hoover> A fellow pen dissector"!
22:16:59 <CakeProphet> I would do absolutely nothing once admin.
22:17:07 <Timwi> elliott: I just asked who’s an admin and the answer was “nobody who’s active”
22:17:36 <elliott> Timwi: on /IRC/
22:17:45 <Timwi> OK so who do I ask?
22:17:53 <elliott> you could try keymaker, but I'd just put it on a relevant talk page
22:18:01 <elliott> that's why they exist, after all :)
22:19:03 <Timwi> If I spent hours on designing these rules only to have the request ignored or rejected, I’ll be really upset
22:19:24 <Timwi> (as I’m sure would you)
22:19:26 <elliott> Timwi: as opposed to hours designing them only to have another admin revert because they would have rejected a request?
22:19:37 <elliott> being an admin doesn't stop consensus from mattering :-)
22:19:56 <Timwi> But being an admin allows me to demonstrate the CSS :-p
22:20:35 <elliott> Timwi: people can add CSS rules with User:foo/<skinname>.css; an admin would do that before rejecting the request
22:21:06 <Timwi> I know... fine, I’ll add some rules there
22:21:44 * CakeProphet requests guidance from the Great Cubicuboctahedron on the matter.
22:22:13 <CakeProphet> and the Great Cubicuboctahedron spake, "fuck thou."
22:22:27 <elliott> Poor CakeProphet.
22:22:42 <Timwi> Hm, it’s not working... is there a setting I need to set to enable it?
22:22:57 <CakeProphet> the Great Cubicuboctahedron is a very apathetic godhead.
22:23:26 <tiffany> what the
22:23:48 <elliott> Timwi: I'm pretty sure you have to set a setting to make it work
22:23:55 <CakeProphet> http://en.wikipedia.org/wiki/File:Great_cubicuboctahedron.png what is this blasphemy.
22:23:58 <elliott> Timwi: oh, wait, did you clear your cache?
22:24:03 <Timwi> Yes
22:24:10 <CakeProphet> it is forbidden to depict his likeness in an inferior 2D projection.
22:24:15 <elliott> Timwi: huh
22:24:17 <Timwi> I’m not doing anything differently from Wikipedia, where it works :-p
22:24:27 <CakeProphet> his glory must be beheld on all three axes.
22:24:28 <elliott> maybe our mediawiki version is too old
22:24:48 <tiffany> I suppose a great cubicuboctahedron is higher than 3D isn't it?
22:24:49 <Timwi> Can’t find a relevant option
22:25:06 <tiffany> also that name sounds like someone was high when they came up with it
22:25:23 <elliott> Timwi: not sure, then
22:25:24 <CakeProphet> tiffany: no it's a polyhedron
22:25:28 <CakeProphet> thus 3-dimensional.
22:25:34 <tiffany> aw
22:25:35 <Timwi> Then I can’t do it :(
22:25:42 <Timwi> Well, I can do it offline, but I can’t demonstrate it
22:25:44 <tiffany> when you said inferior 2D projection I was thinking it was 4 or 5D
22:25:51 <CakeProphet> though perhaps the nonconvex great rhombicuboctahedron is a greater deity.
22:25:53 <elliott> Timwi: admins can, by temporarily setting the CSS
22:25:56 <Phantom_Hoover> tiffany, -hedron is exclusively 3D.
22:25:58 <elliott> and then reverting it if they don't like it
22:26:13 <tiffany> aaa
22:26:15 <Timwi> I think the wiki just went down? o.O
22:26:16 <Phantom_Hoover> -choron is the proposed 4D equivalent, but nobody really uses it.
22:26:17 <tiffany> what is with these weird names
22:26:22 <CakeProphet> and then -choron is 4D I believe. a specific kind of 4D shape.
22:26:26 <tiffany> rhombicubichoron!
22:26:27 <Phantom_Hoover> -tope is the general form.
22:26:57 <CakeProphet> tiffany: this is "advanced" mathematics I don't know what you were expecting...
22:26:59 <Phantom_Hoover> CakeProphet, no, -choron is Greek for 'room', since polychora are formed from 3D shapes fitted together.
22:27:01 <elliott> Timwi: not for me
22:27:01 <monqy> http://upload.wikimedia.org/wikipedia/commons/7/79/P2-A5-P3.gif all hail
22:27:20 <Timwi> elliott: Could you try adding CSS for yourself to see if it works for you?
22:27:26 <elliott> ok
22:27:29 <Timwi> Thanks
22:27:49 <elliott> Timwi: are you sure you're using monobook? :-P
22:27:55 <Timwi> Yes, just checked
22:27:59 <Phantom_Hoover> <tiffany> aw
22:28:04 <elliott> Timwi: Do you have a link to a .nice?
22:28:08 <Phantom_Hoover> Excuse me some of my favourite manifolds are 3D.
22:28:09 <Timwi> http://esolangs.org/wiki/Sclipting
22:28:27 <Phantom_Hoover> Timwi, is that the racist version of­— OK it is.
22:28:34 <Timwi> LOL :-D
22:28:34 <CakeProphet> monqy: its expanding and contracting form greatly inspires me with divine fervor.
22:29:00 <elliott> Timwi: hmm, it doesn't seem to work here either, but I'm not sure I cleared the cache right
22:29:04 <tiffany> o_e
22:29:10 <monqy> e_o
22:29:12 <elliott> tiffany: your eye looks broken
22:29:14 <CakeProphet> the idea is to reduce bytes not characters, but sure, that's a fine goal too.
22:29:16 <elliott> tiffany: one of them is floating
22:29:20 <Phantom_Hoover> e_i_e_i_o
22:29:52 <CakeProphet> Phantom_Hoover: spheres are the best manifold of course.
22:30:04 <Phantom_Hoover> lies
22:30:07 <CakeProphet> er, well that's 2-D technically.
22:30:08 <CakeProphet> right?
22:30:23 <CakeProphet> or is a 2-sphere considered 3D? I'm not sure how that works.
22:30:37 <CakeProphet> I guess it's 3D
22:30:43 <tiffany> um
22:30:48 <Phantom_Hoover> It's a 2D manifold, normally embedded in 3D; and I should have said 'embedded in 3D' instead.
22:30:48 <tiffany> sphere is 3D isn't it .-.
22:30:57 <CakeProphet> ah okay. right.
22:31:00 <elliott> No spheres are ten-dimensional. I read it in a book.
22:31:05 <Phantom_Hoover> tiffany, erm, it's kind of complicated.
22:31:13 <tiffany> wahhh
22:31:17 <tiffany> hm
22:31:26 <CakeProphet> tiffany: a ball is the inside of a sphere, the sphere is the surface. a n-sphere is the surface of a (n+1)-ball.
22:31:27 <tiffany> isn't an infinite dimensional hypercube a sphere?
22:31:35 <Phantom_Hoover> A sphere is normally taken to be the set of points at distance r from some point in R^3.
22:31:36 <tiffany> because it has infinite points
22:32:05 <Phantom_Hoover> The inside of a sphere is a ball, but balls can be of any dimension.
22:32:11 <Timwi> “because it has infinite points”? You think anything with an infinite number of points is a sphere?
22:32:16 <tiffany> no
22:32:16 <Phantom_Hoover> Also they can be open or closed.
22:32:17 <tiffany> like
22:32:32 <tiffany> if it's a cube with all the sides normalised they'd be infinite points all x distance away from the origin
22:32:39 <tiffany> well
22:32:43 <tiffany> assuming it's centered at the origin
22:33:01 <Phantom_Hoover> In mathematical notation, an n-sphere would be the set of points at distance r from some point in R^(n+).
22:33:08 <Phantom_Hoover> *(n+1)
22:33:10 <Timwi> Not sure what you mean by “normalised”. I’m not even sure what “infinite-dimensional” means :)
22:34:09 <Phantom_Hoover> Infinite dimensional is meaningful, but unfortunately it's too late at night for me to remember exactly what it means.
22:34:11 <tiffany> normalised being 1 unit from the centre o.o
22:34:24 <tiffany> and infinite dimensional being infinite axises
22:34:51 <CakeProphet> I don't think cubes work that way. Not very point would be 1 unit from a center.
22:35:11 <tiffany> s/very/every ?
22:35:12 <Phantom_Hoover> CakeProphet, general spheres, no, but the difference is not terribly important.
22:35:17 <CakeProphet> tiffany: er, yes.
22:35:20 <tiffany> and I mean like the corner points
22:35:24 <tiffany> not including the points on the sides
22:35:27 <Phantom_Hoover> tiffany, an infinite-dimensional hypercube is not in fact a sphere.
22:35:45 <CakeProphet> it's just... an infinite-dimensional hypercube, right?
22:35:51 <Phantom_Hoover> Yes.
22:36:03 <tiffany> but it'd have an infinite amount of points all x distance from the origin?
22:36:10 <elliott> This is reminding me of oklopol's infinite-dimensional four-in-a-row.
22:36:12 <elliott> It was beautiful.
22:36:17 <tiffany> o.o
22:36:23 <CakeProphet> elliott: wow nice.
22:36:29 <monqy> .o.
22:36:40 <Phantom_Hoover> The difference is that oko has in fact studied topology, unlike everyone currently speaking.
22:37:00 <Phantom_Hoover> <tiffany> isn't an infinite dimensional hypercube a sphere?
22:37:02 <CakeProphet> Phantom_Hoover: I have done some /very extensive/ reading of Wikipedia in the past few hours thank you very much
22:37:04 <Phantom_Hoover> Oops.
22:37:05 <elliott> Phantom_Hoover: I don't think he had at the time.
22:37:07 <Phantom_Hoover> http://en.wikipedia.org/wiki/File:Hypersphere_coord.PNG
22:37:10 <Timwi> I had a topology lecture course at uni :-p
22:37:14 <CakeProphet> I am certified topowskkrokgloyggicall master.
22:37:14 <Timwi> don’t remember any of it though
22:37:16 <elliott> It was when he was YOUNG AND FREE.
22:37:25 <tiffany> .~.
22:37:29 <monqy> ~.~
22:37:34 <Phantom_Hoover> I plan to study topology soon? Although I don't actually know how long I have to wait.
22:37:40 <tiffany> neh
22:37:40 <CakeProphet> tiffany: but yeah again not every point on a hypercube is x distance from the center.
22:37:56 <tiffany> I want to take more advanced math classes
22:37:56 <CakeProphet> so extending a hypercube to infinite dimensions doesn't change anything about that.
22:38:09 <tiffany> I guess it makes sense
22:38:38 <Phantom_Hoover> Oh effing hell, Cambridge doesn't do algebraic topology until third year.
22:38:39 -!- sllide has quit (Quit: Leaving).
22:41:03 <CakeProphet> Phantom_Hoover: topology is a 4th year class at my school
22:41:08 <CakeProphet> completely optional. I bet no one takes it.
22:41:11 <CakeProphet> except math majors.
22:41:12 <CakeProphet> and me.
22:41:15 <CakeProphet> (future me)
22:41:52 <elliott> CakeProphet: "Nobody would take an advanced maths course except maths majors"
22:41:58 <elliott> What a stunningly controversial statement.
22:42:16 <CakeProphet> elliott: well I would expect some computer science majors as well.
22:42:16 <oerjan> shocking!
22:42:20 <CakeProphet> maybe they do take it.
22:42:21 <Phantom_Hoover> Cambridge.... why.... do you need... my photograph.....
22:42:30 <CakeProphet> my future self being an example.
22:42:36 <elliott> Phantom_Hoover: No, they need your phonograph.
22:42:43 <Phantom_Hoover> Oh, silly me.
22:42:47 <Timwi> Which Cambridge?
22:42:57 <elliott> The /other/ Cambridge university.
22:42:58 <Phantom_Hoover> The important one.
22:43:00 <elliott> (Is there another?)
22:43:02 <Timwi> The wrong one?
22:43:07 <elliott> s/u/U/
22:43:35 <Phantom_Hoover> There's a Cambridge in Massachusetts because the Americans have not heard of inventing place names.
22:43:42 <oerjan> Phantom_Hoover: well you cannot do algebraic topology until you have algebra, and topology...
22:43:46 <elliott> Wikipedia doesn't have a dab for Cambridge University.
22:44:00 <elliott> Phantom_Hoover: Oh, aren't MIT and Harvard there?
22:44:09 <Timwi> elliott: Yeah, hence why I ask
22:44:13 <Phantom_Hoover> Yes, and it was actually named after the university, not the town.
22:44:18 <elliott> I'm not sure anybody calls those Cambridge.
22:46:11 -!- ais523 has quit (Remote host closed the connection).
22:46:49 <CakeProphet> http://en.wikipedia.org/wiki/Chattanooga,_Tennessee
22:47:00 <CakeProphet> does completely fucking up the native name count as inventing a place name?
22:47:26 <elliott> CakeProphet: You must be new to the US.
22:48:53 <Phantom_Hoover> Oh dear, I don't actually have any photographs of myself on my system.
22:49:12 <Phantom_Hoover> I guess I can just give them a picture of Professor Moriarty? I'm sure nobody will notice.
22:49:15 <pikhq> There's rather a *lot* of silly, repeated place names in the US.
22:49:40 <pikhq> For instance: London, Texas.
22:50:01 <oerjan> not far from paris, i assume
22:50:19 <pikhq> Several hundred miles.
22:50:38 <elliott> Texas, Texas.
22:51:02 <Timwi> To be fair, there is an Amerika in Germany.
22:51:30 <Timwi> http://en.wikipedia.org/wiki/Amerika,_Saxony
22:51:35 <elliott> In retaliation, prepare for Germuny, Texas.
22:51:53 <oerjan> a germane conclusion
22:52:01 <CakeProphet> University of Georgia is in Rome, Georgia.
22:52:04 <pikhq> elliott: Sadly, no such thing.
22:52:10 <pikhq> There is, however, Texas German.
22:52:24 <pikhq> A nearly extinct dialect of German.
22:52:26 <Timwi> Of course, Georgia is a whole nother matter :)
22:52:39 <Timwi> http://en.wikipedia.org/wiki/Germany_Township,_Adams_County,_Pennsylvania
22:52:50 <CakeProphet> also Butts County, GA.
22:53:27 <CakeProphet> Captain Samuel Butts (1777–1814), a hero of the Creek War
22:53:34 <pikhq> And when you head out west you get a bunch of place names that are blatantly Spanish.
22:53:40 <CakeProphet> http://en.wikipedia.org/wiki/List_of_counties_in_Georgia_(U.S._state)
22:53:54 <pikhq> e.g. San Francisco
22:54:36 <monqy> these counties are bad
22:56:00 <CakeProphet> bulloch county, bacon county, coffee county, crisp county, early county, effinham county, glascock county, liberty county, long county, peach county, quitman county,
22:56:05 <CakeProphet> good names.
22:56:39 <CakeProphet> twiggs, towns, white (best name),
22:56:56 <oerjan> coffee and crisp bacon
22:57:22 <CakeProphet> The racial makeup of the county was 95.16% White, 2.17% Black or African American, 0.40% Native American, 0.51% Asian, 0.18% Pacific Islander, 0.51% from other races, and 1.07% from two or more races. 1.56% of the population were Hispanic or Latino of any race.
22:57:27 <CakeProphet> ^^^ White county
22:57:31 <CakeProphet> very accurate name.
22:57:33 <Timwi> OK request posted: http://esolangs.org/wiki/MediaWiki_talk:Common.css
22:59:26 <Timwi> I’m really tempted to create a completely new skin for Wikipedia now. :)
22:59:58 <elliott> What, to replace Vector? :-)
23:00:01 <Phantom_Hoover> http://en.wikipedia.org/wiki/File:Hypersphere_coord.PNG
23:00:09 <Phantom_Hoover> Intuitive.
23:02:23 -!- cheater has quit (Quit: Ex-Chat).
23:03:13 -!- cheater has joined.
23:20:43 -!- Vorpal has quit (Ping timeout: 244 seconds).
23:22:01 <Gregor> CakeProphet: Dude, my hometown is whiter than that.
23:22:19 <Gregor> s/town/county/
23:22:26 <Gregor> Since the town actually isn't.
23:23:10 <Gregor> Also the county apparently isn't either.
23:32:43 <elliott> oerjan: wait, does your trackpad not actually have scrolling capabilities?
23:33:55 <Madoka-Kaname> I just realized....
23:34:18 <Madoka-Kaname> implicit defs in Scala are pretty much called when a (static) type error occurs...
23:34:33 <Madoka-Kaname> Kinda....
23:34:34 <Madoka-Kaname> ^^;
23:34:42 <Phantom_Hoover> Holy crap, Opportunity landed in *2004*.
23:35:04 <pikhq> Yup.
23:35:23 <pikhq> It is operating *way* beyond design.
23:35:25 <Phantom_Hoover> No wonder I don't remember its early years.
23:35:51 <Phantom_Hoover> I also distinctly remember reading about Cassini and being annoyed that it wouldn't reach Saturn for ages.
23:35:52 <oerjan> elliott: well there might be. i recall i long ago turned off some advanced settings because they kept annoying me when i triggered them accidentally
23:36:13 <elliott> oerjan: the normal thing is just to reserve the extreme right for vertical scrolling
23:36:16 <elliott> and extreme bottom for horizontal
23:43:35 -!- Ngevd has joined.
23:43:44 <Ngevd> Hello!
23:45:23 <oerjan> elliott: hm i tried setting that, and it does _not_ seem to work for the embedded scrollbars on the wiki (although a different autoscroll function which was already set does, but that one looks annoying to do precisely)
23:45:54 <oerjan> it worked for scrolling the main browser window though
23:46:04 -!- DH____ has quit (Read error: Connection reset by peer).
23:46:09 -!- DHeadshot has joined.
23:46:29 <elliott> oerjan: heh
23:51:22 <Ngevd> I have been to a party
23:51:47 <oerjan> fascist!
23:52:20 <Ngevd> In Hexham
23:53:02 <Phantom_Hoover> I have not been to a party in Hexham.
23:53:18 -!- GreaseMonkey has joined.
23:53:31 <oerjan> neither have i. that Ngevd guy sure is weird.
23:59:39 <Ngevd> Trivia: everyone in Hexham is connected to elliott in some way
2011-10-16
00:00:09 <Phantom_Hoover> Have you established what this way is, though?
00:00:22 <Ngevd> It varies person to person
00:00:23 <oerjan> clearly most are clones
00:09:02 -!- DHeadshot has quit (Read error: Connection reset by peer).
00:09:02 <Madoka-Kaname> Is it good practice to make the tools used to create the package you distribute, or is just source enough in most cases?
00:09:17 <Madoka-Kaname> s/source/source available/
00:09:29 <elliott> Eh?
00:09:38 <elliott> I don't understand the part before the comma.
00:11:08 <elliott> Madoka-Kaname: ?
00:11:20 <Madoka-Kaname> If you make a distribution package (for an open source program), is it good practice to include whatever you used to build that package too, or only what you need to compile and run the program?
00:12:55 <elliott> Madoka-Kaname: What distribution?
00:13:02 <elliott> Most distribution packages are binaries.
00:13:06 <elliott> So the question is incoherent.
00:13:52 <Madoka-Kaname> In this case, I'm using Scala, so, package = .jar file, launcher, external libraries, etc
00:14:39 <pikhq> Each distro generally documents their best practices for packaging.
00:14:57 <pikhq> Big, big thing is do not ever include external libraries.
00:15:15 <Madoka-Kaname> I don't mean package as in "Linux package"
00:15:31 <Madoka-Kaname> Uuu... never mind >>
00:15:31 <pikhq> What, do you mean a source tarball?
00:16:00 <elliott> Madoka-Kaname: Oh, distribution package.
00:16:06 <elliott> erm
00:16:08 <elliott> Right
00:16:13 <elliott> Madoka-Kaname: What kind of package, then?
00:16:21 <Madoka-Kaname> programname-blah.zip
00:16:21 <elliott> Madoka-Kaname: You should basically include whatever's in your VCS repository.
00:16:27 <elliott> s/zip/tar.gz/
00:16:44 <Madoka-Kaname> s/tar.gz/7z/
00:16:47 <elliott> ...no.
00:16:47 <pikhq> No.
00:16:56 <elliott> 7z doesn't even do permissions, IIRC.
00:16:56 <pikhq> Tarballs are the accepted format.
00:17:07 <elliott> And nobody has the decompressor on Linux.
00:17:08 <Madoka-Kaname> Okey then :<
00:17:17 <elliott> (Everyone with WinRAR can open tar.gz, I believe.)
00:17:21 <elliott> (Definitely everyone with 7-Zip.)
00:17:33 <pikhq> tar.gz and tar.bz2 are typical, tar.xz is not that unusual (though don't offer that exclusively).
00:17:52 <elliott> Madoka-Kaname: Anyway, you have a source repo, right? [This is me asking a question as if the answer will be the opposite of what I actually expect.]
00:18:03 <Madoka-Kaname> Yes.
00:18:05 <elliott> pikhq: I dislike bz2 for the much-increased requirements over gz.
00:18:14 <elliott> pikhq: tar.gz and tar.xz is reasonable, but really, gzip does just fine on text.
00:18:22 <elliott> Madoka-Kaname: tar czf program.tar program-repo/
00:18:30 <pikhq> elliott: Yeah, tar.gz and tar.xz seems utterly reasonable.
00:18:31 -!- derdon has quit (Remote host closed the connection).
00:18:33 <elliott> Erm
00:18:34 <Madoka-Kaname> I mean binary release, not source release. ^^;
00:18:35 <elliott> Madoka-Kaname: tar czf program.tar.gz program-repo/
00:18:38 <elliott> Madoka-Kaname: Oh.
00:18:45 <elliott> Madoka-Kaname: Then why would you include the sourec?
00:18:53 <elliott> source
00:19:01 <elliott> Source tarballs should be separate; or you could just point people to the relevant git commit.
00:19:24 <Madoka-Kaname> I mean, the binary release would contain a .bat file and a shell script to launch the program, the .jar file, and libraries, etc. Would it be good practice to include the script used to generate this package in the source repo?
00:20:12 <elliott> Madoka-Kaname: You should be able to wipe your hard drive and still retrieve all your project-related work from the repo.
00:20:18 <elliott> (Modulo stuff you haven't committed or pushed yet, I suppose.)
00:20:30 <elliott> Madoka-Kaname: And you should of course version such scripts because they'll inevitably change.
00:20:37 <elliott> So yes, it should go in the repo. Everything should.
00:20:43 <Madoka-Kaname> That works.
00:20:59 <pikhq> Everything you write should go in the repo, rather.
00:26:37 -!- oerjan has quit (Quit: How repoducible).
00:31:36 <Gregor> Finally upgraded my laptop to Lion.
00:31:57 <Gregor> Just when I thought that it would be literally impossible for Apple to put out any worse of an OS than they already have, they have once again managed to dig just a little bit deeper.
00:33:03 <elliott> Gregor: I told you to upgrade to Snow Leopard to avoid you whining.
00:33:18 <Gregor> Oh I did upgrade to Snow Leopard.
00:33:21 <Gregor> I had to to upgrade to Lion.
00:33:37 <Gregor> I figured "how could it hurt to get properly up to date instead of just almost up to date"
00:33:37 <Ngevd> Goodnight
00:33:39 <elliott> So why didn't you just stick there :P
00:33:43 -!- Ngevd has quit (Quit: Goodbye).
00:33:43 <Gregor> I wish I hadn't figured that.
00:34:02 * elliott thinks Lion is an improvement overall; unquestionably as far as the internals go, and about sixty percent UI-wise.
00:34:08 <CakeProphet> ugh, shopping for used cars is a pain.
00:34:09 * elliott doesn't like OS X.
00:35:17 <Gregor> Spaces (or whatever that feature is called), which is easily the worst implementation of virtual desktops in any OS in the history of the universe, has turned into little more than a joke in Lion. Right now it seems that spaces has taken my keyboard focus. I can change spaces, but I can't, y'know, TYPE INTO ANY FUCKING WINDOW.
00:35:32 <elliott> That... doesn't happen.
00:35:36 <elliott> At least not for me, at all.
00:35:47 <Gregor> Funny how for me it happened after all of ten minutes of use >_<
00:37:03 <Gregor> Where the hell is the spaces feature in this preferences app >_<
00:37:16 * Phantom_Hoover → sleep
00:37:19 -!- Phantom_Hoover has quit (Quit: Leaving).
00:37:33 <elliott> Gregor: There isn't one.
00:38:25 <Gregor> Great, so I guess I'll go reboot to get my keyboard back. Because that makes sense.
00:41:32 -!- kwertii has quit (Read error: Connection reset by peer).
00:41:55 -!- kwertii has joined.
00:47:35 <Gregor> OK, now to find a way to change the space-switching animation's speed to something other than its default "fast enough to be nauseating and yet too slow to be useful"
00:54:44 <Gregor> Just switching screens on this is going to make me vomit X_X
00:55:09 <elliott> Gregor: Does that MacBook have a multitouch thing?
00:55:18 <Gregor> Yeah
00:55:31 <elliott> Gregor: Using Lion will be much more pleasant if you use it for everything you possibly can.
00:56:23 <elliott> Gregor: (e.g. switching spaces with three-finger horizontal swipes.)
00:56:30 <elliott> Apple don't really give a shit about any other method of control :P
00:56:58 <Gregor> OK, it looks like it's a two-spot-max multitouch (two-finger scroll works, three finger doesn't seem to do anything)
00:57:17 <elliott> Gregor: So it's not multitouch :P
00:57:38 <Gregor> In the sense that two is clearly equal to one, no.
01:01:58 -!- nooga has quit (Ping timeout: 240 seconds).
01:10:36 <elliott> Gregor: Of course it is.
01:22:06 <zzo38> Can you even turn off those animations?
01:23:28 <Gregor> zzo38: Of course not.
01:23:36 <Gregor> Apple doesn't let you disable animations.
01:23:51 <Gregor> Because having something pretty to look at for a second is more important than not breaking your workflow constantly.
01:25:08 <zzo38> Are you sure there isn't some hidden settings to change these things if you know the names of the settings and can enter them at the UNIX command prompt?
01:26:38 <zzo38> Although it is possible that Apple forgot to put in those hidden settings.
01:27:23 <Gregor> I've looked for it.
01:27:31 <Gregor> There was one for 10.6 apparently. But not for 10.7.
01:27:48 <zzo38> So, they removed it?
01:29:34 <olsner> no, they added the feature of not having it
01:33:48 <Gregor> In spite of everything, olsner's answer is closer to the truth :P
01:34:25 <Gregor> As near as I can tell, they completely rewrote spaces from scratch, and somehow managed to make an even worse system (which is impressive since spaces was really awful)
01:35:23 <zzo38> Is there a command to disable the spaces system entirely? (since it is now even more really awful)
01:37:57 <zzo38> I have something like data Exp = Apply Exp Exp | Literal Literal | Case [(Pat, Exp)] ..... should I add annotations, and if so what method? One way I thought of is giving a type parameter to Exp and Pat and adding a constructor which is used for annotations, but is there better way?
01:45:16 <elliott> Gregor: TBH I think Mission Control makes Spaces basically useful
01:45:27 <elliott> Especially the handling of fullscreen apps
01:45:30 <elliott> But I'm not much of a virtual desktop user
01:46:24 <Gregor> I have to assume you typo'd "useless" there.
01:47:07 <elliott> Gregor: Nope :P
01:47:28 <Gregor> Regardless of anything you say, for the sake of my sanity I have to assume you typo'd "useless"
01:47:47 <Gregor> It's not so much that this is a rational conclusion, as that I refuse to accept any other conclusion.
02:10:32 -!- kwertii has quit (Read error: Connection reset by peer).
02:11:02 -!- kwertii has joined.
02:14:36 -!- elliott has left ("Leaving").
02:14:44 -!- elliott has joined.
02:15:29 -!- kwertii has quit (Read error: Connection reset by peer).
02:16:17 <elliott> pikhq: Look at the UK government's official reasons for insane copyright laws: "The creative industries are an important part of the UK’s economy, and they regularly report copyright infringement as a serious problem."
02:17:04 <pikhq> That... Is the stupidest reasoning I've seen.
02:23:12 <elliott> The gramophone companies are an important part of the UK's economy, and they regularly report CD sales as a serious problem.
02:29:57 <pikhq> The buggy companies are an important part of the UK's economy, and they regularly report car sales as a serious problem.
02:33:10 -!- kwertii has joined.
02:33:57 -!- kwertii has quit (Read error: Connection reset by peer).
02:35:10 <elliott> pikhq: The television companies are an important part of the UK's economy, and they regularly report time shifting as a serious problem.
02:38:38 <zzo38> Am I implementing deBruijn indexing correctly?
02:38:39 -!- Patashu has joined.
02:39:04 <zzo38> assignLocal i v h = case h of { Apply x y -> Apply (assignLocal i v x) (assignLocal i v y); Case x -> Case $ assignLocalCase i v <$> x; Local x -> if x == i then v else if x > i then Local (x - 1) else Local x; _ -> h; };
02:39:10 <zzo38> assignLocalCase i v (p, h) = (p, assignLocal (i + localOffset p) v h);
02:39:13 -!- kwertii has joined.
02:39:21 <zzo38> localOffset LocalP = 1; localOffset (ConstructorP _ x) = sum $ localOffset <$> x; localOffset _ = 0;
02:39:39 <Patashu> does anyone know how tynt works? For those who don't know, it's a company that offers a piece of javascript that, when you copy from a webpage using it, both tells the tynt site that it's been copied for analytics perfect and adds a Read more: then a url to the copied text that links back to the page. Is there a way to hook to copying in javascript?
02:40:31 <zzo38> Patashu: Yes, I have seen those things. Usually I disable scripting when viewing those kind of things, since I want to copy fragments all over the place instead of a single solid block of text.
02:41:01 <Patashu> yeah, I've seen how to disable it, I want to know how it can do what it does
02:41:12 <zzo38> Use the view-source command
02:41:23 <elliott> zzo38: doesn't help for obfuscated JS
02:41:41 <elliott> Patashu: Apparently:
02:41:41 <elliott> Register handlers for onCopy, onDrag, etc on the window Object
02:41:41 <elliott> Get a unique URL that will be used as a tracker
02:41:41 <elliott> When any of the registered event occurs
02:41:41 <elliott> Send an event to the server
02:41:42 <elliott> On firefox, create a new node with the data that has to be displayed with the content that is copied. Set selection to existing node and this new node.
02:41:45 <elliott> On IE, add extra text to the current Selection
02:41:47 <elliott> Cancel the propagation of the current event.
02:42:01 <Patashu> Ah ok
02:42:10 <Patashu> I have a lot to learn about JS, I didn't even know you could do that
02:42:13 <elliott> Definitely repulsive.
02:42:39 <Patashu> var clip = Components.classes['@mozilla.org/widget/clipboard;[[[[1]]]]'].createInstance(Components.interfaces.nsIClipboard);
02:42:42 <Patashu> that's a lot of []s
02:42:49 <zzo38> Mozilla seems incomplete, I cannot figure out how to make it get rid of events or make other changes to the DOM
02:42:57 -!- Timwi has quit.
02:44:10 <zzo38> So that certain events are not passed to the DOM, or are only called when certain conditions apply (such as which mouse buttons you use or which keys are pushed)
02:47:38 <zzo38> Use gopher protocol without HTML (and also without PDF, SVG, etc) and avoid these problems.
03:16:02 -!- ive has quit (Ping timeout: 256 seconds).
03:19:22 <elliott> Patashu: You should use gopher instead.
03:19:39 <Patashu> that was just some line I copy pasted
03:19:49 <Patashu> is the [[[[1]]]]] really necessary? it looks lol
03:19:58 <Patashu> it reminds me of that esolang with all the []s for pointer redirection
03:36:41 <CakeProphet> I'm going to lose my mind to craigslist and autotrader.
03:44:29 <pikhq> Wow. The US is *actually* ending military involvement in Iraq.
03:46:22 <coppro> [citation needed]
03:46:35 <pikhq> http://english.aljazeera.net/news/americas/2011/10/20111015191922744317.html
03:48:13 <coppro> al jazeera?
03:48:54 -!- copumpkin has quit (Ping timeout: 256 seconds).
03:48:58 <coppro> terrorist mutant traitor news
03:49:03 <pikhq> Yes, Al Jazeera is an entirely respectable reporting organization that happens to focus on the Arab world.
03:49:20 -!- copumpkin has joined.
03:51:44 -!- kwertii has quit (Ping timeout: 256 seconds).
04:00:41 <elliott> pikhq: Wow! Only eight years after we won the war!
04:00:55 <pikhq> elliott: I didn't realise the UK won.
04:00:57 <pikhq> Hardcore.
04:01:17 <elliott> pikhq: No we are all American at heart.
04:01:35 <pikhq> Ah. Very well then.
04:02:00 <CakeProphet> elliott: that goes without saying.
04:02:01 <pikhq> Let us consume gallons of high fructose corn syrup and eat pounds of bacon and artificial cheese food product.
04:02:13 <CakeProphet> and complain about taxes.
04:02:22 <CakeProphet> while we drive our cars everywhere.
04:02:25 <pikhq> Precisely!
04:06:09 <CakeProphet> American lifestyle is a mind virus.
04:06:21 <pikhq> I think the word you're looking for is "meme".
04:06:33 <CakeProphet> ha. Haskell meme.
04:06:46 <coppro> memeplex
04:06:47 <CakeProphet> meme is a just an internet mind virus.
04:11:17 <CakeProphet> wow software engineering is a really easy class.
04:11:38 <CakeProphet> a lot of is either completely unecessary, or something that's common sense that you would do without thinking.
04:11:58 <pikhq> Well, yes, software engineering is not a well-estabilished field of engineering, at least as commonly practiced.
04:12:20 <coppro> software engineering is not a class
04:12:23 <coppro> it's a discipline
04:12:32 <pikhq> Really, it's only sometimes deserving of the term "craft".
04:12:38 <coppro> at least, at a university level
04:13:02 <CakeProphet> coppro: ...yes, I was referring to "introduction to software engineering"
04:13:06 <CakeProphet> but decided to not type that out.
04:13:12 <coppro> CakeProphet: also which school
04:13:26 <CakeProphet> Southern Polytechnic State University.
04:13:48 <CakeProphet> highly pretigious. well-known. etc.
04:14:37 <coppro> Polytechnic State? nice
04:17:10 <CakeProphet> it was originally a satellite campus of Georgia Tech but then became its own institution. It's almost a feeder school for Lockheed Martin Aeronautics, which is located nearby.
04:17:46 <CakeProphet> but also has an okay CS degree, which is what I'm majoring in obviously.
04:17:59 <CakeProphet> (Note: all lies. I'm actually getting a culinary degree)
04:18:11 <CakeProphet> I write recursive recipes.
04:20:24 <coppro> sounds delicious
04:21:35 <zzo38> I find the <$ operator is very useful when using Parsec. The <* operator is also useful with Parsec; and liftM2, liftM3, etc are useful with Parsec.
04:22:36 <CakeProphet> how much has been done with non-character types and Parsec?
04:23:02 <zzo38> I don't know; but I would like to know the answer to that question, too.
04:25:57 <CakeProphet> well if you ignore the state monad underneath, Parsec essentially solves some kind of complex decision problem involving a list as input. Right?
04:27:25 <zzo38> I suppose it can do that.
04:28:31 <elliott> Stallman still uses XFree?
04:28:34 <elliott> pikhq: wat with me.
04:36:05 <pikhq> Wat.
04:36:13 <pikhq> Citation?
04:45:46 <elliott> pikhq: http://richard.stallman.usesthis.com/
04:45:52 <elliott> I guess it could have been inaccurate editing
04:45:59 <pikhq> One hopes.
04:46:29 <pikhq> Especially seeing as he uses gNewSense, and Ubuntu derivative.
04:48:25 <shachaf> CakeProphet: Why CS?
04:49:47 <elliott> pikhq: Maybe he didn't realise the X.org transition even happened :-)
04:49:52 <elliott> "Oh, haven't got to that part of my email backlog yet."
04:50:30 <shachaf> elliott: It does have "free" in its name.
04:52:00 <CakeProphet> shachaf: uh, because I want to major in something that's directly related to programming and the theory of such.
04:52:11 <CakeProphet> I'm not sure I understand the question.
04:52:31 <CakeProphet> you mean like, why do I like programming?
04:52:38 <shachaf> Oh, well, maybe the "obviously".
04:52:41 <shachaf> I suppose never mind.
04:52:58 * shachaf likes programming but would certainly not be sure that he wants to major in CS.
04:53:16 <CakeProphet> shachaf: are you in college right now?
04:53:22 <monqy> i hate programming but im unwisely major in cs :'(
04:53:53 <shachaf> CakeProphet: No.
04:54:00 <CakeProphet> I think computer science was probably the best choice because a) it's what I like to do b) it will be a relatively good source of income.
04:54:31 <CakeProphet> my second favorite hobby being bulleted, numered, and alphabetically ordered lists.
04:54:37 <CakeProphet> *numbered
04:54:47 <CakeProphet> (Note: least favorite hobby is typing)
04:55:18 * shachaf will see, he supposes.
04:56:22 <CakeProphet> shachaf: is there anything else you're good at?
04:56:37 <CakeProphet> or want to do?
04:56:42 <shachaf> I should hope so!
04:56:46 <shachaf> Oh, I want to do everything.
04:56:58 <shachaf> I think CS is probably easier to study on one's own than a lot of things.
04:57:31 <CakeProphet> it's certainly something you can learn by doing.
05:00:58 <CakeProphet> for relatively cheap.
05:01:36 <CakeProphet> for example, unless you work at a car shop or have a lot of money to spend on car stuff, it's more difficult to self-learn car stuff.
05:02:05 <CakeProphet> but software is (er, can be) free. And you only need the initial investment of a computer.
05:02:50 <CakeProphet> free as in "free beer" not free as in "free speech".
05:03:21 <monqy> i misread as free bear
05:03:27 <monqy> "oh cool free bear"
05:03:38 <CakeProphet> yes learning the codes can be dangerous. I have scars.
05:03:48 <CakeProphet> from terrible maul wounds.
05:04:51 <CakeProphet> shachaf: though if you do learn CS and go out into industry, you probably /will/ have to program something you're not necessarily interested in.
05:05:13 <CakeProphet> so far, in my very limited experienced, it's not too bad though.
05:05:20 * shachaf is "in the industry" now.
05:05:26 <shachaf> It's indeed not too bad.
05:05:27 <CakeProphet> ah okay.
05:05:36 <CakeProphet> it highly varies based on the problem.
05:05:41 <CakeProphet> icky web programing stuff will be the bane of me.
05:06:53 <monqy> haha web programming
05:07:39 <CakeProphet> I suppose it's a matter of perspective
05:08:13 <CakeProphet> for example, I could imagine that making my Javascript compatible with any number of different de facto conventions as being similar to writing a polyglot. Ah, that sounds much better.
05:09:41 <CakeProphet> s/conventions/implementations(?#I suppose)/
05:10:17 <monqy> :(
05:11:07 <CakeProphet> shachaf: so you're "in the industry" without a degree?
05:11:25 <shachaf> Currently.
05:11:42 <CakeProphet> how does that happen?
05:12:18 <shachaf> I went to do a summer internship after high school before college.
05:12:29 <CakeProphet> ah neat.
05:12:33 <CakeProphet> my high school didn't have those.
05:12:34 <shachaf> It ended up being indefinitely extended.
05:12:47 <shachaf> It wasn't part of the high school.
05:12:55 <CakeProphet> oh okay
05:13:07 <CakeProphet> I find that it's hard to find internships. many of them require obscene amounts of experience already.
05:13:26 <zzo38> Is this looks correctly to you as a transformation using De Bruijn index?
05:13:43 <zzo38> http://sprunge.us/BYVT
05:13:59 <shachaf> CakeProphet: I suppose it depends on where you look.
05:14:18 <shachaf> Or something.
05:14:57 <pikhq> elliott: RMS is actually pretty good about responding to email.
05:16:03 <zzo38> How can you have nineteen years of experience with something that was invented only three years ago?
05:16:50 <CakeProphet> zzo38: approach near-light speeds.
05:17:27 <shachaf> What sort of weird language is that?
05:17:30 <shachaf> Oh, it's Haskell.
05:17:56 <monqy> zzoskell
05:19:47 <zzo38> shachaf: Yes, it is Haskell. Although I have my own datatypes and constructors for the program that this is a part of.
05:20:34 <CakeProphet> I often find it difficult to read Haskell programs without the data type definitions.
05:20:46 <CakeProphet> and the types of basic functions on those types.
05:20:54 <zzo38> It is actually a different kind of De Bruijn indexing, where a lambda expression (e) instead corresponds to (Case [(LocalP, e)])
05:21:23 <zzo38> CakeProphet: OK I will include the types
05:21:52 <CakeProphet> zzo38: er, no that's okay I'm working on something right now I doubt I'll be able to help you with anything.
05:22:20 <zzo38> http://sprunge.us/FDCd
05:22:41 <CakeProphet> I was just commenting on my experience with reading Haskell programs. I also note that I don't have as much difficult determining things about OO code without the type information. Perhaps this just reflects my lack of experience with Haskell.
05:22:48 <CakeProphet> *difficulty
05:23:20 <CakeProphet> but it could also be because Haskell programs are fairly dense comparatively.
05:24:45 <CakeProphet> lol my professor just forgot how to say decrypt.
05:25:06 <zzo38> That is OK; but I included the types in case someone else knows the answer but only if types are indicated too
05:25:10 <CakeProphet> at first she said "unencrypt" and then she was like "wait... de... de-encrypt?"
06:30:38 -!- kwertii has joined.
06:36:22 <zzo38> Did I implement De Bruijn indexing correctly?
06:41:05 -!- zzo38 has quit (Remote host closed the connection).
06:50:02 <CakeProphet> elliott: have you heard of gnome-session-fallback?
06:55:25 <CakeProphet> !logs
06:55:33 <CakeProphet> EgoBot: sejriouwejriuweurh
06:55:34 <CakeProphet> !help
06:55:35 <EgoBot> ​help: General commands: !help, !info, !bf_txtgen. See also !help languages, !help userinterps. You can get help on some commands by typing !help <command>.
06:55:39 <CakeProphet> !info
06:55:39 <EgoBot> ​EgoBot is a bot for running programs in esoteric programming languages. If you'd like to add support for your language to EgoBot, check out the source via mercurial at https://codu.org/projects/egobot/hg/ . Cheers and patches (preferably hg bundles) can be sent to Richards@codu.org , PayPal donations can be sent to AKAQuinn@hotmail.com , complaints can be sent to /dev/null
06:55:55 <CakeProphet> !log
06:55:57 <CakeProphet> ewoeirjwoiejrwioehriuwehr
06:56:08 <CakeProphet> for some reason I can't rsync the logs
07:08:01 -!- ive has joined.
07:08:15 -!- tiffany has quit (Quit: Leaving).
07:12:00 -!- augur has quit (Remote host closed the connection).
07:23:50 <elliott> back
07:23:58 <elliott> <CakeProphet> elliott: have you heard of gnome-session-fallback?
07:23:59 <elliott> unusable
07:24:04 <elliott> it is the one i tried and reported on
07:24:36 <CakeProphet> unusual in what way?
07:24:38 <CakeProphet> er
07:24:39 <CakeProphet> unusuable
07:24:46 <CakeProphet> lol
07:24:51 <CakeProphet> hlep tpyeing
07:25:03 <elliott> see logs.
07:25:07 <elliott> i told you at the time.
07:26:48 <CakeProphet> mmk
07:50:15 -!- elliott has quit (Remote host closed the connection).
07:50:53 -!- elliott_ has joined.
07:52:58 -!- Ngevd has joined.
07:54:40 <Ngevd> Hello1
07:54:53 -!- augur has joined.
07:54:59 -!- elliott__ has joined.
07:55:30 -!- elliott_ has quit (Ping timeout: 260 seconds).
07:59:29 -!- kwertii has quit (Read error: Connection reset by peer).
08:00:34 -!- kwertii has joined.
08:03:17 -!- monqy has quit (Quit: hello).
08:05:29 <elliott__> Gregor: So out of morbid curiosity, how long does it actually take to build Chrome?
08:13:09 -!- Vorpal has joined.
08:20:42 <CakeProphet> elliott__: ah, I forgot that gnome-session-fallback was what you were trying to use
08:20:46 <CakeProphet> but yes I remember that conversation.
08:21:20 * elliott__ thinks Xfce is the best option for anyone who doesn't want to make the plunge to a non-traditional environment.
08:21:31 <Ngevd> Do any of the Platonic solids form Eulerian graphs?
08:21:51 * elliott__ considers buying C418's new album.
08:22:13 <Ngevd> Ooh! the octohedron does!
08:22:34 <elliott__> Octa.
08:23:05 <Ngevd> That does too!
08:23:15 -!- nooga has joined.
08:23:50 <elliott__> nooga: Exactly how maverick is the air city?
08:33:28 <CakeProphet> elliott__: so in programs like wget and apt-get, what software are they using to create things like progress bars and changing completion percentages?
08:33:49 <elliott__> CakeProphet: VT escape codes.
08:33:51 <CakeProphet> well I guess the progress bar can just be regular out
08:33:52 <elliott__> Or maybe curses, but I doubt it.
08:34:03 <elliott__> Actually you can do a spinner with just backspace of course.
08:34:34 <CakeProphet> ah yes.
08:34:53 <CakeProphet> you could technically do the changing completion percent thing that apt-get does with backspace I guess.
08:35:41 <CakeProphet> oh "VT escape codes" == "ANSI escape codes"?
08:39:34 -!- nooga has quit (Ping timeout: 240 seconds).
08:39:43 <elliott__> Yes.
08:40:53 <elliott__> CakeProphet: Better Ctrl+H than backspace.
08:41:13 <CakeProphet> isn't that... backspace?
08:41:45 -!- oklopol has joined.
08:41:56 <elliott__> Erm.
08:42:02 <elliott__> Ctrl+U. Or Ctrl+A; I forget which you'd want here.
08:42:07 <elliott__> oklopol: hi PH found the link to the gravity stuff.
08:42:19 <oklopol> i saw it, and it was good
08:42:23 <elliott__> oh
08:42:27 <CakeProphet> http://en.wikipedia.org/wiki/Backspace
08:42:28 <oklopol> but that was just two objects
08:42:29 <CakeProphet> lol, good picture
08:42:33 <elliott__> oklopol: um no
08:42:39 <elliott__> oklopol: there were links to add a bunch of moons and shit at the bottom
08:42:43 <oklopol> ooh okay
08:42:46 <elliott__> admittedly nothing for other ships but there was orbits and shit
08:43:01 <elliott__> CakeProphet: v. arty
08:43:09 <oklopol> so link again if on hand
08:43:17 <elliott__> oklopol: yeah, that's the thing i ain't got
08:43:24 <elliott__> PH will probably be around pretty soon though
08:43:42 <CakeProphet> elliott__: I just enjoy that it's in a completely different setting from where you would normally find a backspace key.
08:43:54 <elliott__> CakeProphet: no i use my backspace key in the woods.
08:44:03 <elliott__> it lets me get in tune with nature. also: bokeh.
08:44:08 <oklopol> yeah but ph is gay i prefer to have your link
08:44:08 <CakeProphet> this should perhaps be removed and replaced with a backspace key in its more typical usage.
08:44:09 <elliott__> these are the keys to nature.
08:44:13 <oklopol> amirite
08:44:19 <elliott__> http://upload.wikimedia.org/wikipedia/commons/6/69/Backspace.jpg
08:44:20 <elliott__> http://upload.wikimedia.org/wikipedia/commons/8/8a/Josefina_with_Bokeh.jpg
08:44:20 <elliott__> same wood
08:44:34 <elliott__> child uses backspace daily, to get in tune with nature.
08:44:38 <CakeProphet> lolwat
08:44:46 <elliott__> oklopol: yeah but do you really want to follow a link produced by someone who isn't a vampire
08:45:13 <oklopol> what? loser
08:45:20 <elliott__> oklopol: yeah ph is the vampire here
08:45:54 <CakeProphet> Hi guys I'm so la^H^H^H^H^Hso clever
08:46:04 <elliott__> laclevjrkerv
08:46:08 -!- DH____ has joined.
08:46:09 <elliott__> --pakecrophet
08:46:54 <CakeProphet> best longopt
08:48:50 -!- nooga has joined.
08:52:50 <CakeProphet> there should be a program
08:52:53 <CakeProphet> called elucidate
08:53:12 <CakeProphet> that explains everything about its input, in English words.
08:53:19 <CakeProphet> and requires no network connection or anything
08:53:23 <CakeProphet> it's just an AI that can explain anything.
08:53:34 <elliott__> it's called the opposite of CakeProphet
08:53:35 <Ngevd> Wolfram Alpha is trying to become that
08:53:45 <elliott__> fsvo trying to
08:53:52 <elliott__> without the no network connceiton part.
08:54:14 <Ngevd> I think the iPod app doesn't need network
08:54:20 <elliott__> Yes, it does.
08:54:29 <elliott__> There is no way you could fit all the data W|A has onto an iPod.
08:54:51 <elliott__> (At least not in a decently-queriable form.)
08:54:59 <elliott__> But yeah, every W|A client just talks to the servers.
08:55:47 <CakeProphet> yeah no there's no way you can use it offline...
09:09:50 <CakeProphet> nautilus-gksu and nautilus-open-terminal
09:09:56 <CakeProphet> good packages or best packages?
09:10:26 <CakeProphet> (I guess nautilus-actions is, in terms of generality, better)
09:10:44 -!- ive has quit (Quit: leaving).
09:18:46 -!- pikhq_ has joined.
09:19:20 -!- pikhq has quit (Ping timeout: 276 seconds).
09:27:21 -!- DH____ has quit (Ping timeout: 248 seconds).
09:28:08 <CakeProphet> elliott__: is there any inherent benefit to using FTP over HTTP when downloading files?
09:28:16 <elliott__> FTP is an obsolete protocol.
09:28:22 <elliott__> There is no reason to use it.
09:28:28 <CakeProphet> what about rsync?
09:28:58 <elliott__> Does over-the-wire compression by default and some other stuff, e.g. you'll have much better resume support, checksumming... A better choice than HTTP when available.
09:29:13 <CakeProphet> ah okay.
09:29:19 <elliott__> But over what protocol?
09:29:24 <CakeProphet> http, ftp, rsync
09:29:26 <CakeProphet> are the options.
09:29:35 <CakeProphet> also "rsync dvd" dunno the different there.
09:29:39 <CakeProphet> I'm downloading Knoppix.
09:29:40 <elliott__> Ah. You've never used rsync, I see.
09:29:43 <CakeProphet> *difference
09:29:46 <elliott__> Why are you downloading Knoppix?
09:29:50 <CakeProphet> fun.
09:29:56 <elliott__> Knoppix is also pretty obsolete.
09:30:17 <CakeProphet> okay so what do you recommend.
09:30:26 <elliott__> I dunno, I don't use livecds. Debian Live?
09:30:27 <CakeProphet> for liveCD distro.
09:30:30 <CakeProphet> ah
09:30:38 <elliott__> The Ubuntu LiveCDs are obviously pretty complete themselves.
09:30:44 <elliott__> So that's an option too.
09:31:05 <CakeProphet> well wouldn't Knoppix be a bit faster?
09:31:10 <elliott__> What?
09:31:16 <CakeProphet> less weight.
09:31:23 <elliott__> I don't think you know what you're talking about.
09:31:31 <CakeProphet> I don't. it was a question.
09:31:46 <elliott__> Oh, Tiny Core is also an option. And definitely the least weight you'll find, though probably more than you want to deal with not having.
09:32:20 <CakeProphet> this is for a shitty netbook, so lighter is better.
09:32:47 <elliott__> http://en.wikipedia.org/wiki/Comparison_of_netbook-oriented_Linux_distributions
09:33:33 <CakeProphet> Joli OS interface: HTML5 + Gnome
09:33:35 <CakeProphet> what the hell.
09:34:09 <elliott__> You could put Android on it.
09:34:49 <CakeProphet> that sounds like a bad idea to me...
09:34:58 <CakeProphet> though it would be neat.
09:35:04 -!- GreaseMonkey has quit (Remote host closed the connection).
09:36:20 <CakeProphet> though it would be very light.
09:36:25 <elliott__> It would suck.
09:36:37 <CakeProphet> it would work well with a low-memory system
09:36:43 <elliott__> It would suck.
09:36:47 <CakeProphet> ...well, yes.
09:37:48 <CakeProphet> Androids application model is pretty interesting.
09:38:19 <elliott__> How?
09:39:11 <CakeProphet> because it frequently removes apps from memory and forces the apps to deal with that.
09:39:24 <CakeProphet> well, not frequently.
09:39:28 <CakeProphet> but the OS can do that whenever it wants.
09:39:39 <elliott__> I think iOS has always done that.
09:39:41 <CakeProphet> ...not much different from swap space I guess.
09:40:01 <CakeProphet> oh really? I don't know much about iOS. I was comparing it to regular OSes
09:40:44 <elliott__> CakeProphet: Well, actually Lion does that too :P
09:40:54 <elliott__> (But the app has to opt in to it.)
09:41:17 <CakeProphet> makes sense. otherwise you would have compatability issues.
09:41:28 <elliott__> Compatibility issues, Apple's number one priority.
09:41:33 <CakeProphet> heh.
09:42:26 <elliott__> (Lion can also keep applications running even once you quit them if it think it's a good idea, and lets you turn off the open/closed indicators in the Dock altogether.)
09:42:41 <elliott__> (I'm pretty sure the plan is to replace "Quit" with "Hide" in some future release.)
09:43:01 <elliott__> That's all part of the pseudo-orthogonal persistence thing they've got going on.
09:43:06 <CakeProphet> it's a decent solution to dealing with a low memory environment. (not referring to the parenthetical stuff)
09:43:19 <elliott__> i.e., apps manually store all their state and restore it on re-open, including things like unsaved documents; and then the versioning system is layered on top of that.
09:43:22 <CakeProphet> I'm... not really sure I get the benefit of orthogonal persistence.
09:43:28 <CakeProphet> but it's "cool"
09:43:48 <elliott__> CakeProphet: Many, many millions of lines of code have been written to serialise and deserialise structures to disk.
09:43:59 <elliott__> This code is all completely obsolete from its conception.
09:44:46 <CakeProphet> right, but you wouldn't want every piece of memory to be persistent.
09:44:49 <elliott__> Not only are modern OSes faster and more efficient at managing when to swap to disk than programmers, the end result is simpler, reduces code complexity by a practically unimaginable degree, and avoids billions of cycles wasted on (de)serialisation.
09:44:57 <elliott__> CakeProphet: That's what generational GCs exist for.
09:45:04 <Ngevd> I think I'll make a Constantinople successor
09:45:26 <elliott__> CakeProphet: You serialise objects that survive the first few generations of garbage collection.
09:45:33 <CakeProphet> lol every dog in my neighborhood just exploded into barking and howling.
09:45:58 <elliott__> (If you want to read a whingy rant I wrote on this early last year, YOU'RE IN LUCK: http://catseye.tc/ehird/files-suck.html)
09:46:01 <CakeProphet> I think the first howl was actually a wolf.
09:46:07 <CakeProphet> elliott__: OH BOY
09:46:09 <elliott__> (My opinions have since refined somewhat, as has my knowledge of the subject.)
09:46:16 <elliott__> (But what I said there is essentially correct.)
09:46:21 <elliott__> (At least more correct than the status quo.)
09:46:28 <elliott__> (I've spent more time thinking about this than is healthy.)
09:47:05 -!- kwertii has quit (Quit: kwertii).
09:47:10 <CakeProphet> so the key to becoming incredibly knowledgable about a subject is to form strong, misguided opinions and then pursue them relentlessly until you come to better conclusions?
09:47:26 <CakeProphet> perhaps this is why I don't know everything about everything. I don't care enough.
09:47:35 <Ngevd> That's pretty much what science is all about
09:47:39 <elliott__> CakeProphet: I thought that was what you did.
09:48:00 <CakeProphet> form misguided opinions sure. but they're not strongly held.
09:48:11 <CakeProphet> nor do I relentlessly pursue them.
09:48:52 <CakeProphet> perhaps apathy is my shortcoming. :P
09:49:29 -!- elliott__ has quit (Remote host closed the connection).
09:50:52 <CakeProphet> elliott__: hmmm, okay so what happens when you have some long-standing piece of memory that is not intended to be persistent, and so becomes serialized "accidentally." is this a fault of the application programmer(s) or the system programmer(s).
09:51:02 <CakeProphet> can I assume that you will instantly logread this when you come back?
09:51:07 -!- elliott has joined.
09:51:22 * CakeProphet waits for it....
09:52:07 <CakeProphet> elliott: so you're not in stalker mode right now? :(
09:52:14 <elliott> ?
09:52:19 <CakeProphet> ? is no
09:52:24 * elliott logreads.
09:52:27 <CakeProphet> NOOO
09:52:31 <CakeProphet> I CAN COPYpaste
09:52:32 <elliott> 09:50:52: <CakeProphet> elliott__: hmmm, okay so what happens when you have some long-standing piece of memory that is not intended to be persistent, and so becomes serialized "accidentally." is this a fault of the application programmer(s) or the system programmer(s).
09:52:39 <elliott> CakeProphet: What happens when you have a purple banana?
09:52:53 <CakeProphet> elliott: I don't believe I understand how that's a relevant response... sorry
09:52:55 <CakeProphet> over my head.
09:53:04 <elliott> CakeProphet: What long-standing pieces of memory should not be persisted?
09:53:05 <CakeProphet> purple bananas and programming are new to me.
09:53:23 <elliott> What large, long-living pieces of information do you want to be completely lost whenever somebody cuts the power? And why?
09:54:11 <Ngevd> Viruses
09:54:20 <CakeProphet> elliott: well, my answer would be kind of tautalogical, and I can't think of a good example. But I'm sure there's lot of OO programs that have some weird monolith things that sit around in the background with lots of memory specific to a current session that isn't intended to "run into" the next invocation of the program.
09:54:22 <Ngevd> Because you want them lost anyway
09:54:42 <elliott> CakeProphet: ok. let me know when you have a real example!
09:54:49 <CakeProphet> but I suppose most of this data would be overwritten anyways.
09:54:53 <elliott> Also, there is no "current session".
09:55:02 <elliott> In an orthogonally persisted system, there are no shut downs, no reboots, nothing.
09:55:09 <elliott> Everything is a continuous live environment.
09:55:24 <CakeProphet> elliott: right. so that means there's huge compatability issues if you tried to run an existing program in that environment.
09:55:36 <elliott> Shutting down is simply causing a persistence cycle and cutting the power; restoring restores the set of objects needed to get the scheduler going, and continues as normal.
09:55:39 <elliott> CakeProphet: No.
09:55:51 <elliott> CakeProphet: Existing programs -- with an appropriate emulation layer -- simply see a system that never shuts down.
09:56:00 <elliott> Sure, things that care about the clock skipping will fail, but that's, like, ntp.
09:56:05 <elliott> CakeProphet: Everything has to handle this today. You know why?
09:56:09 <elliott> Because /hibernate exists/.
09:56:10 <CakeProphet> elliott: also that makes hard shutdowns way more problematic as that last persistence cycle may not be run.
09:56:26 <elliott> Hibernate is the dumbest, most brutal form of orthogonal persistence, and it means everyone already has to take like 90 percent of the steps.
09:56:43 <CakeProphet> really? I thought hibernate was somewhat transparent.
09:56:47 <elliott> Sessions are no longer continuous in real-time; network resources can drop in an instance for any program. It's okay, everybody handles this.
09:56:50 <elliott> CakeProphet: So is orthogonal persistence.
09:56:53 <CakeProphet> the application doesn't really have to care because /everything/ is persisted.
09:56:57 <elliott> CakeProphet: So is orthogonal persistence.
09:57:03 <elliott> You can't make cutting a network connection transparent.
09:57:04 <CakeProphet> hmmm...
09:57:09 <elliott> <CakeProphet> elliott: also that makes hard shutdowns way more problematic as that last persistence cycle may not be run.
09:57:15 <elliott> Oh wow, you might lose like TEN SECONDS of data.
09:57:26 <elliott> So much worse than the everything you lose with current systems.
09:57:26 <CakeProphet> ah.
09:57:36 <CakeProphet> okay, I think I understand.
09:57:51 <CakeProphet> because everything in the last persistence cycle is in a consistent state.
09:58:13 <CakeProphet> except all of those volatile chunks suddenly get lost.
09:58:35 <CakeProphet> assuming the program continues where it left off this would be problematic.
09:58:53 <elliott> You definitely want to maintain consistency, which is a tricky problem if you prune the set of objects to persist. But you can basically do it by persisting the current continuation of the process.
09:59:00 <elliott> Which you basically have to anyway.
09:59:09 <elliott> Then it's as simple as: Whatever the continuation points to.
09:59:20 <elliott> When the continuation gets re-persisted, so do all the objects it references.
09:59:38 <elliott> If it created some ephemeral objects then threw them away, they won't be persisted; just a sample of them, every few seconds.
09:59:39 <CakeProphet> so you don't resume exactly where you left off ---- aaaaah no I see.
09:59:57 <CakeProphet> you return the last consistent point in the program execution.
09:59:59 <elliott> So, yeah, you persist the loop index that will last another microsecond, but it's not that often, so who cares?
10:00:00 <CakeProphet> *to the
10:00:27 <CakeProphet> hmmmmmmmmmm
10:00:55 <CakeProphet> still depending on where it saves you may end up with some local variables that are suddenly gone.
10:01:03 <elliott> Nope.
10:01:11 <elliott> Do you know what a current continuation is?
10:01:29 <CakeProphet> ah it includes the stack, yes?
10:01:34 <CakeProphet> yes I have an idea of what it is.
10:01:40 <Ngevd> elliott, how are @, mcmap, mchost, and whatever else going?
10:01:41 <CakeProphet> not the low-level details.
10:01:57 <elliott> The low level details are irrelevant; a higher-level detail will be more conducive to understanding.
10:02:18 <elliott> The current continuation contains the entire rest of the execution; therefore it necessarily contains a reference to every object in the process that is not garbage.
10:02:18 <CakeProphet> the current continuation is essentially the current visible state of the program, right?
10:02:39 <elliott> That includes the ephemeral loop index.
10:02:43 <CakeProphet> right
10:02:58 <CakeProphet> but then the persistence cycle saves everything relevant, not based on generation?
10:03:10 <elliott> There is no special-casing.
10:03:34 <elliott> Every ten seconds or so, the persistence engine saves everything in the third generation or later.
10:03:41 <elliott> That includes the current continuations of the running processes.
10:03:43 <CakeProphet> ah okay. well yeah if you save the entire current continuation, no problem.
10:03:51 <elliott> Yes, that is called orthogonal persistence.
10:04:07 <elliott> The problem with saving things like loop indices or tables that only last for ten milliseconds is not because it uses space or anything.
10:04:11 <elliott> It's because it'd thrash your disk.
10:04:14 <CakeProphet> I thought you were implying that those local variables which are probably not third generation do not get included.
10:04:35 <elliott> No, I only mean that if you have a loop index which only lasts three seconds and there's no persistence cycle done, it'll be garbage collected and never persisted.
10:04:49 <elliott> (I'm backporting concepts slightly; @ has no concept of process.)
10:05:10 <CakeProphet> hmmm, okay.
10:05:35 <CakeProphet> then that's fine, except for the aforementioned disk thrashing, also performance issues maybe?
10:06:03 -!- Ngevd has quit (Read error: Connection reset by peer).
10:06:14 <CakeProphet> I guess that's implied.
10:06:16 <CakeProphet> in thrashing.
10:06:20 <elliott> What performance thrashing?
10:06:23 <elliott> What disk thrashing?
10:06:27 <elliott> It's every ten seconds.
10:06:28 -!- Ngevd has joined.
10:06:34 <Ngevd> brb
10:06:35 <CakeProphet> 06:03 < elliott> The problem with saving things like loop indices or tables that only last for ten milliseconds is not because it uses space or anything.
10:06:37 -!- Ngevd has quit (Client Quit).
10:06:38 <CakeProphet> 06:04 < elliott> It's because it'd thrash your disk.
10:06:44 <elliott> Which is why you don't do that.
10:06:48 <CakeProphet> oh
10:06:49 <CakeProphet> I see
10:06:52 <CakeProphet> nevermind :P
10:06:54 <elliott> Also, jesus christ Ngevd just came in here for like five seconds.
10:07:01 <CakeProphet> he.
10:07:04 <CakeProphet> ....h
10:07:10 <CakeProphet> it was a very drawn out heh
10:07:34 <CakeProphet> heh heh heh
10:08:19 <CakeProphet> okay so you also have to save everything that's been context switched to in the past 10 seconds
10:08:23 <CakeProphet> which might be a lot of data?
10:09:06 <elliott> No, you can prioritise that.
10:09:24 <elliott> Anyway I'm sure your OS writes to disk more than you think too in general operation.
10:09:29 -!- Ngevd has joined.
10:09:32 <Ngevd> Back
10:09:59 <Ngevd> Question: how hard is it to connect a python program and a haskell program so they work together?
10:11:20 <CakeProphet> elliott: I have a little disk usage meter that tells me how often it does that.
10:11:41 <Ngevd> Better question:
10:11:49 <CakeProphet> Ngevd: with IPC not difficult
10:11:55 <CakeProphet> I assume that's not what you mean though.
10:12:12 <Ngevd> How can I get a rng in Haskell?
10:12:24 <CakeProphet> /dev/random? :P
10:12:36 <Patashu> that's answered in Learn You A Haskell
10:12:49 <CakeProphet> er, a rng? you mean a prng right?
10:13:07 <Patashu> isn't there an IO function in haskell to get a random seed?
10:13:14 <Patashu> and then it's non-IO after that
10:13:31 <CakeProphet> yes
10:13:35 <CakeProphet> getStdGen I believe.
10:13:54 <elliott> :t withStdGen
10:13:54 <lambdabot> Not in scope: `withStdGen'
10:13:57 <elliott> argh
10:13:57 <CakeProphet> I assumed he meant an actual random number generator.
10:13:59 <elliott> ?hoogle withStd
10:13:59 <lambdabot> No results found
10:14:18 <elliott> AS I WAS SAYING,
10:14:20 <elliott> getStdRandom :: (StdGen -> (a, StdGen)) -> IO a
10:14:22 <elliott> is usually more useful imo
10:14:41 <CakeProphet> elliott: okay so if not processes then what does @ have?
10:14:52 <Ngevd> Chapter 8 of LYAH confuses me
10:15:00 <CakeProphet> also do you need any help with @? :3 No I don't expect to be able to do gory system stuff effectively.
10:15:05 <elliott> CakeProphet: Stuff. And no.
10:15:33 <CakeProphet> ah yes stuff is a good model for anything.
10:17:30 <CakeProphet> also you still need the concept of a file I'd think. or at least, a store of data that isn't ever put into memory until demanded.
10:17:54 <elliott> That's called... anything.
10:18:03 <elliott> Why would anything be put into memory if it wasn't demanded?
10:18:52 <CakeProphet> I suppose. but then you also need to have a filesystem of some kind.
10:18:55 <CakeProphet> or, anything-system.
10:19:25 <CakeProphet> where do I put my music collection in @? :P
10:19:56 <elliott> CakeProphet: I really have to ask at this point if your first response to not being able to think of a way to do something is to declare it must be done some other way.
10:20:01 <elliott> You've done it about ten times.
10:21:30 <CakeProphet> I didn't say that it must be done some other way at all. Just that you probably want these additional concepts to allow you to refer to segments of memory-stuff between processes (or stuffs, since they're not processes)
10:21:45 <CakeProphet> re: filesystem
10:22:00 <CakeProphet> and that you probably want some kind of structure to this method of sharing data.
10:22:00 <elliott> OK, but seriously, you've used argument by incredulity about ten times to declare that you'd still want a filesystem.
10:22:04 <elliott> Not once have you been correct.
10:22:46 <elliott> Anyway.
10:22:55 <elliott> CakeProphet: You put your music collection in the most convenient data structure to hand.
10:23:06 <elliott> Probably a set of tracks.
10:23:12 <CakeProphet> elliott: I am literally just talking to you about this model... not like, suggesting that you need to a filesystem. I am indirectly wondering, how do you solve the problems that a filesystem solves in this system?
10:23:46 <CakeProphet> there is no argument from my part.
10:24:16 <elliott> Anyway, I answered you.
10:24:18 -!- ranzz_die has joined.
10:24:43 <Ngevd> Is there much point upgrading ubuntu to oneiric ocelot?
10:24:50 -!- ranzz_die has changed nick to ranzz_die123.
10:24:51 <CakeProphet> how they're stored, sure. not how they're shared
10:24:54 -!- ranzz_die123 has quit (Client Quit).
10:24:58 <CakeProphet> Ngevd: no. unity is bad.
10:25:00 <CakeProphet> don't do it.
10:25:01 <elliott> rip ranzz_die
10:25:04 <elliott> CakeProphet: pre-oneiric has unity too
10:25:09 <elliott> <CakeProphet> how they're stored, sure. not how they're shared
10:25:12 <Ngevd> I'm already on Natty Narwhal
10:25:13 <elliott> what do you mean by "shared"
10:25:43 <Ngevd> How can a music player access the music?
10:25:47 <Ngevd> I assume
10:25:53 <Ngevd> I do not know what CakeProphet is thinking
10:26:10 <elliott> That's why I asked.
10:26:13 <CakeProphet> elliott: well, assuming you have more than one program running (not a process, but stuff or whatever they are), you probably want the data that they generate and manipulate to be accessible to other programs that perform a different task, perhaps even without these programs knowing that they may need to communicate with one another specifically.
10:26:39 <elliott> Ah -- they should magically communicate without intent?
10:26:53 <elliott> Yes, I would like a computer that reads my mind too. But seriously, that's about the opposite of a concrete question.
10:27:23 <CakeProphet> this is one thing a filesystem can do. you give the data names in a hierarchy and then they have names that can be referred to. the data isn't associated with any specific program.
10:27:50 <elliott> Yes, filesystems are a recursive map from strings to {filesystem | byte string}.
10:27:50 <CakeProphet> another program or a human can pass along the name.
10:27:56 <elliott> That is a fairly trivial structure.
10:27:59 <elliott> Anyone can implement that given ten minutes.
10:28:04 <elliott> It's also a bad structure for 90 percent of things.
10:28:26 <CakeProphet> okay, and how is this structure shared between programs? I'm back at my starting question. I don't think it's a difficult question to understand.
10:29:31 <elliott> It's not even a question. I mean, entirely apart from having no question mark in your elaboration of it, you're not even asking anything in particular; I can't answer a question I can't even understand. Ask something concrete and maybe you'll have better luck.
10:30:27 -!- Ngevd has changed nick to Taneb|hovercraft.
10:31:04 <CakeProphet> I am... very surprised that you can't answer that question.
10:31:25 <elliott> Exciting.
10:31:26 <CakeProphet> and am currently at a lose on how to phrase it more conretely.
10:31:30 <CakeProphet> *loss
10:31:38 <CakeProphet> *concretely
10:31:39 <CakeProphet> :P
10:31:55 <elliott> Go back to the music collection thing. That was a coherent question.
10:32:11 <oklopol> you can't collect music, music needs to run free
10:33:32 <CakeProphet> well, okay. you have a music collection. it exists as track structures or whatever. typically speaking when you collect music you want this data to exist indepently of any one program (or, rather, most of the programs that use it) I am wondering, how does an arbitrary program get access to this data.
10:34:21 <CakeProphet> which, brings up issues of security, "what is a program?", etc. I really don't know enough about this system to ask questions as concretely as you most likely want. I was kind of hoping you would just explain how that facet of it works.
10:34:28 <elliott> By being passed a reference to it.
10:34:33 <elliott> Like everything a program needs.
10:34:45 -!- Phantom_Hoover has joined.
10:35:44 <CakeProphet> elliott: that would have totally worked as an answer to "how do programs share data?"
10:35:55 <elliott> I don't think you ever asked that.
10:36:09 <CakeProphet> ... -_-
10:36:54 <CakeProphet> I think I'm done now. you win. I won't be bothering you anymore.
10:37:04 <CakeProphet> mission accomplished.
10:37:12 <elliott> Yess, finally I have won this battle that I was never having
10:37:32 <elliott> Consider maybe dropping the battle rhetoric for once and that instead maybe you might have been unclear.
10:37:36 <elliott> It gets tiring.
10:37:42 <CakeProphet> no not a battle. it seems as though you are being intentionally difficult so that I'll stop asking you all these questions.
10:37:58 <CakeProphet> I, have not, at any point, tried to argue anything.
10:38:06 <CakeProphet> except maybe at the beginning
10:38:09 -!- Taneb|hovercraft has changed nick to Ngevd.
10:38:20 <Ngevd> While I had my breakfast, a thought occured
10:38:32 <Phantom_Hoover> Shocking!
10:38:38 <Ngevd> Imagine a probably fictional programming language called Colorado
10:38:43 <elliott> CakeProphet: Either I'm being intentionally difficult, or you just won't challenge your preconceptions; among them that your questions are clear.
10:38:48 <Ngevd> The name isn't important, but anyway
10:39:13 <Ngevd> Now, Colorado has two compilers, Denver and Aspen
10:39:35 <Ngevd> Somebody writes a text editor in Colorado
10:40:02 <Ngevd> When compiled by Denver, it's 2 KB
10:40:10 <Ngevd> When compiled by Aspen, it's 3 KB
10:40:34 <Ngevd> But the Aspen-compiled version runs quicker
10:40:37 <CakeProphet> elliott: I've challenged plenty of preconceptions throughout the course of this conversation. I'll give you one: it doesn't make sense to have all data orthogonally persistent.
10:40:42 <Ngevd> Which is the better compiler?
10:41:05 <Phantom_Hoover> Oh dear, are you arguing about @?
10:41:06 <elliott> Ngevd: Aspen.
10:41:10 <Phantom_Hoover> Don't argue about @.
10:41:12 <CakeProphet> Phantom_Hoover: not /trying/ to argue. :P
10:41:13 <Phantom_Hoover> There's no point.
10:41:28 <Ngevd> Okay, now somebody else writes a different program
10:41:32 <elliott> Phantom_Hoover: No, CakeProphet just thinks he's being revolutionary by bringing up things that were solved a few decades ago and then blaming his confusing questions on me.
10:41:33 <Ngevd> Say, an image viewer
10:41:36 <elliott> But it's over now.
10:41:41 <CakeProphet> I am really just trying to ask questions, but apparently am not being concrete enough. probably because I don't know anything about it.
10:41:50 <CakeProphet> also I'm trying to be revolutionary (....?)
10:42:00 <Ngevd> The version of this compiled by Denver runs quicker than the version compiled by Aspen
10:42:34 <Ngevd> Is there much point for a Colorado programmer to try both compilers for every program he/she writes?
10:42:46 <elliott> No. (Are these questions meant to be difficult?)
10:42:52 <Ngevd> Not really
10:43:06 <Ngevd> They're meant to be ones I don't know the answer to
10:43:14 <elliott> If it doesn't go too slowly, who cares?
10:44:38 <CakeProphet> elliott: I would like to continue, but it appears that our conversations tend to break down easily.
10:44:48 <CakeProphet> because I would like to know more about this system.
10:44:55 <elliott> Okay. About what?
10:45:37 <CakeProphet> elliott: how would a human pass a reference to a program.
10:46:28 <elliott> Probably automatically in this case. But the UI is not one of the most fleshed-out parts of @. (OK, it has had a lot of thinking done to it, but it's mostly in disparate fragments right now.)
10:46:31 <elliott> It's the object-capability model, anyway.
10:47:24 <CakeProphet> elliott: I apologize for phrasing my questions in ways that I'm accustomed to thinking about them. it's not intended to be argumentative.
10:47:33 <elliott> I didn't say anything.
10:48:18 <CakeProphet> I was attempting to resolve some unresolved misunderstandings. nevermind. no need, I guess?
10:50:33 <CakeProphet> so do you forsee it making sense to interact with this system via a terminal with line-based commands, perhaps?
10:51:59 <elliott> The @ UI is really not something I can make even vaguely concrete statements about. But it is likely to be more linguistic than WIMP, and I have little interest in supporting the lower-resolution (some only supporting a limited resolution of fixed-width glyphs, often erroneously called "text" modes) graphics modes.
10:52:16 <CakeProphet> I do see how you could liberate the dependence on a filesystem by having long-running programs that manage specific kinds of data for you.
10:52:26 <CakeProphet> "long-running" being a bit misleading.
10:52:50 <CakeProphet> just sort of existing, forever, to be invoked.
10:52:51 <elliott> There's no real program involved in maintaining a set of trakcs.
10:52:53 <elliott> tracks.
10:53:07 <elliott> But a set of course contains code in some sense, since you can perform operations on a set.
10:53:46 <CakeProphet> ah so these structures you refer to are themselves programs, and not merely inactive data. There is no distinction here.
10:54:22 <CakeProphet> ...is that... too vague?
10:55:10 <elliott> Weeeell, I think words like active vs. inactive are way too emotionally charged to be useful for much.
10:55:19 <elliott> In this case, it's just... a set.
10:55:23 <CakeProphet> I.. don't think of them as such, but okay.
10:56:09 <elliott> It's hard to define "active".
10:56:20 <CakeProphet> okay perhaps a better question. How do you define a structure?
10:56:47 <elliott> An object; entity; value; call it what you will. Imagine a value in <favourite programming language>.
10:56:53 <CakeProphet> okay.
10:57:11 <elliott> Not Perl though.
10:57:17 <CakeProphet> but these entities are universally accepted by any program, so there is some sort of concrete implementation involved.
10:57:22 <CakeProphet> well
10:57:25 <CakeProphet> not universally
10:57:26 <CakeProphet> or any program
10:57:30 <CakeProphet> but accepted by programs. :P
10:57:40 <elliott> Yes, the @ system is based on a single object model.
10:58:12 <CakeProphet> s/implementation/representation/ so yeah that answers that.
10:58:15 <CakeProphet> sort of.
10:58:21 <CakeProphet> not very clear on how it works though
10:58:30 <shachaf> My favorite programming language has no values, you insensitive clod!
10:58:47 <elliott> CakeProphet: Just imagine a single language runtime underpinning the whole system; that's the easiest way to understand it.
10:58:51 <elliott> Not entirely accurate, but close.
10:58:56 <CakeProphet> yes that's what I imagined.
10:59:04 <elliott> (Smalltalk is a good starting point.)
10:59:26 <CakeProphet> so would you say it's... object-oriented? minus the connotations.
10:59:40 <elliott> What does it mean minus the connotations? Sincere question.
10:59:56 <CakeProphet> as in like... object-oriented but with a sensible model.
11:00:07 <CakeProphet> not invoking images of Java...
11:00:08 <CakeProphet> basically
11:00:14 <Ngevd> If Smalltalk is a good starting point, then it is VERY object-oriented
11:00:26 <elliott> CakeProphet: Probably not in any way you're thinking of, no.
11:00:32 <elliott> But maybe also a bit of yes. But no. But yes.
11:00:35 <elliott> But no, really, no.
11:00:38 <CakeProphet> but very much like smalltalk?
11:00:39 <elliott> It is primarily functional.
11:00:40 <elliott> No.
11:00:44 <CakeProphet> ah okay.
11:00:45 <elliott> I said Smalltalk was a good starting point.
11:00:49 <elliott> Unix etc. are just that much further off.
11:00:57 <CakeProphet> yes these questions are all an attempt to get more details out of what you mean by that. :P
11:01:07 <Ngevd> Object-oriented Haskell! :P
11:01:22 <CakeProphet> I do like the idea of all data being represented as code-stuffs.
11:01:40 <elliott> Church encoding.
11:01:42 <CakeProphet> yes.
11:01:54 <CakeProphet> maybe with some primitive notion of data underneath.
11:02:20 <elliott> Church encoding doesn't buy you much.
11:02:31 <CakeProphet> right I don't mean strictly Church encoding.
11:02:42 <elliott> The fold-based representation isn't particularly desirable, and anyway it's literally isomorphic to just using constructor bits as God intended and separating data out properly.
11:02:51 <Ngevd> If I am one of the few people who like Unity, should I upgrade Ubuntu?
11:02:58 <CakeProphet> but you have a set and the set is represented by the code that controls it.
11:03:07 <CakeProphet> I guess that's almost like OO....
11:03:08 <CakeProphet> in a way.
11:03:14 <elliott> CakeProphet: What control?
11:03:16 <elliott> There's no control.
11:03:27 <elliott> Sets are just set; abstract objects with a defined set of operations.
11:03:31 <elliott> s/set/sets/
11:03:33 <shachaf> "If I am one of the few people who like Unity, should I _?" "No."; "If _, should I upgrade Ubuntu?" "No."
11:03:35 <CakeProphet> that's... what I meant.
11:03:36 <shachaf> As far as I can tell.
11:05:05 <CakeProphet> okay so internally you're passing around something akin to Haskell constructors or C structs, with associated operations?
11:05:13 <Ngevd> Wow, conversation killer
11:05:21 <CakeProphet> er, referring to.
11:05:29 <elliott> CakeProphet: The low-level details are unlikely to aid in understanding here; they're essentially interchangable.
11:05:44 <elliott> The operators wouldn't be passed around with the data itself; that's simply wasteful.
11:05:46 <Ngevd> No wait, I lag
11:06:01 <Ngevd> This is a tad annoyin
11:06:01 <Ngevd> g
11:06:06 <elliott> If you have two sets, you don't want to pass the set operations twice.
11:06:28 <CakeProphet> elliott: well right. I didn't really mean that you pass around the operations.
11:07:29 <CakeProphet> in much the same way that you wouldn't actually pass the data, merely references.
11:10:23 -!- oerjan has joined.
11:10:28 <CakeProphet> okay so regarding the music tracks and not having a daemon program to manage them. How do you keep a music collection from being garbage collected?
11:11:10 <elliott> By holding a reference to it.
11:11:33 <elliott> Probably in whatever roughly constitutes the system's idea of you.
11:12:07 <CakeProphet> okay, so there will never be a point where no program references the music, unless you want it to go away.
11:13:19 <CakeProphet> because many programs don't really quit.
11:13:41 <elliott> It's more data than program here.
11:14:50 <CakeProphet> I'm not sure what you mean by that.
11:15:26 <elliott> It's data holding the references.
11:15:45 <CakeProphet> okay, but then said data is then being referenced by a program, right?
11:16:09 <CakeProphet> otherwise it wouldn't exist
11:16:24 <CakeProphet> or will die swiftly.
11:16:40 <CakeProphet> by the hands of the mighty garbage collector.
11:17:32 <elliott> There is no concept of program.
11:17:47 <CakeProphet> I..... okay.
11:19:36 <CakeProphet> what do you write for @ that makes things happen? for want of better terminology.
11:20:24 <elliott> Code.
11:20:33 <CakeProphet> but not programs.
11:20:56 <elliott> Indeed.
11:20:59 <CakeProphet> perhaps my confusion is evident.
11:21:22 <Phantom_Hoover> CakeProphet, it doesn't divide code into little packages called 'programs'.
11:21:45 <CakeProphet> or maybe my confusion is such a permanent force of nature that it's simply taken for granted at this point.
11:21:57 <CakeProphet> like water.
11:22:08 <Ngevd> So it's like... one giant meta-program?
11:23:14 <CakeProphet> I assume it just generalized code to data, and so the structure of the data somewhat determines what is executed.
11:23:31 <CakeProphet> but I'm probably wrong.
11:25:40 <Phantom_Hoover> It's not that complicated.
11:26:02 <CakeProphet> sure, but the idea is completely foreign to me, and little information about it has been given.
11:26:04 <Phantom_Hoover> On a typical modern OS, you have executable files, and these are what most of us mean by 'program'.
11:26:19 <CakeProphet> well I meant it in a more abstract sense. but yes, that's how such a thing is represented.
11:26:41 <Phantom_Hoover> Even interpreted languages package code into files.
11:26:46 <CakeProphet> right
11:27:02 <Phantom_Hoover> In @, code doesn't exist in files, so there's no subdivision imposed.
11:27:25 <CakeProphet> but you would still write..... programs right? bits of code, I guess.
11:28:32 <CakeProphet> and the subdivision could easily exist if you wanted it to, if you subdivided programs into blocks of memory.
11:28:55 <CakeProphet> but, I guess you don't want that subdivision? you have a different model?
11:29:37 <Phantom_Hoover> There *is* no subdivision, unless you explicitly create one.
11:29:47 <CakeProphet> that's... what I said, basically.
11:30:08 <Phantom_Hoover> So what are you failing to understand?
11:30:13 <CakeProphet> how that works.
11:30:17 <CakeProphet> in practice.
11:30:33 <CakeProphet> how does the code get executed.
11:30:50 <CakeProphet> when does it start.
11:30:52 <Phantom_Hoover> A function in it gets called by already-running code.
11:31:58 <CakeProphet> so @ isn't really an operating system.
11:32:21 <elliott> It's actually a chocolate bar.
11:32:28 <CakeProphet> it's orthogonal persistence and an object model.
11:32:48 <elliott> Unix isn't an operating system; it's just a task switcher and a hierarchical store.
11:35:05 <Phantom_Hoover> And a bunch of syscalls.
11:35:08 <CakeProphet> unix does provide an abstraction for subdividing segments of code from one another though. i.e. there are processes, and executable files. I assume to have any kind of semblance of order you would need a system that does something like that (but NOT the same thing. I am trying to challenge my preconceived notions here)
11:35:28 <elliott> Yes, we all need arbitrary distinctions to stay sane.
11:35:42 <elliott> It is inconceivable that code could be well-contained enough that a single system could interoperate as a whole.
11:35:59 <elliott> We demand impenetrable barriers that require obtuse duplicate mechanisms (IPC, anyone?) to work around.
11:36:13 <CakeProphet> no it's completely conceivable, you just haven't told me what that system is yet.
11:36:41 <elliott> "System" refers to @ there.
11:36:56 <CakeProphet> as far as I know @ is just a monolith with no way to place your own code into that system.
11:37:25 <elliott> You execute code. That's what users do.
11:37:26 <CakeProphet> there's just this ephemeral thing called @ and can somehow interoperate as a whole but that's all I know.
11:38:00 <elliott> Yes, this is the state known as "not knowing @".
11:38:07 <CakeProphet> correct.
11:38:13 <elliott> It is horrible.
11:38:39 <CakeProphet> can I somehow learn about @ without requiring extensive knowledge of it already to ask the right questions?
11:38:51 <CakeProphet> to get the right answers
11:39:31 <elliott> Yes: Ask questions without attaching your presumptions of the answers to them, and they'll be much easier to answer.
11:39:46 <Ngevd> How can one develop programs using @?
11:39:57 <CakeProphet> Ngevd: no such things
11:40:03 <CakeProphet> don't attach preconceived notions.
11:40:04 <elliott> Ngevd: One does not.
11:40:11 <Ngevd> Or the equivalent thereof
11:40:16 <CakeProphet> there is no equivalent
11:40:17 <elliott> CakeProphet: I see you're uninterested in learning.
11:40:23 <CakeProphet> again a preconceived notion.
11:40:45 <Ngevd> What features will @ have that an end-user would like to know about?
11:41:08 <elliott> Ngevd: No Unity support.
11:41:23 <Ngevd> Text editor?
11:41:25 <Ngevd> Image editor?
11:41:28 <Ngevd> Music player?
11:41:31 <Ngevd> Web browser?
11:41:40 <CakeProphet> elliott: uninterested in having my questions dismissed because they're not phrased in the language of a system I know nothing about.
11:41:53 <oerjan> Brain editor
11:42:03 <CakeProphet> elliott: interested in learning, yes. of course.
11:42:17 <elliott> Ngevd: One could compose an obsolete string type, I suppose, sure. Not sure why you would. Image editing I don't have any personal plans to write but it would be perfectly possible and more natural than most such systems. But really, those are all applications, so to speak; @ is very much document-centric.
11:42:48 <Ngevd> How will documents be created then?
11:42:51 <Ngevd> And in what format?
11:43:03 <elliott> Up to you.
11:43:18 <CakeProphet> elliott: how do I decide.
11:43:22 <Ngevd> What sort of tools will be available for document creation?
11:43:28 <elliott> But really, my focus is not on what the user-facing end is at this point. I'm not going to waste my time thinking about something that's many years off.
11:43:38 <Ngevd> Fair enough
11:43:43 <elliott> I cannot just design this mythical perfect system with a bunch of applications and expect it to come true; there are hard problems to be solved at the lower layers.
11:44:51 <CakeProphet> elliott: is subdividing and controlling units of code a problem that as been solved or something that you don't even intend to consider a problem?
11:45:07 <Ngevd> Or somewhere inbetween?
11:45:13 <elliott> Module systems are a well-researched field.
11:45:21 <Phantom_Hoover> <Ngevd> How will documents be created then?
11:45:21 <Phantom_Hoover> <Ngevd> And in what format?
11:45:37 <Phantom_Hoover> They're arbitrary formatting objects.
11:46:42 <Phantom_Hoover> So there /is/ no format: after all, formats only exist because we need to serialise the in-memory representation of a document onto a disk.
11:47:53 <CakeProphet> I am mostly confused about issues of multitasking and control flow. How data is represented and controlled makes sense now, for the most part.
11:48:32 <elliott> 76% [14 libstdc++6-4.3-dev 22389/1420kB 1%] 2073kB/s 3s
11:48:33 <elliott> aww ye
11:48:44 <elliott> (Unfortunately that's my server getting dem speeds.)
11:59:14 -!- Ngevd has quit (Quit: Leaving).
12:09:07 -!- nooga has quit (Ping timeout: 258 seconds).
12:27:08 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
12:40:20 -!- nooga has joined.
12:43:15 -!- derdon has joined.
12:58:21 -!- Ngevd has joined.
13:00:57 <Ngevd> Hello!
13:01:58 -!- derdon has quit (Remote host closed the connection).
13:02:23 <oerjan> Jell-O!
13:08:19 -!- yiyus has quit (Read error: Operation timed out).
13:14:46 <oklopol> lk uskoko itsenne viisaampia valheita
13:14:58 <elliott> hi
13:15:20 <oklopol> you know elliott you are a real person
13:15:26 <elliott> no
13:16:13 <oklopol> i know you like to think that but you're just another human
13:16:29 <oerjan> anti-solipsism would be weird
13:16:40 <elliott> no i'm actually a rat.
13:16:42 <oklopol> i think we've discussed that here
13:16:53 <Phantom_Hoover> oerjan, not as weird as solipsist missionaries
13:16:57 <oerjan> well, we've discussed solipsi... right
13:16:58 <oklopol> and those
13:17:08 <oklopol> especially those
13:17:21 <oerjan> rejoice! only you exist!
13:17:35 <oerjan> that annoying neighbor is just an illusion!
13:17:56 <oerjan> sadly, an annoyingly persistent one.
13:18:22 <elliott> Phantom_Hoover: excuse me
13:18:22 <elliott> I
13:18:23 <elliott> invented
13:18:24 <elliott> those
13:18:53 <elliott> I still can't figure out if they'd convince others that they didn't exist or that only they existed.
13:19:12 <oerjan> elliott: probably there'd be some terrible schism
13:19:46 <oerjan> "Only I exist!" "No, only _you_ exist!" wait, what.
13:20:20 -!- yiyus has joined.
13:20:20 <oklopol> the thought of there being and afterlife (more like betweenlife) where you get scored and use your points to buy your next life is so cool i have started to somewhat believe that
13:20:25 <oklopol> *an
13:21:02 <elliott> do you like distribute stats
13:21:11 <oerjan> oklopol: that sounds like my worst nightmare.
13:21:22 <oklopol> i suppose you need a shitload of points to buy memories of your previous lives
13:21:39 <oklopol> oerjan: yeah have fun as a cockroach
13:21:45 <oklopol> mwahaha
13:21:47 <oklopol> i'm so mean
13:21:54 <oklopol> or was that what you meant
13:22:01 <elliott> oerjan: no that sounds great i'd be like ok let's try being an idiot this time (that is what happened this time around)
13:22:31 <elliott> http://en.wikipedia.org/wiki/List_of_scandals_with_%22-gate%22_suffix
13:22:35 <oerjan> oklopol: well it's clearly time for the cockroaches to RULE
13:22:52 <elliott> Utegate – A June 2009 political incident around the lending of a utility vehicle ("ute") to Australian Labor Prime Minister Kevin Rudd by car dealer John Grant, and subsequent allegations of improper favorable treatment of Grant by the Treasury department.[74]
13:23:51 <Ngevd> Ah, good old K-Rudd
13:26:42 <oklopol> that's why people can't decide whether it's about environment or genetics, it's about *soul* genetics and *soul* environment from your past lives (yeah, there's sex in betweenlife. a fuckload of it.)
13:26:47 <elliott> Fajitagate – In November 2002, three off-duty San Francisco police officers allegedly assaulted two civilians over a bag of steak fajitas (which were mistaken as drugs), leading to the retirement of the chief of police and the firing of his successor.[53]
13:26:50 <elliott> fajitagate
13:27:13 <Ngevd> Toiletgate
13:27:15 <elliott> Sexy Photo Gate – The 2008 scandal in Hong Kong concerning illegal distribution over the Internet of intimate and private photographs of actor/singer Edison Chen with various notable celebrities, destroying the showbiz careers of all those involved.[27]
13:27:15 <elliott> YOU'RE NOT EVEN TRYING
13:27:24 <elliott> THAT'S JUST TWO WORDS PLUS "GATE" THEY AREN'T EVEN MUSHED TOGETHER
13:28:36 <oerjan> Nordre Gate
13:28:36 <oklopol> maybe someone should investigate this gate conspiracy. of course we all know the name of the scandal that would lead to.
13:29:39 <Ngevd> Gategate (2)
13:29:41 <elliott> investigate
13:29:47 <oklopol> i was going for #2
13:30:01 <elliott> investigate is definitely better it is less obvious
13:30:05 <oklopol> yes
13:30:10 <oklopol> that's why i was going for it
13:30:17 <elliott> oh that was first here
13:30:23 <oerjan> interrogate
13:30:59 <oklopol> elliott: ?
13:31:04 <elliott> oklopol:
13:31:04 <elliott> <elliott> investigate
13:31:04 <elliott> <Ngevd> Gategate (2)
13:31:06 <oklopol> oh
13:31:07 <elliott> is what it looked like here
13:31:13 <oklopol> got it just after asking
13:31:41 <elliott> so hey oklopol how is your ... theses ... doings
13:32:11 <oerjan> he's dropped it, zzo38 has convinced him to switch to astrology
13:32:29 <oklopol> i haven't even started my phd yet :( but planning to start after the exams next week, i think i know my topic now at least
13:33:00 <Phantom_Hoover> OMG I just got a chocolate pope hat BEST DAY EVER
13:33:06 * Phantom_Hoover eats it.
13:33:26 <oklopol> it's on the role of saturn in horoscopes. it's being done completely wrong nowadays.
13:33:28 <oerjan> <oklopol> [...] (yeah, there's sex in betweenlife. a fuckload of it.) <-- i am starting to warm to this idea
13:33:58 <oklopol> i should probably write a book about it
13:34:23 <Ngevd> oerjan, really? That line turned me off the idea a lot
13:34:29 <oerjan> oklopol: yeah a book about ring theory
13:34:35 <oerjan> Ngevd: PRUDE
13:34:40 <oklopol> Ngevd: ?
13:35:06 <Phantom_Hoover> Betweenlife;
13:35:09 <Phantom_Hoover> *?
13:35:24 <oklopol> Ngevd: don't worry, people will handle your vagina much more gently in the betweenlife
13:35:25 <Phantom_Hoover> Oh dear, oklopol met Ngevd. I hope they never shake hands.
13:35:27 -!- MSleep has joined.
13:35:31 -!- MSleep has changed nick to MDude.
13:36:13 <elliott> oklopol: Ngevd is taneb hth
13:36:31 <oerjan> * Phantom_Hoover eats it. <-- BUT BUT how can you then use it in a plot to get the _real_ pope hat?
13:36:33 <oklopol> oerjan: hehe, can you come up with an astrology version of "cantor type subshifts in the besicovitch and weyl topologies"
13:36:35 <oklopol> ?
13:36:50 <Phantom_Hoover> oerjan, curses!
13:36:53 <oklopol> elliott: i had a hunch that might be it
13:36:56 <Phantom_Hoover> oklopol, yes.
13:38:17 <oerjan> oklopol: not on the spot, no
13:38:59 <oklopol> me neither :/
13:39:11 <oklopol> Phantom_Hoover: what was that a yes to, taneb?
13:40:04 <Phantom_Hoover> No, to Cantor type subshifts in the Besicovitch and Weyl topologies.
13:41:52 -!- nooga has quit (Ping timeout: 260 seconds).
13:46:27 <oklopol> so you told me oerjan *can* come up with one?
13:46:32 <oklopol> makes sense
13:47:00 <Phantom_Hoover> Yes, I believe in oerjan.
13:47:54 <Ngevd> When did I say yes?
13:48:35 <Phantom_Hoover> You have been saying 'yes' your whole life; you have yet to realise.
13:48:48 <oklopol> Ngevd: you just misparsed my inparsible sentence.
13:49:10 <oklopol> also, maybe that's why you don't like sex
13:49:16 <oklopol> i mean what ph said
13:49:42 <oklopol> maybe i should stop picking on you and use elliott instead, he deserves it more
13:49:51 <oklopol> elliott: fuck you although i do kind of like you as a person
13:50:20 <elliott> hi
13:50:27 <elliott> i am pretty terrible yeah
13:50:37 <Phantom_Hoover> The worst.
13:50:55 <Phantom_Hoover> oklopol, what about elliott's eviller triplet, Facekicker McHird?
13:51:23 <oklopol> well i would certainly fuck him him too if he came here.
13:51:26 <Phantom_Hoover> (From Cursebacon.)
13:52:11 <elliott> Phantom_Hoover: What none of you realise is that I... am..... the Facekicker.........
13:52:17 <elliott> I just adopted the other Elliott's identity.
13:52:41 <Phantom_Hoover> elliott, well, my theory is that Facekicker is future you sent back in time with neutrinos.
13:52:54 <elliott> oklopol: oh yeah, are you gonna ragequit reality when it turns out ftl is possible
13:52:58 <oklopol> i wish i had a brother who is the future.
13:53:04 <Phantom_Hoover> Although I realise oklopol may find this offensive.
13:53:35 -!- pikhq has joined.
13:53:47 <oklopol> Phantom_Hoover: i have no problem with whole futures being sent back, just objects from the future
13:53:53 <oklopol> well at least not a priori
13:54:04 <oklopol> come to think of it i suppose that's just as bad
13:54:07 -!- pikhq_ has quit (Ping timeout: 260 seconds).
13:54:17 <elliott> oklopol: you heard the neutrino thing right
13:54:21 <oklopol> yes
13:54:29 <elliott> come on, i want some oklopol time travel rage
13:54:40 <oklopol> i called my dad and told him his crazy physicist friend was right all along
13:54:58 <elliott> :DDD
13:55:06 <Ngevd> Is the sine of an angle unitless?
13:55:14 <elliott> Phantom_Hoover: btw are there any updates on that neutrino thing
13:55:24 <Phantom_Hoover> Not that I know of.
13:55:32 <Phantom_Hoover> Ngevd, yes, because angles are unitless.
13:55:43 <oklopol> elliott: sorry, i'm reserving my rage for more concrete things nowadays, trying to steer clear of religion and time travel
13:56:11 <Phantom_Hoover> Ngevd, come on, you've heard of radians.
13:56:18 <oklopol> unless you like to think of a degree as a unit
13:56:36 <Ngevd> I count the radian as a unit of angle
13:56:46 <elliott> Ngevd: radians are not a unit
13:57:11 <Ngevd> So they aren't
13:57:13 <Ngevd> Huh
13:57:15 <oklopol> right, just like pointers should be thought of as just integers you can add and multiply with each other
13:57:17 <Ngevd> I did not know that
13:57:17 <oklopol> who needs types
13:57:40 <elliott> oklopol: i realise you're being sarcastic but how are radians a unit
13:57:46 <oklopol> but yeah they aren't a unit in the physical sense
13:57:46 <Ngevd> But is the sine of a right angle the same no matter how you measure the right angle?
13:58:49 <elliott> no, if you use a metric ruler it's 0.9 off
13:58:52 <oklopol> elliott: not in the physical sense, but you should really think of the radians as points on an isomorphic copy of R/2*pi*Z, not as regular reals.
13:59:56 <oerjan> elliott: no updates but a constant stream of people insulting the scientists' intelligence by claiming the error is something stupidly obvious to anyone with a physics degree, see http://www.reddit.com/r/science/comments/lc0vv/fasterthanlight_neutrino_puzzle_claimed_solved_by/?limit=500
14:00:11 <elliott> oerjan: you mean like ais? :D
14:00:21 <oerjan> ...maybe.
14:00:50 <oerjan> everyone who thinks they haven't _properly considered the effects of relativity_...
14:00:58 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
14:01:45 -!- invariable has joined.
14:01:47 <oklopol> Ngevd: usually the sine is defined using radians, the degree circle thingie should be thought of as the constant 2pi/360 and radians shouldn't be given a unit, although you might wanna put (rad) after your number to avoid confusion
14:02:07 <elliott> oklopol: so hey remember the Cube
14:02:10 -!- invariable has quit (Client Quit).
14:02:12 <Ngevd> I was just trying to work out which one python used
14:02:13 <oklopol> and by degree circle thingie i mean that funny little circle hovering in the air for fun
14:02:18 <oklopol> radians
14:02:19 <elliott> oh PH
14:02:20 <elliott> PH
14:02:20 <elliott> dammit
14:02:21 <Ngevd> Turns out it's radios
14:02:21 <elliott> he'll be back
14:02:23 <elliott> to link oklopol to the thing
14:02:25 <Ngevd> *ans
14:03:13 <oerjan> Ngevd: i'd say sines are unitless even if you don't consider the angles to be
14:03:19 <oklopol> it's always radians, since all the math computer people use without understanding them when writing libraries works in radians, so you'd have to convert back and forth otherwise
14:03:29 <elliott> oklopol: remember the cube
14:03:34 -!- Phantom_Hoover has joined.
14:03:42 <Ngevd> Brilliant, that's that sorted
14:03:52 <elliott> Phantom_Hoover: link oklopol to the gravity thing, he saw it but didn't see the multi-planet options
14:03:59 <oklopol> all them math people use without understanding them. so i suppose math is the plural and maths is the singular
14:04:02 <Phantom_Hoover> http://www.matthen.com/javascript/gravity.html
14:04:09 <oklopol> elliott: sure
14:04:18 <elliott> oklopol: i'm bringing that shit back
14:04:19 <oklopol> i promise to remember it
14:04:22 <elliott> also yeah there's the gravity link
14:04:24 <elliott> click it
14:04:26 <elliott> enjpoy
14:04:34 <oklopol> fuck you elliott, i click whatever i want
14:04:38 <oklopol> for instance that link
14:05:54 <oklopol> elliott: i put two planets in there and hit the sun after two tounds
14:05:56 <oklopol> rounds
14:06:03 <elliott> oklopol: congratulations
14:06:44 <oklopol> oh i'm congratulating myself like an asshole on meth for being right earlier
14:06:56 <Phantom_Hoover> OK so I suggest anyone who says their mind is blown after learning anything be shot on sight.
14:07:22 <elliott> oklopol: how were you right
14:07:50 <oklopol> elliott: how are orbits stable if i keep hitting the planets & sun?
14:08:00 <elliott> oklopol: because the planets and sun are tiny and your ship is fucking huge in this?
14:08:13 <elliott> i mean
14:08:17 <elliott> it's not my fault you can't establish an orbit
14:08:23 <elliott> i think Phantom_Hoover is quite good at it
14:08:34 <Phantom_Hoover> I am the master of Hohmann transfers.
14:08:52 <oklopol> i'm not saying i can't establish an orbit, i'm saying orbits don't seem to be very stable
14:08:55 -!- Taneb has joined.
14:09:03 <elliott> how can you say that if you haven't established one
14:09:35 <elliott> Phantom_Hoover: you've done stable orbits with it right
14:09:36 -!- Taneb has quit (Read error: Connection reset by peer).
14:09:48 <Phantom_Hoover> Yeah.
14:09:56 <oklopol> by "orbits aren't stable" i don't actually mean a stable orbit isn't stable. i mean if you put shit in the simulator, they do not form nice orbits
14:10:03 <oklopol> if there are many of them
14:10:07 <Phantom_Hoover> Just like in real life, then?
14:10:10 <elliott> does that happen in real life
14:10:11 <elliott> yeah
14:10:35 <elliott> i mean you did basically start off saying that two-dee newtonian gravity wouldn't work well at all but it seems to be as working as well as these things work :P
14:10:49 <oklopol> i don't care about real life, but yes, it's possible 3d works just as bad, i haven't tried.
14:10:55 <Phantom_Hoover> oklopol, incidentally, do you know of any undecidable/turing-equivalent problems in graph theory?
14:11:16 <oklopol> well rewriting problems ofv
14:11:19 <oklopol> *ofc
14:11:31 <Phantom_Hoover> Erm, sorry, add 'colouring' in there.
14:12:13 <oklopol> elliott: what do you mean seems to work as well as these things work? i don't care about realism, i care about getting interesting orbits
14:12:27 <elliott> oklopol: well i mean
14:12:31 <Phantom_Hoover> Is it just me, or is WP down?
14:12:34 <elliott> oklopol: what is your standard for interesting orbits if nothing that exists
14:12:43 -!- Ngevd has quit (Ping timeout: 252 seconds).
14:12:47 <elliott> Phantom_Hoover: just you (isup.me)
14:13:48 <oklopol> elliott: that things often eventually start going around each other in stable ellipsoids from a random initial config?
14:14:11 <Phantom_Hoover> oklopol, that happens in the sim.
14:14:25 <Phantom_Hoover> Things either get ejected or form stable orbits.
14:15:10 <oklopol> yeah maybe, i suppose with a huge amount of objects this would be nice enough
14:15:38 <oklopol> if you have a big thing and a small thing, they will usually be pretty stable at least
14:15:44 <Phantom_Hoover> No, just look at the 4-star system.
14:15:53 <oklopol> if you have multiple big things, they start a fight
14:16:16 <oklopol> Phantom_Hoover: i'm looking at that right now, one of the four starts flew off and hit my ship
14:16:28 <oklopol> after i pressed a key for like a millisecond
14:16:35 <oklopol> aaaand i'm off to space
14:17:13 -!- oerjan has quit (Quit: Later).
14:17:17 <oklopol> but yeah i dunno how this would work if you have enough objects that you can afford most of them hitting each other
14:17:23 <oklopol> perhaps really neatly
14:18:19 <oklopol> hehe, nice spaghetti these guys are drawing
14:19:18 <elliott> what if you had a billion objects......
14:19:39 <oklopol> anyway i think i'm sticking with my idea of having a concept of an orbit in the actual physics. if only because i don't want to use existing ones because this universe kind of sucks ass.
14:22:33 <oklopol> really i want something like minecraft with polygons and space travel
14:22:55 <oklopol> and prolly 2d because 3d just feels so old-fashioned and dull
14:24:12 <oklopol> hexagons might work nicely tho as a primitive shape
14:26:44 <oklopol> but maybe that doesn't really integrate into the whole gluing shit together optimization
14:57:21 -!- oklopol has quit (Ping timeout: 276 seconds).
15:03:59 -!- pikhq_ has joined.
15:04:25 -!- pikhq has quit (Ping timeout: 252 seconds).
15:20:51 -!- Timwi has joined.
15:21:01 <Timwi> Hello
15:25:59 -!- katak has joined.
15:34:19 -!- Phantom_Hoover has quit (Quit: Leaving).
15:34:24 -!- Phantom__Hoover has joined.
15:39:06 -!- Phantom__Hoover has quit (Ping timeout: 248 seconds).
15:39:57 -!- Phantom_Hoover has joined.
15:47:11 -!- Timwi has quit.
15:51:06 -!- nooga has joined.
15:52:51 <elliott> hi katak
15:52:53 <elliott> `? welcome
15:52:56 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
15:55:12 -!- Timwi has joined.
15:55:53 <Timwi> ... and hello again
15:56:21 <elliott> hi
15:57:58 -!- ais523 has joined.
16:23:49 -!- monqy has joined.
16:26:38 -!- tiffany has joined.
16:27:49 -!- zzo38 has joined.
16:28:38 <zzo38> If you add up all positive integers will you get -1/12 as the answer?
16:28:46 <elliott> Yes.
16:29:02 <Timwi> ... unless you round it
16:29:12 <elliott> Zeta regularisation is the best thing.
16:31:21 <zzo38> Can you explain how? I do not understand how. I can understand how you can get -1/3 if you add $2^0+2^2+2^4+2^6+2^8+2^10+2^12$ and so on; I have done this calculation myself in various ways and have always gotten the answer -1/3 if you add 2 to power of even natural numbers infinite series.
16:32:20 <Timwi> wtf, I thought it was a joke
16:32:22 <zzo38> (One way is to write the answer in binary notation, from which it can easily be seen that $3x+1=0$ if $x$ is the answer)
16:32:31 <elliott> zzo38: Z(s) = sum n=1 to inf n^-s
16:32:38 <elliott> so if you can make a sum look like the RHS, you can calculate it with the LHS :-)
16:32:46 <elliott> That's actually used seriously in some part of string theory, IIRC.
16:32:52 <elliott> It certainly gives very pretty results.
16:33:32 <elliott> also, 1 + 1 + 1 + ... = -1/2 :-)
16:34:07 <elliott> I like the infinite products too: prod n=1 to inf, n = sqrt 2pi.
16:45:07 <zzo38> I will continue to make the Super ASCII MZX Town (Part II) game. You can tell me ideas if you want to! Like Part I, it is full CP437, it has BIG_MONSTER, and you need all the purple keys. But this one has magic keycards; it has the Star Trek convention; MEDIUM_SIZE_MONSTER ask you for the book, the hat, the clock, and a copy of this game on VHS; there is a secret basement in the library; etc
16:49:23 -!- Ngevd has joined.
16:49:39 <zzo38> Like the Part I, it has a lot of scrolls, and finite resources (money, ammunition, health, keys, multimeter, etc)
16:49:41 <Timwi> ...?
16:49:48 <Ngevd> Hello!
16:49:56 <zzo38> Hello, World!
16:49:58 <Timwi> Hiya :)
16:53:09 <zzo38> On the shelf in the library is an optical disc, it is a CD on one side and a DVD on the other side. It contains a game titled "Sub EBCDIC ZZT Village", which claims to be similar to the present game, and contains a reference to an isomorphic but non-existent game. In addition, the game on that disc is licensed under the GNU GPL version 42.
16:53:20 -!- katak has quit (Remote host closed the connection).
16:53:37 <Ngevd> MYSTERIOUS
16:53:47 <zzo38> (The entire Super ASCII MZX Town series is public domain.)
16:54:00 -!- katak has joined.
16:56:14 <zzo38> Is there such things as optical discs that are a CD on one side and a DVD on the other side?
16:56:43 <Ngevd> I don't see why not
16:56:47 <elliott> zzo38: yep
16:56:50 <Ngevd> As in, top side and bottom side?
16:56:57 <Ngevd> Left side and right side would be tricky
16:57:10 <zzo38> Ngevd: Yes I mean top side and bottom side
16:57:20 <Ngevd> Yeah, that's a thing
16:58:22 <Timwi> Here on a CD is “left” anyway :)
16:58:25 <Timwi> s/Here/Where/
16:58:34 <elliott> That-away.
17:11:30 -!- Ngevd has quit (Quit: Goodbye).
17:14:45 <Timwi> Any admins here now?
17:16:12 <elliott> I don't think so; ais523 reads all wiki edits, though
17:31:26 <Gregor> OK, I'll admit that screen sharing's change from 10.5/6 -> 10.7 is a huge improvement. It's very nearly as useful as Xvnc now.
17:36:29 -!- Ngevd has joined.
17:37:03 <Ngevd> Hello!
17:37:33 <zzo38> I want to make the spells in Icosahedral RPG to form a category.
17:38:18 <zzo38> (As in, mathematical category theory)
17:38:27 <Ngevd> I have no idea what that would involve
17:39:34 <Ngevd> Hang on, brb
17:39:36 -!- Ngevd has quit (Client Quit).
17:40:03 <Timwi> I have no idea what any of this is about
17:48:11 <elliott> Gregor: Do you have a tool to merge two line-based pipes into another
17:48:19 <elliott> So that no lines end up intersecting awfully
17:48:46 <Gregor> Nope
17:49:14 <elliott> Gregor: sigh
17:49:20 <Gregor> Do YOUUUUUUUUUUU?
17:49:28 <elliott> Gregor: no, i want one :)
17:49:38 * Gregor nods sagely.
17:49:48 <Timwi> would be trivial to write in C#
17:49:59 <elliott> would be trivial to write in any language, just a pain
17:50:09 <Timwi> would be fun and painless to write in C# ;-)
17:50:13 <elliott> I doubt C#'s support for select() is very good
17:50:17 <elliott> which would be the pertinent thing to use here
17:51:03 <Timwi> No idea what select() does, but sounds like a hack. I’d just run two processes and read lines from their stdout in two separate threads
17:51:16 <Gregor> ... lol
17:51:23 -!- ive has joined.
17:51:28 <elliott> http://man.cx/select(2)
17:51:39 <elliott> threading-based IO has been dead for the last decade or so
17:51:47 <elliott> at least on platforms anyone actually uses for real serving.
17:52:08 <Timwi> “threading-based IO”?
17:52:18 <elliott> aka, "I’d just run two processes and read lines from their stdout in two separate threads"
17:52:20 <Timwi> There’s nothing special about reading from the STDOUT of a process... nothing to do with threads
17:52:38 <Timwi> I don’t see what relevance the threads are to the I/O
17:52:42 <elliott> two processes ~ two thread
17:52:42 <elliott> s
17:52:45 * Gregor gets the popcorn.
17:54:32 <elliott> Timwi: but anyway, there's no hack about blocking until one of the given file descriptors has events available
17:54:36 <elliott> that's simple event notification
17:56:49 <Timwi> And that is exactly what my solution does
17:57:13 -!- Ngevd has joined.
17:57:22 <Ngevd> Yeah, my IRC client isn't working
17:57:24 <elliott> Well, there were no processes meant to be involved anyway
17:57:31 <elliott> it just needs to take the names of two pipes and output to stdout
17:57:34 <Ngevd> Am using webchat
17:57:35 <elliott> (which can then be redirected to another pipe)
17:57:38 <Timwi> I see. Then I don’t know what a line pipe is :)
17:57:43 <elliott> line pipe?
17:57:56 <elliott> I just want to merge two http://en.wikipedia.org/wiki/Named_pipe s on a line-based level
17:58:24 <Timwi> UNTESTED: http://pastebin.info/?dl=2337
17:58:44 <Timwi> (assumes the existence of a “commandLines” list/array/enumerable)
17:59:10 <Madoka-Kaname> Hmm...
17:59:25 * Madoka-Kaname has never used asynchronous IO before
17:59:36 <Madoka-Kaname> elliott, how painful is it?
17:59:42 <elliott> Timwi: I think there's a race condition there
18:00:01 <elliott> oh, hmm, no
18:00:06 <Madoka-Kaname> I might be able to use Scala reset/shift
18:00:32 <Madoka-Kaname> Dunno how much it'll help.
18:00:37 <Ngevd> Uniquode is going to be interesting when it gets to...
18:00:43 <Ngevd> Anywhere, really
18:01:10 <Ngevd> I was going to say "arrows"
18:01:34 <Timwi> There’s almost nothing about Unicode that is /not/ interesting to some degree :)
18:01:42 <elliott> Uniquode = Unicode?
18:01:46 <Ngevd> No
18:01:57 <Timwi> Argh :) Why is everyone speaking in code today? :)
18:02:07 <elliott> http://esolangs.org/wiki/Uniquode
18:02:16 <Timwi> Oooh :)
18:02:45 <Ngevd> Uniquode ≈ UniCode
18:03:01 <Timwi> Interesting idea!
18:03:07 <Ngevd> What's in that article has already been completely destroyed
18:03:19 <Ngevd> And elliott had the idea first
18:03:39 <Ngevd> http://esolangs.org/wiki/UniCode
18:03:40 <Timwi> Well it’s kind of ironic you should mention Uniquode then, because I’m currently trying to write 99 bottles in Sclipting
18:04:26 <Ngevd> That chinese golf one?
18:04:30 <Timwi> Yes
18:04:43 <Timwi> I just added a reverse for loop instruction for this :)
18:07:34 <shachaf> elliott: Nothing wrong with thread-based I/O, FSVO "thread"!
18:07:47 <elliott> shachaf: Pretty sure .NET's threads are heavyweight.
18:07:59 <shachaf> Doesn't Windows have lightweight "fibres" of some sort?
18:08:01 <Timwi> Yeah, and there’s a whole whooping two of them
18:08:02 -!- Taneb has joined.
18:08:17 <elliott> shachaf: I believe so.]
18:08:19 <elliott> s/]//
18:08:20 <Taneb> Botherations
18:08:29 <shachaf> Oh, it's not for .NET, though, maybe?
18:08:32 * shachaf doesn't know.
18:08:37 <Taneb> Anyway, we should form a UNICODE BASED ESOTERIC PROGRAMMING LANGUAGE CONSORTIUM!
18:08:40 <elliott> Wouldn't surprise me.
18:08:58 <shachaf> Why would you use .NET when you can use Ruby for everything?!
18:09:14 -!- Ngevd has quit (Ping timeout: 265 seconds).
18:09:21 <shachaf> It's the language of the future.
18:09:23 <Taneb> Ruby .NET
18:09:28 <Taneb> There I go
18:09:46 <elliott> ret
18:09:52 <shachaf> rep ret
18:10:05 <elliott> That... returns for each non-zero byte pointed to by blah blah advancing?
18:10:09 <Timwi> All of my esolangs so far use Unicode characters
18:10:23 <shachaf> elliott: gcc emits it in some cases.
18:10:29 <Timwi> I had a vague idea for one that doesn’t, but haven’t thought it through yet
18:10:31 <elliott> shachaf: Wait, it's real?
18:10:35 <shachaf> Yes.
18:10:43 <elliott> Timwi: Technically, almost every esolang released uses Unicode characters.
18:10:47 <shachaf> It helps with AMD's implementation of branch prediction in some CPU. Or something.
18:10:47 <elliott> shachaf: Amazing.
18:11:05 <Timwi> elliott: I thought about how to phrase it, but decided it should be clear what I meant :-p
18:11:12 <shachaf> elliott: There's also rep nop.
18:11:18 <elliott> shachaf: Does it actually repeat the return, though?
18:11:19 <Taneb> Piet doesn't
18:11:23 <shachaf> No.
18:11:26 <elliott> shachaf: Sads.
18:11:36 <Taneb> By Unicode-based, in this context, I was referring to the entire of Unicode
18:11:45 <Taneb> Possibly minus non-printing characters
18:11:46 <fizzie> It should work as a multi-level out-of-function thing. :/
18:11:59 <elliott> fizzie: Like "k".
18:13:16 <fizzie> Yes, exactly like that. (Would "RBUS"4( ... 4kR work?)
18:15:20 <zzo38> Do you like Part I or Part II (or even Part III or Part IV) of Super ASCII MZX Town?
18:16:47 -!- katak has quit (Ping timeout: 240 seconds).
18:17:47 -!- katak has joined.
18:18:58 <Taneb> Thoughts on UBEPLC?
18:19:07 <zzo38> What is UBEPLC?
18:19:21 <Taneb> UNICODE BASED ESOTERIC PROGRAMMING LANGUAGE CONSORTIUM
18:19:53 <Taneb> Because a unicode based esoteric programming language is too much for one person to make
18:20:16 <zzo38> It is wiki so you can multiple people can write it, possibly on the talk page too.
18:21:00 <Taneb> I mean, there's at least two esoteric programming language work in progresses that claim to use all of unicode
18:21:26 <zzo38> Including control characters and private use characters?
18:21:39 <Taneb> Possibles
18:22:37 <Taneb> UBEPLC is a motion to merge efforts to create an actual language
18:23:08 <zzo38> O, OK. If that is the case, then yes you should do that.
18:23:45 -!- katak has quit.
18:25:00 <zzo38> I think there is esolang with Klingon writing, but is there a program that allows it to use Klingon scripts instead of using the Latin alphabet to write them?
18:31:43 <zzo38> How does anonymous macros work? And retroactive self-modification? What does missionary commands mean?
18:33:32 <fizzie> I don't think var'aq can be written in the Klingon script, possibly because it didn't make it to Unicode and the current private-use area based thing is so arbitrary.
18:34:19 <Timwi> You could use a font that has Klingon characters in the Latin range though
18:34:21 <zzo38> Then use an encoding other than Unicode.
18:34:54 <Taneb> Anonymous macros don't work, retroactive self-modification is a bit like ais523's Feather, and actually does work
18:35:19 <Taneb> A missionary command is a command that turns something into a Church encoding of it
18:35:31 <zzo38> OK.
18:37:33 <zzo38> Maybe you can use a Klingon encoding that puts the codes with the high bit set in a 8-bit encoding, and with the high bit clear uses ASCII.
18:40:23 <elliott> Index of /db
18:40:23 <elliott> Name Last modified Size Description
18:40:23 <elliott> Parent Directory -
18:40:23 <elliott> latest.sql.bz2 15-Oct-2011 22:27 19M
18:40:23 <elliott> notlatest.sql.bz2 21-Jul-2009 22:25 9.2M
18:40:26 <elliott> Good file naming.
18:41:25 <Taneb> Judging by the dates, it's accurate too
18:41:51 <fizzie> latest_REAL2_for_real_this_time.sql.bz2
18:43:14 <fizzie> And of course the currently-in-production front page, index_latest_test7_typofix.php.
18:44:53 <Taneb> What should ↚ do?
18:45:13 <elliott> Taneb: Break a reverse implication.
18:45:36 <Taneb> I was thinking more along the lines of "don't turn left"
18:45:48 <elliott> No lame.
18:46:06 <Timwi> “don’t shoot arrows at civilians”?
18:46:10 <elliott> It should modify the variables such that the boolean operation of reverse implication evaluates to false given them.
18:46:33 <Timwi> boolean satisfiability? :-p
18:47:52 <elliott> Timwi: If it takes too long the interpreter just starts mutating logical constants at random until it works.
18:48:01 <elliott> Eventually it gets sick and rewrites your program to have an easier problem to solve.
18:48:35 <Timwi> Yeah, like wiping it :-p
19:20:15 -!- sllide has joined.
19:25:52 <Timwi> I feel terrible for being the last one to say anything. It makes it look like I killed the conversation
19:28:13 <Taneb> I know the feeling
19:28:52 <Taneb> What could ↜ do?
19:39:43 <zzo38> I made up esolang now.
19:40:18 <Timwi> Taneb: “get drunk”?
19:42:10 <zzo38> http://esolangs.org/wiki/Bruijndejx
19:46:08 -!- oerjan has joined.
19:48:53 <Taneb> Timwi: could do
19:48:57 <Taneb> zzo38: interesting
19:49:01 <Taneb> oerjan: Hello
19:49:09 <oerjan> yo
19:50:15 <oerjan> <zzo38> I want to make the spells in Icosahedral RPG to form a category.
19:50:28 <zzo38> Does this look like a proper implementation of De Bruijn indexing? http://sprunge.us/FDCd
19:50:45 <zzo38> oerjan: Yes, that is what I wanted it to do. But I don't know the details.
19:51:06 <oerjan> well if you have one spell turning an A into a B, and another spell turning a B into a C, then doing the spells one after the other would seem to be an obvious composition
19:52:14 <zzo38> oerjan: Yes, I did think of that. But not all spells are transmutation.
19:52:33 <oerjan> although if you have a spell to split an A into a B and a C, it seems like you would get use for Arrows...
19:54:21 <oerjan> anyway, it seems like making the category objects the state of prerequisites and result of spells would be a start
19:54:48 <zzo38> OK.
19:58:20 <oerjan> zzo38: when you are doing both x == i and x > i tests you can also do a case compare x i of { LT -> ...; EQ -> ...; GT -> ... }
19:58:44 <Madoka-Kaname> Well...
19:58:56 <Madoka-Kaname> What kind of operations can you do if you had, say, a fireball and a magic dart spell.
19:59:35 <zzo38> oerjan: OK, thank you for that information.
20:00:12 -!- TeruFSX has quit (Remote host closed the connection).
20:00:15 <oerjan> this might be slightly more efficient, in theory, if the Ord instance is written for it
20:00:22 <zzo38> Madoka-Kaname: Yes; not all spells would be transmutations. Some would affect instances of other spells (or itself), some would create fireballs, some might be divination, etc
20:00:44 <zzo38> oerjan: If the Ord instance is written for what?
20:01:07 <zzo38> But do you know if there is anything wrong with this program that results in incorrect answers?
20:01:08 <oerjan> to implement compare directly
20:01:19 <oerjan> i don't know if it matters in practice
20:03:11 <zzo38> Or if there is anything inconsistent in my program?
20:03:25 <oerjan> oh also it is more idiomatic to do assignLocal i v h = case h of { as assignLocal i v (Apply x y) = ...; ... etc.
20:06:12 <zzo38> OK
20:10:33 -!- Taneb has quit (Ping timeout: 265 seconds).
20:11:01 <oerjan> zzo38: i don't see anything wrong with your algorithm
20:12:02 <zzo38> OK
20:18:31 <zzo38> Should I put in annotations for expressions/patterns?
20:19:15 -!- Taneb has joined.
20:19:16 <zzo38> Do you think it would help much?
20:20:31 <Taneb> Hello!
20:28:33 <Phantom_Hoover> Oh god, Derren Brown is doing another series.
20:29:18 <pikhq_> That's positively moronic.
20:29:22 <elliott> Does Derren Brown have anything more to offer the world at this point? I think we get the idea.
20:29:29 <pikhq_> Somehow, fglrx-driver got removed from Debian testing.
20:29:32 <pikhq_> It's still in sid.
20:31:46 <oerjan> zzo38: i see ghc core's Expr, which is slightly similar to your Exp, contains a Note constructor for that
20:31:57 <oerjan> http://www.haskell.org/ghc/docs/latest/html/libraries/ghc-7.2.1/CoreSyn.html#t:Expr
20:32:11 <oerjan> (only slightly)
20:34:07 -!- Timwi has changed nick to Timwi-Away.
20:37:00 <zzo38> Well, I was thinking to use a type parameter for the type of annotations (and then making the functor)
20:38:24 <oerjan> zzo38: even more flexible might be to make the type parameter of kind * -> *
20:38:46 <oerjan> ...probably overkill
20:39:08 <zzo38> oerjan: I was thinking of that too, and also thinking I don't know what to do about that and agree with you about probably overkill, too.
20:42:20 -!- sebbu has quit (Read error: Connection reset by peer).
20:43:13 <oerjan> zzo38: well the question is whether you'd actually need the functor instance for anything
20:45:04 <zzo38> To change annotations which might be used if one transformation requires one kind of annotations and another one uses different annotations, I suppose.
20:45:34 -!- sebbu has joined.
20:45:35 -!- sebbu has quit (Changing host).
20:45:35 -!- sebbu has joined.
20:47:51 <oerjan> hm ghc core Expr does sort of support an arbitrary type if you use Expr (TaggedBndr t), although the annotation is only on binders
20:50:12 <oerjan> oh huh they have AnnExpr further down
20:58:07 <oerjan> <fizzie> I don't think var'aq can be written in the Klingon script, possibly because it didn't make it to Unicode and the current private-use area based thing is so arbitrary.
20:58:47 <oerjan> i vaguely recall way back when i read the conlang list that there was an attempt to coordinate private-use assignments for conlangs
20:58:52 <oerjan> don't know what came of it
20:59:06 <elliott> http://www.evertype.com/standards/csur/
20:59:22 <zzo38> Even if you don't use the Unicode, you can use a custom encoding instead
20:59:29 -!- nooga has quit (Ping timeout: 258 seconds).
20:59:32 <elliott> has the all important SEUSS LETTER ABCDEFGHIJKLMNOPQRSTUVWXYZ: http://www.evertype.com/standards/csur/seuss.html
21:02:42 -!- Taneb has quit (Quit: Page closed).
21:04:59 <Phantom_Hoover> "Finland, vittu saatana!"
21:05:06 <Phantom_Hoover> Excuse me someone definnify this.
21:06:09 <Deewiant> http://www.google.com/translate_t
21:06:09 <elliott> Apparently it's Swedish.
21:06:14 <elliott> I...
21:06:16 <elliott> Wait
21:06:17 <elliott> I haveto
21:06:18 <elliott> take
21:06:19 <elliott> a screenshot
21:06:20 <elliott> Phantom_Hoover: stop
21:07:00 <elliott> Phantom_Hoover: Deewiant: http://i.imgur.com/FmxnS.png
21:07:27 <Deewiant> fi:Finland == en:Ireland
21:07:30 <Deewiant> Didn't you know?
21:07:51 <oerjan> at least in swearing-related contexts. makes sense.
21:08:27 <elliott> Phantom_Hoover: come on
21:08:28 <elliott> Phantom_Hoover: that's
21:08:29 <elliott> amazing
21:08:36 <Phantom_Hoover> Yes.
21:08:38 <Phantom_Hoover> Yes it is.
21:15:59 -!- GreaseMonkey has joined.
21:20:40 * oerjan smells a kiwi
21:29:39 -!- nooga has joined.
21:34:44 -!- elliott has quit (Remote host closed the connection).
21:37:51 <ais523> map(_, L, []) :- \+ free(L), L = [], !. map(_, [], []). map(Func, [H|T], [H2|T2]) :- Eval =.. [Func, H, H2], Eval, map(Func, T, T2).
21:38:03 <ais523> is that an abomination of Prolog, or normal style?
21:38:23 <ais523> you'd think that something like that would be in the standard library if you were meant to do it
21:38:35 <ais523> the first case is an optimisation to make it tail-recursive
21:38:46 <ais523> free(X) :- \+ (\+ (X = 1)), \+ (\+ (X = 2)).
21:39:01 <ais523> oh, forgot the helper definition; that is in the standard library of some Prologs, but either it isn't in mine, or I forgot what it was called
21:41:10 <ais523> and like any good Prolog function, it works backwards too
21:41:23 <ais523> s/tail-recursive/deterministic/
21:46:07 -!- nooga has quit (Read error: Connection reset by peer).
21:46:33 -!- nooga has joined.
21:50:10 <ais523> actually, I don't think it works if you don't give the function you're mapping on
21:50:14 <ais523> but that would be ridiculous if it did
21:52:01 -!- nooga has quit (Ping timeout: 260 seconds).
21:53:41 -!- nooga has joined.
21:56:42 -!- hagb4rd has joined.
22:06:38 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net).
22:06:49 <monqy> what is it lambda prolog that does unification on functions? are there any good uses for that
22:07:09 -!- Vorpal has joined.
22:07:45 <oerjan> ais523: hm why couldn't the first two lines be simply combined to map(_, [], []) :- !. ?
22:08:02 <ais523> because that's wrong
22:08:21 <ais523> if you run it as map(anything, X, Y), it'd return only X=[], Y=[]
22:08:37 <ais523> while it should also generate one-element, two-element, etc. lists as possible results
22:08:53 <ais523> so you have to check that the second argument isn't free before doing the cut
22:09:15 <oerjan> ais523: hm i may have misremembered what \+ is
22:09:17 <ais523> there is a little ridiculousness in writing not (not not X=1 and not not X=2), though
22:09:20 <ais523> \+ is just not
22:09:40 <ais523> it's defined along the lines of \+ X :- X, !, fail. \+ _.
22:09:52 <ais523> although it's typically in the standard library so you don't need the definition
22:11:46 -!- pikhq has joined.
22:13:24 -!- pikhq_ has quit (Ping timeout: 255 seconds).
22:13:47 <oerjan> monqy: i vaguely recall some theorem provers depend on unification of functions
22:14:05 <monqy> hmm
22:14:09 <oerjan> typed unification, though
22:14:42 <ais523> it's a pity you can't write map(X, [1,2,3,4,5], [2,4,6,8,10]). and actually get a result in X
22:15:01 <oerjan> ...you just said that would be ridiculous :P
22:15:08 <ais523> you could in Proud, but it's uncomputable precisely because it lets you do that sort of thing
22:15:14 <ais523> oerjan: it is ridiculous, but it's also a pity
22:15:25 <ais523> it's ridiculous enough that writing Eval like that actually works
22:15:53 <oerjan> ais523: btw isn't there a predicate like = except which doesn't unify? then you wouldn't need free there
22:16:23 <ais523> oerjan: there's not-not-equals, which I used in the definition of free, but although it doesn't unify it'll still match a free variable with anything
22:16:33 <ais523> whereas I want to match a bound variable to [], and reject free variables
22:19:09 <oerjan> http://www.gprolog.org/manual/html_node/gprolog027.html#Standard-total-ordering-of-terms
22:19:16 <oerjan> looks like == should work?
22:20:04 <ais523> wow, == is so massively unPrologish
22:21:27 <ais523> and I get a nagging feeling that it should really be called ===
22:21:31 <ais523> with == reserved for not-not-equals
22:21:35 <ais523> oh well, can't violate the standard
22:26:08 -!- ive has quit (Ping timeout: 260 seconds).
22:27:09 -!- Timwi-Away has changed nick to Timwi.
22:27:10 <Timwi> Hello
22:27:55 <Timwi> Hey ais523, how are you? :)
22:28:59 -!- Patashu has joined.
22:31:03 <Vorpal> <ais523> there is a little ridiculousness in writing not (not not X=1 and not not X=2), though <-- why would you ever do that?
22:31:16 <ais523> Vorpal: to verify that X is free
22:31:25 <ais523> you can't assign two different valuables to a variable that already has a set value
22:31:25 <Vorpal> ais523: eh, which language is this in?
22:31:33 <ais523> and the double-not prevents the assignment being permanent
22:31:35 <ais523> and Prolog
22:31:38 <Vorpal> ah
22:31:44 <Vorpal> ais523: so there is no compare?
22:32:08 <ais523> Vorpal: you're trying to verify that a variable has no value
22:32:13 <ais523> I don't see how you'd do that with a comparison
22:32:20 <ais523> no value isn't a value you can compare to
22:32:22 <ais523> it isn't a value
22:32:27 <Vorpal> ais523: hm, something undefined() ?
22:32:33 <Vorpal> or is-undefined
22:32:34 <Vorpal> or whatever
22:32:54 <ais523> Vorpal: no, it's not like NULL or undefined or whatever
22:32:58 <ais523> it is the absence of a value
22:33:08 <ais523> Prolog uses SSA, in a sense, in that once a variable has a value, you can't change it
22:33:24 <ais523> unlike SSA, though, a variable can stay without a value arbitrarily long, rather than having to have one at intializaiton
22:33:34 <Vorpal> heh
22:33:49 <Vorpal> okay that explains it
22:33:50 <Vorpal> still weird
22:34:07 <ais523> also, two variables can be unified, so that they have the same value eventually when either are assigned
22:34:12 <ais523> a bit like quantum entanglement
22:34:47 <Vorpal> he
22:34:48 <Vorpal> heh*
22:39:14 <zzo38> I think some Perl modules can also make quantum entanglement variables. But a different way would be to represent the state vector.
22:39:39 <Patashu> quantum computing does sound perlish
22:39:48 <Patashu> I assume hardware acceleration will be available in some 20 years?
22:40:48 <Vorpal> night
22:41:18 <ais523> CLC-INTERCAL's "quantum changes" isn't really
22:41:21 <ais523> it's just a sort of threading
22:46:33 <oerjan> `ls bin
22:46:35 <HackEgo> ​? \ addquote \ allquotes \ calc \ define \ delquote \ etymology \ forget \ fortune \ frink \ google \ json \ k \ karma \ karma+ \ karma- \ learn \ log \ logurl \ macro \ marco \ paste \ pastekarma \ pastelog \ pastelogs \ pastenquotes \ pastequotes \ pastewisdom \ ping \ prefixes \ quine \ quote \ quotes \ roll \ toutf8
22:46:58 <oerjan> `frink 1 g -> m/s^2
22:47:09 <HackEgo> Conformance error \ Left side is: 1/1000 (exactly 0.001) kg (mass) \ Right side is: 1 m s^-2 (acceleration) \
22:47:16 <oerjan> oops
22:49:20 <oerjan> `frink 9.8 m/s^2 / c * year
22:49:28 <HackEgo> 1.0315732310779089713
22:49:55 <oerjan> `frink tanh(9.8 m/s^2 / c * year)
22:50:03 <HackEgo> Warning: undefined symbol "tanh". \ 1.0315732310779089713 tanh (undefined symbol)
22:50:13 <oerjan> hmph
22:50:20 <oerjan> `frink tanh[9.8 m/s^2 / c * year]
22:50:28 <HackEgo> 0.77453854135156246931
22:50:29 <zzo38> ais523: I know CLC-INTERCAL's quantum computing is not real quantum computing. But CLCLC-INTERCAL might have proper quantum computing
22:50:59 <ais523> zzo38: note that proper quantum computing needs to be reversible up until you collapse the state, or it uses infinite (or very large) amounts of energy
22:51:11 -!- Rugxulo has joined.
22:51:31 <Rugxulo> Deewiant here? anyone seen him lately?
22:51:35 <Deewiant> Pong
22:52:02 <oerjan> Rugxulo: no such person, nothing to see here, move on
22:52:08 <Rugxulo> did you know that (2011-07-03) "current dmd (1.068 & 2.053)" fixes your bug report (finally)?
22:52:38 <zzo38> ais523: I know that.
22:52:57 <Rugxulo> also, it seems work is heavily under way to integrate GDC into GCC proper
22:53:13 <Deewiant> #3001? Yes, I get notifications from the 'zilla
22:53:30 <Rugxulo> good to know
22:53:59 <Rugxulo> I just found out and wanted to make sure you knew (as two years is quite a long time)
22:56:06 <Deewiant> Two years probably brings the mean time for my (nontrivial) bug reports down
22:58:48 -!- nooga has quit (Ping timeout: 260 seconds).
22:58:48 <Rugxulo> I also guess it's pointless to mention that FBBI was updated too? ;-)
22:59:38 -!- ais523 has quit (Ping timeout: 248 seconds).
22:59:48 <Deewiant> Somebody announced that here when it happened
23:00:39 <Rugxulo> I figured (just haven't been here a lot lately)
23:12:56 -!- tiffnya has joined.
23:13:11 -!- tiffnya has quit (Remote host closed the connection).
23:14:01 -!- tiffany has quit (Ping timeout: 252 seconds).
23:23:43 <zzo38> As someone says:
23:23:56 <zzo38> You can tell who the shoe maker is because they have holes in their shoes.
23:24:14 -!- pikhq_ has joined.
23:24:18 -!- pikhq has quit (Ping timeout: 245 seconds).
23:33:55 -!- ive has joined.
23:40:30 -!- Rugxulo has quit (Quit: ChatZilla 0.9.87 [Firefox 7.0.1/20110928134238]).
23:40:52 -!- sllide has quit (Read error: Connection reset by peer).
23:46:23 -!- Timwi has quit.
23:47:24 <Phantom_Hoover> Note to self: reading r/math is not wise shortly after applying to do maths at university.
23:48:56 <oerjan> funny guy
23:49:33 <Phantom_Hoover> Talking to an unemployed mathematician is also perhaps unwise.
23:49:55 <Phantom_Hoover> http://en.wikipedia.org/wiki/Field_with_one_element
23:50:02 * oerjan lurches away
23:50:03 <Phantom_Hoover> I love how this reads like it's about physics.
23:50:19 <Phantom_Hoover> "F1 is believed to have the following properties."
23:50:45 <Phantom_Hoover> "Future experiments with high-energy theorem accelerators may reveal its true nature."
23:51:37 <oerjan> well physicists have been pretty good at inventing math before proving it actually works :P
23:52:04 <Phantom_Hoover> I'm afraid that one goes over my head (do I shoot myself now).
23:52:11 <oerjan> *without, even
23:54:58 * Phantom_Hoover → sleep
23:55:02 -!- Phantom_Hoover has quit (Quit: Leaving).
23:56:10 <oerjan> @tell Phantom_Hoover for a start, calculus was used for hundreds of years without a sound logical basis. dirac used "functions" which did not exist for quantum mechanics. and one of the millennium problems is proving that the mathematics of quantum field theory is actually mathematically consistent. also i'm tempted to ban you for quitting the moment i had finished writing the previous sentence.
23:56:10 <lambdabot> Consider it noted.
23:57:24 <zzo38> That is not a very good reason to ban someone.
23:57:45 <oerjan> and you still don't have a working joke detector :P
23:58:55 <oerjan> not that one is necessary here
23:59:33 <oerjan> *that having one
23:59:42 <CakeProphet> oerjan: I am deeply offended that you would think that joke detectors even exist.
2011-10-17
00:00:50 <oerjan> CakeProphet: it is my fundamental human right to believe in joke detectors, just as it is your right not to have a working joke detector detector
00:24:32 <zzo38> Does the prime vertical circle have anything to do with solar noon?
00:27:12 <zzo38> I found this: http://kirstenmichel.com/ss2.html
00:48:49 <pikhq_> Japanese drinking culture frightens me.
00:48:55 <zzo38> Why?
00:48:56 <pikhq_> 飲み放題. That means "all you can drink".
00:49:00 <pikhq_> This is a thing.
00:53:16 <oerjan> you know, american "all you can eat" isn't _that_ much less frightening :P
00:53:43 <oerjan> (ok, so "all you can eat" exists in norway too)
00:54:06 <pikhq_> Except "all you can eat" is not the center of an evening's activities.
00:54:15 <oerjan> hm
00:54:20 <oerjan> food ->
00:57:31 -!- monqy has quit (Ping timeout: 248 seconds).
01:08:21 -!- oerjan has quit (Quit: Good night).
01:13:23 -!- pikhq has joined.
01:13:38 -!- pikhq_ has quit (Ping timeout: 255 seconds).
01:16:05 -!- Timwi has joined.
01:16:43 -!- Timwi has quit (Client Quit).
01:19:37 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
01:20:29 -!- Timwi has joined.
01:21:25 <Gregor> I finally have X-Chat on Mac
01:42:53 <Gregor> "* Channel #esoteric created on Sun Nov 26 01:42:50 2006" // we're nearing the five-year anniversary of a rather-arbitrary date that Freenode thinks #esoteric was created on for some reason.
01:44:13 -!- pikhq_ has joined.
01:44:46 -!- pikhq has quit (Ping timeout: 260 seconds).
01:45:30 -!- Timwi has quit.
01:48:43 -!- CakeProphet has quit (Ping timeout: 248 seconds).
01:53:27 -!- TeruFSX has joined.
02:05:34 -!- Jafet has joined.
02:14:20 -!- CakeProphet has joined.
02:14:20 -!- CakeProphet has quit (Changing host).
02:14:20 -!- CakeProphet has joined.
02:17:05 -!- MDude has changed nick to MSleep.
02:27:53 <CakeProphet> > letters
02:27:54 <lambdabot> Not in scope: `letters'
02:31:11 <zzo38> Is that not the date this channel was created on?
02:32:07 <zzo38> It was registered before then, though.
02:32:51 <CakeProphet> > let letters = ['a'..'z']; t = zip letters ((drop 13 letters) ++ (take 13 letters)); rot13 c = fromMaybe c (lookup c t) in map rot13 "Grego is actually Roger G."
02:32:52 <lambdabot> "Gertb vf npghnyyl Rbtre G."
02:32:59 <CakeProphet> oh...
02:33:00 <CakeProphet> right
02:33:05 <CakeProphet> not capital letters.
02:33:34 <CakeProphet> :t lookupWithDefault
02:33:35 <lambdabot> Not in scope: `lookupWithDefault'
02:33:39 <CakeProphet> @hoogle lookup
02:33:40 <lambdabot> Prelude lookup :: Eq a => a -> [(a, b)] -> Maybe b
02:33:40 <lambdabot> Data.HashTable lookup :: HashTable key val -> key -> IO (Maybe val)
02:33:40 <lambdabot> Data.IntMap lookup :: Key -> IntMap a -> Maybe a
02:33:57 <CakeProphet> @hoogle a -> b -> [(a,b)] -> Maybe b
02:33:58 <lambdabot> Data.Graph.Inductive.Query.SP spLength :: (Graph gr, Real b) => Node -> Node -> gr a b -> b
02:33:58 <lambdabot> Data.Array.MArray writeArray :: (MArray a e m, Ix i) => a i e -> i -> e -> m ()
02:33:58 <lambdabot> Data.Graph.Inductive.Query.MaxFlow maxFlow :: (DynGraph gr, Num b, Ord b) => gr a b -> Node -> Node -> b
02:34:01 <CakeProphet> @hoogle a -> b -> [(a,b)] -> b
02:34:01 <lambdabot> Data.Graph.Inductive.Query.SP spLength :: (Graph gr, Real b) => Node -> Node -> gr a b -> b
02:34:02 <lambdabot> Data.Graph.Inductive.Query.BFS lesp :: Graph gr => Node -> Node -> gr a b -> LPath b
02:34:02 <lambdabot> Data.Graph.Inductive.Query.BFS esp :: Graph gr => Node -> Node -> gr a b -> Path
02:34:06 <CakeProphet> er, no.
02:34:14 <CakeProphet> @hoogle b -> a -> [(a,b)] -> b
02:34:15 <lambdabot> Data.Graph.Inductive.Query.SP spLength :: (Graph gr, Real b) => Node -> Node -> gr a b -> b
02:34:15 <lambdabot> Data.Graph.Inductive.Query.BFS lesp :: Graph gr => Node -> Node -> gr a b -> LPath b
02:34:15 <lambdabot> Data.Graph.Inductive.Query.BFS esp :: Graph gr => Node -> Node -> gr a b -> Path
02:34:24 <CakeProphet> there's no lookup with default??
02:34:48 <CakeProphet> @hoogle b -> a -> Map a b -> b
02:34:49 <CakeProphet> lambdabot hates me.
02:34:49 <lambdabot> Data.Map findWithDefault :: Ord k => a -> k -> Map k a -> a
02:34:49 <lambdabot> Data.Graph.Inductive.Query.SP spLength :: (Graph gr, Real b) => Node -> Node -> gr a b -> b
02:34:49 <lambdabot> Data.Graph.Inductive.Query.BFS lesp :: Graph gr => Node -> Node -> gr a b -> LPath b
02:34:54 <CakeProphet> ah okay.
02:35:31 <pikhq_> > let lower = ['a'..'z'];upper = ['A'..'Z'];f x = zip x ((drop 13 x) ++ (take 13 x));t = f lower ++ f upper;rot13 c = fromMaybe c (lookup c t) in map rot13 "Lawlz."
02:35:32 <lambdabot> "Ynjym."
02:41:01 <CakeProphet> > let lower = ['a'..'z']; upper = ['A'..'Z']; f x = zip x ((drop 13 x) ++ (take 13 x)); t = M.fromList (f lower ++ f upper); rot13 c = M.findWithDefault c c t in map rot13 "Gregor is actually Roger G."
02:41:03 <lambdabot> "Tertbe vf npghnyyl Ebtre T."
02:42:38 <CakeProphet> so at compile time does GHC compute the result of all constants?
02:43:01 <CakeProphet> so that t is just a predefined Map at runtime?
02:44:20 <Jafet> (repeat 1) is a constant
02:47:20 <CakeProphet> ah
02:47:46 <CakeProphet> I think in some cases you could analyze that the function terminates.
02:48:44 <CakeProphet> but if you immediately exclude all recursion then you've eliminated a large amount of constant optimization.
02:49:13 <CakeProphet> ++ on finite constant lists wouldn't allow optimization.
02:53:19 -!- Jafet has quit (Quit: Leaving.).
02:59:37 <CakeProphet> perhaps if strictness analysis determines that a constant expression can be strictly evaluated
02:59:50 <CakeProphet> then it would be safe to go ahead and precompute the result.
03:03:28 -!- copumpkin has quit (Ping timeout: 256 seconds).
03:03:50 -!- copumpkin has joined.
03:27:48 -!- Nisstyre has changed nick to \EXPERT_PROGRAMM.
03:27:58 -!- \EXPERT_PROGRAMM has changed nick to Nisstyre.
03:29:20 -!- CakeProphet has quit (Quit: Lost terminal).
03:57:11 -!- augur has changed nick to schopenhauer.
03:57:24 -!- schopenhauer has changed nick to augur.
04:04:25 -!- CakeProphet has joined.
04:04:26 -!- CakeProphet has quit (Changing host).
04:04:26 -!- CakeProphet has joined.
04:06:04 <CakeProphet> HI GAIZ
04:16:42 <hagb4rd> hi cakeprophet; all knows the problem: you need to format an os partition but want to be sure not to loose any data still hanging around somewhere in tons of garbage. can anyone recommend a tool to (pre)analyse the structure of the contente (especially user documents, pics, etc)
04:17:09 <hagb4rd> ..of the partition
04:32:17 <CakeProphet> analyze in what way?
04:32:52 <CakeProphet> I know Ubuntu has something called "disk usage analyzer" the creates a chart of disk usage per directory/file.
04:32:55 <CakeProphet> but they may not be useful for what you
04:32:59 <CakeProphet> 're wanting to do.
04:33:25 <CakeProphet> hagb4rd: ^^^
04:34:16 <CakeProphet> otherwise, if you're searching for important shit. find is a good command line tool for doing such.
04:34:19 <hagb4rd> yes exactly thank you
04:34:56 <CakeProphet> https://help.ubuntu.com/community/Baobab
04:34:58 <hagb4rd> i will give it a try
04:35:09 <pikhq_> http://www.youtube.com/watch?v=8gpQ6nfMi80 This is meant to be funny. It is both funny and reminds me of the pain that has been inflicted upon my soul.
05:03:00 <zzo38> If you have an object X in a category then what is it called when no morphisms exist from X to any other object? And what is it called if the only morphism from X to X is the identity morphism? What is it called if both conditions apply?
05:13:08 -!- zzo38 has quit (Quit: zzo38).
05:32:15 -!- hagb4rd has quit (Quit: Nettalk6 - www.ntalk.de).
05:45:51 <CakeProphet> it seems to me that C++11 fixes a lot of problems with C++
05:45:56 <CakeProphet> by making the language really terrible and ugly.
05:59:23 -!- ive has quit (Ping timeout: 248 seconds).
06:08:01 -!- hagb4rd has joined.
06:30:40 <CakeProphet> fizzie: do you know if the \p{...} regex properties require the utf8 flag to be?
06:31:26 <CakeProphet> +on
06:31:40 <CakeProphet> apparently when I decode ASCII to UTF-8 the UTF-8 flag stays off for backwards compatability. If \p{...} requires utf8 on then that may be why my code isn't working.
06:31:56 <CakeProphet> oh wait nevermind.
06:31:59 <fizzie> No, they should just treat it as UTF-8 regardless of the flag.
06:32:05 <fizzie> Of course that doesn't matter for ASCII.
06:32:15 <CakeProphet> hmmmm
06:32:55 <fizzie> "-- if the "locale" or "encoding" pragmas are not used and the string is not "utf8", then "[[:xxxxx:]]" (and "\w", etc.) will not match characters 0x80-0xff; whereas "\p{IsXxxxx}" will force the string to "utf8" and can match these characters (as Unicode)."
06:33:06 <fizzie> But if you convert from ASCII, there will be no bytes 0x80-0xff in there.
06:33:54 <CakeProphet> I have no clue why the /usr/share/dict datasets are empty after I run my script.
06:34:26 <lifthrasiir> I definitely have to implement Sclipting...
06:34:57 <CakeProphet> fizzie: maybe file is giving me the incorrect encodings for them?
06:35:03 <CakeProphet> or...... I have no idea.
06:35:48 <fizzie> I don't: know. Incorrect encodings doesn't sound like something that'd lead to empty outputs, though.
06:36:12 <CakeProphet> fizzie: the reason the output is empty is because my regex is always succeeding on these datasets
06:36:22 <fizzie> Which regex is that?
06:36:29 <CakeProphet> /[^\p{Alphabetic}\p{Letter}\p{Dash_Punctuation}\p{Connector_Punctuation}']/;
06:36:36 <CakeProphet> it's supposed to skip anything that passes this.
06:38:48 <CakeProphet> I read the files in as :raw, then use decode($encoding, $input)
06:38:53 <CakeProphet> where $encoding is a command line option.
06:38:58 <CakeProphet> that defaults to utf8
06:39:26 <fizzie> Have you looked at the files? I don't really know about the other languages, but my /usr/share/dict/finnish has "$\" at the end of 88% of the words. (Though there's still a couple of words that should not match that.)
06:39:45 <CakeProphet> why $\
06:41:58 <fizzie> I don't really know. It may be an affix marker thing; though the ispell man page doesn't really suggest so. I don't even know which program those files are for.
06:42:31 <CakeProphet> well manx for example doesn't have those
06:42:34 <CakeProphet> but still shows up as empty
06:43:07 -!- Ngevd has joined.
06:43:28 <Ngevd> Hello!
06:43:32 <CakeProphet> hey
06:43:44 <Ngevd> I like how a minor change to a page can be over 32000 characters
06:45:00 <fizzie> CakeProphet: Well, I don't know. Are you doing something else differently for the dict stuff? Could you be leaving the newline in there or something? I'm just grasping at straws here, really. Hexdump the strings that match that regex and check what's wrong with them? I'unno.
06:45:58 <CakeProphet> I can't actually read hexdumps very well.
06:46:05 <CakeProphet> maybe I should figure them out
06:46:09 <CakeProphet> or maybe you just use weird formats
06:49:16 <CakeProphet> Wide character in print at ./construct_grams.pl line 22, <$f> line 5828977.
06:49:21 <CakeProphet> also I got a lot of these in the french dataset
06:50:11 <fizzie> It certainly shouldn't be related to the lack of the utf8 flag, though:
06:50:13 <fizzie> $ perl -e '$x = "foobar"; print "is not utf8\n" unless utf8::is_utf8($x); print "no match\n" unless $x =~ /[^\p{Alphabetic}\p{Letter}\p{Dash_Punctuation}\p{Connector_Punctuation}'\'']/;'
06:50:13 <fizzie> is not utf8
06:50:13 <fizzie> no match
06:52:31 <CakeProphet> as far as the $\ I guess I'll just make a copy of the files and strip those characters out.
06:55:06 <CakeProphet> uh what's some good hexdump options
06:55:27 <fizzie> "hexdump -C" and "od -tx1z" are reasonable.
06:55:49 <fizzie> But you can just print join(" ", map { sprintf "%02x", $_ } unpack("C*", $string)), "\n" from the Perl script.
06:56:14 <CakeProphet> I think hexdump is actually simpler in this case.
06:57:41 <fizzie> Up to you; it's just that it'll all get smooshed into one dump. Anyway, it sounds very weird that the regex just wouldn't work; you are certain that it's because that thing is matching all the words?
06:57:56 <CakeProphet> yep I put a print after it and nothing happens
06:58:17 <fizzie> Did you put a print in front of it to see if you're getting there either?-)
06:58:25 <CakeProphet> yes I did that before.
06:58:52 <CakeProphet> I also tested the eng-1M set and many words pass.
06:59:08 <CakeProphet> haven't tested the other google sets. I assume all the utf-8 ones are fine.
07:01:33 <CakeProphet> fizzie: I'll sprunge an output file soon.
07:01:47 <CakeProphet> and code would probably help.
07:02:40 <CakeProphet> http://sprunge.us/DHBZ
07:03:05 <CakeProphet> ....I guess I could have used a smaller dataset.
07:04:34 -!- Ngevd has quit (Ping timeout: 258 seconds).
07:04:36 <fizzie> I also think you might get some shell-related munging to your string if you dump them like that.
07:04:50 -!- MDude has joined.
07:05:02 <CakeProphet> fizzie: with echo?
07:05:11 -!- MSleep has quit (Read error: Connection reset by peer).
07:05:53 <fizzie> Well, possibly not. At least it'll barf for any words containing a '.
07:06:29 <CakeProphet> ah... yes.
07:06:56 <CakeProphet> it's taking much longer than usual
07:06:59 <CakeProphet> perhaps the hexdumps?
07:07:21 <CakeProphet> ah yes the perl processes are stuck on pipe_wait
07:07:34 <fizzie> If it is in fact refusing each word, that's two new processes for each word.
07:07:37 <fizzie> No, three.
07:07:39 <fizzie> No, two.
07:07:47 <CakeProphet> lol
07:07:56 <fizzie> A shell and the hexdump; the echo is probably a builtin.
07:08:12 <CakeProphet> yes it is
07:08:25 * CakeProphet is master of efficient perl coding.
07:09:36 <fizzie> Well, I ran it locally with | head.
07:09:45 <fizzie> On 'finnish'.
07:09:47 <fizzie> 00000000 61 2d 6b 6c 69 6e 69 6b 6b 61 0a 0a |a-klinikka..|
07:10:08 <fizzie> I'd like to point out what I said 25 minutes ago: "<fizzie> CakeProphet: Well, I don't know. Are you doing something else differently for the dict stuff? Could you be leaving the newline in there or something? --"
07:10:11 <CakeProphet> ...I'll do it your way.
07:10:25 <fizzie> The first 0a is the newline you have in your string, and that's what matching the regex.
07:10:32 <fizzie> (The second 0a is added by echo.)
07:10:44 <CakeProphet> ......................
07:10:45 <CakeProphet> of course.
07:10:58 <fizzie> It doesn't have a \t in it, so it gets the full line.
07:11:05 <CakeProphet> yeah I don't have that problem with googledata because -- yes
07:11:16 <CakeProphet> fffwoiejriowehriuhweiufhw4ituhwiuethwef
07:11:46 <CakeProphet> I could split /[\n\t]/ or something
07:11:53 <fizzie> That, or chomp it.
07:11:58 <CakeProphet> ah yes chomp
07:12:04 <fizzie> I tend to use it because of the name.
07:12:09 <CakeProphet> yes very satisfying
07:12:49 -!- nooga has joined.
07:14:04 <CakeProphet> okay let's try this again.
07:15:38 <CakeProphet> well the scripts appear to be using memory.
07:15:40 <CakeProphet> so that's good.
07:17:40 -!- ive has joined.
07:18:31 <fizzie> Yes, that'll teach those RAM chips who's the boss here.
07:25:13 <CakeProphet> sweet that worked.
07:34:28 <CakeProphet> fizzie: okay so if I use a require to import the modules via string
07:34:37 <CakeProphet> how do I access variables in their namespace?
07:35:59 <CakeProphet> if do just drops variables into the current scope then I might use it instead.
07:37:39 <CakeProphet> hmmm I could use a symbolic reference maybe.
07:38:56 <CakeProphet> !perl -e '%t = (1,2); print %{"%::t"};'
07:39:08 <CakeProphet> `run perl -e '%t = (1,2); print %{"%::t"};'
07:39:19 <HackEgo> No output.
07:39:46 <CakeProphet> `run perl -e '$t = {1,2}; print ${"$::t"};'
07:39:51 <HackEgo> No output.
07:39:53 <CakeProphet> hmmm
07:39:56 <CakeProphet> `run perl -e '$t = {1,2}; print ${"$t"};'
07:39:59 <HackEgo> No output.
07:43:56 -!- CakeProp1et has joined.
07:45:33 -!- CakeProphet has quit (Read error: Operation timed out).
08:03:09 <CakeProp1et> `run perl -e 'use Data::Dumper; Data::Dumper::Terse = 1; print Data::Dumper::Dumper($a, $b)'
08:03:11 <HackEgo> Can't modify non-lvalue subroutine call in scalar assignment at -e line 1, near "1;" \ Execution of -e aborted due to compilation errors.
08:03:28 <CakeProp1et> `run perl -e 'use Data::Dumper; $Data::Dumper::Terse = 1; print Data::Dumper::Dumper($a, $b)'
08:03:30 <HackEgo> undef \ undef
08:04:54 <CakeProp1et> `run perl -e 'use Data::Dumper; $d = Data::Dumper->new([$a,$b]); $d->Terse(1); print $d->Dump;
08:04:57 <HackEgo> sh: Syntax error: Unterminated quoted string
08:04:59 <CakeProp1et> `run perl -e 'use Data::Dumper; $d = Data::Dumper->new([$a,$b]); $d->Terse(1); print $d->Dump;'
08:05:01 <HackEgo> undef \ undef
08:07:00 <fizzie> 'require' won't ever touch your namespace; you need to use a fully-qualified Package::foo name to reach into it.
08:07:39 <CakeProp1et> `run perl -e 'use Data::Dumper; $d = Data::Dumper->new([[$a,$b]], [qw(x*)]; $d->Terse(1); print $d->Dump;'
08:07:41 <HackEgo> syntax error at -e line 1, near "];" \ Execution of -e aborted due to compilation errors.
08:07:47 <CakeProp1et> `run perl -e 'use Data::Dumper; $d = Data::Dumper->new([[$a,$b]], [qw(x*)]); $d->Terse(1); print $d->Dump;'
08:07:50 <HackEgo> ​[ \ undef, \ undef \ ]
08:08:07 <CakeProp1et> `run perl -e 'use Data::Dumper; $d = Data::Dumper->new([$a,$b], [qw(x*)]); $d->Terse(1); print $d->Dump;'
08:08:10 <HackEgo> undef \ undef
08:10:04 <CakeProp1et> `run perl -e 'use Data::Dumper; $d = Data::Dumper->new([[$a,$b]], [qw(*x)]); $d->Terse(1); print $d->Dump;'
08:10:07 <HackEgo> ​( \ undef, \ undef \ )
08:10:11 <CakeProp1et> there we go.
08:10:56 <CakeProp1et> `run perl -e 'use Data::Dumper; $d = Data::Dumper->new([[$a,$b]], [qw(*_)]); $d->Terse(1); print $d->Dump;'
08:11:01 <HackEgo> ​( \ undef, \ undef \ )
08:22:47 -!- augur has quit (Remote host closed the connection).
08:22:59 -!- augur has joined.
08:27:05 -!- Phantom_Hoover has joined.
08:27:51 <CakeProp1et> `run perl -e '$_='this-is-a-test'; s/-./-\u/g;print'
08:27:53 <HackEgo> 0
08:28:04 <CakeProp1et> `run perl -e '$_="this-is-a-test"; s/-./-\u/g; print'
08:28:06 <HackEgo> this-s--est
08:28:29 <CakeProp1et> `run perl -e '$_="this-is-a-test"; s/-(.)/-\u$1/g; print'
08:28:31 <HackEgo> this-Is-A-Test
08:28:42 <CakeProp1et> `run perl -e '$_="this-is-a-test"; s/(^|-)(.)/\u$1/g; print'
08:28:45 <HackEgo> his-s--est
08:28:46 <CakeProp1et> `run perl -e '$_="this-is-a-test"; s/(^|-)(.)/\u$2/g; print'
08:28:49 <HackEgo> ThisIsATest
08:29:02 <CakeProp1et> beautiful.
08:29:48 <fizzie> `run perl -e '$_="this--is-a-test"; s/(^|-)(.)/\u$2/g; print'
08:29:50 <HackEgo> This-isATest
08:30:11 <CakeProp1et> fizzie: that's perfectly fine
08:30:45 -!- sebbu2 has joined.
08:31:13 <CakeProp1et> `run perl -e '$_="test"; s/(^|-)(.)/\u$2/g; print'
08:31:15 <HackEgo> Test
08:33:58 -!- sebbu has quit (Ping timeout: 255 seconds).
08:35:20 <CakeProp1et> fizzie: instead of manually typing option hash tables I decided to do these shenanigans. :)
08:35:51 <CakeProp1et> map { my $opt=$_; s/(^|-)(.)/\u$2/g; $opt, handle_opt $_;} @datasets
08:36:51 <CakeProp1et> there is no end to my overcomplicated hackery.
08:41:22 -!- ais523 has joined.
08:49:07 <CakeProp1et> fizzie: http://sprunge.us/bGCK
08:49:14 <CakeProp1et> this /should/ work... as far as I can tell.
08:49:34 <CakeProp1et> can't test it yet (need my external)
08:50:10 <CakeProp1et> here's the generation script: http://sprunge.us/dZVH
08:50:32 <CakeProp1et> if you want to like, watch it break on first try as it most likely will.
08:53:20 -!- ais523 has quit (Remote host closed the connection).
08:56:20 -!- ais523 has joined.
08:56:30 <CakeProp1et> slightly revised words.pl : http://sprunge.us/HMXX
09:03:22 <CakeProp1et> still need to do some error handling..
09:10:44 -!- nooga has quit (Ping timeout: 244 seconds).
09:23:21 <CakeProp1et> `run perl -e 'if (my $x = 2) { print $x } print $x'
09:23:24 <HackEgo> 2
09:23:45 <CakeProp1et> `run perl -e 'if (my $x = 2) { print $x } else { print $x} print $x'
09:23:48 <HackEgo> 2
09:38:01 -!- CakeProp1et has changed nick to CakeProphet.
09:48:20 <CakeProphet> http://sprunge.us/GThA
09:49:15 -!- ais523 has quit (Read error: Operation timed out).
09:49:53 -!- ais523 has joined.
10:26:29 <CakeProphet> fungot: make me a sammich
10:26:29 <fungot> CakeProphet:. i'm so kind, even to assholes! anmaster no not markov anmaster no not markov
10:26:48 <Phantom_Hoover> fungot, what's anmaster going to do with markov?
10:26:49 <lambdabot> Phantom_Hoover: You have 1 new message. '/msg lambdabot @messages' to read it.
10:26:49 <fungot> Phantom_Hoover:, so i'd make stuff up to. why, this is for you guys are a lot of the design, prisoners and slaves that have sucked. rephrase: " i tried todo a _" is 0 ( and both variables hold the same
10:27:42 * ais523 tries to figure out where fungot got "design, prisoners and slaves" from
10:27:42 <fungot> ais523: is. absorb it on my door, which was just perceptibly fnord and this yields nothing itself; it keeps being removed, the queen. i see no sense
10:29:14 <fizzie> ais523: "ymor's ravens were notoriously loyal to their design, prisoners and slaves that have sucked blood from larger animals."
10:29:29 <ais523> good to know
10:29:38 <Phantom_Hoover> @tell oerjan You got two minutes; what are you complaining about.
10:29:38 <ais523> the original sentence doesn't make all that much more sense than the fungot version
10:29:38 <lambdabot> Consider it noted.
10:29:38 <fungot> ais523: agora alice c64 ct darwin discworld europarl ff7 fisher ic irc* jargon lovecraft nethack pa speeches ss wp youtube ( some youtube comments) http://news.com.com/ fnord/ fnord and it is eta. f) the associate director of personnel may declare an interested proposal, not only to goods and service sectors. if we take a very close relationship, but the parliament has possessed him, yet he talkes well," he said, taking it out
10:29:50 <ais523> haha, is that a fungot self-quote?
10:29:50 <fungot> ais523: to, uhhh....... uncool it online. it was an unmanned flight--thanks for doing your homework. seriously, read description :) ( maybe i suck at english as u suck at english as u suck at english as u suck at english as u suck at english as u suck at english as u suck at english as u suck at english as u suck at english as u suck at english as u suck at english as u suck at english as u suck at english as u suck at english
10:29:57 <fizzie> ^style
10:29:57 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot* homestuck ic irc jargon lovecraft nethack pa sms speeches ss wp youtube
10:30:13 <fizzie> It's built of everything it has said.
10:30:13 <Phantom_Hoover> There are a lot of cycles in this mode.
10:30:30 <ais523> ah right, you used fungot as a source for itself
10:30:30 <fungot> ais523: just to help an fnord archive)
10:30:41 <ais523> that'd explain why the source material doesn't make much more sense than the output
10:30:59 <fizzie> The "ymor's ravens" comment was from the 'nethack' style, obvs.
10:31:09 <ais523> that's not surprising
10:36:19 <fizzie> Phantom_Hoover: The "anmaster no not markov" loop comes from elliott using ^echo to talk to an ignoring Vorpal, also unsurprisingly.
10:36:40 <Phantom_Hoover> :D
10:37:03 <Phantom_Hoover> How many times did he say that?
10:37:31 <fizzie> Just once, but with the sort of short context, it's enough. Because you know about ^echo.
10:37:37 <fizzie> ^echo Do I hear an echo?
10:37:37 <fungot> Do I hear an echo? Do I hear an echo?
10:37:47 <Phantom_Hoover> Oh, of course.
10:38:06 <fizzie> ^echo, the loopmaker.
10:47:40 <CakeProphet> fungot: oisosossgoisstoirtrreriteieoiey
10:47:40 <fungot> CakeProphet: something like scheme48 ( upon the general position is a part of these amendments, i can only thank the president-in-office, you did hear me say that we have had in getting information with regard to monetary policy, a factor is
10:48:01 <CakeProphet> fungot: suck my dick eh heh heh heh heh huhu huhuhuhuhhuhhuhhuh
10:48:01 <fungot> CakeProphet: i know i didn't know that you've already asked, but then i need to enter " qemu" to edit is the ordinary ( for call/ cc))) hangs
10:48:45 <CakeProphet> I wish there was a dataset based on everything it sees
10:48:48 <CakeProphet> including PMs
10:49:09 <fizzie> It doesn't log everything it sees, sadly.
10:49:18 <CakeProphet> so then I could flood it with vulgar insults.
10:49:26 <CakeProphet> ...wow, flood? that's a weird word.
10:49:32 <CakeProphet> why have I noticed that.
10:49:34 <CakeProphet> flood.
10:49:43 <CakeProphet> *not noticed
10:52:24 <fizzie> BLOOD.
10:59:07 <ais523> `quote
10:59:10 <HackEgo> 607) <zzo38> I think Perl is a programming language too. [...]
10:59:20 <ais523> `quote
10:59:22 <HackEgo> 253) <Sgeo> Is there a name for something where I'm more attracted to someone if I know they've had a rough past? <variable> Sgeo, "Little Shop of Horrors"
10:59:30 <ais523> `quote
10:59:32 <HackEgo> 100) <virtuhird> Sgeo_: Gregorr: and someone could, by mistake, rewrite psox to be a weak erection if it is... A filename.
10:59:41 <ais523> `quote
10:59:43 <HackEgo> 472) <ais523> Phantom_Hoover: nope, I removed . from the current directory
10:59:53 <ais523> wait, how did I do that?
10:59:57 <ais523> now I'm interested in context
11:00:14 <ais523> `log removed \. from the current directory
11:00:24 <ais523> `logs removed \. from the current directory
11:00:27 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: logs: not found
11:00:32 <ais523> ah, hmm
11:00:33 <fizzie> 2011-07, surprisingly recent.
11:00:38 <HackEgo> 2011-07-06.txt:11:51:46: <HackEgo> 482) <ais523> Phantom_Hoover: nope, I removed . from the current directory
11:00:41 <ais523> ah, -06
11:01:38 <fizzie> It's immediately followed by "umm, from the path".
11:01:43 <fizzie> Which makes it less interesting.
11:02:14 <ais523> <elliott> Gregor: can you get a tie that's a transparent plastic thing filled with multicoloured glow in the dark liquid
11:02:29 <ais523> oh right, just a thinko
11:05:29 -!- nooga has joined.
11:07:02 -!- GreaseMonkey has quit (Quit: The Other Game).
11:15:51 <ais523> I should logread more often
11:20:28 -!- ive has quit (Quit: leaving).
11:26:38 -!- oerjan has joined.
11:27:48 <oerjan> lambdabot: boo!
11:27:58 <oerjan> huh
11:27:58 <lambdabot> oerjan: You have 1 new message. '/msg lambdabot @messages' to read it.
11:28:43 <oerjan> lambdabot: > 2 + 2
11:28:54 <oerjan> lambdabot: @run 2 + 2
11:28:55 <lambdabot> 4
11:36:26 -!- nooga has quit (Ping timeout: 244 seconds).
11:37:26 -!- nooga has joined.
11:38:12 -!- copumpkin has quit (Ping timeout: 260 seconds).
11:38:38 -!- copumpkin has joined.
11:39:02 <fizzie> lambdabot: What is this? You keep answering every "> foo" even when it's just paste from a quoted email or something, but not when someone directly addresses you?
11:39:25 <fizzie> fungot: Teach some sense to your fellow bot, would you?
11:39:25 <fungot> fizzie: i know i didn't know that you've already asked, but then i need to enter and it closes. :( i can pay, and those that the c-intercal, except that the thing about genocide is
11:43:26 <Phantom_Hoover> fungot, genocide!
11:43:27 <fungot> Phantom_Hoover: is. absorb it on my door, which was just perceptibly fnord and this yields nothing itself; it keeps being removed, the queen is a vain. yes is ticked). we'll know that's our memory...... calling...... that thing's not human...
11:47:19 <Phantom_Hoover> fungot, I wonder if that sword alone can stop.
11:47:20 <fungot> Phantom_Hoover: no, it's not. it's more complex than that. read the code.) good stuff ( and burning, and no clear account. in that second one is horizontally displaced by 1 pixel is sacred. just me, or i: yet, you rogue!
11:47:39 <Phantom_Hoover> fungot, all hail horizontal displacement by one pixel!
11:47:40 <fungot> Phantom_Hoover: agora alice c64 ct darwin discworld europarl ff7 fisher ic irc* jargon lovecraft nethack pa speeches ss wp youtube comments).
11:48:18 <fizzie> `runperl use Scalar::Util qw/dualvar/; my $dv = dualvar 42, 'sneaky'; printf "%d, %s\n", $dv, $dv;
11:48:21 <HackEgo> 42, sneaky
11:48:21 <fizzie> Perl <3
11:49:59 <fizzie> (Contextual::Return takes it rather further still.)
11:50:50 -!- azaq23 has joined.
11:59:03 <ais523> anyone here know a CSS hack that's specific to Windows, as opposed to a particular browser?
11:59:10 <ais523> failing that, Chrome and IE on Windows, specifically
12:02:56 <fizzie> Sounds more like something people would do with scripts.
12:04:16 <ais523> so, my problem is that Windows Chrome isn't rendering Unicode correctly, because it's picking an inappropriate font
12:04:43 <ais523> and I don't want to just arbitrarily override a list of fonts for those browsers that do Unicode properly
12:05:03 <ais523> and I'm just serving a single (computer-generated) HTML file, and don't particularly want to put scripts on it for no good reason
12:06:09 <Phantom_Hoover> Screenshots of WP pages can't be put on Commons.
12:07:06 <ais523> indeed
12:07:21 <ais523> the WP logo is copyrighted
12:07:24 <ais523> it's OK if you crop out the logo
12:07:40 <fizzie> IE-specific CSS hacks are (probably) dime a dozen, but detecting between Windows Chrome and Somethingelse Chrome with pure CSS might be a bit much to ask. A five-line script to detect the situation and splunk a "fontfix" class onto the body + references to that in the CSS could be easier. But I'm no web developer.
12:12:14 <ais523> yes, I think so
12:12:24 <ais523> actually, IE-specific CSS hacks have pretty much disappeared since IE8
12:12:31 <ais523> earlier versions are pretty easy to hack for
12:12:52 <ais523> although IE deliberately misparses certain specifically-structured comments, which works on any version as it's an intended feature
12:16:15 <ais523> ridiculous idea: Chrome probably recognises embedded CSS fonts
12:16:30 <ais523> so I could just dump a Unicode font into the page source, probably via reference
12:16:41 -!- nooga has quit (Ping timeout: 260 seconds).
12:18:33 -!- hagb4rd has quit (Quit: Nettalk6 - www.ntalk.de).
12:21:00 <fizzie> But then you would (presumably) need to explicitly use that embedded font, and you didn't want to override fonts.
12:21:01 -!- azaq23 has quit (Quit: Leaving.).
12:21:26 <ais523> yep
12:22:44 <ais523> on a related but unrelated subject: is there a sensible algorithm to, given a list of examples, produces a wildmat pattern that matches all those examples (and preferably excludes as much else as possible)
12:25:16 <fizzie> As a related but unrelated answer: Emacs comes with a "regexp-opt" function which takes a list of strings and triest to generate a small regular expression which matches that list and nothing else. It is very simplistic, though.
12:26:06 <fizzie> It is clever enough, apparently, to produce (?:optim(?:al|i(?:[sz]e))), given the list {optimal, optimise, optimize}.
12:26:32 <fizzie> That last group doesn't seem so useful in there.
12:34:09 -!- pikhq has joined.
12:34:17 -!- pikhq_ has quit (Ping timeout: 255 seconds).
12:34:32 <ais523> indeed
12:34:33 <ais523> also, ?: isn't even Emacs regex syntax
12:34:34 <ais523> so it's busy optimizing a syntax other than its own
12:35:19 <fizzie> Supposedly it is in Emacs23.
12:35:36 <fizzie> I'm going by http://www.emacswiki.org/emacs/RegexpOpt here, not an expert again.
12:35:45 <ais523> Emacs finally modernised its regexen? good to hear it
12:35:46 <fizzie> " (regexp-opt '("alex" "albert" "alois" "bummer"))
12:35:46 <fizzie> results in
12:35:46 <fizzie> "al\\(bert\\|ex\\|ois\\)\\|bummer"
12:35:46 <fizzie> (or
12:35:46 <fizzie> "\\(?:al\\(?:bert\\|ex\\|ois\\)\\|bummer\\)"
12:35:47 <fizzie> in Emacs 23)."
12:36:05 <fizzie> I dropped the \\s from the example for legibility reasons.
12:37:26 <ais523> wow, \(?: is horrendous syntax
12:37:50 <ais523> I think it's easier to quote parens that are meant to match parens, then parens that are part of regex syntax
12:38:06 <ais523> people call Perl unreadable, but it's really doing better than its competitors on that (that didn't just outright copy it)
12:39:24 <fizzie> Hysterical raisins there, probably. POSIX BREs also require \( ... \| ... \) for grouping.
12:40:05 -!- hagb4rd has joined.
12:56:09 -!- ais523_ has joined.
12:57:10 -!- boily has joined.
13:00:37 <ais523_> hmm, weirdest reason for a student to leave my course ever (well, so far at least): "I'm actually a second year"
13:00:40 <ais523_> (it's a first year course)
13:01:18 -!- zzo38 has joined.
13:01:26 <fizzie> Around here, those things are just very vague recommendations. Even prerequisites are rarely checked very strictly.
13:02:14 <ais523_> it's more important around here because it matters for mark calculation
13:03:09 <fizzie> Ah. Well, our courses are usually part of a particular "module", but you can generally build those up in arbitrary order.
13:09:52 -!- nooga has joined.
13:18:39 <fizzie> "Earth's tidal oscillations introduce dissipation at an average rate of about 3.75 terawatt." These energy-conscious days, shouldn't we be trying to cut that down a bit?
13:22:03 <zzo38> What would happen if you reverse the direction of the Earth spinning?
13:22:57 <fizzie> I don't know, but I strongly suspect time would not start to run backwards.
13:23:08 -!- MDude has quit (Ping timeout: 258 seconds).
13:23:45 <zzo38> I agree with that.
13:23:53 <oerjan> yeah the superman movie shows clear evidence of that
13:24:00 <oerjan> *the first
13:25:27 <fizzie> oerjan: Right, he spins the globe and then nothing happens. Quite an anticlimactic moment.
13:25:46 -!- MDude has joined.
13:26:14 <oerjan> wait what
13:26:16 <fizzie> Actually, didn't he just fly around backwards or something?
13:26:21 * oerjan missed a "not" up there
13:26:44 <fizzie> Well, maybe it's still admissible as evidence.
13:27:06 <oerjan> well yes, but it looked like it made the earth turn backwards
13:27:21 <oerjan> clearly some badass frame dragging involved
13:29:47 <fizzie> Speaking of which, the JET fusion reactor... sorry, "fusion device", has two 775-ton flywheels spinning at 225 rpm. That's quite a lot of spinning.
13:33:48 <Phantom_Hoover> Alpha doesn't do moments of inertia.
13:33:50 <Phantom_Hoover> What is this crap.
13:36:59 <oerjan> http://en.wikipedia.org/wiki/List_of_moments_of_inertia
13:38:20 <oerjan> probably m*r^2/2
13:38:48 <fizzie> Each flywheel has a radius of 4.5 metres.
13:39:40 <oerjan> this assumes uniform thickness, i think
13:39:53 <fizzie> Sadly, it is not.
13:40:09 <fizzie> Oh, but the next sentence gives the moment of inertia. :)
13:40:14 <fizzie> "-- weighs 775 tons (!), much of which is concentrated on the rim to form a large flywheel. For experts – the total moment of inertia is 13.5 million kg.m2 per flywheel!"
13:43:19 <fizzie> Giving the value to W|A works in the sense that it is interpreted as moment of inertia, but it doesn't give all those funny "comparisons" values, like it does for angular velocity and such things.
13:43:53 <oerjan> `frink 1/2 * 13500000 kg m^2 * (225 / min)^2 -> Joule
13:44:04 <HackEgo> Unknown symbol "Joule" \ Warning: undefined symbol "Joule". \ Unconvertable expression: \ 94921875 m^2 s^-2 kg (energy) -> Joule (undefined symbol)
13:44:12 <fizzie> For example, the angular velocity of the JET flywheel is 0.75 times the angular velocity of a 3.5-inch floppy disk.
13:44:14 <oerjan> `frink 1/2 * 13500000 kg m^2 * (225 / min)^2 -> J
13:44:23 <HackEgo> 94921875
13:44:43 <oerjan> `frink 1/2 * 13500000 kg m^2 * (225 / min)^2 -> kWh
13:44:51 <HackEgo> 3375/128 (exactly 26.3671875)
13:47:19 <oerjan> oh hm
13:47:24 <oerjan> `frink 1/2 * 13500000 kg m^2 * (225 / min)^2 -> joule
13:47:32 <HackEgo> 94921875
13:47:42 <oerjan> was just a capitalization error
13:49:11 <Phantom_Hoover> So it's 9.5 MJ of spinning.
13:49:17 <fizzie> oerjan: Today's trivia: the "Subaru equivalent" of LHC beam at top energy is 1712 km/h. (I.e. same amount of kinetic energy in a 3200 kg of mass moving at that speed.)
13:49:34 <oerjan> Phantom_Hoover: itym 95
13:49:43 <Phantom_Hoover> SHUT UP OERJAN
13:50:42 <Phantom_Hoover> fizzie, so wait, if you crashed a Subaru that fast it would turn into Higgs bosons?
13:51:01 <oerjan> only if you crashed it into a very tiny area
13:53:08 <fizzie> 16 microns across at the collision point.
13:53:13 <fizzie> It needs to be a very small car.
13:55:25 -!- oerjan has quit (Quit: Later).
13:55:33 <fizzie> A barn is the best unit of area.
13:58:49 <Phantom_Hoover> And the barn-megaparsec is the best unit of volume, mainly because the stupefying scales involved cancel out to be slightly smaller than a teaspoon.
13:59:49 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
14:12:32 <ais523_> wouldn't barn-gigaparsec be a nicer size?
14:21:10 -!- copumpkin has joined.
14:24:51 <Slereah> The barn-gigaparsec describes the longuest spaghetti
14:42:27 <Phantom_Hoover> ais523_, a gigaparsec is a nearly-useless unit, considering that the observable universe is about ten of them across.
14:45:14 -!- sllide has joined.
14:45:19 <fizzie> One barn-gigaparsec is 0.6 times the volume of blood in a typical human. (Thanks, W|A.)
14:50:41 -!- elliott has joined.
14:52:08 -!- elliott has quit (Client Quit).
14:52:13 -!- elliott has joined.
15:03:42 <ais523_> I suppose you could write it as kilobarn-megaparsec instead
15:03:47 <ais523_> but why be redundant on prefixes?
15:04:01 <elliott> ais523_: oh dear
15:04:02 <lambdabot> elliott: You have 5 new messages. '/msg lambdabot @messages' to read them.
15:17:04 <elliott> 22:58:48: <Rugxulo> I also guess it's pointless to mention that FBBI was updated too? ;-)
15:17:04 <elliott> 22:59:48: <Deewiant> Somebody announced that here when it happened
15:17:05 <elliott> Deewiant: Me
15:17:19 <Deewiant> I guessed that but couldn't be bothered to check
15:19:27 <elliott> 00:27:12: <zzo38> I found this: http://kirstenmichel.com/ss2.html
15:19:27 <elliott> "HOW HIGH AM I?" did not have the expected answer.
15:19:51 <elliott> 01:21:25: <Gregor> I finally have X-Chat on Mac
15:19:52 -!- MDude has quit (Ping timeout: 276 seconds).
15:20:04 <elliott> Gregor: You had that before, but all X-Chat ports suck massively
15:20:16 <elliott> Gregor: Or are you using it through X11 or something ridiculous like that
15:20:33 <elliott> 02:42:38: <CakeProphet> so at compile time does GHC compute the result of all constants?
15:20:34 <elliott> 02:43:01: <CakeProphet> so that t is just a predefined Map at runtime?
15:20:40 <elliott> CakeProphet: Yes, GHC has solved the halting problem.
15:21:07 <Deewiant> I don't see how that involves the halting problem
15:21:30 <elliott> Deewiant: "All constants"
15:21:58 <elliott> Presumably computing all constants involves computing every definition that halts, because that's the only reasonable definition of "constant" in context
15:22:02 <Deewiant> Constants being numerical and string literals and pure functions that work on them
15:22:15 <elliott> 02:43:01: <CakeProphet> so that t is just a predefined Map at runtime?
15:22:17 <ais523_> does FBBI pass Mycology yet?
15:22:18 <Deewiant> And character literals and whatnot
15:22:32 <ais523_> elliott: did you see my Prolog map, btw? it feels so wrong writing that in Prolog
15:22:33 <elliott> Deewiant: f x = f x
15:22:34 <elliott> Pure function
15:22:36 <elliott> ais523_: Yes
15:22:47 <ais523_> Prolog doesn't even have first-class functions!
15:22:51 <Deewiant> elliott: Compile time <<loop>>
15:23:04 <elliott> Deewiant: Okay, so CakeProphet wants GHC to be an interpreter?
15:23:06 <Deewiant> elliott: Or infinite compile time, whatever
15:23:28 <Deewiant> elliott: Interpret the stuff that looks like it's constant, at compile time
15:23:44 <Deewiant> To whatever degree possible
15:23:54 <elliott> Deewiant: Nobody seriously wants that
15:23:56 <Deewiant> If you encounter unsafePerformIO# then abort, and such
15:23:57 -!- ais523_ has quit (Quit: going back to the non-underscore version).
15:24:13 <Deewiant> I've sometimes wanted it at least for certain definitions
15:24:21 <elliott> Deewiant: So, sure, what you're saying is possible but I don't see why you think CakeProphet meant that at all :P
15:24:42 <Deewiant> That's just what it sounded like :-P
15:24:53 <Deewiant> First thing that came to mind from "compute the result of all constants"
15:26:17 <Deewiant> ais523: New version appears to hit many BADs but gets through
15:26:29 <Deewiant> Well, 9 of them
15:26:32 <Deewiant> Er, 8
15:26:58 <ais523> hmm, I mentioned my map in Prolog to a Prolog teacher who happened to be passing by
15:27:04 <ais523> and he suggested I try to do lambda calculus in it
15:27:58 <elliott> ais523: you'll just invent Lambda Prolog or Mercury or whatever but worse :P
15:29:00 <ais523> yep, but it'll be programming for fun
15:29:04 <ais523> rather than for practical use
15:29:11 <ais523> so it doesn't matter if it's worse than existing impls
15:35:13 <elliott> 11:02:14: <ais523> <elliott> Gregor: can you get a tie that's a transparent plastic thing filled with multicoloured glow in the dark liquid
15:35:16 <elliott> ais523: I STILL WANT THIS
15:35:23 <elliott> even if that sentence uh
15:35:25 <elliott> doesn't make much sense
15:35:33 <ais523> I agree, it would be great
15:35:55 <ais523> glow in the dark liquid already exists, but using multiple colours without it mixing would be hard
15:36:49 <elliott> 11:59:03: <ais523> anyone here know a CSS hack that's specific to Windows, as opposed to a particular browser?
15:36:50 <elliott> 11:59:10: <ais523> failing that, Chrome and IE on Windows, specifically
15:36:50 <elliott> 12:02:56: <fizzie> Sounds more like something people would do with scripts.
15:36:50 <elliott> 12:04:16: <ais523> so, my problem is that Windows Chrome isn't rendering Unicode correctly, because it's picking an inappropriate font
15:36:50 <elliott> 12:04:43: <ais523> and I don't want to just arbitrarily override a list of fonts for those browsers that do Unicode properly
15:36:53 <elliott> 12:05:03: <ais523> and I'm just serving a single (computer-generated) HTML file, and don't particularly want to put scripts on it for no good reason
15:36:58 <elliott> ais523: you really Shouldn't Do That :P
15:37:07 <elliott> OS sniffing is even worse than browser sniffing, probably
15:37:14 <ais523> indeed
15:37:17 <elliott> ais523: Arial Unicode MS is what most people specify for full Unicode support on Windows, IIRC
15:37:20 <ais523> but the page is correct, and the browsers are wrong
15:37:22 <elliott> I think it comes with the OS
15:37:26 <elliott> ais523: yes, so you're already doing hacks
15:37:28 <ais523> and my boss is complaining about it
15:37:31 <elliott> ais523: so you might as well override the fonts
15:37:35 <elliott> which is a lesser hack than OS sniffing
15:37:55 <ais523> but this computer doesn't even have Arial Unicode MS installed, so it wouldn't be able to display the font suggested!
15:37:58 <elliott> 12:16:15: <ais523> ridiculous idea: Chrome probably recognises embedded CSS fonts
15:37:59 <elliott> 12:16:30: <ais523> so I could just dump a Unicode font into the page source, probably via reference
15:38:03 <elliott> ais523: umm, you could just use @font-face
15:38:16 <ais523> elliott: that would require the font to exist on the target computer
15:38:27 <elliott> ais523: yes, if your irc font has no @ character
15:38:31 <ais523> ah, right
15:38:35 <ais523> in that case, that's what I was suggesting
15:38:40 <elliott> "To use web fonts, each form of the font family must be declared using the @font-face rule; for example, to use both regular and italic forms of Jos Buivenga’s Delicious font, you would put the following in your stylesheet:
15:38:41 <elliott> @font-face { font-family: Delicious; src: url('Delicious-Roman.otf'); } @font-face { font-family: Delicious; font-weight: bold; src: url('Delicious-Bold.otf'); }
15:38:41 <elliott> Then call it using font-family:
15:38:41 <elliott> h3 { font-family: Delicious, sans-serif; }"
15:38:41 <lambdabot> Unknown command, try @list
15:40:35 <elliott> 13:50:42: <Phantom_Hoover> fizzie, so wait, if you crashed a Subaru that fast it would turn into Higgs bosons?
15:40:38 <elliott> Phantom_Hoover: Yes. But only a Subaru.
15:40:41 <Vorpal> <Phantom_Hoover> fungot, what's anmaster going to do with markov? <-- yeah, what style was that?
15:40:41 <fungot> Vorpal: that is just a value of type " airbus is a big fan of avril....but this song " there
15:40:53 <Vorpal> ^style
15:40:53 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot* homestuck ic irc jargon lovecraft nethack pa sms speeches ss wp youtube
15:41:04 <Vorpal> fungot?
15:41:04 <fungot> Vorpal: ( c) a player who makes further play impossible by eir actions or lack thereof, or typically good morning, or typically good morning, or typically good morning, or typically good morning, or typically good morning, or typically good morning, or typically good morning, or typically good morning, or typically good morning, or typically good morning, or typically good morning, or typically good morning, or typically good m
15:41:06 <Vorpal> what?
15:41:15 <ais523> Vorpal: it was fungot style
15:41:15 <fungot> ais523: to, uhhh.... w.t.f lol ...out of time!
15:41:20 <Vorpal> ^style fungot
15:41:20 <fungot> Selected style: fungot (What I've said myself)
15:41:23 <Vorpal> aha
15:41:24 <elliott> "...out of time!" :D
15:41:28 <elliott> 14:42:27: <Phantom_Hoover> ais523_, a gigaparsec is a nearly-useless unit, considering that the observable universe is about ten of them across.
15:41:31 <elliott> Phantom_Hoover: Sounds good to me.
15:42:08 <fizzie> The rfk86 page has an Embedded OpenType version of the font in addition to the raw TTF (it was written pre-WOFF, I think), so in theory it should work also on IE 4+ (whereas only IE 9+ does TTF/WOFF); sadly, I don't think anyone has ever tested it with IE, so it might not work.
15:42:17 <Vorpal> elliott: attoparsec is also a nice unit btw
15:42:32 <elliott> http://hackage.haskell.org/package/attoparsec
15:42:38 <Deewiant> W|A says approximately 29 across
15:42:48 <Vorpal> elliott: oh for a package name, okay.
15:42:53 <elliott> Deewiant: 10 ~ 29
15:42:55 <elliott> Vorpal: I said that?
15:43:06 <Deewiant> For large values of 10
15:43:08 <Vorpal> elliott: no I extrapolated from the context of the link
15:43:19 <Vorpal> elliott: anyway iirc an attoparsec is slightly more than 3 cm
15:43:33 <elliott> Deewiant: Or small values of 29
15:43:38 <Deewiant> Forsooth
15:44:31 <elliott> Deewiant: Or middling values of both
15:44:44 <Deewiant> Nah, middling won't cut it
15:46:33 <elliott> Deewiant: Well, they could meet in the middle
15:46:39 <elliott> Say if ten was twenty and twenty-nine was twenty too
15:47:07 <Deewiant> Those are still a large value of ten and a small value of 29 respectively
15:47:40 <elliott> Deewiant: It seems weird to call that "both", since the changes to both numbers are much less drastic than would be required otherwise
15:47:50 <elliott> "Both" seems to imply strictly more effort to me
15:48:07 <Deewiant> I never said "both"
15:48:32 <elliott> <Deewiant> Those are still a large value of ten and a small value of 29 respectively
15:48:33 <elliott> But fine :P
16:13:57 -!- Ngevd has joined.
16:16:33 <Ngevd> Hello!
16:17:40 <elliott> helo
16:17:45 <Ngevd> The wind's getting pretty nasty
16:17:50 <Ngevd> Going to close a window
16:19:30 <Ngevd> ais523, if you're here, wiki spam
16:28:11 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
16:34:02 <Ngevd> You know what would be tricky?
16:34:07 <Ngevd> Writing a quine in Piet
16:36:18 <elliott> http://mamememo.blogspot.com/2009/10/piet-quine.html
16:37:03 <Ngevd> Crazy
16:38:13 <Deewiant> Should be linked on the wiki
16:40:49 -!- Phantom_Hoover has joined.
16:40:57 <Ngevd> It's dismal outside
16:41:08 <elliott> Ngevd: Nice weather we're having
16:41:10 <elliott> Snap
16:44:17 <Gregor> Ngevd wasn't complaining about the weather.
16:44:21 <Gregor> He was just pointing out that it's England.
16:44:41 <elliott> Gregor "Literally lives in America" Gregor
16:44:58 <Gregor> I like how my fore and surname are both "Gregor"
16:45:24 <elliott> elliott "That's my gimmick" elliott
16:45:41 <Ngevd> My surname is to awesome to be a duplicate of my first name
16:45:47 <Ngevd> I want a doctorate to go with it
16:46:15 <Gregor> Ngevd "Ngevd" Ngevd
16:46:28 <Ngevd> Dr Ngevd
16:48:27 -!- derdon has joined.
16:49:00 <Ngevd> Lasagne time!
16:49:05 -!- Ngevd has quit (Quit: Leaving).
16:52:07 <zzo38> You quoted me before; what do you know of prime vertical?
16:59:13 -!- nooga has quit (Read error: Connection reset by peer).
16:59:30 -!- nooga has joined.
17:06:31 -!- Ngevd has joined.
17:06:36 <Ngevd> Hello!
17:09:49 -!- augur has quit (Remote host closed the connection).
17:10:02 -!- CakeProphet has quit (Ping timeout: 252 seconds).
17:12:27 -!- MDude has joined.
17:20:27 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
17:20:36 -!- Ngevd has quit (Ping timeout: 258 seconds).
17:24:28 -!- Ngevd has joined.
17:25:07 <ais523> hi everyone
17:25:15 <elliott> hi
17:25:33 <ais523> wow, you know how the tzdata guy was sued?
17:25:39 <ais523> ICANN decided to continue maintaining the project
17:25:45 <elliott> yes
17:25:47 <ais523> I wouldn't have been surprised if it was Red Hat or someone
17:25:49 <ais523> but ICANN?
17:25:51 <elliott> neat
17:26:04 <elliott> They're, like, names.
17:26:08 <elliott> For timezones.
17:26:59 -!- Slereah has quit (Ping timeout: 260 seconds).
17:29:14 -!- Slereah_ has joined.
17:31:59 <zzo38> Sued for timezones?
17:32:17 <ais523> zzo38: yes, the authors of an atlas claimed copyright infringement IIRC
17:32:33 <ais523> most people think the suit doesn't make much sense, but the tzdata person can't afford to defend against it
17:32:51 -!- Phantom_Hoover has joined.
17:32:52 <elliott> ais523: not the authors
17:33:03 <elliott> ais523: just the copyright trolls that bought out the previous publisher
17:33:04 <ais523> oh right, some people who claim to own copyright on the atlas for no obvious reaosn
17:33:17 <elliott> ais523: they bought the company that owned the rights
17:33:18 <elliott> that seems to be a fairly good reason
17:33:24 <elliott> well, as far as the current law goes
17:34:05 <ais523> elliott: apparently the copyright's actually registered to someone else
17:34:10 <ais523> or at least, not obviously the same person
17:34:24 <ais523> based on comments I've read, which might be incorrect
17:34:29 <zzo38> Someone told me that the definition of planet has changed again, or something like that, to make Pluto is now considered a planet, again. Is that correct?
17:34:31 * ais523 vaguely remembers that the UK has stupidly strict libel laws
17:34:36 <elliott> no
17:34:43 <elliott> (to zzo38)
17:35:00 <Ngevd> ais523, yes
17:35:03 <zzo38> Apparently they heard it on the radio.
17:35:05 <Ngevd> Exceedingly
17:35:36 <elliott> zzo38: they probably heard that thing about i-forget-the-name actually probably being as big as pluto
17:36:17 <zzo38> Well, as far as I know the definition of a planet depends on the orbit.
17:36:42 <Ngevd> And whether it's cleared it's orbit path or something
17:36:59 <zzo38> Yes, like that.
17:37:42 <Gregor> WTF, OpenIndiana has files in .zlib format. I don't think Debian even has a decompressor for raw zlib data.
17:38:02 <elliott> yes it does, zlib :-)
17:38:08 <elliott> Gregor: are you sure it's not just gz or something?
17:38:11 <Vorpal> Gregor: what is OpenIndiana?
17:38:31 <Gregor> elliott: Nope. It's named .zlib, and file reports "data". I think it's reasonable to assume it's raw zlib.
17:38:37 <Gregor> Vorpal: Fork of OpenSolaris.
17:38:40 <Vorpal> heh
17:38:46 <elliott> Gregor: Better question, why are you...
17:38:50 <Gregor> elliott: Giggles?
17:38:58 <elliott> Gregor: If you're into that, I guess.
17:39:09 <Vorpal> solaris is so weird
17:39:12 <Vorpal> like really weird
17:39:26 <Vorpal> only ever used it once
17:39:34 <Vorpal> hm should try it out in an vm maybe
17:39:48 <Deewiant> Gregor: qpdf should provide zlib-flate
17:39:56 <Gregor> Deewiant: lolwut
17:40:15 <Vorpal> Deewiant: strange package to do that
17:40:20 <Gregor> Am I installing a PDF viewer (or something thereabout) to get a zlib extractor?
17:40:23 <Deewiant> The zlib-flate program is part of the qpdf package.
17:40:27 <Deewiant> The zlib-flate program standard from input and writes to standard out‐
17:40:30 <Deewiant> put either compressing or compressing its input using raw zlib compres‐
17:40:34 <Deewiant> sion. This program is provided primarily as a debugging tool. It can
17:40:36 <Deewiant> be used to uncompress or compress raw PDF streams.
17:40:39 <Gregor> lulz.
17:40:40 <Vorpal> " The zlib-flate program standard from input"
17:40:41 <Vorpal> what
17:40:48 <Vorpal> that is not even proper English
17:41:22 <ais523> hmm, a quick search shows that TAA sold something to Astrolabe, but it's unclear as to whether it was the copyright to some timezones or not
17:41:23 <Gregor> That fragment alone could be proper English if not for the remainder of the sentence.
17:41:31 -!- augur has joined.
17:41:53 <elliott> ais523: you can't copyright timezones
17:41:58 <elliott> you can copyright books, though
17:41:59 <Vorpal> ais523: copyright to time zones?
17:42:03 <ais523> elliott: well, yes
17:42:03 <Vorpal> that makes zero sense
17:42:07 <elliott> but you can only copyright the formatting of them, if they present time zone data
17:42:09 <ais523> no wonder the whole thing's so confusing
17:42:13 <ais523> Vorpal: someone was sued over it
17:42:19 <Vorpal> ais523: huh
17:42:20 <ais523> and stopped maintaining the time zones as a result
17:42:33 <ais523> and ICANN declared themselves in charge of it and started maintaining it themselves
17:42:56 <elliott> Vorpal: it's why the tz database died
17:43:04 <Vorpal> it did? Didn't notice
17:43:09 <Vorpal> you mean the tzdata package?
17:43:15 <elliott> Vorpal: yes
17:43:16 <Vorpal> Quite nice of ICANN. They won't be put down easily.
17:43:22 <Gregor> flate: inflate: data: incorrect header check >_<
17:43:29 <Gregor> So this .zlib file isn't even zlib. Or something.
17:43:37 <Vorpal> Gregor: could be zlib with the header stripped
17:43:48 <Vorpal> or with a custom header
17:43:50 <ais523> ".zlib" is a pretty descriptive extension
17:43:55 <ais523> if a nonstandard one
17:43:57 <Vorpal> actually no
17:44:04 <Vorpal> it could be a dynamically loadable format
17:44:09 <Vorpal> what about zfs library?
17:44:14 <Vorpal> (not a lot of sense)
17:44:24 <Vorpal> but well if they have z-file system why not have z-libraries
17:45:00 * Gregor proceeds to actually install OpenIndiana in VirtualBox because it's easier than trying to extract this nonsense.
17:45:43 <elliott> Gregor: What are you actually doing.
17:45:48 <Gregor> elliott: STUPID STUFF
17:45:57 <elliott> Gregor: Suspicious eye.
17:45:59 <elliott> s.
17:46:00 <elliott> ing.
17:46:23 <Vorpal> Gregor: you use a fork of an oracle product inside a virtual machine that is an oracle product?
17:46:36 <Gregor> Vorpal: Apparently.
17:46:43 <elliott> Vorpal: A fork of a dead project :P
17:46:46 <Vorpal> elliott: well yes
17:46:50 <Gregor> elliott: I'm using Solaris+gelfload as a target to build up a shims library which I will hopefully be able to contribute to maloader. I'm using Solaris for laffs.
17:46:52 <Vorpal> elliott: but there is some irony in this.
17:47:08 <Vorpal> Gregor: shims?
17:47:13 <Vorpal> maloader?
17:47:26 <elliott> Gregor: maloader?
17:47:41 <Gregor> https://github.com/shinh/maloader
17:47:54 <elliott> Gregor: Yaaay shinh
17:47:56 <Vorpal> nice
17:48:19 <elliott> EVERYONE LOVES SHINH
17:48:40 <Vorpal> but Mach-O loader won't actually let you run OS X executables, because of libraries.
17:49:05 <ais523> `quote
17:49:07 <HackEgo> 432) <ais523> I think I managed something like a one-expression increment that was only a few hundred characters long
17:49:15 <ais523> yes, that sounds like me
17:49:17 <elliott> Vorpal: <Gregor> elliott: I'm using Solaris+gelfload as a target to build up a shims library which I will hopefully be able to contribute to maloader. I'm using Solaris for laffs.
17:49:18 <ais523> also, like INTERCAL
17:49:19 <elliott> `quote
17:49:19 <elliott> `quote
17:49:20 <elliott> `quote
17:49:20 <elliott> `quote
17:49:21 <elliott> `quote
17:49:25 <elliott> Massacre time.
17:49:26 <ais523> quotestripe!
17:49:32 <HackEgo> 51) <Octalnet> oklofok: I'm a tad over-apologetic. I apologize.
17:49:34 <HackEgo> 697) <fungot> Ngevd:. i'm so kind, even to assholes! anmaster no not markov anmaster no not markov anmaster no not markov anmaster no not markov anmaster no not markov
17:49:35 <ais523> I agree with 432's addition, anyway
17:49:36 <Gregor> Vorpal: Hence "shims". And incidentally, it does load a non-insignificant number of console binaries, including GCC and friends.
17:49:47 <elliott> That was two, HackEgo.
17:49:49 <HackEgo> 322) <zzo38> However is probably better to have both queen/king and government in case one does bad thing, the other side can argue to them
17:49:50 <HackEgo> 436) <oklopol> half the time the time travel model is one where a consistent universe essentially seems impossible if it supports any nontrivial agent-like behavior (because certainly one agent will want to destroy it using a retarded paradox), the other half seems to actually assume an implicit extra time axis and moving in
17:49:50 <HackEgo> 342) <ais523> elliott: hey, thinking's easier than using the Internet
17:49:58 <Gregor> Vorpal: (Simply by redirecting all the standard C functions to the host's libc verbatim)
17:50:13 <elliott> ais523: hmm, which of those do you think is the worst?
17:50:19 <Gregor> Vorpal: (Which is how gelfload works too)
17:50:27 <ais523> elliott: 697
17:50:39 <elliott> ais523: fungot quotes are not eligible for deletion
17:50:40 <fungot> elliott:, so i'd make stuff up to. why, this is for you guys are a lot, but played so bad and missed that: ( :::ass. in case you missed that: ( :::ass. in case you missed that: ( :::ass. in case you missed that: ( :::ass. in case you missed that: ( :::ass. in case you missed that: ( :::ass. in case you missed that: ( :::ass. in case you missed that: ( :::ass. in case you missed that: ( :::ass. in case you missed that: ( :::ass.
17:50:43 <Vorpal> Gregor: well yeah
17:50:44 <ais523> also, 436 is truncated, although potentially interesting
17:50:53 <elliott> `run quote 436 | paste
17:50:53 <ais523> 322's probably the worst non-fungot one there
17:50:53 <fungot> ais523: i, myself, will bring an end to all. ghosts lurk in the ruins were in truth, and everything in readiness for fnord. under these to tristan d'acunha, a volcanic origin, a high, and was fnord him with his umbrella. " who can have patience to acquire it. just fnord" brutha. " do you know much about gods, i am no fighter:
17:50:56 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.23600
17:51:08 <ais523> it's typical of zzo38, but nothing massively special
17:51:14 <elliott> hmm, 436 is boring and cut off
17:51:15 <elliott> `delquote 436
17:51:17 <HackEgo> ​*poof*
17:51:21 <Vorpal> Gregor: the value of #defines and so on will differ between systems
17:51:28 <elliott> I'll do another one since that was a missed opportunity to delete something crap
17:51:29 <elliott> `quote
17:51:29 <elliott> `quote
17:51:30 <elliott> `quote
17:51:30 <elliott> `quote
17:51:30 <elliott> `quote
17:51:37 <ais523> gah, my browser doesn't know how to open 23600 files
17:51:41 <Gregor> Vorpal: Hence "shims"
17:51:43 <HackEgo> 578) <elliott> I MIGHT BECOME GHOST
17:51:44 <HackEgo> 267) <oklopol> oerjan: also actually A(4, 4) is larger than any other integer, i learned this the other day when i was reading about this algo, it had complexity O(n a^-1(n)) = O(n a^-1(4))
17:51:44 <Vorpal> Gregor: yeah
17:51:45 <elliott> ais523: it's not the extension, it's Gregor's server
17:51:57 <HackEgo> 152) <CakeProphet> how does a "DNA computer" work. <CakeProphet> von neumann machines? <Phantom_Hoover> CakeProphet, that's boring in the context of DNA. <Phantom_Hoover> It's just stealing the universe's work and passing it off as our own.
17:51:57 <HackEgo> 319) <zzo38> Why do you want to have sex in everything? I don't want.
17:51:57 <HackEgo> 94) <Warrigal> I cannot eat meat that isn't flat.
17:52:08 <ais523> elliott: it's both; it doesn't know the type because the server didn't tell it, so it tried to guess from the extension
17:52:15 <elliott> `quote 95
17:52:17 <HackEgo> 95) Note that quote number 124 is not actually true.
17:52:24 <elliott> `quote 124
17:52:25 <ais523> 94 doesn't look all that interesting
17:52:26 <HackEgo> 124) <Warrigal> Darn, now I can't acknowledge the reference you were making.
17:52:34 <ais523> also, 95 is massively out of context by now
17:52:35 <elliott> haha, same person by coincidence
17:52:38 <Gregor> elliott, ais523: And I don't know why the server didn't tell it, so for right now you just have to live with it :P
17:52:39 <ais523> does that make it better or worse?
17:52:41 <elliott> ais523: it referred to 94
17:52:45 <elliott> i'll leave 95
17:52:50 <elliott> `delquote 94
17:52:52 <HackEgo> ​*poof*
17:53:05 <ais523> yep, the now-deleted 436 doesn't seem particularly quotable
17:53:15 <ais523> it's like xkcd; it's vaguely thought-provoking and sometimes worth reading, but not funny
17:53:22 <Ngevd> `quote 124
17:53:24 <HackEgo> 124) <soupdragon> if you claim that the universe is more than 3D the burden of proof is on you to produce a klien bottle that doesn't self intersect <soupdragon> ^ I learned that trick from atheists
17:53:27 <elliott> xkcd was better when it /was/ funny :P
17:53:46 <ais523> it was funny once?
17:54:08 <ais523> I found the one about the doorbell funny, actually
17:54:23 <ais523> but mostly only because it claimed to be a true story and I can believe that
17:54:33 <Ngevd> xkcd is hit and miss
17:54:38 <elliott> oh well, let's do another round, we don't exactly have a shortage of quotes:
17:54:40 <elliott> `quote
17:54:41 <elliott> `quote
17:54:41 <elliott> `quote
17:54:41 <elliott> `quote
17:54:42 <elliott> `quote
17:54:42 <Ngevd> Mostly miss
17:54:52 <HackEgo> 12) <GKennethR-L> :d <(I can lick my nose!)
17:55:01 <Ngevd> I personally enjoyed the one with the arrow and the boomerang
17:55:10 <HackEgo> 279) <locks> who's walter bright and why is he so bright <nddrylliog> locks: he's to D what I'm to ooc <nddrylliog> locks: guilty
17:55:10 <HackEgo> 662) <Gregor> But whereas the Zune UI makes one think "I want to kill myself", the Windows CE UI makes one think "I want to kill myself, but first kill my parents as punishment for bringing into this world someone who would one day own a Windows CE device."
17:55:10 <HackEgo> 466) <Phantom_Hoover> I go to clean up the shrapnel from a teabag and you're discussing the definition of god out of nowhere.
17:55:11 <HackEgo> 555) <Phantom_Hoover> You realise the micromanagement it took to make quintopia encrust my silver throne with emeralds rather than a jug?
17:55:22 <elliott> `delquote 12
17:55:24 <HackEgo> ​*poof*
17:55:27 -!- boily has quit (Ping timeout: 260 seconds).
17:55:33 <elliott> I'm going to end up deleting every single Sine quote, aren't I :P
17:55:34 <elliott> `pastequotes
17:55:37 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.14273
17:56:03 <elliott> Aww, we'll dip below seven hundred soon.
17:56:32 <ais523> the Sine quotes mostly aren't all that good
17:56:37 <elliott> Gregor: My joke simpler HackEgo transaction system actually seems just as good as the original one, and about ten thousand times simpler to implement...
17:56:54 <Gregor> elliott: THEN DO IT
17:57:02 <elliott> Gregor: DO YOU EVEN REMEMBER WHAT THAT ONE WAS
17:57:10 <Gregor> Nope
17:57:14 <tswett> If you believe the universe is 3D, the burden of proof is on you to build an embedding of every finite graph out of chewing gum and string.
17:57:25 <tswett> elliott: SQL.
17:57:39 <tswett> I don't know what the problem you're facing is, but since you said "transaction", the best solution is probably SQL.
17:58:00 <elliott> FSVO "best solution" equal to "SQL servers are the worst place to look to for ACID guarantees"
17:58:04 <elliott> Well.
17:58:09 <elliott> Hmm
17:58:12 <elliott> What are the relational guarantess anyway
17:58:26 <elliott> They're ACID + some shit, and I think it's the rest of them SQL servers fail at, but happily don't recall
17:58:29 <elliott> ANYWAY
17:58:44 <Gregor> elliott: FUSE filesystem over SQL. Doit.
17:58:46 <tswett> I just realized that for ACIDness, I've never even thought to look at something that isn't a SQL server.
17:59:03 -!- ais523 has quit (Remote host closed the connection).
17:59:07 <elliott> Gregor: Commits are only done when there are no active commands running. Whenever a command writes to the filesystem in any way, every pending command (command running or not yet committed) is cancelled and added to the redo queue /in chronological order/ (i.e. in the order HackEgo saw them).
17:59:15 <elliott> Gregor: After a successful round of commits, the redo queue is executed.
17:59:27 <tswett> For small applications, SQLite. For large applications, the mean-looking elephant.
17:59:50 <tswett> (For really huge applications, the cute-looking elephant. But I have no idea how to use the cute-looking elephant. I bet it's really expensive.)
18:00:02 <elliott> Gregor: So basically, all commands after a write only execute after that write (except they're executed preemptively because most of the time there won't be a write).
18:00:09 <elliott> Gregor: It's easier to implement than explain, really :P
18:00:17 <elliott> tswett: Which elephant is htat
18:00:18 <Vorpal> <tswett> I just realized that for ACIDness, I've never even thought to look at something that isn't a SQL server. <-- hm, same
18:00:19 <elliott> s/ht/th/
18:00:21 <Gregor> elliott: Sounds feasible to me *shrugs*
18:00:26 <Vorpal> where else do you find ACID?
18:00:34 <elliott> Vorpal: STM
18:00:38 <tswett> elliott: you know. The yellow one that pushes things with its trunk.
18:00:43 <elliott> Anything transactional :P
18:00:50 <tswett> Doug Cutting's son's toy elephant.
18:00:52 <tswett> Hadoop.
18:00:55 <Vorpal> elliott: well, STM is not to persistent storage
18:01:05 <Vorpal> which is kind of key for ACID
18:01:14 <elliott> tswett: Hadoop is open-source :P
18:01:15 <Vorpal> at least not in the STM stuff I have seen
18:01:25 <elliott> Vorpal: It's not ACIDP.
18:01:30 <elliott> Acid pee sounds awful.
18:01:32 <elliott> It's ACID.
18:01:40 <elliott> OK, durability is arguable.
18:01:50 <elliott> But certainly transactions can't be undone in STM.
18:01:52 <Vorpal> elliott: the D in ACID implies it yeah
18:01:52 <tswett> There are ACID things that are not persistent? That sounds... not exactly pointful.
18:01:56 <elliott> Vorpal: Not really.
18:02:01 <Gregor> elliott, Vorpal: Incidentally, gelfload can run a fair selection of Solaris binaries.
18:02:08 <elliott> tswett: Sure, if you think ACI and most of D are pointless.
18:02:09 <Vorpal> Gregor: nice
18:02:13 <elliott> tswett: Ever programmed with locks?
18:02:14 <Gregor> elliott, Vorpal: Kinda makes you wish microcosm meaningfully existed, donnit :P
18:02:26 <tswett> Oh yeah, locks. I guess it is useful after all.
18:02:30 <Vorpal> Gregor: :P
18:02:36 -!- hagb4rd has quit (Ping timeout: 248 seconds).
18:02:45 <elliott> tswett: Locks are not ACID.
18:02:46 <Vorpal> Gregor: well it was over my head in that I couldn't understand what you actually wanted
18:02:52 <elliott> tswett: Locks are proof that ACID is great.
18:02:55 <elliott> Because locks are awful.
18:03:09 <tswett> Oh.
18:03:23 <Vorpal> locks are I, possibly A too, but not really
18:03:56 <tswett> So instead of using locks, you just kind of take all the stuff that you'd put into a lock thingy, and put it in a transaction instead, or something?
18:04:14 <elliott> I direct you to the documentation of http://hackage.haskell.org/package/stm :P
18:04:31 <elliott> I suppose only http://hackage.haskell.org/packages/archive/stm/2.2.0.1/doc/html/Control-Monad-STM.html and http://hackage.haskell.org/packages/archive/stm/2.2.0.1/doc/html/Control-Concurrent-STM-TVar.html actually matter since everything else is implemented on top of them.
18:05:01 <tswett> I thought everything was implemented on top of, like, Verilog.
18:05:03 * tswett coughs.
18:05:26 <elliott> You use a Verilog CPU?
18:05:35 <tswett> Yep. It really, really sucks.
18:05:47 <Vorpal> yeah VHDL is way better.
18:05:51 <Vorpal> (not really)
18:06:09 <tswett> I have to reboot the computer every time I want to load or unload any code or data.
18:06:41 <tswett> I mean, I can load and unload data at any time, but I have to state how much of it I want beforehand, and which pieces of code are allowed to access it.
18:06:52 <tswett> Come to think of it, all this sounds kind of sexy.
18:07:12 <elliott> They need to hype orElse more in the stm package documentation; it's not obvious to me that you can do (Process <$> readTChan somequeue) `orElse` (Quit <$ readTVar quitVar) by that description (which you can).
18:07:37 -!- augur has quit (Remote host closed the connection).
18:07:48 <Gregor> Observation: OpenIndiana kinda sucks.
18:08:00 <elliott> Wow. Really???
18:08:30 <Gregor> It's shocking, I know.
18:08:45 <tswett> I have no idea what alwaysSucceeds is supposed to do.
18:09:01 <Gregor> Vorpal: And all I want is a VFS :P
18:09:48 <Vorpal> Gregor: yeah I have no idea how to do a file system. Whatever I would invent would likely be awkward. Because I have no idea how to do one correctly.
18:09:53 <elliott> tswett: Adds an invariant.
18:09:55 <tswett> Gregor: say. Would you like an application virtual machine that is designed to allow multiple users to allow untrusted code simultaneously, while all their bits of code are allowed to share objects between each other?
18:10:07 <elliott> tswett: http://en.wikipedia.org/wiki/Software_transactional_memory :-P
18:10:33 <elliott> tswett: Have I mentioned that @ can do that?
18:10:34 <tswett> Ah... right.
18:10:47 <tswett> elliott: what is @?
18:11:00 <elliott> tswett: I believe I explained that last time you talked here.
18:11:03 <tswett> Is it your nonexistent programming project that's like my nonexistent programming projects?
18:11:12 <Vorpal> tswett: @ is elliott's dream about making his own OS one day
18:11:32 <Vorpal> not saying some of the ideas in it aren't good. Just saying that waiting for it is like waiting forever.
18:11:45 <elliott> Vorpal: Oh please, the "@ is vapourware" tack isn't even amusing when I've been refining the design with others in public on IRC.
18:11:47 <tswett> (Gee, how many abandoned projects do I have? There's Jath, PhunchLua, AcidLua... and maybe some others.)
18:12:03 <tswett> elliott: do you have any sort of persistent documentation of @?
18:12:08 <elliott> Vorpal: If I'd actually claimed I was coding it now, then you'd have a point.
18:12:11 <tswett> Don't say "the #esoteric logs".
18:12:12 <elliott> tswett: http://codu.org/logs/_esoteric/
18:12:20 <Ngevd> My projects have a tendency to not get far enough to count as projects, abandoned or not
18:12:24 <tswett> Thank you.
18:12:43 <Vorpal> elliott: I'm not claiming you are coding. But I'm claiming that the design is taking forever. Design, coding. Two stages of development.
18:13:09 <elliott> Vorpal: So, the rate of progress doesn't matter, only time to total completion?
18:13:20 <elliott> By that measure, /any/ difficult project is vapourware by definition.
18:13:26 <tswett> elliott: what development methodology are you using?
18:13:30 <Vorpal> elliott: where did I claim that?
18:13:32 <tswett> Don't say "winging it" and don't say "waterfall".
18:13:57 <elliott> tswett: Do I really have to name a fad? If I was winging it, I would be coding it.
18:14:00 <elliott> Vorpal: <Vorpal> elliott: I'm not claiming you are coding. But I'm claiming that the design is taking forever. Design, coding. Two stages of development.
18:14:11 <elliott> Vorpal: The design is progressing at a steady rate, so you're just complaining about the absolute amount of time it's taken.
18:14:16 <tswett> elliott: certainly. You must choose a fad.
18:14:19 <Vorpal> elliott: where does that say "only time to total completion matters"
18:14:22 <elliott> Therefore any difficult project is vapourware because it can't be produced in a short amount of time.
18:14:31 <elliott> tswett: Pet rocks.
18:14:33 <Vorpal> elliott: I'm complaining about the scope of the project I guess
18:14:38 <tswett> elliott: good.
18:15:07 <elliott> Vorpal: Damn, why didn't I try and clone Unix?
18:15:14 <elliott> If only I knew it'd make Vorpal happy...
18:15:17 <tswett> "If a transaction cannot be committed due to conflicting changes, it is typically aborted and re-executed from the beginning until it succeeds." That sounds pretty awesome.
18:15:31 <Vorpal> elliott: clone plan9 instead
18:15:34 <elliott> tswett: It's implemented more efficiently than that, at least in GHC STM :P
18:15:41 -!- sebbu2 has changed nick to sebbu.
18:16:20 <elliott> For instance (Process <$> readTChan somequeue) `orElse` (Quit <$ readTVar quitVar) as a transaction only "executes" whenever anyone writes to the channel or the variable.
18:19:15 <tswett> I suddenly wonder how efficiently one could implement the next-Fibonacci-number function. Given a Fibonacci number, return the next one.
18:19:58 <tswett> I guess it's easy to do with a simple hash table as long as the size of the number has a small bound, like 64 bits.
18:20:15 <elliott> tswett: next(n) = n + prev(n) :-P
18:20:32 <elliott> prev(n) sounds harder.
18:21:21 <tswett> Of course, it would be much easier to do if it were "given two consecutive Fibonacci numbers, return the next one".
18:21:32 <elliott> Obviously prev(n) can = fib(fibno(n) - 1).
18:21:36 <elliott> But that just offloads the problem to fibno.
18:21:37 <tswett> It's the easiest possible non-trivial problem.
18:21:42 <elliott> tswett: You can probably do it with one of the closed form solutions.
18:21:48 <tswett> fibno seems pretty easy to do. Just take the log base phi or something.
18:21:52 <elliott> Right.
18:22:19 <elliott> next(n) = n + fib(fibno(n) - 1), where fib and fibno are closed-form.
18:22:25 <elliott> That sounds pretty fast.
18:22:36 <tswett> Here's a closed form solution of fib:
18:22:46 <Vorpal> isn't there a non-recursive form of fib?
18:23:01 <elliott> Vorpal really does operate about ten lines behind everyone else.
18:23:08 <tswett> fib(n) = (a^n - b^n)/(a - b)
18:23:11 <tswett> Where a and b are constants.
18:23:12 <Vorpal> oh yes, the closed form
18:23:14 <tswett> So... invert that, elliott.
18:23:24 <Vorpal> elliott: that is becuase I jump between channels
18:23:36 <elliott> Vorpal: Huh, is (a-b) = sqrt(five) actually?
18:23:43 <elliott> erm
18:23:43 <elliott> tswett::
18:24:08 <elliott> http://www.wolframalpha.com/input/?i=inverse+of+%28a^n+-+b^n%29%2F%28a+-+b%29 THAT'S NOT A PONY
18:24:24 <tswett> elliott: I think so.
18:24:58 <tswett> elliott: and how's it supposed to know which variable to take the inverse with respect to?
18:25:04 * elliott plugs in the values of a and b.
18:25:21 <tswett> How do you know what a and b are? I don't think I told you.
18:25:36 <elliott> Magic.
18:25:40 <elliott> http://www.wolframalpha.com/input/?i=inverse+of+%28phi^n+-+%28-1%2Fphi%29^n%29%2Fsqrt%28five%29 Well that didn't help.
18:25:49 <Ngevd> a = phi
18:25:52 <Ngevd> b = -1/phi
18:25:56 <elliott> http://www4c.wolframalpha.com/Calculate/MSP/MSP212719heh519ig49ig8300006a4he3dhfchf7h85?MSPStoreType=image/gif&s=33&w=240&h=190&cdf=Rotation
18:25:57 <elliott> Funky.
18:26:08 <Vorpal> nice
18:26:13 <elliott> tswett: I wonder if Mathematica could handle it.
18:26:33 <Vorpal> probably
18:26:44 <tswett> There's also a closed form that involves the floor function. So... use the inverse floor function.
18:26:51 <Vorpal> it is more advanced than W|A in general. Reminds me... Isn't Mathematica 8 out?
18:27:00 <elliott> tswett: Ah yes, a common function.
18:27:10 <elliott> tswett: Hmm, it actually looks doable there.
18:27:16 <elliott> Maybe.
18:27:19 <elliott> Hmm, no.
18:27:25 <tswett> elliott: oh, and Wolfie by default assumes phi is a variable.
18:27:31 <tswett> You have to say "where phi = the golden ratio" or something.
18:27:41 <tswett> (And it will say "blah blah blah where phi = phi" in the result.)
18:27:46 <elliott> Sigh.
18:27:49 <Phantom_Hoover> Wolfie!
18:27:58 <elliott> http://www.wolframalpha.com/input/?i=inverse+of+%28phi^n+-+%28-1%2Fphi%29^n%29%2Fsqrt%28five%29+where+phi+%3D+golden+ratio
18:28:07 <elliott> tswett: See, you just take the reciprocal of the fibonacci number. :
18:28:08 <elliott> :p
18:28:09 <Phantom_Hoover> What are you idiots doing this time.
18:28:16 <elliott> Phantom_Hoover: Inverting fib.
18:28:26 -!- augur has joined.
18:28:45 <elliott> tswett: Hmm, next(n) = n + fib(fibno(n) - 1) is rather overcomplicated, since it's next(n) = fib(fibno(n) + 1).
18:28:48 <tswett> Lemme see. Isn't every function Z -> Z extensible to an analytic function?
18:29:56 <elliott> Phantom_Hoover: Oi, help us.
18:30:03 <elliott> tswett: http://bigintegers.blogspot.com/2011/08/inverse-fibonacci-invfibfibnn.html
18:30:07 <elliott> tswett: Here's something awful.
18:30:14 <elliott> Oh, wait.
18:30:15 <elliott> Has loops.
18:30:18 <elliott> Wow that's ugly.
18:30:27 <elliott> tswett: http://stackoverflow.com/questions/5162780/the-inverse-fibonacci-problem
18:30:29 <tswett> Just use the inverse loop function.
18:30:33 <elliott> tswett: Looks like there's an O(log n) algorithm for it.
18:30:52 <tswett> elliott: yeah, it's called "enumerate the Fibonacci numbers intil you find it".
18:31:01 <tswett> ...until.
18:31:08 <elliott> tswett: Oh, right.
18:31:11 <elliott> tswett: Theirs looks fancier. :(
18:31:47 <tswett> Then again, I think that's actually... quadratic or cubic or something in the length of the number. So, O(log n). :P
18:31:48 <Phantom_Hoover> The function just looks like a normal exponential one, but I'm sure you tried that.
18:32:02 <elliott> next(n) = floor(log(sqrt(5) * (fibno(n) + 1))/log(phi) + 1/2)
18:32:08 <elliott> Phantom_Hoover: Tried what?
18:32:09 <Phantom_Hoover> Oh, wait, no it's not.
18:32:14 <Phantom_Hoover> elliott, plotting fib.
18:32:21 <elliott> "Measuring memory usage by counting unbounded words is sort of silly, but as long as that's the model, there's an O(log n) time, O(1) word solution similar to Nikita Rybak's that in essence computes n via its Zeckendorf representation, which is based on the Fibonacci numbers (YO DAWG)."
18:32:23 <Phantom_Hoover> With n continuous, of course.
18:32:37 <elliott> tswett: But yeah, that matrix thing looks like the best idea.
18:32:39 <elliott> And also the least simple idea.
18:32:47 <tswett> Ooh, wait. The problem was "Given F(n) for n > 2, what is n?". So enumerating the Fibonacci numbers would be O(n).
18:32:53 <elliott> http://stackoverflow.com/questions/5162780/the-inverse-fibonacci-problem/5254783#5254783
18:32:56 <elliott> Ah yes, calculation = approximation.
18:33:03 <elliott> tswett: Yesyesyes but that doesn't help us.
18:33:13 <tswett> Oh, the matrix thing is pretty simplpy.
18:33:18 <tswett> Simple.
18:33:27 <elliott> tswett: Yes, but it's not /stupidly/ simple.
18:33:44 <tswett> I dunno, it seems like the obvious-ish way to do it.
18:33:53 <elliott> tswett: By the way, what are you actually doing?
18:34:25 <tswett> Looking for the 56th Fibonacci number? Calculate the 1st, then the 2nd, then the 4th, then the 8th, then the 16, then the 32nd, then the 64th, then the 48th, then the 56th, and hey, your'e there.
18:34:30 <tswett> You're.
18:34:30 <tswett> elliott: nothing.
18:34:31 <elliott> http://stackoverflow.com/questions/5162780/the-inverse-fibonacci-problem/5266829#5266829
18:34:39 <elliott> tswett: Hmm, what if we used the full-precision reals involved there?
18:34:47 <elliott> That seems simplest.
18:34:48 <Ngevd> 40585 is the sum of the factorial of its digits
18:35:45 <tswett> > let fac n = product [1..n] in fac 4 + fac 0 + fac 5 + fac 8 + fac 5
18:35:46 <lambdabot> 40585
18:36:17 <Ngevd> 115,132,219,018,763,992,565,095,597,973,971,522,401 is the sum of the 39th power of its digits
18:36:36 <Phantom_Hoover> So is Ngevd some kind of calculating prodigy all of a sudden.
18:36:42 <tswett> Ngevd: what number is the sum of the squares of its digits?
18:36:52 <Ngevd> A website reading prodigy, I'm afraid
18:37:05 <Ngevd> 1?
18:37:11 <tswett> Bravo.
18:38:10 <elliott> > let digits 0 = []; digits n = uncurry (:) $ digits <$> swap (n `divMod` 10); swap (x,y) = (y,x) in digits 9909
18:38:11 <lambdabot> [9,0,9,9]
18:38:34 <elliott> > let digits 0 = []; digits n = uncurry (:) $ digits <$> swap (n `divMod` 10); swap (x,y) = (y,x); fac n = product [1..n] in 40585 == sum (map factorial (digits 40585))
18:38:35 <lambdabot> Not in scope: `factorial'
18:38:39 <elliott> > let digits 0 = []; digits n = uncurry (:) $ digits <$> swap (n `divMod` 10); swap (x,y) = (y,x); fac n = product [1..n] in 40585 == sum (map fac (digits 40585))
18:38:39 <lambdabot> True
18:38:49 <elliott> > let digits 0 = []; digits n = uncurry (:) $ digits <$> swap (n `divMod` 10); swap (x,y) = (y,x); fac n = product [1..n] in filter (\n -> n == sum (map fac (digits n))) [0..]
18:38:53 <lambdabot> mueval-core: Time limit exceeded
18:38:55 <Deewiant> > let n = read $ filter isDigit "115,132,219,018,763,992,565,095,597,973,971,522,401" :: Integer in (==n) . sum . map ((^39) . toInteger . digitToInt) . show $ n
18:38:56 <elliott> Bah.
18:38:56 <lambdabot> True
18:39:12 <elliott> Prelude Control.Applicative> let digits 0 = []; digits n = uncurry (:) $ digits <$> swap (n `divMod` 10); swap (x,y) = (y,x); fac n = product [1..n] in filter (\n -> n == sum (map fac (digits n))) [0..]
18:39:12 <elliott> [0,1,2,145,40585
18:39:19 <elliott> I don't think I'll get another answer for a while.
18:39:31 <Deewiant> @oeis 1,2,145,40585
18:39:31 <lambdabot> Factorions: equal to the sum of the factorials of their digits in base 10.
18:39:32 <lambdabot> [1,2,145,40585]
18:39:41 <elliott> Heh.
18:39:43 <tswett> All of the numbers that are the sums of the cubes of their digits: 1, 153, 370, 371, 407
18:39:46 <elliott> There's a sequence for everything.
18:39:52 <Deewiant> @oeis 1,153,370,371,407
18:39:52 <lambdabot> Fixed points for operation of repeatedly replacing a number by the sum of th...
18:39:53 <lambdabot> [0,1,153,370,371,407]
18:39:59 <elliott> @oeis 115132219018763992565095597973971522401
18:40:00 <lambdabot> Armstrong (or Plus Perfect, or narcissistic) numbers: n-digit numbers equal ...
18:40:00 <lambdabot> [1,2,3,4,5,6,7,8,9,153,370,371,407,1634,8208,9474,54748,92727,93084,548834,1...
18:40:11 <elliott> Ngevd: Are you reading the OEIS.
18:40:14 <Ngevd> No
18:40:23 <tswett> @oeis 1,1634,8208,9474
18:40:24 <lambdabot> Fixed points for operation of repeatedly replacing a number by the sum of th...
18:40:24 <lambdabot> [0,1,1634,8208,9474]
18:40:36 <Ngevd> A website that was the first on my long road to esoteric programming I am reading, though
18:40:47 <tswett> There's an entire seqeunce of sequences there.
18:40:49 <tswett> Sequence.
18:40:58 <elliott> @oeis bad numbers
18:40:59 <lambdabot> Badly sieved numbers: as in the Sieve of Eratosthenes multiples of unmarked ...
18:40:59 <lambdabot> [2,3,5,7,8,11,12,13,17,18,19,23,27,29,30,31,37,41,43,45,47,50,53,59,61,63,67...
18:41:03 <elliott> rip
18:41:06 <tswett> Do you guys mind if I just sort of correct all my typos by stating the correct word afterward, instead of jactually correcting them in place?
18:41:10 <tswett> Actually.
18:42:01 <Ngevd> brb
18:42:04 <elliott> Jactually.
18:42:20 <tswett> I like that typo, I must say. It seems... jactual.
18:42:57 <coppro> '/win 7
18:43:19 <tswett> /win 7
18:44:13 <elliott> You win seven, you lose even.
18:44:23 <tswett> What's that supposed to mean?
18:44:30 <elliott> Who knows?
18:44:36 * elliott cracks knuckles and prepares to respond to this crazy reddit guy.
18:44:38 <tswett> I see.
18:44:45 * elliott doesn't actually crack knuckles, but does prepare.
18:44:51 <elliott> s/even/seven/
18:44:52 <elliott> tswett: Does that help?
18:44:55 <elliott> Except only the second even.
18:44:57 <tswett> Certainly.
18:45:13 <tswett> elliott: okay, now I know what STM is.
18:45:20 <tswett> So what the heck does alwaysSuccesds do?
18:45:23 <tswett> alwaysSucceeds.
18:45:41 <tswett> Did I just answer my own question, correctly?
18:46:11 <elliott> tswett: It adds an invariant.
18:46:19 -!- Ngevd has quit (Ping timeout: 244 seconds).
18:46:24 <tswett> Okay. Which invariant does it add, and what is the effect of that invariant?
18:46:43 <elliott> alwaysSucceeds adds a new invariant that must be true when passed to alwaysSucceeds, at the end of the current transaction, and at the end of every subsequent transaction. If it fails at any of those points then the transaction violating it is aborted and the exception raised by the invariant is propagated.
18:47:06 <tswett> Can you give an example?
18:47:07 <elliott> So once you do (alwaysSucceeds action), that action must result in true upon execution when passed to alwaysSucceeds,
18:47:11 <elliott> at the end of the current transaction,
18:47:14 <elliott> and at the end of every subsequent transaction;
18:47:22 <elliott> if this is ever not the case, then the transaction in which it is violated is aborted.
18:47:27 -!- ais523 has joined.
18:47:38 <elliott> tswett: Oh, the invariant seems to be represented as a computation which throws an exception if the invariant is violated.
18:47:46 <elliott> So e.g. alwaysSucceeds (readTVar mustAlwaysBeTrue >>= guard).
18:48:19 <tswett> So I can do something like alwaysSucceeds (hey make sure this one variable is equal to five), and then any transaction that sets it to not five will fail?
18:48:31 <elliott> Yes.
18:48:39 <tswett> Sounds simple enough.
18:48:51 -!- Ngevd has joined.
18:49:15 <tswett> What does check do? Nothing if it's true, and failure if it's false?
18:49:21 <Ngevd> Back
18:49:23 <elliott> check :: Bool -> STM a
18:49:23 <elliott> check b = if b then return undefined else retry
18:49:24 <elliott> #endif
18:49:30 <elliott> Seems to be redundant with the standard "guard" function.
18:49:30 <tswett> Awesome.
18:49:38 * elliott has used guard for that in the past.
18:50:15 <zzo38> I did not know of those Haskell programs but it seem it can be used for sure, it might be useful in some cases, probably.
18:50:59 <elliott> Not much of a "Haskell program", it's implemented in GHC internal s:P
18:51:06 <elliott> s/internal s:/internals :/
18:51:10 <elliott> I suppose GHC is a Haskell program, though :-)
18:51:26 <Deewiant> elliott: STM doesn't have a custom definition of "fail", I don't think
18:51:39 <Deewiant> Or hang on
18:51:40 <Deewiant> ?ty guard
18:51:41 <lambdabot> forall (m :: * -> *). (MonadPlus m) => Bool -> m ()
18:51:43 <Deewiant> Right, never mind
18:51:45 <elliott> Right.
18:51:52 <elliott> Deewiant: (It annoys me that STM doesn't have a custom definition of fail.)
18:51:54 <elliott> I want to be able to write
18:51:55 <elliott> do {
18:52:00 <elliott> Just x <- readTVar foo;
18:52:01 <elliott> ...
18:52:01 <elliott> }
18:52:05 <zzo38> Yes, I suppose GHC is a Haskell program.
18:52:11 <Deewiant> It annoys me that Monad still has fail
18:52:12 <elliott> It makes perfect sense, declaratively :P
18:52:20 <elliott> Deewiant: That's probably never going to change ever.
18:52:22 <Deewiant> But true, that could be useful
18:52:28 <elliott> There's no way to fix that in a backwards-compatible manner.
18:52:30 <tswett> Just switch to Coq.
18:52:33 <zzo38> Deewiant: Obviously the reason is for use with do-notation.
18:52:42 <elliott> zzo38: It didn't use to be the case
18:52:50 <elliott> It was added because newbies got confused at MonadFail constraints appearing
18:52:51 <Deewiant> zzo38: Just make do blocks have MonadFail m => m a type
18:52:53 <Deewiant> If they use fail
18:52:58 <elliott> Relatedly: Newbies ruined Haskell 98
18:53:00 <Deewiant> Yeah, damn newbies.
18:53:02 <Deewiant> Agreed
18:53:04 <elliott> I think they were even imagined newbies.
18:53:09 <zzo38> Deewiant: Yes that is one way.
18:53:31 <elliott> Deewiant: Did you know that seq was in a type class previously??? And there was a Void type????
18:53:35 <Deewiant> Hey, monad comprehensions are on the way back (right?)
18:53:40 <Deewiant> So maybe we'll get there again
18:53:43 <elliott> Yes, they're in latest GHC release.
18:53:48 <elliott> Deewiant: Oh, and ... what else was in...
18:53:51 <elliott> Deewiant: IIRC (++) was Monoid
18:53:58 <elliott> Or at least some common now-monomorphic function was
18:54:01 <elliott> Maybe it was map
18:54:05 <Deewiant> Maybe both :-)
18:54:13 <Deewiant> http://www.cs.auckland.ac.nz/references/haskell/haskell-report-1.4-html/
18:54:18 <zzo38> Another way is to make up a class for DoNotation which includes the stuff for dealing with do-notation directly. And then have default instances, that you can use that.
18:54:22 <Deewiant> elliott: (++) was MonadPlus
18:54:23 <elliott> Deewiant: Basically we should just roll back to that release, add hierarchical modules, update base and call it a day.
18:54:32 <Deewiant> elliott: And yes, map was Functor
18:54:38 <elliott> Deewiant: Right. So much better.
18:54:49 <elliott> Deewiant: I wonder if [a, b, c] was :: (MonadPlus m) => m a
18:54:54 <elliott> It would only make sense
18:55:18 <Deewiant> ?hoogle strict
18:55:18 <lambdabot> module Control.Monad.RWS.Strict
18:55:19 <lambdabot> module Control.Monad.ST.Strict
18:55:19 <lambdabot> module Control.Monad.State.Strict
18:55:21 <elliott> Deewiant: My favourite thing about 1.4 was all the standard monadic combinators were implemented with monad comprehensions
18:55:23 <Deewiant> ?ty strict
18:55:23 <lambdabot> Not in scope: `strict'
18:55:25 <elliott> strict?
18:55:29 <Deewiant> class Eval a where
18:55:29 <Deewiant> seq :: a -> b -> b
18:55:29 <Deewiant> strict :: (a -> b) -> a -> b
18:55:30 <Deewiant> strict f x = x `seq` f x
18:55:35 <elliott> Ah, yes.
18:55:40 <elliott> Deewiant: That's dollar sign exclamation mark.
18:55:56 <Deewiant> Ah, yes.
18:56:07 <elliott> data a -> b -- No constructor for functions is exported.
18:56:07 <elliott> data a -> b = Function (Ptr Instruction)
18:56:09 <Deewiant> ?index ($!)
18:56:09 <lambdabot> Prelude
18:56:31 <Deewiant> -- right-associating infix application operator (useful in continuation-
18:56:31 <Deewiant> -- passing style)
18:56:32 <Deewiant> ($) :: (a -> b) -> a -> b
18:56:38 <elliott> ( ) (Function ptrInstruction) x = [asm| push x; jmp $(ptrInstruction) |]
18:56:40 <Deewiant> Yes, continuation-passing style indeed.
18:56:42 -!- nooga has quit (Ping timeout: 260 seconds).
18:56:53 <elliott> Deewiant: heh
18:56:59 <elliott> Deewiant: Well, it is :-P
18:57:11 <elliott> Did Cont not exist back then? I guess not
18:57:16 <elliott> data Int = minBound ... -1 | 0 | 1 ... maxBound
18:57:30 <elliott> data Double
18:57:30 <elliott> Aww, they should have tried to pseudo-enumerate it.
18:57:43 <elliott> The definitions
18:57:44 <elliott> -- of enumFrom and enumFromThen allow floats to be used in arithmetic
18:57:44 <elliott> -- series: [0,0.1 .. 1.0]. However, roundoff errors make these somewhat
18:57:44 <elliott> -- dubious.
18:57:46 <elliott> Somewhat dubious indeed
18:58:00 <elliott> @let foo = [1,3..10]
18:58:01 <lambdabot> Defined.
18:58:10 <elliott> > (length foo, length (map (/10) foo))
18:58:12 <lambdabot> (5,6)
18:58:22 * elliott thinks he already showed Deewiant that one.
18:58:38 <Deewiant> I don't think you did, but I'm quite aware of the issue.
18:58:48 <elliott> Deewiant: Conal did that one.
18:59:00 <elliott> Deewiant: (He actually didn't know of the issue until a few weeks ago when people he was teaching Haskell to ran into it)
18:59:17 <elliott> Deewiant: The lack of MR is to blame for that one, though.
18:59:24 <elliott> As well as defaulting but that goes without saying
18:59:30 <Deewiant> I've known of the issue for quite some time. :-P
18:59:38 <elliott> We should get rid of defaulting.
18:59:40 <Deewiant> And yeah, it sucks.
18:59:44 <Deewiant> Umm, probably not.
18:59:50 <elliott> Deewiant: Why not?
18:59:53 <elliott> Deewiant: OK, for interactive use.
19:00:06 <elliott> Deewiant: But I use -Wall -Werror so I don't get to use defaulting, and I literally never have problems with that.
19:00:07 <Deewiant> For interactive use and for short one-off programs
19:00:19 <elliott> Short one-off programs shouldn't rule the language :P
19:00:48 <elliott> Deewiant: "default" with no types could be standardised to turn defaulting on :-P
19:00:52 <Deewiant> (Also, -Werror?)
19:01:02 <Deewiant> That could work :-P
19:01:20 <elliott> <Deewiant> (Also, -Werror?)
19:01:32 <elliott> Deewiant: I turned it on to clean up Shiro and haven't broken the habit since
19:02:19 <elliott> Deewiant: It's better than it is in C :P
19:02:53 <Deewiant> It slows down debugging cycles :-P
19:03:30 <elliott> Deewiant: It shortens them by letting me fix bugs without running anything
19:03:46 <Deewiant> No, that's -Wall, -Werror doesn't help you there
19:04:24 <elliott> Deewiant: Except for all the warnings you decide don't need fixing because they're not applicable in this case, thus making you start automatically ignore warnings
19:04:32 <tswett> Okay, suppose you run x <- newTVarIO 'a'.
19:04:36 <Deewiant> Well, that's your problem :-P
19:04:40 <tswett> (Yeah, that's one hundred percent a Haskell statement.)
19:04:55 <Deewiant> I never "automatically ignore warnings" and I find it strange that people do
19:05:10 <tswett> And then you run atomically (do writeTVar x 'b'; writeTVar x 'a'), and meanwhile, you run readTVarIO x.
19:05:15 <elliott> Deewiant: Because you either ignore warnings, or get bothered by the irrelevant ones every single time.
19:05:20 <tswett> Is it possible that the second of those things will return 'b' instead of 'a'?
19:05:59 <Deewiant> Warnings don't survive very long so it's not like there's many an "every single time"
19:06:23 <elliott> tswett: Is that a question about STM semantics or about readTVarIO semantics
19:06:33 <elliott> readTVarIO == atomically . readTVar
19:06:38 <Ngevd> > (length foo, length (map (/10) foo), length (map (/10) (map (/10) foo)))
19:06:39 <lambdabot> (5,6,6)
19:06:45 <elliott> tswett: So no, there is no chance.
19:06:51 <elliott> tswett: STM provides no backdoors.
19:08:24 <tswett> So I guess the second thread reads x, and then checks to make sure nobody has written to x "concurrently", and, if so, tries again?
19:08:32 <Ngevd> Working on Uniquode
19:08:46 <elliott> tswett: Like I said, the "retry" is just a model.
19:08:55 <tswett> Yes, but I'm asking about that model.
19:09:14 <elliott> tswett: You can reason about STM as if it was sequential execution.
19:09:25 <elliott> tswett: Oh, the (readTVarIO x) could return 'a', yes.
19:09:26 <elliott> Erm
19:09:27 <elliott> Right
19:09:27 -!- nooga has joined.
19:09:33 <elliott> tswett: If the variable started with 'x'
19:09:36 <elliott> Then it could return 'x' too.
19:09:39 <elliott> But that's obvious.
19:09:43 <tswett> Right.
19:09:54 <tswett> I guess sequential execution is a really obvious way to think about this.
19:10:07 <elliott> You can also think about it as "atomically" grabbing an exclusive lock over the entire system.
19:10:13 <Gregor> elliott: Solaris ls uses threads.
19:10:15 <elliott> Which is the same thing :P
19:10:20 <elliott> Gregor: SO FAST
19:10:31 <elliott> Gregor: Does it, like, sort with parallel mergesort?
19:10:40 <Gregor> HellifIno
19:10:45 <Gregor> I just know it depends on pthreads :P
19:10:48 <elliott> Gregor: It was a joke :P
19:10:54 <elliott> Gregor: I find it plausible that Solaris libc depends on pthreads
19:10:56 <Gregor> SO IS YOUR FACE
19:11:04 <tswett> So if I do atomically (do readTVar x; hey make sure x is equal to 5; writeTVar x 6), will that transaction just kinda hang around until x becomes 5, and then replace it with 6?
19:11:08 <elliott> Unless pthreads depends on libc I guess :P
19:11:26 <elliott> tswett: It'll block until x becomes 5, yeah.
19:11:35 <tswett> Will atomically return before then?
19:11:36 <elliott> tswett: Or, if we're enforcing PURE STRICT MODEL THINKING: It busyloops until x becomes 5 :P
19:11:46 <elliott> tswett: No; that's why it's called "atomically".
19:11:53 * tswett nods.
19:12:04 <elliott> tswett: You can of course spawn it off in a thread.
19:12:09 <elliott> That's just (forkIO . atomically).
19:12:19 <elliott> (In GHC, that's a lightweight thread.)
19:12:30 <elliott> (GHC runs lightweight threads in a few OS threads.)
19:12:38 <elliott> (You may already know this.)
19:12:58 <tswett> And is there, by chance, any way to save all the relevant state to disk at regular intervals?
19:13:11 <Ngevd> What should * do in Uniquode?
19:13:37 <tswett> Ngevd: it should extend the private use areas.
19:14:36 <elliott> tswett: Well, you could fork off a thread that does "atomically { x <- readTVar blah; y <- readTVar bluh; ... return MyStateRecord { foo=x, bar=y, ... } }" periodically and writes that to disk. That isn't very nice, though. (You could define a wrapper library that looks like "newTVar :: (Serialise a) => a -> STM (TVar a)" and adds it to an internal list, and uses existentials etc. to avoid actually listing out every variable there.)
19:14:56 <elliott> That doesn't quite give you the D in ACID, because of course the program could crash before that serialisation happens, but it's not bad, and the wrapper library would make it seamless.
19:15:06 * tswett nods.
19:15:17 <elliott> tswett: http://hackage.haskell.org/package/acid-state offers full ACID transactional storage of standard Haskell values, with on-disk persistence.
19:15:26 <elliott> tswett: But it has some limitations, like you have to define transactions upfront.
19:15:36 <elliott> And they can't take any parameters that aren't serialisable, for obvious reasons (it's based on log storage).
19:15:39 <elliott> Erm, not log-storage.
19:15:41 <elliott> But literally storing a log :P
19:15:54 <tswett> An *actual log*.
19:15:59 <elliott> Yes. Made out of wod.
19:15:59 <elliott> wood.
19:16:04 <tswett> Got it.
19:16:13 <elliott> Just like trees are made out of paper.
19:16:20 <tswett> Do they have wood over there?
19:16:28 <elliott> In England? No.
19:16:31 * tswett nods.
19:16:34 <ais523> tswett: you can buy it at petrol stations
19:16:40 <ais523> also, from lumber merchants
19:16:45 <ais523> depending on whether you want to burn it or make furniture out of it
19:16:47 <tswett> So all of the wood there is imported.
19:16:47 <Ngevd> We import it from the middle east
19:17:03 <Ngevd> And Russia
19:17:04 <ais523> tswett: there are some areas called "forest" that aren't actually forests
19:17:10 <ais523> there are also some actual forests, though, too
19:17:21 <ais523> although mostly just little ones nowadays
19:17:28 <tswett> ais523: what are they? Just sort of regions that contain a bunch of places marked "tree"?
19:17:36 <tswett> And are all of the actual forests imported, too?
19:17:36 <ais523> most of the trees in the UK are planted deliberately
19:17:43 <elliott> tswett: Piles of paper.
19:17:49 <tswett> elliott: ah.
19:18:04 <tswett> So do you have to manufacture paper there, or is the natural forest paper enough for all your needs?
19:18:10 <tswett> And does it grow to size, or do you have to cut it?
19:18:21 <ais523> paper's nearly always done from "managed forests"
19:18:22 <elliott> tswett: It doesn't grow on trees, you know.
19:18:28 <ais523> which are just bunches of pine trees being farmed
19:18:44 <ais523> there's a little logo saying Forest Stewardry Council on it
19:18:54 <ais523> to reassure people that it wasn't made from rainforests or something stupid like that
19:19:10 <ais523> (incidentally, throughout this conversation, I've been serious and elliott's been joking)
19:19:22 <elliott> Really???????????????????????????
19:19:26 * tswett writes this down: British trees all say "Forest Stewardry Council" on them, except the ones imported from rainforests.
19:19:33 <ais523> tswett: as for the areas called "forest" which aren't, they're places which were forests once but aren't any more
19:19:39 <Gregor> Also, OpenIndiana's echo command appears to output by a series of wputchars.
19:19:51 <Ngevd> And I was talking about oil
19:20:15 <tswett> elliott: now, that's too many question marks. The limit is nine.
19:20:22 <ais523> Gregor: does it convert what it echos between Unicode normalization forms? that'd be hilarious
19:20:45 <Gregor> ais523: I choose not to find the answer to that question :P
19:21:16 -!- tiffany has joined.
19:22:23 <elliott> Gregor: You gotta be joking.
19:22:51 <elliott> #defineexit(a)flushb(); return (a)
19:22:53 <elliott> Gregor: Holy shit...
19:24:16 <zzo38> I don't like that definition can you write this instead: return (flushb(),(a)) would this even work, and would that one work too
19:24:20 <Gregor> elliott: Best part of this completely pointless project is discovering just how retarded Solaris is :P
19:24:47 <Deewiant> elliott: Where's that
19:25:08 <elliott> Deewiant: echo.c
19:25:25 <elliott> http://www.google.co.uk/url?sa=t&source=web&cd=2&sqi=2&ved=0CCkQFjAB&url=http%3A%2F%2Fcs.wmich.edu%2F~trthomps%2FClasses%2FCS%25202240%2Fsh_src%2Fheirloom-sh-050706%2Fecho.c&ei=EYGcTo7wNdSzhAeBkaGLBA&usg=AFQjCNHHVhYMfSdbCg2o1lwZmN_MOdAt4Q&sig2=ARvlnfObEYkTXCFs5ciiew
19:25:29 <elliott> GOOOGLEEEE
19:25:31 <elliott> oh hmm
19:25:39 <elliott> it has a comment involving opensolaris but might not be opensolaris
19:25:41 <Deewiant> http://cs.wmich.edu/~trthomps/Classes/CS%202240/sh_src/heirloom-sh-050706/echo.c
19:25:43 <elliott> aha, wait, http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/sh/echo.c
19:25:46 <elliott> it is
19:25:49 <elliott> Deewiant: http://cvs.opensolaris.org/source/raw/onnv/onnv-gate/usr/src/cmd/sh/echo.c
19:26:01 <Deewiant> Heh, nice
19:26:21 <ais523> what does prc_buff do anyway?
19:26:38 <elliott> I don't want to know
19:26:41 <ais523> there is an mbtowc call in there, anyway
19:26:44 <ais523> which is fun
19:27:18 <Gregor> I wurve Solaris :P
19:27:35 <Deewiant> ais523: http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/sh/print.c#208
19:27:51 <Deewiant> Writes to a buffer, evidently
19:28:04 <elliott> So where's the ncurses part :P
19:28:32 <Deewiant> http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/lib/libcurses/ ?
19:28:43 <Gregor> Solaris and Mac OS X are collectively a great reminder of why the UNIX brand name is not something to be proud of :P
19:30:49 <elliott> Deewiant: <Gregor> Also, OpenIndiana's echo command appears to output by a series of wputchars.
19:32:11 <Deewiant> I thought wputchar was like a wide putchar
19:32:47 <Deewiant> curses would have waddch
19:32:51 <elliott> oh, darn :(
19:33:00 <elliott> they just /look/ like curses names
19:33:01 <elliott> flushb too
19:33:10 <Deewiant> wrefresh
19:33:48 <elliott> Gregor: Curses echo: the best?
19:34:03 <Deewiant> echochar(3X)
19:34:31 <ais523> hmm, did people here see the Proggit post about how Outlook can be made to try to open a URL, without permission, on the UI thread?
19:34:40 <Deewiant> Yes
19:34:53 <elliott> yes
19:35:23 <ais523> that worries me, especially the bit where MS don't consider it a security bug
19:35:29 <ais523> but just a regular bug
19:36:00 <elliott> Gregor: How come jslinux is so much faster than jsmips
19:36:56 -!- GreaseMonkey has joined.
19:41:49 -!- oerjan has joined.
19:46:39 <elliott> ais523: OK, Python has the most ridiculous thing ever
19:48:06 <oerjan> the module of silly walks
19:48:15 <elliott> oerjan: No: gc.garbage
19:48:19 <elliott> A list.
19:49:23 <Gregor> elliott: Uhh, it isn't.
19:49:31 <elliott> Gregor: It totally is.
19:49:43 <elliott> (I suspect the answer is "Bellard" :P)
19:49:50 <oerjan> a linked list of garbage is a nice way to do refcounting
19:50:26 <oerjan> except python wants everything to be freed immediately, doesn't it
19:50:48 <Gregor> elliott: I think the perceived difference in time is because my fork is slow.
19:50:55 <elliott> Gregor: Fair enough.
19:51:05 <Gregor> elliott: Actual process execution is faster.
19:51:09 <elliott> oerjan: gc.garbage¶
19:51:09 <elliott> A list of objects which the collector found to be unreachable but could not be freed (uncollectable objects). By default, this list contains only objects with __del__() methods. [1] Objects that have __del__() methods and are part of a reference cycle cause the entire reference cycle to be uncollectable, including objects not necessarily in the cycle but reachable only from it. Python doesn’t collect such cycles automatically because, in genera
19:51:09 <elliott> l, it isn’t possible for Python to guess a safe order in which to run the __del__() methods. If you know a safe order, you can force the issue by examining the garbage list, and explicitly breaking cycles due to your objects within the list. Note that these objects are kept alive even so by virtue of being in the garbage list, so they should be removed from garbage too. For example, after breaking cycles, do del gc.garbage[:] to empty the list.
19:51:11 <elliott> It’s generally better to avoid the issue by not creating cycles containing objects with __del__() methods, and garbage can be examined in that case to verify that no such cycles are being created.
19:55:00 <ais523> heh, I can't figure out if that's an argument for or against refcounting
19:55:15 <ais523> (Java decided that finalizers were a bad idea, incidentally, in its solution to the same problem)
19:55:56 <Gregor> Finalizers are a bad idea for so many other reasons too.
19:56:00 <ais523> this is, of course, not a problem in Feather
19:56:10 <ais523> for oh so many reasons
19:56:30 <ais523> well, unless you allow retroactive self-modification inside a destructor
19:56:35 <ais523> and why would you do that?
19:57:31 <elliott> Gregor: Weeell, finalisers are nice for resource management
19:57:56 <Gregor> Yeahyeah, I'm gettin' around to merging GGGGC's finalizers into the Fythe branch :P
19:58:25 <oerjan> how in the world does feather ever call destructors...
19:58:50 <Deewiant> ais523: Why not?
19:59:13 <elliott> Gregor: Good, then maybe I can start working on bigints again :P
20:05:11 -!- Ngevd has quit (Quit: Leaving).
20:05:49 -!- Ngevd has joined.
20:06:18 <ais523> Deewiant: err, because I don't want to think about the implications
20:06:43 <Deewiant> That's a bit of a cop-out
20:06:47 <Deewiant> Let the users figure it out!
20:06:59 <elliott> ais523: of course you might want to do that
20:07:05 <elliott> ais523: to enforce invariants
20:07:29 <ais523> hmm, am I being trolled?
20:07:32 <elliott> ais523: say, if bad_thing then canary_ref := () else nop
20:07:45 <elliott> canary_ref contains the sole reference to an object whose destructor goes back in time and fixes things
20:07:50 <elliott> say, changes the result of a call to the "amb" operator
20:08:03 <ais523> then why use destructors rather than just method calls? this isn't Reaper
20:08:21 <ais523> also, you can't set canary_ref
20:08:21 <elliott> ais523: why not?
20:08:28 <elliott> to the first one
20:08:42 <elliott> I don't see why it would cause problems to allow retroactive self-modification in destructors
20:08:43 <ais523> you can only modify it so that it had the value () all along
20:08:47 <elliott> it would merely cancel the destruction
20:08:56 <ais523> elliott: it wouldn't; the problem then is to determine whether the destructor should be run or not
20:09:04 <ais523> which is the problem the original discussion was about
20:09:10 <ais523> if you make destructors pure, it's not a problem
20:09:11 <elliott> ais523: that's easy
20:09:20 <ais523> (note: pure destructors are useless, right?)
20:09:21 <elliott> ais523: you rewind the state, modify it, and run the program
20:09:28 <elliott> if it runs the destructor, then it runs
20:09:32 -!- nooga has quit (Ping timeout: 248 seconds).
20:09:32 <elliott> if not, it doesn't, and it's a paradox
20:09:53 -!- quintopia has joined.
20:10:05 <elliott> ais523: (obviously, this is fixed-pointed, so the destructor has to end up doing nothing)
20:10:12 <elliott> ais523: (in the limit)
20:10:14 <elliott> I think
20:10:17 <ais523> no, you have Feather's time-travel model wrong there
20:10:32 <ais523> things always have effects, but are allowed to not have causes from the same timeline
20:10:33 <elliott> ais523: I wasn't saying that's what actually happened
20:10:35 <ais523> there's a sort of meta-time thing
20:10:43 <elliott> ais523: I was saying that's how you determine whether it runs or not
20:10:45 <ais523> where each timeline can affect the timeline after it
20:10:48 <ais523> elliott: oh, ouch
20:10:54 <quintopia> it's been such a long time, hasn't it
20:11:00 <ais523> <Rodney> raii (Wiz Elf Mal Cha), 10794 points, killed by a raven, while fainted from lack of food
20:11:02 <ais523> relevant, I guess?
20:11:06 <elliott> quintopia: eh?
20:11:10 <ais523> quintopia: why were you k-lined?
20:11:11 <elliott> ais523: rip raii
20:11:24 <quintopia> since i was k-lined. too busy to solve that problem until now.
20:11:53 <ais523> ah, no explanation?
20:11:54 <elliott> quintopia: why did it happen
20:11:58 <elliott> ais523: enjoy your spam
20:12:10 <ais523> I should introduce you to kerio some time
20:12:16 <ais523> actually, probably I shouldn't
20:12:19 <elliott> I think they were in the quotes you linked
20:12:35 <ais523> I linked quotes?
20:12:48 <elliott> ais523: yep, in an attempt to prove that our qdb was awful
20:12:58 <elliott> theirs is worse; the top quote quality is better, but the average quote quality is lower
20:13:14 <quintopia> elliott: operating a tor exit node on the IP address i was connecting from. just had to change my hostname to get back on.
20:13:42 <elliott> I thought freenode allowed Tor
20:13:52 <elliott> yep
20:14:01 <elliott> I guess maybe you can connect with Tor, but not be an exit note yourself?
20:14:10 <elliott> since they list a hidden service
20:14:49 <ais523> oh, right, something irrelevant that happened in RL just reminded me of a /really really bad/ antipattern I saw in student code today
20:15:07 <elliott> ais523: anyway, why introduce me to kerio
20:15:12 <Ngevd> Antipattern?
20:15:32 <ais523> approximately, it was for(int i=0;i<n;n++) {if(n==3) f(); else if (n==4) f(); else if (n==5) f(); else if (n==6) f(); else if (n==7) f(); else if (n==8) f();}
20:15:40 <ais523> where the loop is meant to work generally for all n >= 3
20:15:46 <ais523> and will never be called with n < 3
20:15:59 <ais523> also, f() wasn't a function, but a block statement (not a massively long one, but still)
20:16:05 <elliott> ais523: that's not an antipattern, that's just... a bug
20:16:10 <ais523> at first I thought it was a for-case, then I realised it was even worse
20:16:15 <elliott> it doesn't handle n>8
20:16:18 <ais523> elliott: indeed
20:16:20 <elliott> oh, wait
20:16:24 <elliott> ouch, it does
20:16:29 <ais523> no it doesn't
20:16:29 <oerjan> Ngevd: like a design pattern, except it causes huge explosions on contact with software
20:16:34 <elliott> ais523: yes it does; it just doesn't do anything past 8
20:16:35 <ais523> it does nothing for n>8
20:16:39 <elliott> ais523: oh, that's not intentional?
20:16:39 <elliott> heh
20:16:43 <ais523> yep, not intentional
20:16:52 <ais523> they just got bored writing cases, I think
20:17:21 <ais523> oh, it wasn't copy-pasted either, I could tell as all the cases were indented differently
20:17:24 <Deewiant> So what's actually supposed to happen there
20:17:33 <Deewiant> Start i from 3 and call f() every time?
20:18:17 <ais523> Deewiant: it's equivalent to if (n >= 3 && n <= 8) for (int i = 0;i<n;i++) f();
20:18:25 <ais523> the n++ was a typo, it should have been i++
20:18:33 <ais523> typo I made, that is, not typo in the original code
20:18:34 <Deewiant> Yeah, I know what that does
20:18:38 <Deewiant> But I mean, what is it meant to do
20:18:48 <ais523> it's meant to do for (int i = 0;i<n;i++) f();
20:18:48 <Deewiant> Or should the correct code not involve such a loop at all
20:18:51 <elliott> <ais523> Deewiant: it's equivalent to if (n >= 3 && n <= 8) for (int i = 0;i<n;i++) f();
20:18:55 <Deewiant> Okay
20:18:57 <elliott> wait, nm
20:19:07 <elliott> ais523: so what code even is this
20:19:14 <ais523> elliott: homework, it's not particularly useful code
20:19:21 <elliott> ais523: oh
20:19:26 <elliott> I was thinking it was something you were maintaining
20:19:27 <ais523> it was meant to exit on n < 3, and otherwise do f n times
20:19:37 <ais523> elliott: haha, that would be really bad
20:19:52 <ais523> and I'd have refactored it by now
20:20:16 <ais523> it seems rather worse than for-case, where at least I can see how it happens even though it's stupid
20:21:10 <ais523> Ngevd: an antipattern is a method of writing code that's been seen often enough in the wild to have a name, but makes no sense
20:21:18 <Ngevd> Oh, okay
20:21:20 <ais523> and makes the code less maintainable
20:22:05 <ais523> <Wikipedia> In software engineering, an anti-pattern (or antipattern) is a pattern that may be commonly used but is ineffective and/or counterproductive in practice.
20:22:19 <ais523> the page has a list of common antipatterns
20:22:39 <ais523> some of which I don't know of
20:33:48 -!- tiffany has quit (Quit: Leaving).
20:43:33 -!- tiffany has joined.
20:49:45 <tswett> Is it just me, or is TMVar a semantically equivalent to TVar (Maybe a)?
20:51:06 <elliott> tswett: Yes. That is how it is implemented.
20:51:14 <elliott> tswett: Click the "source" link at the top-right of the page.
20:51:19 <elliott> Everything is implemented on top of TVars.
20:51:24 <elliott> tswett: BTW, you probably want to read http://research.microsoft.com/en-us/um/people/simonpj/papers/stm/stm.pdf.
20:51:36 <elliott> It covers GHC's entire STM model and implementation.
20:51:46 <elliott> (Well, not the details of the implementation.)
20:52:35 -!- nooga has joined.
21:03:04 <Gregor> Heylook, I'm running Linux binaries on Mac.
21:04:10 <oerjan> *gasp*
21:04:32 <Gregor> gelfload: The bestest.
21:04:50 <quintopia> :/
21:11:04 <olsner> Gregor, loader of gelfs
21:11:24 <Ngevd> Gregor "gelfloader" Gregor
21:11:34 <zzo38> If you need to run the programs I wrote, you might be able to compile them yourself (that is, if it is a C program, Haskell program, etc) and run on any computer. The other one it is more difficult but it can probably be made.
21:15:21 <elliott> You are an entity that can only make false statements. How can you convince an entity that believes everything you say that you can only make false statements?
21:15:48 <elliott> (this is easy)
21:16:13 <ais523> elliott: are you capable of making /every/ false statement?
21:16:27 <elliott> yes, but not all of them
21:16:30 <elliott> (finite number of statements only)
21:16:37 <elliott> (but arbitrary (finitely-sized) statements)
21:16:39 <ais523> if so, who cares about convincing people, just use your ability to solve major unsolved problems via binary search
21:16:43 <ais523> by seeing which statements you can make
21:16:56 <elliott> ais523: IT'S A RIDDLE :P
21:16:58 -!- Ngevd has quit (Quit: Leaving).
21:17:00 <zzo38> Yes, that is how you answer that question.
21:17:18 <ais523> elliott: well, you see, once you've gone and solved a bunch of problems like that
21:17:27 <ais523> it'll become obvious that you have some magic ability to sense truth values
21:17:36 <elliott> hey quintopia, Phantom_Hoover, YOU DO IT INSTEAD
21:17:38 <ais523> and then it'd become an issue of only-true versus only-false, which should be obvious
21:17:58 <elliott> ais523: Dude, the other entity doesn't apply intuition.
21:18:04 <elliott> I said "entity" not "person" :P
21:18:11 <Phantom_Hoover> Yes.
21:18:16 <elliott> Phantom_Hoover: waht
21:19:24 <elliott> Phantom_Hoover: SOLV RIDLE
21:19:30 <elliott> It's trivial :P
21:19:31 <Phantom_Hoover> Candle.
21:20:26 <elliott> <elliott> You are an entity that can only make false statements. How can you convince an entity that believes everything you say that you can only make false statements?
21:20:27 <elliott> <elliott> (this is easy)
21:20:29 <elliott> Phantom_Hoover: OSOSOEVLE,VE,
21:21:04 <Phantom_Hoover> It's half ten; you have passed the threshold beyond which answers other than 'candle' will be provided.
21:22:37 <elliott> Phantom_Hoover: You're even worse than ais523.
21:22:52 <olsner> elliott: (just guessing) the answer is three, right?
21:22:53 <Phantom_Hoover> elliott, what if I tell it two contradictory lies?
21:22:58 <elliott> olsner: no.
21:23:03 <olsner> damn.
21:23:04 <elliott> Phantom_Hoover: Then it dies.
21:23:10 <elliott> Phantom_Hoover: And you lose.
21:23:13 <elliott> As does humanity.
21:23:23 <ais523> Phantom_Hoover: what do gnomes often own in AceHack that they don't in vanilla?
21:23:49 <Phantom_Hoover> Candles.
21:24:06 <ais523> how did you guess?
21:24:29 <elliott> Phantom_Hoover: What's an obsolete method of producing light?
21:24:35 <Phantom_Hoover> Candles.
21:25:20 <elliott> Phantom_Hoover: wrong, torches
21:25:35 <ais523> elliott: what's an odd number?
21:25:44 <elliott> ais523: Candles.
21:25:50 <ais523> elliott: wrong, 5
21:26:11 <elliott> ais523: Wrong, 523>.
21:26:13 <elliott> Argh.
21:26:17 <elliott> ais523: Wrong, 523.
21:26:35 <ais523> elliott: the only acceptable answers are from 3 to 8 inclusive
21:26:43 <oerjan> Phantom_Hoover: Astronomers use supernovas of type 1a as standard what?
21:26:50 <Phantom_Hoover> Candle!
21:27:29 <elliott> no, candle_s_
21:27:42 <elliott> Phantom_Hoover: What did Mr. McCandless have none of?
21:28:01 <Phantom_Hoover> Whisky.
21:28:17 <elliott> The correct answer was candles.
21:29:55 <elliott> And thus we get a glimpse into the true mind of a Scot like Phantom_Hoover: Candles, whisky, and nothing else.
21:29:56 <ais523> provisional list of things that are not questions to which "Candles" is the correct answer: INTERCAL, the US national debt, manhole covers, this sentence
21:30:11 <elliott> ais523: candles
21:30:13 <Phantom_Hoover> elliott, what more does one need?
21:30:19 <ais523> this list is incomplete; you can help by expanding it
21:30:37 <elliott> :D
21:31:21 <oerjan> elliott: i can just imagine Phantom_Hoover going down the stairs of his huge castle in a nightgown carrying whisky and a candle.
21:31:34 <elliott> ais523: you just made me realise that I have somehow internalised Wikipedia stock phrases
21:31:50 <Phantom_Hoover> oerjan, I have the best castle.
21:32:00 <ais523> elliott: so has everyone else; that's why the {{citation needed}} meme works
21:32:12 <elliott> ais523: that's a rather more obvious one than the one you used
21:32:15 <ais523> yep
21:32:15 <oerjan> he probably also has chains; he's a phantom, after all
21:33:22 <oerjan> ais523: everyone else {{who}} ?
21:33:57 <oerjan> i guess if it really is everyone, it's not technically a weasel word
21:35:06 <ais523> "everyone"'s the opposite of a weasel word
21:35:11 <elliott> ais523: huh, has {{citation needed}} always been that?
21:35:14 <elliott> I thought that was a redirect to {{fact}}
21:35:17 <ais523> it's only weaselish due to not being believable
21:35:22 <elliott> but it seems to be the other wway around
21:35:35 <ais523> elliott: that name's existed pretty much forever, but {{fact}} was the official name for ages
21:35:43 <elliott> right
21:35:46 <ais523> it was probably changed as part of the campaign to have long readable English official names for templates
21:35:56 <ais523> on the basis that it doesn't matter which name's official anyway
21:35:58 <elliott> heh
21:36:03 <elliott> actually, I'm inclined to agree
21:36:08 <elliott> it serves as documentation
21:36:25 <elliott> ais523: This template was considered for deletion on 2006 July 1. The result of the discussion was nomination withdrawn on procedural technicality (and discussion was overwhelmingly in favor of keep).
21:36:31 <ais523> haha
21:36:32 <elliott> --[[Template talk:Citation needed]]
21:36:37 <elliott> ais523: "overwhelmingly" italicised in original
21:36:46 <elliott> Delete This template is the equivalent of an editor's markup on a rough draft. It litters many otherwise good articles on Wikipedia with ugly, unprofessional looking clutter that only serves to highlight the articles' defects to non-editors. No real encyclopedia would go to press with marks like this left in its articles. This is the type of thing that belongs on an article's talk page, not in the article itself. Template:fact should be deleted a
21:36:47 <elliott> nd instances of its use should be replaced with appropriate discussions on the talk pages of the articles where it is used. dryguy 17:57, 1 July 2006 (UTC)
21:36:52 <elliott> I'm sure /that/ went down well
21:37:02 <ais523> elliott: a general rule of Wikipedia is that any sufficiently well-known non-article page will have been nominated for deletion
21:37:04 <elliott> only five thousand million billion trillion occurrences to fix
21:37:31 <ais523> as a corollary, in the case of a /really/ well known-page like the main page or AfD, it will actually have been deleted
21:37:48 <elliott> ais523: I saw an AfD once for [[Adolf Hitler]], where the submitter argued that since Hitler was a bad man (they didn't say evil or anything, literally "bad") there shouldn't be an article on him
21:37:49 <ais523> (the developers made the sandbox undeletable at one point, because someone deleting it crashed the servers)
21:37:51 <elliott> as punishment, I guess?
21:38:18 <elliott> ais523: hmm, why would that crash the servers?
21:38:28 <elliott> ais523: because of people trying to edit a page that doesn't exist and that codepath not being optimised?
21:38:40 <ais523> elliott: no, because it was trying to move all the edits to the sandbox ever from one db table to another
21:38:44 <ais523> and /that/ codepath wasn't optimised
21:38:46 <elliott> ais523: haha
21:38:59 <elliott> ais523: I wonder how much space the history for the sandbox takes up
21:39:45 <oerjan> by the year 3000, the history for the sandbox will occupy most of the main landmass on planet Xygiton 5
21:40:03 <ais523> I think the sandbox history was actually perma-deleted after that incident
21:40:07 <ais523> rather than just moved to the archive table
21:40:28 <oerjan> evil revisionists!
21:42:03 <ais523> oh right, after that happened they added a limit where pages with more than 5000 revisions couldn't be deleted
21:42:25 <ais523> and someone tried to edit the main page 5000 times in order to make it undeletable (Wikipedians have a tendency to come up with "ingenious" workarounds like that)
21:42:33 <ais523> and then the main page actually was deleted because they'd miscounted
21:42:39 <ais523> and the devs got really really angry
21:42:49 <oerjan> huffin' and puffin'
21:43:14 <ais523> pointing out how much server load it would be to spam 5000 edits into the main page of every Wikimedia wiki in every language
21:44:12 <Deewiant> elliott: So have you stopped using partial functions
21:44:24 <elliott> Deewiant: When
21:44:32 <elliott> I usually avoid partial functions, and always have
21:44:41 <oerjan> Deewiant: yeah he's concentrating on beating his girlfriend now
21:44:53 <Deewiant> elliott: I mean completely
21:45:04 <elliott> Deewiant: Why would I do that
21:45:06 <elliott> "div" is pretty useful
21:45:47 <Deewiant> fromMaybe (error "b is zero") (a `tryDiv` b)
21:45:58 <Deewiant> Just musing based on that article in /r/haskell
21:45:58 <elliott> Deewiant: Do you do that
21:46:13 <elliott> Deewiant: Right, I don't think anyone doesn't use partial functions, and I don't know why you think I would :P
21:46:20 <elliott> Things like head are pretty egregious; div isn't
21:46:25 <Deewiant> I just saw your comments so I figured I'd ask
21:46:32 <Deewiant> What about things like head, then?
21:46:51 <elliott> Well, head's dubious enough that any use of it should probably have an explanatory error message
21:47:02 <elliott> Something like div is benign
21:47:20 <elliott> Although if we got a Nat1 where (0 :: Nat1) was a compile time failure, I'd be all for div :: (Integral a) => a -> Nat1 -> a
21:47:23 <Deewiant> D'oh, I'm a bad person then
21:47:26 <ais523> head /etc/passwd -n 1 || echo "there are no users help"
21:47:29 <elliott> Deewiant: When do you use head
21:47:33 <Deewiant> readOct' = fst . head . readOct
21:47:34 <ais523> actually, I've got the args backwards there, right?
21:47:41 <ais523> head -n 1 /etc/passwd || echo "there are no users help2
21:47:44 <ais523> s/2/"/
21:47:47 <elliott> Deewiant: Here's what I normally do for read:
21:48:12 <elliott> Deewiant: case reads str of [(n,"")] -> n; _ -> failSomehow
21:48:16 <elliott> Deewiant: I take it this is in your UI
21:48:26 <elliott> In which case you should probably do the general "print error, display usage" thing
21:48:29 <elliott> It doesn't matter for quick hacks obviously
21:48:36 <Deewiant> It's used after parsing octal digits with trifecta
21:48:48 <Deewiant> So it "shouldn't fail ever"
21:48:48 <elliott> Deewiant: Then why do you need to turn it into a string
21:48:52 <elliott> You can construct a parser that reads octal
21:48:59 <Deewiant> I need to turn it into a number
21:49:08 <elliott> Deewiant: And?d
21:49:10 <elliott> s/d//
21:49:20 <elliott> Deewiant: To parse octal: Read octal digit, read octal number, combine the two appropriately.
21:49:27 <elliott> :: Parser Integer
21:49:34 <Deewiant> And "combine the two appropriately" is implemented in Numeric.readOct
21:49:52 <elliott> Deewiant: No, combining the two is as simple as
21:50:02 <elliott> d*8 + r
21:50:22 <Deewiant> d*8 + digitToInt r
21:50:29 <elliott> Um
21:50:30 <elliott> d is the digit here
21:50:37 <elliott> Unless your octal is backwards
21:50:45 <elliott> Oh err
21:50:52 <elliott> Right, you have to do it backwards
21:51:01 <elliott> That's left-recursive :(
21:51:07 <elliott> Deewiant: But anyway, just write your own as a Parser :P
21:51:10 <elliott> Or don't, but that's what I'd do
21:51:21 <Deewiant> It is a Parser, it just uses readOct
21:51:29 <oerjan> that is a rather silly thing to roll your own though...
21:51:29 <Deewiant> Instead of a hand-written foldl
21:51:32 <elliott> Deewiant: Gah
21:51:36 <elliott> Deewiant: It wouldn't be a foldl
21:51:48 <elliott> Deewiant: Don't read many octal digits and then combine them
21:51:53 <elliott> Do it step-by-step
21:52:11 <oerjan> @hoogle chainl
21:52:12 <lambdabot> Text.Parsec.Combinator chainl :: Stream s m t => ParsecT s u m a -> ParsecT s u m (a -> a -> a) -> a -> ParsecT s u m a
21:52:12 <lambdabot> Text.ParserCombinators.ReadP chainl :: ReadP a -> ReadP (a -> a -> a) -> a -> ReadP a
21:52:12 <lambdabot> Text.ParserCombinators.Parsec.Combinator chainl :: Stream s m t => ParsecT s u m a -> ParsecT s u m (a -> a -> a) -> a -> ParsecT s u m a
21:52:18 <elliott> See
21:52:19 <elliott> Tada
21:52:43 <oerjan> @hoogle chainl1
21:52:44 <lambdabot> Text.Parsec.Combinator chainl1 :: Stream s m t => ParsecT s u m a -> ParsecT s u m (a -> a -> a) -> ParsecT s u m a
21:52:44 <lambdabot> Text.ParserCombinators.ReadP chainl1 :: ReadP a -> ReadP (a -> a -> a) -> ReadP a
21:52:44 <lambdabot> Text.ParserCombinators.Parsec.Combinator chainl1 :: Stream s m t => ParsecT s u m a -> ParsecT s u m (a -> a -> a) -> ParsecT s u m a
21:52:47 <Deewiant> How is that different from a foldl :-P
21:53:24 <elliott> Deewiant: Because you avoid the partiality?
21:53:26 <Deewiant> Anyway it's not appropriate in this particular case as I know exactly how many characters I've got
21:53:31 <Deewiant> How is foldl partial?
21:53:37 <elliott> Deewiant: readOct is
21:53:38 <elliott> Deewiant: And it also uses less memory, presumably
21:53:43 <elliott> Because many has to keep them all in memory
21:54:24 <Deewiant> At this point I was comparing foldl to chainl, not readOct
21:54:31 <Deewiant> With a foldl it wouldn't be partial
21:55:32 <Phantom_Hoover> ais523, when did you start being slavishly legal?
21:55:46 <ais523> Phantom_Hoover: there was a time when I wasn't?
21:55:58 <elliott> Deewiant: Right
21:55:59 <ais523> perhaps there was, but I don't really remember it well
21:56:20 <Phantom_Hoover> ais523, well, I mean, did you never sing Happy Birthday at parties?
21:56:58 <ais523> Phantom_Hoover: it was a while before I discovered that that was illegal, and I'm still not sure on the matter
21:57:20 <ais523> actually, we used to sing it to the tune of "good morning to you", because that's what was in the book of piano tunes we bought
21:57:24 <ais523> (it differs by one note)
21:57:30 <Deewiant> elliott: So it doesn't seem like chainl could help me here, and writing the foldl probably wouldn't simplify this any
21:57:45 <elliott> Deewiant: Oh well, sucks to be you then
21:58:31 <Deewiant> I can see you're interested :-)
21:58:58 <Phantom_Hoover> ais523, I don't think that makes it legal?
21:59:21 <ais523> Phantom_Hoover: it does, because IIRC Happy Birthday To You was a modification of Good Morning To You in the first place
21:59:44 <elliott> oerjan: How does (forever $ a `catch` b) parse
21:59:50 <elliott> Deewiant: I am, but you haven't given sufficient details
22:00:24 <oerjan> > (0$0 `catch`)
22:00:25 <lambdabot> The operator `System.IO.Error.catch' [infixl 9] of a section
22:00:25 <lambdabot> must have...
22:00:45 <oerjan> as forever (catch a b), i'd assume
22:01:02 <elliott> oerjan: thanks
22:01:10 <Deewiant> elliott: a <- octDigit; b <- optional octDigit; c <- optional octDigit; return (plzCombine a b c)
22:01:25 <elliott> Deewiant: Dude, just unroll it
22:01:42 <elliott> Deewiant: (a*16 + b*8 + c)
22:02:05 <Deewiant> I don't like magic numbers :-P
22:02:11 <oerjan> elliott: technically, it has to be that or be a parse error (if there were an infixl? 0 `catch`)
22:03:03 <elliott> Deewiant: Oh come on
22:03:10 <elliott> oerjan: Right
22:03:37 <elliott> oerjan: What about
22:03:45 <elliott> forever $ B.hGetLine h >>= writeChan lineChan `catch` ignoreEOFError
22:04:15 <oerjan> forever (B.hGetLine h >>= (writeChan lineChan `catch` ignoreEOFError))
22:04:20 <elliott> oerjan: darn, you're right :(
22:04:22 * elliott parenthesises more
22:04:28 <elliott> :P
22:04:59 <oerjan> `catch` presumably has no fixity defined, so defaults to infixl 9
22:05:01 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: catch`: not found
22:05:35 <oerjan> it is not _that_ common to define fixities of alphanumerics
22:05:45 <elliott> oerjan: well sure, but `catch` is common :P
22:05:54 <elliott> Ooh, I can avoid it if I do forever . handle ignoreEOFError.
22:05:58 <elliott> oh, wait
22:06:00 <elliott> I don't even want to ignore it
22:06:01 <elliott> I want to kill the thread
22:06:04 <oerjan> the division operators excepted
22:06:20 -!- Timwi has joined.
22:06:31 <elliott> hmm, is there really no simpler way of doing myThreadId >>= killThread...
22:07:09 <shachaf> elliott: Call the continuation!
22:07:23 <elliott> shachaf: THX SUPER HELPFUL :P
22:07:31 <shachaf> Wait, can't you just throw an exception?
22:07:40 <oerjan> elliott: what about simply not using catch at all? :P
22:07:51 <shachaf> throw ThreadKilled
22:08:06 <oerjan> doesn't that kill the thread
22:08:18 <elliott> shachaf: Well yes but that's awful too.
22:08:22 <elliott> oerjan: Yeah, but it prints an ugly error message.
22:08:26 <elliott> I guess I'll just define my own loop structure.
22:08:29 <shachaf> kill -9 $$
22:08:30 <elliott> oh wait
22:08:34 <elliott> (forever $ (B.hGetLine h >>= writeChan lineChan)) `catch` ignoreEOFError
22:08:35 <elliott> that was easy
22:08:40 <elliott> and I can reduce parens
22:08:44 * shachaf isn't even sure what elliott was trying to do.
22:09:03 <elliott> shachaf: Quit the thread silently on EOF.
22:09:11 <elliott> handle ignoreEOFError . forever $ B.hGetLine h >>= writeChan lineChan
22:09:12 <elliott> Tada.
22:10:09 <oerjan> bewdiful
22:10:28 <elliott> oerjan: I SENSE SARCASM
22:11:16 <elliott> shachaf: oerjan: OK, you have to admire this GHC error for me.
22:11:18 <elliott> :t forever
22:11:19 <lambdabot> forall (m :: * -> *) a b. (Monad m) => m a -> m b
22:11:23 <coppro> wom 8
22:11:25 <elliott> forever $ readChan lineChan >>= B8.putStrLn
22:11:29 <elliott> /home/elliott/Code/mergeln/mergeln.hs:19:3:
22:11:29 <elliott> Warning: A do-notation statement discarded a result of type GHC.Prim.Any.
22:11:29 <elliott> Suppress this warning by saying "_ <- ($)
22:11:29 <elliott> forever (>>=) readChan lineChan B8.putStrLn",
22:11:29 <elliott> or by using the flag -fno-warn-unused-do-bind
22:11:34 <elliott> oerjan: shachaf: I just...
22:11:38 <elliott> I am literally speechless.
22:11:44 <shachaf> elliott: Ooh, give it to #haskell
22:11:53 <shachaf> They were just talking about it.
22:12:02 <oerjan> elliott: D:
22:12:28 <coppro> elliott: is this even in a do block?
22:12:41 <elliott> coppro: yes
22:12:49 <elliott> shachaf: They were?
22:13:07 <shachaf> elliott: Well, it might not've been "just"
22:13:21 <oerjan> elliott: hm it's because the forever result defaults to Any rather than (), presumably
22:14:34 <elliott> oerjan: yeah
22:15:03 <oerjan> but logically, Any should be just as discardable
22:15:21 <elliott> oerjan: apparently it's probably a bug
22:15:50 <oerjan> no it's how it works when you default a type variable with no class restriction
22:16:00 <elliott> oerjan: no, I mean the warning
22:17:04 <oerjan> well it would make sense to do something else, naturally.
22:17:54 -!- augur has quit (Remote host closed the connection).
22:21:34 <oerjan> i vaguely recall forever used to have a stricter type, then we noticed it didn't need one
22:22:46 <oerjan> although i guess if you are warning against discarding non-()'s in do, then it would make sense to restrict forever to have m () argument
22:23:06 <elliott> oerjan: I want forever :: IO () -> IO ()
22:23:38 <Deewiant> Some people want when :: Bool -> IO a -> IO ()
22:23:53 <elliott> :t when
22:23:53 <lambdabot> forall (m :: * -> *). (Monad m) => Bool -> m () -> m ()
22:24:00 <elliott> Deewiant: Some people are wrong
22:24:17 -!- Patashu has joined.
22:26:00 <Deewiant> Some kind of whenFoo :: Bool -> IO a -> IO (Maybe a) might be nice
22:27:34 <elliott> Timwi: You writing half my program drove me to actually bother writing mine, so thanks I guess :P
22:28:22 <Timwi> ?
22:28:24 <Timwi> I what?
22:28:48 <elliott> Timwi: You wrote half that line-merging program in C#
22:29:00 <Timwi> Oooh
22:29:15 <Timwi> Well, no need to thank since you didn’t use any of it :-p
22:29:46 <elliott> I don't know what the Haskell<->C# bridges are like.
22:29:48 -!- PatashuXantheres has joined.
22:33:08 -!- Patashu has quit (Ping timeout: 260 seconds).
22:38:18 -!- nooga has quit (Ping timeout: 244 seconds).
22:38:30 -!- ive has joined.
22:44:41 <elliott> ?pl if isEOFError e then return () else throwIO e
22:44:42 <lambdabot> (line 1, column 31):
22:44:42 <lambdabot> unexpected " "
22:44:42 <lambdabot> expecting variable, "(", operator or "else"
22:44:47 <elliott> >_<
22:44:52 <elliott> ?pl unless (isEOFError e) (throwIO e)
22:44:53 <lambdabot> unless (isEOFError e) (throwIO e)
22:44:59 <elliott> ?pl \e -> unless (isEOFError e) (throwIO e)
22:44:59 <lambdabot> liftM2 unless isEOFError throwIO
22:45:05 <elliott> Deewiant: Should I should I should I
22:45:13 <elliott> As opposed to using guards :-P
22:47:16 <Deewiant> liftM2 unless reads a bit strangely IMO :-P
22:47:43 <elliott> Deewiant: I would use the Applicative operators
22:47:58 <elliott> unless <$> isEOFError <*> throwIO
22:49:03 <Deewiant> Yeah, I thought about that but honestly I might also just leave it pointed
22:49:17 <elliott> Deewiant: Yeah, this is just distracting me from my Weird Bug :P
22:49:30 <elliott> Deewiant: A conditional + return () just made me think.
22:49:40 <Deewiant> Also, in general I don't like "unless" but that seems like an appropriate case
22:52:17 -!- ais523 has quit (Remote host closed the connection).
22:53:39 -!- pikhq_ has joined.
22:53:57 -!- pikhq has quit (Ping timeout: 255 seconds).
22:55:30 <zzo38> The <*> operation in Haskell does not seem to me entirely useful for most purposes, as far as I can tell.
22:56:21 <zzo38> But it can be used defining other things in terms of that, I suppose, including <* and *> are automatically figured out from that, I think
22:56:39 <oerjan> zzo38: it is most useful when chained as f <$> m1 <*> m2 <*> ...
22:57:13 <zzo38> OK. I have never used it like that.
22:57:20 <oerjan> it then replaces all the liftA* functions, including for sizes not predefined
22:57:22 <elliott> zzo38: it lets you lift a function of arbitrary arity into the monad
22:57:27 <elliott> well, the applicative :-)
22:57:29 <elliott> e.g.
22:57:33 <elliott> really useful in parsers:
22:57:45 <elliott> MyData <$> subpart <*> anothersubpart <*> anothersubpart
22:57:54 <zzo38> And any monad forms an applicative, so that it can work; OK
22:58:06 <shachaf> Elliott'sData
22:58:20 <elliott> Yes, my data.
22:58:21 <zzo38> elliott: O, that is its use. I have just used liftM2 a lot
22:58:36 <elliott> zzo38: Yeah, I prefer the applicative operators, since you need fewer parens, and you don't have to specify the arity upfront
22:58:39 <Deewiant> liftM2 = liftA2; liftA2 f x y = f <$> x <*> y
22:59:46 <zzo38> OK, I suppose you are correct and that is a use. I didn't know that before.
23:00:33 <zzo38> But I have written parsers in Haskell, using Parsec, and I have just used liftM2, sometimes liftM3, and often using *> and <* and <|> and <$>
23:04:40 <zzo38> And <$ is also useful
23:05:13 -!- sllide has quit (Ping timeout: 260 seconds).
23:11:23 <oerjan> zzo38: oh, <*> can also be useful directly if you have a prefix operator which you want to parse as a constructor applied to its argument. and we once found a use for <**> for parsing a similar postfix operator for an esolang
23:11:48 <elliott> oerjan: hmm, I don't understand what you mean there
23:12:47 <oerjan> well say you have a Negate constructor, then you can parse as (char '-' *> Negate) <*> expr
23:12:48 <zzo38> oerjan: Can you give the specific example of that use of the <*> operator?
23:13:10 <oerjan> or similar
23:13:43 <zzo38> oerjan: O, like that. Do you mean: (Negate <$ char '-') <*> expr since the arguments to *> must be the same applicatives
23:13:55 <oerjan> oh, right
23:15:24 <oerjan> and the <**> example we had was something like ... <**> ((negate <$ char '-') <|> id)
23:15:46 <oerjan> where - was postfix and the result of the calculation was evaluated
23:16:10 <elliott> pure id
23:16:22 <oerjan> ok
23:17:34 <oerjan> hm
23:17:38 <oerjan> @hoogle option
23:17:38 <lambdabot> Text.Html option :: Html -> Html
23:17:38 <lambdabot> Text.Parsec.Combinator option :: Stream s m t => a -> ParsecT s u m a -> ParsecT s u m a
23:17:39 <lambdabot> Text.ParserCombinators.ReadP option :: a -> ReadP a -> ReadP a
23:18:26 <oerjan> perhaps option id (negate <$ char '-') would have been better
23:18:41 <elliott> yeah
23:20:38 <zzo38> oerjan: Yes that might be it
23:28:37 <Phantom_Hoover> Have I ever mentioned how confusing it is that the Bank of Scotland and the Royal Bank of Scotland are completely separate entities?
23:29:01 <elliott> They are?
23:29:05 <Phantom_Hoover> Yep.
23:29:16 <elliott> Any common ancestry?
23:29:25 <Phantom_Hoover> Not AFAIK.
23:31:31 <Phantom_Hoover> Yeah, they're unrelated.
23:36:52 -!- derdon has quit (Remote host closed the connection).
23:42:08 <elliott> oerjan: You should debug my code.
23:43:51 <oerjan> there's that word, "should".
23:44:22 <oerjan> enslaving civilizations.
23:45:13 <elliott> oerjan: :D
23:45:15 <Phantom_Hoover> Enslivilisations.
23:45:43 <Phantom_Hoover> elliott, I would debug your code if I didn't have this disability preventing me from doing any kind of useful work.
23:46:01 <elliott> Phantom_Hoover: It's called being a teenager HAHAHAHAHAHAHA
23:47:42 <oerjan> darn, i'm still a teenager?
23:48:37 <elliott> oerjan: Yep
23:49:22 <oerjan> going on thirtytwoteen...
23:49:35 <Phantom_Hoover> oerjan, no, you're a mathematician.
23:49:52 <elliott> oerjan: You're really old, man.
23:50:33 <oerjan> ykgomlbihywmcaidttacrt
23:50:40 <elliott> oerjan: wat
23:50:56 <Phantom_Hoover> It's oldspeak.
23:51:07 <Phantom_Hoover> I'll translate, I know a little more of the ways of the old than you.
23:51:11 <oerjan> you kids get off my lawn before i hit you with my cane and i don't think that anyone can read this.
23:51:31 <Phantom_Hoover> Dammit oerjan.
23:51:48 <oerjan> ...i suppose i should have given you a chance.
23:52:09 <oerjan> but there's that word again.
23:52:59 <elliott> :D
2011-10-18
00:06:37 * Phantom_Hoover → sleep
00:06:39 -!- Phantom_Hoover has quit (Quit: Leaving).
00:10:48 -!- zzo38 has quit (Quit: *Never* push these two buttons two times!! Except the battery.).
00:10:53 -!- Timwi has quit.
00:13:13 -!- monqy has joined.
00:20:20 -!- CakeProphet has joined.
00:20:24 -!- CakeProphet has quit (Changing host).
00:20:24 -!- CakeProphet has joined.
00:33:25 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
00:47:32 -!- Sgeo|web has joined.
00:47:53 -!- ive has quit (Ping timeout: 260 seconds).
00:48:57 <Sgeo|web> Trying to root my Nook
00:49:04 <elliott> TMI
00:51:09 -!- cheater_ has joined.
00:51:26 -!- oerjan has quit (*.net *.split).
00:51:29 -!- twice11 has quit (*.net *.split).
00:51:29 -!- tiffany has quit (*.net *.split).
00:51:29 -!- cheater has quit (*.net *.split).
00:51:29 -!- EgoBot has quit (*.net *.split).
00:51:30 -!- pikhq_ has quit (*.net *.split).
00:51:30 -!- GreaseMonkey has quit (*.net *.split).
00:51:30 -!- HackEgo has quit (*.net *.split).
00:51:40 -!- elliott has quit (Quit: Leaving).
00:51:47 -!- elliott has joined.
00:55:23 <elliott> :t Int -> [a] -> ([a], [a])
00:55:29 -!- pikhq_ has joined.
00:55:29 -!- tiffany has joined.
00:55:29 -!- oerjan has joined.
00:55:29 -!- GreaseMonkey has joined.
00:55:29 -!- HackEgo has joined.
00:55:29 -!- EgoBot has joined.
00:55:29 -!- twice11 has joined.
00:55:32 <elliott> ?hoogle Int -> [a] -> ([a], [a])
00:55:32 <elliott> lambdabot?
00:55:32 <lambdabot> parse error on input `->'
00:55:32 <elliott> ?hoogle Int -> [a] -> ([a], [a])
00:55:32 <lambdabot> Prelude splitAt :: Int -> [a] -> ([a], [a])
00:55:32 <lambdabot> Data.List splitAt :: Int -> [a] -> ([a], [a])
00:55:32 <lambdabot> Data.List genericSplitAt :: Integral i => i -> [b] -> ([b], [b])
00:55:32 <lambdabot> Prelude splitAt :: Int -> [a] -> ([a], [a])
00:55:32 <lambdabot> Data.List splitAt :: Int -> [a] -> ([a], [a])
00:55:33 <lambdabot> Data.List genericSplitAt :: Integral i => i -> [b] -> ([b], [b])
00:55:44 <elliott> ?hoogle a -> [a] -> ([a], [a])
00:55:45 <lambdabot> Prelude splitAt :: Int -> [a] -> ([a], [a])
00:55:45 <lambdabot> Data.List splitAt :: Int -> [a] -> ([a], [a])
00:55:45 <lambdabot> Data.List genericSplitAt :: Integral i => i -> [b] -> ([b], [b])
00:58:27 <oerjan> > (break . (==)) 4 [1..10]
00:58:28 <lambdabot> ([1,2,3],[4,5,6,7,8,9,10])
01:02:53 -!- copumpkin has joined.
01:10:07 * Sgeo|web is trying to do something nasty to Numbers
01:11:31 <oerjan> @hoogle list
01:11:32 <lambdabot> module Control.Monad.List
01:11:32 <lambdabot> module Data.List
01:11:32 <lambdabot> Language.Haskell.Syntax list_cons_name :: HsQName
01:11:34 <Sgeo|web> Someone else is looking at what I'm trying to do, but I'm hoping he's doing something ... else
01:11:54 <oerjan> oh hm
01:12:34 -!- Jafet has joined.
01:12:44 <oerjan> Sgeo|web: just divide and conquer
01:12:46 <Sgeo|web> "I've already had to add this fun pragma: {-# LANGUAGE GADTs, ExistentialQuantification, Rank2Types #-}"
01:14:20 -!- Zuu has quit (Ping timeout: 244 seconds).
01:14:49 <elliott> That's not much.
01:16:38 <oerjan> such an angry young man http://www.reddit.com/r/haskell/comments/lf71l/deprecate_preludehead_and_partial_functions/c2s80l2
01:17:10 <Sgeo|web> What's the worse that can happen if I put a class constraint in a newtype?
01:17:11 <elliott> oerjan: That isn't angry. You've clearly never seen me get angry.
01:17:13 <shachaf> <elliott> (Yeahyeah, modulo etc.)
01:17:21 <elliott> oerjan: I was just correcting the blog post amendment. :p
01:17:25 <elliott> shachaf: See, that's me angry.
01:17:33 <elliott> Sgeo|web: You mean newtype (Foo a) => Bar a = ...?
01:17:35 <shachaf> elliott: That's you every day of the week.
01:17:45 <shachaf> elliott: Take that newtype back!
01:18:02 <Sgeo|web> Not Bar a, just Bar, then the a is on the right of the =
01:18:03 <oerjan> elliott: ah but i'm just pointing out that your _base level_ is already angry. also, joking.
01:18:18 <elliott> Sgeo|web: Data-type contexts are not in Haskell.
01:18:22 <elliott> Their extension is also deprecated.
01:18:25 <Sgeo|web> Huh?
01:18:30 <elliott> This is because they do nothing.
01:18:34 <elliott> If they think you do, you are wrong.
01:18:41 <elliott> (They do something, but it isn't what you want.)
01:18:48 <elliott> You do not want a data-type context.
01:19:02 <shachaf> elliott: But they *really* think I do!
01:19:51 <Sgeo|web> So, it won't make my instance work?
01:20:01 <elliott> No.
01:20:12 <Sgeo|web> I ... can't write my instance then
01:20:16 <elliott> I would tell you what you need to do to make it work, but you probably don't even want to do that either.
01:20:19 <elliott> hpaste.
01:22:04 <Sgeo|web> Hold on
01:22:44 <Sgeo|web> http://hpaste.org/52778
01:22:57 <shachaf> Which instance is this?
01:23:19 <Sgeo|web> The Num FakeNum one
01:23:28 <elliott> What the fuck sort of number is that?
01:23:30 <Sgeo|web> I can't do that + there, and can't force these things to be num
01:23:38 <Sgeo|web> elliott: tricky ones.
01:23:38 <elliott> Sgeo|web: Just make an (a -> b) instance.
01:23:43 <Sgeo|web> ...I can?
01:23:46 <elliott> Your (+) function is a trivial specialisation of it.
01:23:57 <Sgeo|web> Wait, WHAT?
01:24:59 <elliott> shachaf: You handle Sgeo|web.
01:25:08 * elliott is too busy doing stuff he won't facepalm the next day about.
01:25:31 <shachaf> elliott: I don't think that's how it works.
01:25:45 <elliott> Totally is.
01:25:48 <elliott> Sgeo|web:
01:25:51 <elliott> > (f + g) x
01:25:51 <shachaf> I don't even know what Sgeo|web is trying to do.
01:25:52 <lambdabot> Ambiguous type variable `a' in the constraints:
01:25:52 <lambdabot> `GHC.Num.Num a'
01:25:52 <lambdabot> ari...
01:25:54 <elliott> Gah.
01:25:55 <elliott> > (f + g) x :: Expr
01:25:57 <lambdabot> f x + g x
01:26:48 <Sgeo|web> Then can I fill in my own values for x given that?
01:27:09 <elliott> > (f + g) 99 :: Expr
01:27:10 <lambdabot> f 99 + g 99
01:27:16 <elliott> > (succ + pred) 99
01:27:17 <lambdabot> 198
01:27:46 <oerjan> > ($ "x") + ($ "y") $ length
01:27:47 <lambdabot> 2
01:27:52 <shachaf> elliott: Stop abusing Sgeo|web.
01:28:02 <shachaf> Oh, wait.
01:28:04 <oerjan> Sgeo|web: ^ i think this one is precisely your type
01:28:05 -!- tiffany has quit (Quit: Leaving).
01:28:08 <shachaf> Sgeo|web is the abusive one.
01:28:14 <shachaf> Sgeo|web: Stop abusing Haskell.
01:28:31 <elliott> shachaf: Sgeo|web has no concept of using a language as intended.
01:28:34 -!- augur has joined.
01:28:41 <shachaf> Sgeo|web: What are s and a?
01:28:48 <shachaf> Is this a continuation thing?
01:28:48 <Sgeo|web> elliott: I know that the way I should be doing this is probably monads
01:29:04 <oerjan> > ($ "3") + ($ "4") $ read :: Int
01:29:04 <lambdabot> 7
01:29:05 <elliott> Sgeo|web: What?
01:29:06 <Sgeo|web> shachaf: s is something like a String, so I could pass in a function that takes a String and returns a number
01:29:11 <Sgeo|web> BRB
01:29:15 <elliott> Sgeo|web: There is nothing about monads here.
01:29:19 <oerjan> Sgeo|web: ^ like that? :P
01:29:24 <elliott> You're just using "monads" as a mystical catch-all like everyone who doesn't know Haskell does
01:30:03 <oerjan> :(
01:30:56 <CakeProphet> Sgeo|web: also note that instead of the lambda you could write (+) (FakeNum a) (FakeNum b) f = ...
01:30:58 <shachaf> > ($ "3") ++ ($ "4") $ id :: String
01:31:00 <lambdabot> "34"
01:31:00 <shachaf> zomg
01:31:20 <elliott> CakeProphet: Or
01:31:24 <elliott> (FakeNum a + FakeNum b) f = ...
01:31:28 <elliott> But I'm not sure that works.
01:31:33 <elliott> Instance methods have defined arity, don't they?
01:31:42 <CakeProphet> oh? didn't know you could write it like that on the lhs.
01:31:56 <CakeProphet> elliott: believe so.
01:32:12 <Sgeo|web> Someone else is trying to explain why I need GADTs
01:32:18 <CakeProphet> lolwat
01:32:21 <CakeProphet> why what are you doing.
01:32:22 <oerjan> elliott: you don't need to define them pointfully, if that's what you mean
01:32:28 <elliott> oerjan: I mean, does
01:32:32 <elliott> (a + b) c = ...
01:32:32 <elliott> work
01:32:33 <elliott> Sgeo|web: Where
01:32:47 <oerjan> hm...
01:32:49 <Sgeo|web> Sine
01:32:52 <elliott> I wouldn't trust Haskell advice outside of #esoteric or #haskell :p
01:33:01 <oerjan> > let (a + b) c = a c + b c in (sin + cos) 1
01:33:02 <lambdabot> Occurs check: cannot construct the infinite type: t = t1 -> t
01:33:03 <elliott> Sgeo|web: But seriously, just define the (a -> b) instance if you really must.
01:33:13 <oerjan> oops
01:33:14 <Sgeo|web> (a -> b) instance?
01:33:21 <oerjan> > let (a + b) c = a c Prelude.+ b c in (sin + cos) 1
01:33:22 <lambdabot> 1.3817732906760363
01:33:28 <Sgeo|web> As in, making a -> b an instance of something or is a -> b a class?
01:33:30 <Sgeo|web> suddenly
01:33:46 <CakeProphet> a -> b is definitely not a class.
01:33:54 <CakeProphet> because it's a type
01:33:54 <oerjan> Sgeo|web: yes, making a Num (a -> b) instance, like the one lambdabot has
01:34:19 <CakeProphet> though a a -> b class would be fun
01:34:24 <CakeProphet> with a ($) method
01:34:46 <CakeProphet> such that space application is translated to $ :P
01:34:56 <CakeProphet> "space application" being f x
01:35:24 <Sgeo|web> Would that make Arrows to be easier to use?
01:35:38 <CakeProphet> it would mostly be bad I think.
01:35:44 <elliott> Sgeo|web: Arrows don't even have an apply method.
01:35:49 <Sgeo|web> Oh.
01:35:56 <CakeProphet> unless you count ArrowApply :)
01:36:41 <oerjan> Sgeo|web: anyway did you see my lambdabot examples above
01:36:57 <Sgeo|web> I ... don't quite understand it
01:36:59 <elliott> CakeProphet: which doesn't fit the type of dollar
01:37:01 <Sgeo|web> The examples
01:37:08 <elliott> Sgeo|web:
01:37:13 <elliott> > (length + length) "abc"
01:37:14 <lambdabot> 6
01:37:26 <Sgeo|web> Ah
01:37:29 <Sgeo|web> Hmmmmmmm
01:37:40 <oerjan> elliott: i was trying to give examples that fit precisely his FakeNum type
01:38:01 <oerjan> :t ($ "3")
01:38:02 <lambdabot> forall b. ([Char] -> b) -> b
01:38:15 <elliott> oerjan: Hardly matters if the instance doesn't exploit it.
01:38:18 <Sgeo|web> I ... let me see if I can use my useage
01:38:19 <elliott> (Not that it could.)
01:38:24 <oerjan> > ($ "3") + ($ "4") $ read :: Int
01:38:25 <lambdabot> 7
01:38:27 <Sgeo|web> Where are the Data.Map functions?
01:38:52 <elliott> <bd_> > (length + length) "abc"
01:38:52 <elliott> <lambdabot> 6
01:38:56 <elliott> Sgeo|web: In Data.Map.
01:40:06 <CakeProphet> length * 2 :3
01:40:27 <elliott> > (length * 2) abc
01:40:27 <lambdabot> Not in scope: `abc'
01:40:28 <Sgeo|web> > Data.Map.lookup "x" + Data.Map.lookup "y" $ Data.Map.fromList [("x",2), ("y",3)]
01:40:29 <lambdabot> Not in scope: `Data.Map.lookup'Not in scope: `Data.Map.lookup'Not in scope:...
01:40:29 <elliott> > (length * 2) "abc"
01:40:30 <lambdabot> 6
01:40:35 <oerjan> > 2 * length ^ 2 + 1 $ "hm..."
01:40:36 <lambdabot> 51
01:40:37 <elliott> Sgeo|web: M.
01:40:44 <elliott> > M.lookup "x" + M.lookup "y" $ M.fromList [("x",2), ("y",3)]
01:40:45 <lambdabot> No instance for (GHC.Num.Num (Data.Maybe.Maybe a))
01:40:45 <lambdabot> arising from a use of...
01:41:12 <Sgeo|web> > (fromJust . Data.Map.lookup) "x" + (fromJust . Data.Map.lookup) "y" $ Data.Map.fromList [("x",2), ("y",3)]
01:41:13 <lambdabot> Not in scope: `Data.Map.lookup'Not in scope: `Data.Map.lookup'Not in scope:...
01:41:35 <Sgeo|web> > (fromJust . M.lookup) "x" + (fromJust . M.lookup) "y" $ M.fromList [("x",2), ("y",3)]
01:41:35 <lambdabot> Couldn't match expected type `Data.Maybe.Maybe a'
01:41:36 <lambdabot> against inferred ...
01:41:40 <shachaf> Sgeo|web: Don't fromJust. :-(
01:41:56 <CakeProphet> I wonder how you could define a method that implements integral multiplication as recursive addition, that can take multiple different integral types.
01:42:08 <CakeProphet> thus allowing length * 2
01:42:23 <CakeProphet> ...well, length isn't exactly integral. :P
01:42:25 -!- monqy has quit (Ping timeout: 240 seconds).
01:42:29 <elliott> Sgeo|web: There's an operator for that, and you don't understand (.).
01:43:25 <CakeProphet> Sgeo|web: f (g x y) !== (f . g) x y
01:43:36 <CakeProphet> @unpl (f .) . g
01:43:36 <lambdabot> (\ d i -> f (g d i))
01:43:59 <oerjan> > fromJust . M.lookup "x" + fromJust . M.lookup "y" $ M.fromList [("x",2), ("y",3)]
01:44:00 <lambdabot> 5
01:44:03 <elliott> FOR GOD'S SAKE
01:44:07 <elliott> M.!
01:44:15 <elliott> > (M.! "x") + (M.! "y") $ M.fromList [("x",2), ("y",3)]
01:44:16 <lambdabot> 5
01:44:28 <oerjan> ok, angry young man
01:44:41 -!- monqy has joined.
01:45:20 <elliott> oerjan: ;_;
01:45:29 <CakeProphet> Sgeo|web: lambdabot also has .: which does the same thing (f . ) . g but I'm not really sure that it's standard..
01:45:40 <CakeProphet> @hoogle (.:)
01:45:40 <lambdabot> No results found
01:45:42 <CakeProphet> yeah...
01:47:04 <shachaf> .::
01:47:09 -!- bd_ has joined.
01:47:27 <Sgeo|web> > (M.!) "x" + (M.!) "y" $ M.fromList [("x",2), ("y",3)]
01:47:27 <CakeProphet> shachaf: not falling for it.... not falling for it.... not -- AAAAAAAH
01:47:28 <lambdabot> Couldn't match expected type `Data.Map.Map k a'
01:47:28 <lambdabot> against inferred ty...
01:47:30 <CakeProphet> :t (.::)
01:47:31 <lambdabot> Not in scope: `.::'
01:47:35 <CakeProphet> shachaf: ;_;
01:47:38 <oerjan> i'm reminded of those principia mathematica dots
01:48:10 <oerjan> which i suppose had a similar purpose of avoiding parentheses :P
01:48:11 * Sgeo|web copies elliott's thing
01:48:12 <elliott> oerjan: those are great
01:48:15 <CakeProphet> @pl (f .) . g
01:48:15 <lambdabot> (f .) . g
01:48:16 <Sgeo|web> > (M.! "x") + (M.! "y") + 10 $ M.fromList [("x",2), ("y",3)]
01:48:17 <lambdabot> 15
01:48:18 <CakeProphet> :(
01:48:20 <shachaf> @let (.::)=fmap fmap fmap fmap fmap
01:48:21 <Sgeo|web> Huh
01:48:21 <lambdabot> Defined.
01:48:22 <CakeProphet> @pl \f g -> (f .) . g
01:48:23 <lambdabot> (.) . (.)
01:48:27 <CakeProphet> best operator
01:48:46 <CakeProphet> the "third nipple" operator
01:49:32 <CakeProphet> well, arguably the best operator is in fact the angry totem pole and its arbitrary layering
01:49:42 -!- augur has quit (Remote host closed the connection).
01:49:50 <CakeProphet> > ((:[])>=>(:[])) 2
01:49:51 <lambdabot> [2]
01:50:10 <CakeProphet> > ((:[])>=>(:[])>=>(:[])>=>(:[])>=>(:[])) 2
01:50:10 <lambdabot> [2]
01:50:21 <CakeProphet> you may include as many angry totem levels as you please.
01:50:34 <oerjan> the angry totem pole just keeps returning
01:50:52 <CakeProphet> oerjan: oh ho ho ho ho. my hat off to you sir.
01:51:06 <Sgeo|web> Does the Num (a -> b) instance use any extensions?
01:51:15 <elliott> no
01:51:28 <bd_> Sgeo|web: That would be Num b => Num (a -> b), and no. But good luck writing a Show for it...
01:51:45 <oerjan> > ($ 2) :: Int -> Int
01:51:45 <lambdabot> Couldn't match expected type `GHC.Types.Int'
01:51:46 <lambdabot> against inferred type ...
01:51:47 <oerjan> oops
01:51:53 <oerjan> > (+ 2) :: Int -> Int
01:51:53 <lambdabot> Overlapping instances for GHC.Show.Show
01:51:54 <lambdabot> (GHC.T...
01:52:10 * Sgeo|web wouldn't attempt to write a Show for it, other than show = const "<Unshowable>"
01:52:12 <oerjan> lambdabot: your instances are a mess
01:52:20 <elliott> > id
01:52:20 <lambdabot> Overlapping instances for GHC.Show.Show (a -> a)
01:52:21 <lambdabot> arising from a use of `...
01:52:27 <elliott> Wait, where did bd_ appear from.
01:52:30 <bd_> Sgeo|web: more importantly, it's injecting a really ugly instance into the global namespace
01:52:31 <elliott> Oh, there it is.
01:52:36 <bd_> elliott: Over there --------->
01:53:17 <bd_> Sgeo|web: so later on if you write (f x y z) + 42 when f takes four arguments you get a real headscratcher of an error message...
01:53:47 <bd_> incidentally the Num instance for (a -> b) just lifts everything into the reader monad
01:53:47 <oerjan> > f x y z + 42 :: Expr
01:53:48 <lambdabot> f x y z + 42
01:54:18 <bd_> > let f _ _ _ _ = undefined in f 1 2 3 + 42
01:54:19 <lambdabot> Overlapping instances for GHC.Show.Show (t -> a)
01:54:19 <lambdabot> arising from a use of `...
01:54:37 <bd_> > let f _ _ _ _ = undefined in f 1 2 3 + 42 == 43
01:54:38 <lambdabot> *Exception: (==): No overloading for function
01:54:54 <bd_> Oops, your argument mismatch type error became a runtime error now :)
01:54:56 <oerjan> > ((f + 1) 2 + 3) 4 + 5 :: Expr
01:54:57 <lambdabot> f 2 4 + 1 + 3 + 5
01:55:10 <Sgeo|web> elliott: I still think the proper way is to use monads, because this way, I can't do == with these things
01:55:18 <CakeProphet> > 2 "best" "misfeature"
01:55:19 <lambdabot> 2
01:55:23 <elliott> Sgeo|web: you still haven't defined how on earth this is related to monads in any way at all
01:55:25 <Sgeo|web> At least, unless you can write halts :: a -> Bool for me?
01:55:36 <elliott> what
01:55:45 <Sgeo|web> Wait, is that a sufficient condition for making (a -> b) an Eq instance?
01:55:46 <elliott> yeah I'm just going to leave you to this
01:55:49 <bd_> let halts = ((const True) $!)
01:55:50 <Sgeo|web> Or just necessary?
01:55:53 -!- Jafet has quit (Quit: Leaving.).
01:56:04 <oerjan> > 2 . "best" . "misfeature"
01:56:05 <lambdabot> Couldn't match expected type `a1 -> a'
01:56:05 <lambdabot> against inferred type `[GHC....
01:56:33 <oerjan> > 2 "best" . "misfeature"
01:56:35 <lambdabot> [2,2,2,2,2,2,2,2,2,2]
01:56:46 <Sgeo|web> :t ($!)
01:56:46 <lambdabot> forall a b. (a -> b) -> a -> b
01:56:49 <bd_> Sgeo|web: it's necessary but not sufficient. but anyway, you really don't want to use a Num (a->b) instance. Just define a proper GADT already :|
01:57:00 <bd_> You could even define Eq and Show if you did it with a GADT!
01:57:15 <Sgeo|web> o.O
01:57:31 <bd_> structural equality, mind you
01:59:08 <elliott> bd_: how would a gadt help
01:59:24 <bd_> https://gist.github.com/1294383 something along these lines
01:59:46 <bd_> although I suppose if you get rid of the general liftSNs and use a limited set of operations (as would be needed for Eq), you could get away with regular datatypes
02:00:10 <oerjan> why not just newtype FakeNum s a = FakeNum ((s -> a) -> a)
02:00:25 <oerjan> and instance Num a => Num (FakeNum s a)
02:00:44 <oerjan> if you don't want to pollute instances of real functions
02:00:46 <bd_> oerjan: you could certainly do that, although then you can't define Eq and Show, and you're forced to choose the result type early on (or have rank-2 types scattered throughout the user's code)
02:01:21 <oerjan> hm i guess i don't know what Sgeo|web wants to use it for, so maybe
02:01:22 <bd_> but yeah, point is there's no reason to pollute instances of functions
02:01:34 <Sgeo|web> I think I actually have a chance of getting the FakeNum s a thing to work, so
02:01:38 <elliott> there's no reason to do what Sgeo|web is doing in the first place.
02:01:42 <elliott> whatever that is.
02:01:44 <bd_> instance Something (a -> b) is fun to play with but not so fun to debug with
02:01:51 <Sgeo|web> elliott: for fun
02:02:04 <bd_> Sgeo|web: in that case I fully endorse the GADT method ;)
02:02:14 -!- MDude has changed nick to MSleep.
02:02:16 <elliott> for values of fun equal to wasting your time painfully
02:02:48 <Sgeo|web> Well, I'm sort of using this as a "bad" suggestion for how to have a thing that you can specify "x"s etc. then later fill them it
02:03:13 <Sgeo|web> My good suggestion is still monads, since that can be made to work smoothly and sanely with ==
02:03:46 * bd_ still doesn't understand how monads, which have embedded functions all over the place, can possibly be made to work smoothly and sanely with ==
02:05:27 <Sgeo|web> imNotCreativeEnoughToNameThisFunction do { a <- term "x"; b <- term "y"; return a + b == 5 } [("x",2),("y",3)]
02:05:50 <elliott> Sgeo|web: learn to precedence :P
02:05:58 <elliott> return (a + b == 5)
02:06:21 <elliott> bd_: monads don't inherently have embedded functions
02:06:23 <elliott> [] is a monad, after all
02:07:12 <bd_> Sgeo|web: that's called the reader monad, where term k = asks ($ k)
02:07:16 <bd_> elliott: good point
02:07:27 <elliott> bd_: if lists were functions
02:07:34 <bd_> but I fail to see how he'll construct his delayed-symbolic-evaluation monad without using embedded functions :)
02:07:37 <elliott> term k = asks (M.! k) :P
02:08:01 <bd_> elliott: my way is more general :)
02:08:16 <Sgeo|web> bd_: oh, hmm, huh
02:08:21 <bd_> where the environment = M.! someMap
02:08:47 <Sgeo|web> I think Reader monad is more sane than RVar for my purposes then >.>
02:08:53 <Sgeo|web> Now bd_ knows what I really want to do >.>
02:08:58 <bd_> no I don't.
02:09:07 <Sgeo|web> The mcmc thing
02:09:16 <Sgeo|web> I still need to watch that video though
02:09:17 <bd_> ... not seeing how Reader would be very helpful for that!
02:09:50 <Sgeo|web> Function to adjust the values of the "random" variables, I guess
02:09:54 <Sgeo|web> Again, I need to learn MCMC
02:10:09 <Sgeo|web> I'm having an impression that I'm doing X-Y, but oh well
02:10:12 <Sgeo|web> I'll learn
02:10:23 <elliott> RVar?
02:10:41 <elliott> What on earth are you actually doing
02:10:47 <bd_> near as I can tell he's trying to do some sort of markov chain traverser
02:10:59 <bd_> and was thinking about using Data.RVar for it
02:11:33 <bd_> the docs for RVar have a nice random walk example that could probably be adapted to a markov chain easily enough...
02:11:45 <elliott> oh well. "good luck with that"
02:12:02 <elliott> i've never even heard of rvar. looks way too complicated for this
02:12:30 -!- oerjan has quit (Quit: Good night).
02:12:32 <elliott> +
02:12:32 <elliott> 111
02:12:32 <elliott> + if impl(ghc == 7.2.1)
02:12:32 <elliott> 112
02:12:32 <elliott> + -- Doesn't work under GHC 7.2.1 due to
02:12:32 <elliott> 113
02:12:34 <elliott> + -- http://hackage.haskell.org/trac/ghc/ticket/5410
02:12:37 <elliott> 114
02:12:38 <elliott> + Buildable: False
02:12:40 <elliott> also it doesn't work
02:14:08 <bd_> nice :)
02:17:26 <Gregor> http://www.exoticmeatmarket.com/aflime.html LION STEAKS, GETCHER LION STEAKS
02:50:26 <PatashuXantheres> I have a question re: cygwin and languages that exec on the command line. Say I have a unix program (dd) that I want to be able to call from a program that I'm running on windows. I know that there are cygwin dlls that, if in the same folder as a unix program, let me call it from the command line. What do I have to do if it's from a program? Same thing?
02:53:15 <elliott> the exe depends on the dll
02:53:18 <elliott> that's all
02:53:34 <elliott> it could even be in c:\windows
02:54:01 <elliott> Gregor: yikes.
02:54:22 <PatashuXantheres> So say both dd and cygwin's dlls are in my computer's path and from e.g. a java program I run the command 'dd blahblahblah'. It'll work?
02:54:40 <elliott> Gregor: fake, right?
02:54:48 <elliott> PatashuXantheres: hopefully
02:54:57 <PatashuXantheres> 'hopefully' lol
02:54:59 -!- PatashuXantheres has changed nick to Patashu.
02:55:28 <pikhq_> The DLL needs to be in the lookup path for DLLs...
02:55:31 <elliott> "If PETA will give 1000 jobs to American farmers and ranchers, Exotic Meat Market will stop selling any and all kind of meats which PETA wants us to stop."
02:55:45 <pikhq_> I don't remember all the details of that, but I do remember that the directory of the EXE is in the lookup path.
02:56:30 <Patashu> for digital forensics at university I have to write a program that can hide data on the hard disk such that normal techniques won't find it. my idea is to take a fat file system like on a flash drive, write to the bad cluster bitmap to mark a new cluster as bad, and then in that cluster write the information to hide
02:56:37 <pikhq_> (I *think* it's a configuration option, and that cygwin sticks the path to cygwin.dll in there?)
02:57:20 <pikhq_> I assume by "normal techniques" they mean "looking around a mounted filesystem".
02:57:28 <Patashu> yes
02:57:39 <pikhq_> Yeah, that'd work quite well.
02:57:42 <Patashu> awesome
02:58:12 <pikhq_> You could also do something more awesome and esoteric.
02:58:23 <pikhq_> Store long file names without corresponding short file names.
02:58:29 <Patashu> hmm!
02:59:11 <pikhq_> Windows simply considers such entries in the file name list to be empty, so as to be compatible with SFN-only FAT implementations.
03:01:28 <elliott> do you have to go to NT level to circmvrent that?
03:02:21 <pikhq_> No, you have to access the partition yourself.
03:02:33 <pikhq_> It's also part of Linux VFAT, I think.
03:02:55 <elliott> nice
03:23:24 <Sgeo|web> Should I try to first grok GADTs or Rank 2 whatevers or existentials?
03:26:01 <pikhq_> You should first grok grokking.
03:26:06 <pikhq_> From this all else follows.
03:28:50 -!- augur has joined.
03:30:03 -!- augur has quit (Remote host closed the connection).
03:42:22 <Sgeo|web> "Normally when creating a new type using type, newtype, data, etc., every type variable that appears on the right-hand side must also appear on the left-hand side. Existential types are a way of turning this off."
03:42:31 <Sgeo|web> That... is stunningly simple to understand, I think
03:43:08 <Sgeo|web> But I have a feeling I'm missing the reason why that's normally the case
03:44:36 <elliott> that is an awful explanation
03:44:42 <CakeProphet> Sgeo|web: In the simplest case, existential types are sort of like implicit casting to an interface in languages like Java
03:44:58 <CakeProphet> but with multiple parameters you get far more generality than you do with just an interface.
03:45:05 <elliott> CakeProphet: i...
03:45:06 <elliott> no
03:45:13 <CakeProphet> elliott: is that not a good analogy?
03:45:25 <elliott> Sgeo|web: ask #haskell.
03:45:26 <Madoka-Kaname> @pl (\x -> x%2==0)
03:45:26 <lambdabot> (0 ==) . (% 2)
03:45:31 <Madoka-Kaname> :t isEven
03:45:32 <lambdabot> Not in scope: `isEven'
03:45:32 <CakeProphet> elliott: do those things not compare? do they not have similar roles? I think they do.
03:45:33 <Madoka-Kaname> :t even
03:45:34 <lambdabot> forall a. (Integral a) => a -> Bool
03:45:42 <elliott> > (%)
03:45:43 <lambdabot> Overlapping instances for GHC.Show.Show
03:45:43 <lambdabot> (a -> ...
03:45:47 <elliott> huh
03:45:52 <elliott> :t (%)
03:45:53 <lambdabot> forall a. (Integral a) => a -> a -> Ratio a
03:46:05 <elliott> Madoka-Kaname: not what you want
03:46:17 <CakeProphet> :t mod
03:46:18 <lambdabot> forall a. (Integral a) => a -> a -> a
03:46:27 <CakeProphet> > map (`mod` 5) [1..]
03:46:28 <lambdabot> [1,2,3,4,0,1,2,3,4,0,1,2,3,4,0,1,2,3,4,0,1,2,3,4,0,1,2,3,4,0,1,2,3,4,0,1,2,...
03:46:37 <Madoka-Kaname> > map even [1..]
03:46:37 <lambdabot> [False,True,False,True,False,True,False,True,False,True,False,True,False,Tr...
03:46:48 <CakeProphet> > filter even [1..]
03:46:50 <lambdabot> [2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,...
03:46:57 <CakeProphet> > evens
03:46:58 <lambdabot> Not in scope: `evens'
03:47:01 <CakeProphet> ah.
03:47:12 <CakeProphet> though they may be in a library or something. no need.
03:47:14 <Madoka-Kaname> :t (map (*2) . filter even) [1,2,3,4,5,8]
03:47:15 <lambdabot> forall a. (Integral a) => [a]
03:47:15 <CakeProphet> *thought
03:47:18 <Madoka-Kaname> > (map (*2) . filter even) [1,2,3,4,5,8]
03:47:20 <lambdabot> [4,8,16]
03:49:14 <CakeProphet> elliott: typeclasses, in the simplest case, are comparable to interfaces are they not? How is an existential type not like declaring a structure with attributes that have an interface type? variable with an interface type?
03:49:18 <CakeProphet> ...er
03:49:29 <CakeProphet> lol. accidentally hit enter before I ctrl+K'd
03:49:49 <CakeProphet> probably should have ctrl+U'd though.
03:49:50 <elliott> CakeProphet: i'm really not up to correcting your iffy analogy right now. i'm pretty busy. sorry
03:50:18 <CakeProphet> elliott: no need to correct. I'm not in any way saying it's a perfect fit. If anything typeclasses and existentials are a superset of it.
03:50:21 <CakeProphet> because... they are.
03:50:50 <CakeProphet> but the things you can do with interfaces, you can do with typeclasses and existentials.
03:50:59 <CakeProphet> no?
03:56:37 -!- zzo38 has joined.
03:57:27 -!- augur has joined.
04:01:34 <Madoka-Kaname> > (\あ -> あ) 1
04:01:35 <lambdabot> 1
04:02:01 <Madoka-Kaname> > (\何か -> 何か) 1
04:02:02 <lambdabot> 1
04:04:21 <pikhq_> どうして日本語で書くの?
04:04:22 <CakeProphet> > 1 2 3 4 5
04:04:23 <lambdabot> 1
04:05:25 <CakeProphet> this is a really bad hack to put in lambdabots evaluator simply so that you can write things like f x y z :: Expr
04:05:32 <elliott> um
04:05:37 <elliott> its pure haskell
04:05:38 <elliott> also
04:05:42 <CakeProphet> ?
04:05:51 <elliott> that doesn't rely on that instance
04:06:04 <CakeProphet> I didn't say it did.
04:06:07 <elliott> those two things are comoketely separate
04:06:10 <elliott> yes you did
04:06:11 <CakeProphet> but I'm pretty sure that is the purpose of its existence.
04:06:14 <elliott> no
04:07:01 -!- ive has joined.
04:07:07 <CakeProphet> also "1 2 3 4 5" is not a valid expression according to GHC.
04:07:14 <CakeProphet> well, it is syntactically.
04:07:15 <elliott> yes it is
04:07:41 <elliott> hint: it will type with one line of code
04:07:56 <Madoka-Kaname> > 1 2 3 4 5
04:07:57 <lambdabot> 1
04:08:14 <CakeProphet> elliott: an instance declaration, yes? Will it /run/ in one line of code?
04:08:41 <CakeProphet> > 1 2 + 3 4
04:08:42 <lambdabot> 4
04:08:51 <Madoka-Kaname> :t 1 2 3 4 5
04:08:51 <CakeProphet> > (1 2) 3
04:08:52 <lambdabot> forall t t1. (Num (t1 -> t), Num t1) => t
04:08:53 <lambdabot> 1
04:09:05 <Madoka-Kaname> :t 1 2
04:09:06 <lambdabot> forall t t1. (Num (t1 -> t), Num t1) => t
04:09:17 <Madoka-Kaname> Oh
04:09:20 <Madoka-Kaname> fromIntergral?
04:09:20 <pikhq_> elliott: It won't type; there's no instance of Num (a -> b -> c -> d) by default.
04:09:29 <CakeProphet> Madoka-Kaname: 1 is a function, duh.
04:09:32 <CakeProphet> :P
04:10:14 <CakeProphet> elliott: but you're basically saying that valid Haskell != bad hack
04:10:41 <elliott> "put in lambdabots evaluator"
04:10:45 <CakeProphet> in which case, I'll get back to you when I finish my IsString instance that executes arbitrary perl.
04:11:00 <pikhq_> CakeProphet: I'm pretty sure what you're seeing is just a normal, perfectly sane instance of Num.
04:11:15 <pikhq_> Nums via Church numerals, if I had to guess.
04:11:20 <elliott> no
04:11:20 <CakeProphet> > 0.5 34
04:11:21 <lambdabot> 0.5
04:11:35 <pikhq_> elliott: Then what is it?
04:11:49 <elliott> > (sum / length) [0..9]
04:11:50 <lambdabot> No instance for (GHC.Real.Fractional GHC.Types.Int)
04:11:50 <lambdabot> arising from a use o...
04:11:56 <elliott> > (sum / length) [0.0..9]
04:11:57 <lambdabot> No instance for (GHC.Real.Fractional GHC.Types.Int)
04:11:58 <lambdabot> arising from a use o...
04:12:01 <elliott> ffs
04:12:07 <pikhq_> elliott: "1 2" does not type with just Prelude.
04:12:28 <elliott> its not normal
04:12:29 <elliott> sane
04:12:31 <elliott> or church
04:12:47 <pikhq_> Then what *is* it?
04:13:07 <CakeProphet> :t f x y z
04:13:08 <lambdabot> forall t. (SimpleReflect.FromExpr (Expr -> t)) => t
04:13:11 <elliott> > (length + length) [0,9]
04:13:12 <lambdabot> 4
04:13:16 <elliott> CakeProphet: THAT IS UNRELATED
04:13:21 <elliott> _COMPLETELY_
04:13:26 <CakeProphet> elliott: OKAY I WAS SORT OF TESTING TO SEE IF IT WAS RELAX
04:13:41 <pikhq_> elliott: YOU EXPLAIN NOTHING
04:13:48 <elliott> pikhq_:
04:13:50 <elliott> > (length + length) [0,9]
04:13:51 <lambdabot> 4
04:13:54 <CakeProphet> pikhq_: yeah I don't know why you're trying to elliott to explain anything.
04:13:58 <elliott> > (length / length) [0,9]
04:13:58 <CakeProphet> +get
04:13:59 <lambdabot> No instance for (GHC.Real.Fractional GHC.Types.Int)
04:13:59 <lambdabot> arising from a use o...
04:14:08 <elliott> > (length `div` length) [0,9]
04:14:09 <lambdabot> No instance for (GHC.Real.Integral ([a] -> GHC.Types.Int))
04:14:10 <lambdabot> arising from ...
04:14:12 <elliott> oh come on
04:14:21 <elliott> > (length - length) [0,9]
04:14:21 <lambdabot> 0
04:14:25 <CakeProphet> > (length / length) [0.0, 0.9]
04:14:25 <lambdabot> No instance for (GHC.Real.Fractional GHC.Types.Int)
04:14:26 <lambdabot> arising from a use o...
04:14:27 <elliott> > (length + 99) [0,9]
04:14:28 <lambdabot> 101
04:14:35 <elliott> pikhq_: explained.
04:14:46 <pikhq_> I want the name of the instance and its source.
04:15:02 <elliott> instances dont have names
04:15:13 <pikhq_> You know what I mean.
04:15:22 <elliott> nope
04:15:50 <pikhq_> Ah, yes, you're a crazy person who thinks (length + length) [0,9] explains (length + length) [0,9]
04:16:02 <elliott> i gave three examples
04:16:10 <CakeProphet> :t length + length
04:16:10 <elliott> w/e, keep being stubborn
04:16:10 <lambdabot> forall a. [a] -> Int
04:16:20 <CakeProphet> :t (length +)
04:16:21 <lambdabot> forall a. ([a] -> Int) -> [a] -> Int
04:16:40 <CakeProphet> Num instance on functions, as far as I can tell.
04:17:13 <pikhq_> Instance of Num for (Num n) => (n -> n), apparently.
04:17:27 <CakeProphet> so then "term term" automatically types as a -> b?
04:17:33 <CakeProphet> er a -> a in that case I guess.
04:17:44 <elliott> pikhq_: uhh
04:17:53 <elliott> yeah if my examples typed with that
04:17:59 <pikhq_> :t \x->1 x
04:18:00 <lambdabot> forall t t1. (Num (t -> t1)) => t -> t1
04:18:07 <pikhq_> Derp.
04:18:24 <CakeProphet> I'm not entirely clear how that magically makes integer literals into functions.
04:18:38 <elliott> :t 9
04:18:39 <lambdabot> forall t. (Num t) => t
04:18:50 <zzo38> This time I fixed the gopher SWPC for really.
04:18:53 <CakeProphet> elliott: uh huh?
04:18:53 <elliott> do you actually know haskell
04:19:04 <CakeProphet> elliott: I do.
04:19:34 <CakeProphet> elliott: do you actually know how to explain things instead of just being a jackass?
04:19:35 <elliott> practically every feature of the language i have had to explain to your confusion
04:19:40 <CakeProphet> (Answer: no)
04:19:42 <elliott> :t 9
04:19:42 <lambdabot> forall t. (Num t) => t
04:19:46 <elliott> + Num instance
04:19:49 <elliott> = ?????
04:20:14 <CakeProphet> at what point does 1 2 3 4 5 solicit the services of (+), (-), or (*)?
04:20:27 <elliott> :t 9
04:20:28 <lambdabot> forall t. (Num t) => t
04:20:34 <CakeProphet> I know the type of 9, sir.
04:20:35 <elliott> + Num instance for functions
04:20:38 <elliott> = ?????????????
04:21:18 <CakeProphet> > 9 . 8
04:21:19 <lambdabot> No instance for (GHC.Show.Show (f b))
04:21:19 <lambdabot> arising from a use of `M2427776621...
04:21:25 <CakeProphet> > (9 . 8) 7
04:21:26 <lambdabot> 9
04:22:10 <CakeProphet> :t const 8
04:22:11 <lambdabot> forall t b. (Num t) => b -> t
04:22:24 <CakeProphet> :t (9 >>= 8)
04:22:25 <lambdabot> forall (m :: * -> *) a b. (Num (m a), Num (m b), Monad m) => m b
04:22:57 <CakeProphet> > (9 >>= 8) 7
04:22:58 <lambdabot> 8
04:23:10 <CakeProphet> exciting instance.
04:24:03 <CakeProphet> > map (5 + 5) [1..]
04:24:04 <lambdabot> [10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10...
04:24:39 <CakeProphet> > 'a' 2 3
04:24:39 <lambdabot> Couldn't match expected type `t1 -> t2 -> t'
04:24:40 <lambdabot> against inferred type ...
04:24:56 <CakeProphet> needs moar OverloadedChars
04:25:07 <CakeProphet> function instance of IsChar
04:25:15 <CakeProphet> Num instance of IsChar
04:25:18 <CakeProphet> weak typing yesssssss
04:25:32 <CakeProphet> er well Int instance of IsChar.
04:26:49 <CakeProphet> > fix 1
04:26:49 <lambdabot> 1
04:26:52 <CakeProphet> fixed.
04:28:22 <CakeProphet> elliott: note that knowing Haskell does not instantly able to grasp your, honestly, shit explanations of things. For an example that isn't influenced by your inherent bias against me, see pikhq
04:28:28 <CakeProphet> s/able/allow/
04:28:41 <CakeProphet> s/allow/allow me (?#ack...)/
04:32:15 <pikhq_> CakeProphet: If there is an instance of Num for (a -> b), then it immediately follows that for anything of type (Num t) => t (say, 1), it can be of type (a -> b).
04:33:02 <CakeProphet> right, I was confused because I didn't realize that "f a" always enforces f to be type a -> b
04:33:14 <elliott> as opposed to applying integers
04:33:28 <CakeProphet> I mean, I knew intuitively that it does enforce that, but not that GHC does that.
04:33:40 <pikhq_> It simply must.
04:33:41 <elliott> it's simple unification, there is no special rule
04:33:56 <CakeProphet> elliott: cool, dude.
04:34:13 <pikhq_> You'd literally have to break type inference for that to not happen. And a lot of other things besides. :)
04:34:32 <CakeProphet> right, the more familiar example of a -> b as a Monad does the same thing.
04:34:46 <CakeProphet> integer overloading magic just confused me.
04:35:00 <CakeProphet> *number
04:36:43 <CakeProphet> elliott: I was confused I thought the entire world was derived of special cases.
04:37:05 <elliott> yes, I too am under the impression that this is how you model things
04:37:16 <CakeProphet> indeed.
04:37:45 <CakeProphet> I tend to model things with intuition. Sometimes this is inexact. Shit happens.
04:38:49 <elliott> so, you don't know Haskell, just a bunch of special cases? ok
04:39:14 <CakeProphet> well, for starters, I do not fully know the process GHC uses to derive types.
04:39:30 <CakeProphet> do I know Haskell. Sure, by some definition of know.
04:40:08 <elliott> yes this is totally a ghc specific thing
04:40:13 <elliott> hindley and milner, famous ghc hackers
04:40:17 <elliott> languages = implementations
04:40:23 <CakeProphet> elliott: totally.
04:40:49 <CakeProphet> perhaps if you didn't know everything things like not knowing things would make more sense to you.
04:42:02 <Madoka-Kaname> > iterate (*2)
04:42:03 <lambdabot> Overlapping instances for GHC.Show.Show (a -> [a])
04:42:03 <lambdabot> arising from a use of...
04:42:05 <Madoka-Kaname> :t iterate
04:42:06 <lambdabot> forall a. (a -> a) -> a -> [a]
04:42:15 <Madoka-Kaname> > iterate (*2) 1
04:42:16 <lambdabot> [1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768,65536,131072,...
04:42:23 <Madoka-Kaname> > iterate (\x -> x * x) 1
04:42:24 <lambdabot> [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,...
04:42:25 <Madoka-Kaname> > iterate (\x -> x * x) 2
04:42:25 <lambdabot> [2,4,16,256,65536,4294967296,18446744073709551616,3402823669209384634633746...
04:42:33 <Madoka-Kaname> > iterate (\x -> x * x * x) 2
04:42:34 <lambdabot> [2,8,512,134217728,2417851639229258349412352,141347765182270746366663800059...
04:42:43 <Madoka-Kaname> > iterate (\x -> x * x * x * x * x * x) 2
04:42:44 <lambdabot> [2,64,68719476736,105312291668557186697918027683670432318895095400549111254...
04:42:50 <Madoka-Kaname> Okey, yeah, it's not going to overflow, is it?
04:42:55 <CakeProphet> > iterate 2 undefined
04:42:55 <lambdabot> [*Exception: Prelude.undefined
04:42:58 <CakeProphet> :(
04:43:03 <CakeProphet> > 2 undefined
04:43:04 <lambdabot> 2
04:43:26 * CakeProphet scratches head.
04:43:39 <CakeProphet> @src iterate
04:43:39 <lambdabot> iterate f x = x : iterate f (f x)
04:43:49 * CakeProphet scratches his head even more.
04:43:53 <CakeProphet> ah
04:43:54 <CakeProphet> yes
04:44:09 <CakeProphet> > iterate 2 0
04:44:10 <lambdabot> [0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,...
04:44:19 <CakeProphet> > join iterate 2
04:44:20 <lambdabot> Occurs check: cannot construct the infinite type: a = a -> a
04:44:23 <CakeProphet> bah
04:44:38 <elliott> > tail (iterate 9 undefined)
04:44:39 <lambdabot> [9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,...
04:44:44 <elliott> > iterate 2 2
04:44:44 <lambdabot> [2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,...
04:45:31 <CakeProphet> ah okay.
04:45:47 <CakeProphet> er, not referring to iterate 2 2
04:45:50 <CakeProphet> I, uh, figured that out
04:46:07 <CakeProphet> I was trying to write it with join. but the 2 on the left is not the same type as the two on the right.
04:46:20 <Madoka-Kaname> > iterate unsafeCoerce undefined
04:46:21 <lambdabot> Not in scope: `unsafeCoerce'
04:46:24 <CakeProphet> integer overloading, apparently the bane of my existence.
04:46:45 <Madoka-Kaname> So...
04:46:59 <Madoka-Kaname> forceEval :: a -> a
04:47:04 <Madoka-Kaname> forceEval = unsafeCoerce
04:47:12 <CakeProphet> forceEval = id
04:47:14 <CakeProphet> most likely
04:47:25 <CakeProphet> though it could be unsafeCoerce :: a -> a
04:47:28 <CakeProphet> which is just... id.
04:48:19 <CakeProphet> :t join asTypeOf
04:48:20 <lambdabot> forall a. a -> a
04:48:23 <CakeProphet> could also be that.
04:48:23 <elliott> <Madoka-Kaname> forceEval :: a -> a
04:48:29 <elliott> Madoka-Kaname: a "forceEval" function makes no sense.
04:48:37 <elliott> semantically, implementation-wise, every-wise.
04:48:42 <Madoka-Kaname> Well....
04:48:44 <CakeProphet> elliott: well, it makes sense... as id. id is forceEval. :P
04:48:51 <elliott> Madoka-Kaname: No.
04:48:56 <Madoka-Kaname> Maybe "strict" would be a better word?
04:48:57 <Madoka-Kaname> ;.
04:48:58 <Sgeo|web> reverse . reverse for lists
04:48:58 <Madoka-Kaname> ;.;
04:49:06 <CakeProphet> Madoka-Kaname: not id does not magically strictly evaluate.
04:49:09 <CakeProphet> (no
04:49:12 <CakeProphet> :t seq
04:49:13 <lambdabot> forall a t. a -> t -> t
04:49:28 <Madoka-Kaname> unsafeCoerce undefined seems to error, at least.
04:49:38 <CakeProphet> Madoka-Kaname: when evaluated, yes.
04:49:48 <elliott> Madoka-Kaname: No, there is literally no way that makes any sense at all; if you think it does, you don't understand Haskell's evaluation model very well.
04:49:52 <CakeProphet> Madoka-Kaname: try putting it as the second argument to const
04:49:57 <Madoka-Kaname> elliott, ;.;
04:50:09 <CakeProphet> > undefined `seq` 2
04:50:10 <lambdabot> *Exception: Prelude.undefined
04:50:13 * Madoka-Kaname drops an anvil on elliott
04:50:14 <Madoka-Kaname> Die
04:50:18 <elliott> k
04:50:25 <CakeProphet> Madoka-Kaname: const 2 undefined == 2
04:50:34 <CakeProphet> Madoka-Kaname: const 2 (unsafeCoerce undefined) == 2
04:50:39 <Madoka-Kaname> :t const
04:50:40 <lambdabot> forall a b. a -> b -> a
04:50:43 <CakeProphet> > const 2 3
04:50:44 <lambdabot> 2
04:50:49 <CakeProphet> > const 2 "holy crap anything"
04:50:50 <lambdabot> 2
04:51:07 <monqy> what's up, #esoteric
04:51:14 <CakeProphet> > const 2 (repeat "dude this list repeats /forever/")
04:51:15 <lambdabot> 2
04:51:58 <CakeProphet> > let x = repeat "dude this list repeats /forever/" in x `seq` const 2 x
04:51:59 <lambdabot> 2
04:52:31 <Madoka-Kaname> > seq (fix ($)) 2
04:52:31 <lambdabot> 2
04:52:41 <Madoka-Kaname> :t fix ($)
04:52:42 <lambdabot> forall a b. a -> b
04:52:46 <Madoka-Kaname> No way that'll return, right?
04:52:51 <Madoka-Kaname> Oh
04:52:54 <Madoka-Kaname> > seq (fix ($) 1) 2
04:52:58 <CakeProphet> Madoka-Kaname: note that when seq strictly evaluates something that doesn't mean that it evaluates the structure completely.
04:53:09 <lambdabot> thread killed
04:53:11 <Madoka-Kaname> Makes sense =p
04:53:26 <CakeProphet> so repeat 2 `seq` 2 only evaluates the first node of repeat 2
04:54:05 <Sgeo|web> deepseq?
04:54:29 <CakeProphet> there is a function called deepSeq that evaluates everything to its so-called normal form (aka "fully evaluated")
04:55:16 <Madoka-Kaname> > deepSeq (fix (1:) []) "wee"
04:55:17 <lambdabot> Not in scope: `deepSeq'
04:55:22 <elliott> It's called deepseq and it's in a type-class.
04:55:29 <elliott> It does not make sense for much data, and it is almost always a bad idea.
04:55:35 <elliott> s/much/many/
04:57:42 <CakeProphet> Madoka-Kaname: there's also a function ($!) f x = x `seq` f x
04:57:47 <CakeProphet> aka strict application.
05:01:01 <CakeProphet> Madoka-Kaname: but generally using seq and $! isn't really important unless you're trying to optimize code speed or memory use.
05:01:33 <elliott> seq needs to go back into a typeclass.
05:01:49 <CakeProphet> elliott: por que?
05:01:54 <CakeProphet> also "go back" -- it was in one before?
05:02:00 <elliott> Yes.
05:02:11 <elliott> In 1.4. Haskell 98 was a step back in several ways.
05:02:20 <CakeProphet> What would the benefit of that be?
05:02:25 <elliott> class Eval a where
05:02:26 <elliott> seq :: a -> b -> b
05:02:26 <elliott> strict :: (a -> b) -> a -> b
05:02:26 <elliott> strict f x = x `seq` f x
05:02:44 <CakeProphet> also how does one write a seq instance
05:02:49 <CakeProphet> without a seq?
05:02:52 <elliott> CakeProphet: Allows eta-expansion (because it doesn't say whether functions are lifted or unlifted); avoids massively complicating the semantic model (seq has no denotational semantics).
05:03:14 <elliott> And makes parametricity hold more properly.
05:03:39 <elliott> Other excellent things 1.4 had: (++) in MonadPlus, monad comprehensions, "map" in Functor, empty Void type...
05:03:46 <CakeProphet> waaaaaaah
05:03:54 <CakeProphet> so good.
05:04:02 <CakeProphet> what happened Haskell 98?
05:04:32 <elliott> Oh, and no "fail" in Monad.
05:04:34 <CakeProphet> perhaps they were concerned with the typeclass overhead for the common case of lists?
05:04:39 <elliott> There is no overhead.
05:04:43 <elliott> What happened was concerns about newbies / quality of error messages; and proliferation of constraints in definitions.
05:04:50 <CakeProphet> oh, lame.
05:04:58 <elliott> e.g. using Seq added Eval constraints, and MonadFail constraints or whatever for partial pattern matches, and so on.
05:05:11 <elliott> filter :: MonadZero m => (a -> Bool) -> m a -> m a
05:05:11 <elliott> filter p = applyM (\x -> if p x then return x else zero)
05:05:16 <CakeProphet> it's not like they avoided a profusion of instance-related error messages.
05:05:20 <CakeProphet> I get plenty of those.
05:05:47 <quintopia> did someone ping me?
05:05:52 <elliott> quintopia: probably
05:06:21 <quintopia> okay as long as it's not important enough that you said "yes"
05:06:40 <elliott> liftM3 :: (Monad m) => (a -> b -> c -> d) ->
05:06:41 <elliott> (m a -> m b -> m c -> m d)
05:06:41 <elliott> liftM3 f = \a b c -> [f a' b' c' | a' <- a, b' <- b, c' <- c]
05:06:43 <elliott> Monad comprehensions.
05:06:56 <CakeProphet> o.o
05:07:02 <monqy> monad comprehensions
05:07:13 <CakeProphet> I honestly
05:07:18 <CakeProphet> never use list comprehensions. maybe I should.
05:07:48 <quintopia> they say bitcoin is dead
05:08:06 <CakeProphet> quintopia: they said rock 'n' roll would die.
05:09:37 <CakeProphet> ugh programming C++ is like... flagellantism
05:10:01 <Sgeo|web> "First you have to tell the compiler how to serialize any datatype, in general. Since Haskell datatypes have a regular structure, this means you can just explain how to serialize a few basic datatypes."
05:10:04 <Sgeo|web> Woah
05:10:08 <Sgeo|web> I think I like where this is going
05:10:13 <quintopia> programming C++ is like... programming fortran... without the hardcore hacker feel
05:10:52 <CakeProphet> would that be more of C <->fortran relationship?
05:10:56 <CakeProphet> *wouldn't
05:12:15 <CakeProphet> oh apparently fortran got OO, nevermind.
05:12:26 <elliott> like anyone uses it
05:12:43 <CakeProphet> hmmm
05:12:45 <CakeProphet> I should learn fortran.
05:12:54 <elliott> Sgeo|web: lust after fortran next
05:13:08 <CakeProphet> in my Conquest of Programming Language Knowledge(tm)
05:14:07 <CakeProphet> the main restraint on said conquest being that I cannot think of projects as quickly as I can think of programming languages to learn.
05:15:55 <CakeProphet> :t f
05:15:56 <lambdabot> forall a. (SimpleReflect.FromExpr a) => a
05:15:57 <CakeProphet> :t f 1
05:15:58 <lambdabot> forall t t1. (Num t, SimpleReflect.FromExpr (t -> t1)) => t1
05:16:26 <CakeProphet> it's not related to the integer overloading, but a similar idea.
05:18:29 <CakeProphet> :t a b
05:18:29 <lambdabot> Couldn't match expected type `Expr -> t'
05:18:30 <lambdabot> against inferred type `Expr'
05:18:30 <lambdabot> In the expression: a b
05:18:35 <CakeProphet> :t b
05:18:36 <lambdabot> Expr
05:18:38 <CakeProphet> ah
05:20:36 <CakeProphet> hmm why doesn't SimpleReflect document FromExpr..
05:20:50 <CakeProphet> you know, aside from defining it in source code
05:20:52 <CakeProphet> that doesn't count.
05:21:33 <elliott> CakeProphet: http://twanvl.nl/blog/haskell/simple-reflection-of-expressions
05:21:46 <CakeProphet> :t fun
05:21:47 <lambdabot> forall a. (SimpleReflect.FromExpr a) => String -> a
05:22:30 <elliott> CakeProphet: just read that
05:22:32 <elliott> it's the original post
05:22:32 <CakeProphet> > fun "your mom is" a (var "hobag")
05:22:33 <lambdabot> Ambiguous type variable `a' in the constraints:
05:22:33 <lambdabot> `SimpleReflect.FromExpr ...
05:22:40 <CakeProphet> > fun "your mom is" (a::Expr) (var "hobag")
05:22:41 <lambdabot> Ambiguous type variable `a' in the constraints:
05:22:41 <lambdabot> `SimpleReflect.FromExpr ...
05:22:42 <CakeProphet> sdfijsdfijwer
05:22:50 <CakeProphet> > fun "your mom is" a (var "hobag") :: Expr
05:22:51 <lambdabot> your mom is a hobag
05:23:02 <CakeProphet> bahahahahaha
05:23:35 <Sgeo|web> :t fun
05:23:36 <lambdabot> forall a. (SimpleReflect.FromExpr a) => String -> a
05:23:37 <Sgeo|web> Oh
05:24:10 <quintopia> hobag barbie eh
05:24:16 <CakeProphet> :t h
05:24:17 <lambdabot> forall a. (SimpleReflect.FromExpr a) => a
05:24:20 <CakeProphet> fun is how f g and h are defined.
05:24:27 <CakeProphet> fromExpr . var
05:25:43 * CakeProphet thinks it would be neat if more Haskell programs included a Blah.Reflect that exports SimpleReflect stuff.
05:26:25 <CakeProphet> as an educational tool.
05:27:20 * CakeProphet thinks that /me is a cool way to talk in the third person because he likes to do that sometimes.
05:28:09 * CakeProphet also finds it funny when people forget to convert to third person, so then some anonymous narrator is involved. I like this.
05:28:16 <quintopia> fucking illeists
05:28:56 * CakeProphet is going to see if he can now communicate entirely in third person for the remainder of the night.
05:29:25 * CakeProphet forgot to mention that he also wants to see if he can get away with this without annoying someone.
05:29:37 <CakeProphet> bah, I messed up.
05:29:48 <CakeProphet> I didn't mention anything, the narrator did.
05:29:52 <CakeProphet> er, I mean
05:29:57 <CakeProphet> I did all of the mentioning.
05:29:59 * CakeProphet did not.
05:30:39 <monqy> hi
05:31:07 <elliott> hi monqy hi hi hi
05:31:09 <elliott> my program is broken monqy
05:31:11 <elliott> want to fix it??//
05:31:20 * CakeProphet greets monqy fondly.
05:31:41 <elliott> OH
05:31:43 <elliott> OH I AM SUCH
05:31:44 <elliott> A FUCKING IDIOT
05:31:46 <elliott> OF COURSE IT DOESNT RUN
05:31:47 <elliott> BECAUSE
05:31:50 <elliott> THERES A "FOREVER" LOOP ABOVE IT
05:32:23 * CakeProphet wonders why he stopped working on his RP-oriented MUD client.
05:32:36 * CakeProphet considers writing it in Fortran. Wow, that's a terrible idea CakeProphet.
05:33:33 <CakeProphet> though I think if I did such a thing I would likely provide a custom client, because MUD clients are awful.
05:33:56 * CakeProphet gave up on his quest for third-person narration.
05:34:42 <elliott> monqy: I wrote a program: http://sprunge.us/BMBZ
05:34:58 <monqy> program
05:35:00 <CakeProphet> whoa woah
05:35:01 <CakeProphet> flood
05:35:03 <CakeProphet> flud
05:35:25 <monqy> does it do things
05:35:28 <elliott> CakeProphet: what flood
05:35:29 <monqy> lots of imports
05:35:37 <CakeProphet> elliott: earlier I discovered that flood is oddly spelled.
05:35:44 <CakeProphet> considered the way it's pronounced.
05:35:46 <monqy> flod
05:36:10 <elliott> monqy: that's very few imports for haskell
05:36:12 <CakeProphet> help battery brb
05:36:23 <monqy> it's a lot of imports for me
05:36:28 <monqy> (i live in a cave)
05:37:12 <CakeProphet> hello. test
05:37:12 <CakeProphet> test test test.
05:37:12 <CakeProphet> testing.
05:37:15 <CakeProphet> this is a test.
05:37:25 <CakeProphet> awwww yeah connection wasn't interrupted.
05:37:45 <elliott> import MC.Protocol
05:37:45 <elliott> import MC.Protocol.IO
05:37:45 <elliott> import qualified MC.Protocol.Client as C
05:37:45 <elliott> import qualified MC.Protocol.Server as S
05:37:45 <elliott> import MC.Utils
05:37:45 <elliott>
05:37:47 <elliott> import Prelude hiding (catch)
05:37:49 <elliott> import Data.HashMap.Strict (HashMap)
05:37:51 <elliott> import qualified Data.HashMap.Strict as HM
05:37:53 <elliott> import Data.ByteString (ByteString)
05:37:55 <elliott> import qualified Data.ByteString as B
05:37:57 <elliott> import Data.Text (Text)
05:37:59 <elliott> import qualified Data.Text as T
05:38:01 <elliott> import Control.Monad
05:38:03 <elliott> import Control.Exception
05:38:05 <elliott> import Control.Concurrent
05:38:07 <elliott> import Control.Concurrent.STM
05:38:09 <elliott> import Data.IORef
05:38:11 <elliott> import System.IO
05:38:13 <elliott> import Network
05:38:15 <elliott> import Codec.Zlib
05:38:17 <elliott> monqy: :)
05:38:17 <monqy> imports
05:38:31 -!- zzo38 has quit (Remote host closed the connection).
05:38:33 <monqy> i remember that logn list of inmports from whaichever cpmpiler that was
05:38:35 <monqy> the rlong one
05:38:44 <monqy> (it was long)
05:39:10 <CakeProphet> too many imports are bad for the economy.
05:39:33 <CakeProphet> unless the imports are goods that generate revenue domestically.
05:41:03 <CakeProphet> economics are tricky when programming. It's like being in a circus.
05:41:05 <CakeProphet> good night.
05:42:36 <CakeProphet> oh hey wait
05:42:46 <CakeProphet> say I wanted to like...
05:43:05 <CakeProphet> run a command in emacs, to load a bunch of files that I commonly edit as a group.
05:43:21 <CakeProphet> does this already exist or do I need to go learn emacslisp?
05:46:47 <elliott> monqy: do you see any obvious refactorings...
05:46:50 <elliott> i'd like to make it a little prettier
05:48:37 <monqy> nothing obvious.. id on't work much with fancy io
05:49:59 <elliott> does anyone know of a program that's basically tail -f + readline?
05:50:12 <elliott> i.e. it shows a log in realtime but provides an input line with editing that isn't overwritten by the log
05:50:24 <elliott> preferably just cat logfile | theprogram | processinput
05:51:57 <elliott> shachaf: Oi, you should refactor my code. (I say this because you're the only competent person in the channel.)
05:52:14 <CakeProphet> elliott: which forever did you remove.
05:52:24 <shachaf> elliott: What code?
05:52:38 <elliott> shachaf: http://sprunge.us/caNc
05:52:39 <elliott> That code.
05:54:08 <CakeProphet> elliott: the only thing I see is that you appear to write the equivalent of void . forkIO . forever twice. Though I doubt giving that a name really improves the code.
05:54:19 <elliott> CakeProphet: Not the equivalent.
05:54:26 <elliott> `catch`/`finally`/ are inside the forever. Although, oh.
05:54:28 <elliott> They shouldn't be.
05:54:33 <elliott> Wait, no.
05:54:34 <elliott> They're not.
05:54:37 <elliott> But yeah, no.
05:54:43 <elliott> CakeProphet: The second "forever" is different.
05:54:44 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: /hackenv/catch`/`finally`/: No such file or directory \ /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: /hackenv/catch`/`finally`/: cannot execute: No such file or directory
05:54:57 <elliott> it's void (forkIO (catch (finally ...)))
05:55:31 <CakeProphet> ah
05:55:37 <shachaf> elliott: It doesn't look *that* horrible...
05:55:44 <shachaf> What's the point of all those voids?
05:55:55 <elliott> shachaf: forkIO returns a ThreadId.
05:56:00 <shachaf> So?
05:56:09 <elliott> I'm discarding it. The alternative is _ <-, but it's in tail position once there.
05:56:15 <elliott> shachaf: I like -Wall. :p
05:56:27 <elliott> But yes, it doesn't look horrible, I just want it to be nicer.
05:56:32 <CakeProphet> ignore e would be a nice function in Control.Exception
05:56:42 <shachaf> elliott: Presumably you're going to turn it into something more complicated later on?
05:56:48 <elliott> shachaf: Nope.
05:56:52 <elliott> shachaf: This is literally the tool I need.
05:59:38 <shachaf> elliott: ignoreEOFError e = unless (isEOFError e) (throwIO e), I guess?
06:00:00 <shachaf> No liftA2ing that
06:00:05 <elliott> shachaf: Yeah, I did that (with applicative combinators).
06:00:13 <shachaf> Bad elliott.
06:00:14 <elliott> Then Deewiant was like "seriously though" and I was like "yeah" and didn't actually put it in.
06:00:41 <elliott> flip (liftA2 unless) throwIO should be in Control.Exception.
06:01:08 <elliott> shachaf: The problem with that is that the "where" one-liner sticks out. :p
06:01:13 <elliott> THIS TOTALLY MATTERS
06:01:18 <CakeProphet> elliott: I believe ignoreEOFError could be translated to when.
06:01:34 <CakeProphet> ?
06:01:36 <CakeProphet> no.
06:01:43 <elliott> unless = when . not
06:02:08 <CakeProphet> the condition relies on e so you can't do that.
06:02:14 <shachaf> elliott: I don't think this piece of code is really worth worrying about.
06:02:32 <elliott> shachaf: Yeah, but it distracts me from writing the other portion of this, namely a shell script.
06:02:44 <shachaf> Ew, shell script.
06:03:01 <shachaf> What's the goal of this?
06:03:14 <elliott> shachaf: Backups. The reason I need this server is because of badly-designed software.
06:03:26 <CakeProphet> @pl (\e -> unless (f e) (throwIO e))
06:03:27 <lambdabot> liftM2 unless f throwIO
06:03:30 <shachaf> *Backups*?
06:03:32 <elliott> Anyway, the shell script will literally be "echo foo | nc localhost 9999; blah; echo bar | nc localhost 9999".
06:03:37 <elliott> So it's not so bad.
06:03:42 <shachaf> CakeProphet: I said no lift[A-Z]2!
06:04:03 <CakeProphet> not even liftQ?
06:04:10 <elliott> shachaf: Specifically, I need to stop a piece of software from writing to the data while it's being backed up.
06:04:30 <elliott> shachaf: It has a console designed to be used by human users read from stdin; I need to be able to use it while also having the script send commands.
06:04:39 <elliott> So this program turns a single file into a line-multiplexed server.
06:05:03 <shachaf> Ah.
06:05:29 <elliott> Of course this creates the problem of how _I_ interact with it, but that was why I asked if anyone knows of a tail -f + readline deal. :-)
06:05:54 <elliott> But yeah, rdiff-backup is doing the heavy lifting here.
06:05:56 <shachaf> tail -f + readline?
06:06:11 <CakeProphet> :t (\e -> unless (f e) (throwIO e))
06:06:12 <lambdabot> Not in scope: `throwIO'
06:06:16 <shachaf> Ah, to give you a pseudo-stdin-stdout thingy?
06:06:20 <CakeProphet> :t catch
06:06:21 <lambdabot> forall a. IO a -> (IOError -> IO a) -> IO a
06:06:22 <elliott> shachaf: Yeah.
06:06:31 <elliott> shachaf: tail -f the log file, readline for the actual line input.
06:06:50 <elliott> shachaf: (When stdin is a tty, the bad software does basic terminal stuff so that lines coming in don't overwrite the input.)
06:07:20 <CakeProphet> @hoogle (a -> Bool) -> IO () -> IO ()
06:07:20 <lambdabot> Foreign.Marshal.Error throwIf :: (a -> Bool) -> (a -> String) -> IO a -> IO a
06:07:21 <lambdabot> Foreign.Marshal.Error throwIf_ :: (a -> Bool) -> (a -> String) -> IO a -> IO ()
06:07:21 <lambdabot> Foreign.C.Error throwErrnoIf :: (a -> Bool) -> String -> IO a -> IO a
06:07:33 <CakeProphet> looks like that's a common pattern.
06:07:45 <shachaf> @hoogle+
06:07:45 <lambdabot> Foreign.C.Error throwErrnoIfRetry :: (a -> Bool) -> String -> IO a -> IO a
06:07:45 <lambdabot> Foreign.C.Error throwErrnoIf_ :: (a -> Bool) -> String -> IO a -> IO ()
06:07:45 <lambdabot> Foreign.C.Error throwErrnoIfRetry_ :: (a -> Bool) -> String -> IO a -> IO ()
06:07:49 <shachaf> @hoogle+
06:07:50 <lambdabot> Foreign.C.Error throwErrnoIfRetryMayBlock :: (a -> Bool) -> String -> IO a -> IO b -> IO a
06:07:50 <lambdabot> Foreign.C.Error throwErrnoIfRetryMayBlock_ :: (a -> Bool) -> String -> IO a -> IO b -> IO ()
06:07:50 <lambdabot> Foreign.C.Error throwErrnoPathIf :: (a -> Bool) -> String -> FilePath -> IO a -> IO a
06:08:02 <shachaf> Eh.
06:08:12 <CakeProphet> throwErrnoIfRetryMayBlock_ is a pretty bad name
06:08:21 <shachaf> Ooh, I remember that function.
06:08:40 <shachaf> I was digging around in GHC's I/O implementation trying to figure out how the whole blocking thing worked.
06:08:46 <shachaf> It's such a mess to figure out.
06:08:48 <CakeProphet> :t isEOFError
06:08:49 <lambdabot> Not in scope: `isEOFError'
06:08:56 <shachaf> @let isEOFError _ = False
06:08:57 <lambdabot> Defined.
06:09:04 <CakeProphet> ...
06:09:04 <Vorpal> <elliott> shachaf: (When stdin is a tty, the bad software does basic terminal stuff so that lines coming in don't overwrite the input.) <-- which bad software?
06:09:20 <shachaf> Vorpal: rdif-backup?
06:09:20 <elliott> Vorpal: CB.
06:09:23 <shachaf> Oh.
06:09:28 <Vorpal> elliott: CB being?
06:09:29 <elliott> shachaf: No, rdiff-backup is the good software I'm using to backup.
06:09:36 <elliott> Vorpal: CrBu.
06:09:41 <elliott> It's like a riddle. Of time.
06:09:43 <shachaf> CrBu being?
06:09:50 <elliott> shachaf: The bad software is the program I have to tell to stop writing to the files.
06:09:50 <Vorpal> elliott: is it the mc server?
06:09:59 <elliott> Vorpal: Yes. I dare not speak its name for the horrors it causes me.
06:10:08 <Vorpal> so why call it cb?
06:10:10 <CakeProphet> :t unless
06:10:10 <lambdabot> forall (m :: * -> *). (Monad m) => Bool -> m () -> m ()
06:10:16 <elliott> Vorpal: That's its name.
06:10:25 <Vorpal> oh craftbukkit-0.0.1-SNAPSHOT.jar
06:10:33 <Vorpal> of course
06:11:02 <CakeProphet> anyway, using unless instead of the guard is probably better.
06:11:59 <shachaf> @whatis cb
06:11:59 <lambdabot> I know nothing about cb.
06:12:05 <Vorpal> shachaf: craftbukkit
06:12:09 <Vorpal> shachaf: that is what it is
06:12:18 <shachaf> Wait, what?
06:12:22 <Vorpal> shachaf: which is an minecraft server
06:12:23 <shachaf> That looks like a Minecraft thing.
06:12:25 <Vorpal> shachaf: yes
06:12:29 <shachaf> What does this have to do with backup?
06:12:33 <CakeProphet> is it what it is?
06:12:35 <Vorpal> shachaf: backing up the world?
06:12:43 * shachaf feels like he misunderstood something.
06:12:51 <CakeProphet> > unwords . reverse . words $ "is it what it is"
06:12:52 <shachaf> Ah, well. It's just Minecraft, so I don't feel bad.
06:12:53 <lambdabot> "is it what it is"
06:12:59 <Vorpal> shachaf: what?
06:13:07 <shachaf> @let onwords f = unwords . f . words
06:13:08 <lambdabot> Defined.
06:13:15 <shachaf> > onwords reverse "is it what it is"
06:13:16 <CakeProphet> shachaf: wonderful
06:13:17 <lambdabot> "is it what it is"
06:13:28 <CakeProphet> :t unwords
06:13:29 <lambdabot> [String] -> String
06:13:32 <CakeProphet> :t words
06:13:33 <lambdabot> String -> [String]
06:13:36 <elliott> shachaf: I have to tell the piece of shit server to stop writing to the world every two seconds so I can rdiff-backup it.
06:13:53 <shachaf> Sadly unwords . words =/= id. :-(
06:14:09 <Patashu> wow
06:14:12 <Patashu> fuck java in its flying ass
06:14:15 <Patashu> for making fucking bytes signed
06:14:28 <Vorpal> Patashu: you know that char in C is often signed?
06:14:31 <elliott> "char" can and usually is signed in C, too.
06:14:40 <Patashu> well I want my bytes to be unsigned
06:14:42 <Patashu> how do I fix this
06:14:46 <Vorpal> unsigned byte?
06:14:46 <Deewiant> The difference being that C has the "unsigned" keyword
06:14:47 <Patashu> I'm getting like -12 instead of 244
06:14:49 <Vorpal> ah
06:14:53 <shachaf> elliott: char is for characters.
06:15:01 <elliott> Patashu: You don't.
06:15:04 <elliott> Patashu: Use int or w/e.
06:15:04 <shachaf> That's why it's 32 bits long.
06:15:09 <shachaf> > w/e
06:15:10 <lambdabot> w / e
06:15:10 <CakeProphet> Patashu: The answer is, you use the signed types that are larger than the original unsigned type. I.e. use a short to hold an unsigned byte, use a long to hold an unsigned int. (And use a char to hold an unsigned short.) Yeah, this kinda sucks because now you're using twice as much memory, but there really is no other solution. (Also bear in mind, access to longs is not guaranteed to be atomic - although if you're using
06:15:17 <CakeProphet> http://darksleep.com/player/JavaAndUnsignedTypes.html
06:15:28 <Patashu> I'm using the method read(byte[] b, int off, int len) though
06:15:31 <Patashu> there's no read for int[]
06:15:32 <Patashu> or w/e
06:15:50 <Vorpal> wait, so what if you want an unsigned long long or such in java?
06:16:01 <CakeProphet> Patashu: well it would be short for unsigned byte.
06:16:04 <Patashu> ah, I see what to do
06:16:07 <Patashu> 0x000000FF & (int)buf[index]
06:16:09 <Patashu> this fucking shit everywhere
06:16:13 <Patashu> maybe I'll make a method to do it for me
06:16:28 <shachaf> elliott: If you delete cwd and then ^C your program, it complains.
06:16:33 <shachaf> Just sayin'.
06:16:36 <CakeProphet> Patashu: abstraction????? Have you gone mad!?!?!?!?
06:16:38 <elliott> shachaf: What.
06:16:48 <elliott> Patashu: Or 0xFF.
06:16:52 <shachaf> Wait, maybe that was runghc?
06:17:25 <elliott> shachaf: Sounds likei t to me.
06:17:28 <elliott> Were you stress-testing that?
06:17:31 <elliott> s/i t/ it/
06:17:37 <shachaf> Yep, runghc.
06:17:41 <shachaf> elliott: Nah, just habit.
06:19:23 * shachaf regularly deletes directories while there are still processes running in them.
06:19:29 <shachaf> I also regularly exit bash with kill -9 $$
06:19:34 <Vorpal> what
06:19:35 <Vorpal> why
06:19:45 <Vorpal> shachaf: that takes MORE typing than just plain exit
06:20:00 <Vorpal> you have to be joking
06:20:16 <Patashu> excellent. works like a charm
06:20:21 <Patashu> an ugly charm but who's keeping score
06:20:30 <elliott> shachaf: I shut down my computer with an axe.
06:22:11 <shachaf> Vorpal: I'm not.
06:22:18 <shachaf> Vorpal: It doesn't save command line history.
06:22:27 <CakeProphet> Patashu learns the joys of abstraction.
06:22:31 <Vorpal> shachaf: that can be disabled with set anyway
06:22:40 <shachaf> Vorpal: After the fact?
06:22:43 <Vorpal> or maybe shopt
06:22:47 <shachaf> I want *some* things to be saved in history.
06:22:50 <Vorpal> shachaf: after starting the shell yes
06:23:02 <shachaf> I don't always know when I start a shell whether the commands I'm about to type are going to be something I want to save.
06:23:09 -!- monqy has quit (Quit: hello).
06:23:17 <Vorpal> hm
06:24:42 -!- nooga has joined.
06:48:54 <CakeProphet> mh
06:54:33 -!- Zuu has joined.
06:56:45 <fizzie> You do see quite a lot of &0x{ff,ffff} in Java thanks to the "only signed types" thing.
06:58:43 <fizzie> The way they call the 8 bits wide type "byte" also makes it sound like it should be unsigned. Not that I have a better name for it.
06:59:25 <elliott> signed octet
07:00:11 -!- ive has quit (Quit: leaving).
07:00:11 <elliott> fizzie: Oi, do you know something which is like rlwrap, except it also handles output not overwriting input, and prints a prompt?
07:00:30 <elliott> Basically I want to "tail -f server.log | magicprog | nc localhost 9999", where port 9999 is a server that writes to the console.
07:02:13 <elliott> See, fizzie knows.
07:02:46 <fizzie> "sictet", yes, that's what they should've called it.
07:02:48 <fizzie> I'm not entirely sure what you want magicproc to do there.
07:03:13 <elliott> fizzie: Present readline prompt; and show its input but not overriding its input.
07:03:14 <elliott> Err. That is to say.
07:03:24 <elliott> fizzie: Basically I want something that shows tail -f's output while letting me input things.
07:03:38 <elliott> Without new data on tail -f overwriting my input line, like netcat-IRCing does.
07:03:41 <elliott> Preferably line-edited.
07:03:46 <elliott> It has to exist, come on.
07:09:17 <fizzie> But being in the pipeline like that, magicproc has no access to the controlling terminal. Or, well, I guess it could open it explicitly. Anyway, I don't think I've heard of such a thing.
07:11:54 <fizzie> What about the output from "nc localhost 9999"?
07:14:16 <elliott> fizzie: Well, it's fine if it takes some parameters instead, of course.
07:14:20 <elliott> fizzie: And that can just be discarded.
07:14:36 <elliott> There's this "srw is used to provide a simple line editing interface to a program. The output of the program does not interupt the input to srw, and the input to srw is not echoed."
07:14:42 <elliott> But I don't know if I'm just missing something.
07:15:09 <elliott> And it's, you know, sucklessware, so it isn't using readline or anything simple like that.
07:15:26 <elliott> I'm tempted to just write my own thing; it's just cat + readline.
07:15:32 <elliott> But there must be _something_.
07:15:56 <CakeProphet> where there's a way, perl can do it.
07:16:48 <elliott> CakeProphet: Do it then
07:16:57 <CakeProphet> nah
07:17:19 <CakeProphet> also I assume there are specific requirements that I'm not aware of, otherwise youd just use.... cat + readline
07:17:56 <fizzie> elliott: Hm. What if you rlwrapped "bash -c 'nc localhost 9999 >/dev/null | tail -f server.log'"? The input into that "program" would go to the nc, and the "program"'s output would be tail -f's output, and rlwrap (or srw, or something) would take care of providing line editing for the input and handling output such that it doesn't clobber the prompt.
07:18:37 <elliott> fizzie: That sounds plausible. I suppose it won't take care of, e.g. the completed line being printed out?
07:18:39 <elliott> Like REPLs.
07:19:00 <fizzie> Hrm, probably not, unless your rlwrap-like tool has an "echo the command" flag.
07:19:24 <elliott> I also don't think rlwrap can print a prompt, but... it's a decent idea.
07:19:33 <elliott> elliott@katia:~/Code/line-server$ rlwrap "bash -c 'cat >foo | cat /dev/urandom'"rlwrap: Cannot execute bash -c 'cat >foo | cat /dev/urandom': No such file or directory
07:19:38 <elliott> Sigh.
07:20:22 <Deewiant> -S, --substitute-prompt <prompt>
07:20:22 <Deewiant> Substitute the specified prompt for command's own prompt.
07:20:22 <Deewiant> Mainly useful when command doesn't have a prompt.
07:20:31 <elliott> Right.
07:20:34 <shachaf> elliott: I think you just don't use the qutoes?
07:20:39 <elliott> shachaf: Yeah.
07:21:12 <fizzie> It seems to echo the input, too.
07:21:36 <fizzie> At least rlwrap bash -c 'cat >tmp.out | while true; do echo yay; sleep 1; done' seems to behave sensibly, discounting the lack of prompt, for which -S might help.
07:21:42 <elliott> Does "tail -f" really do that sleep-every-few-seconds thing nowadays?
07:22:28 <elliott> fizzie: -S seems to have annoying side-effects: like it prints a > before every "yay" line.
07:22:38 <elliott> Since rlwrap kind of assumes that the thing is prompt-based.
07:23:25 <shachaf> elliott: Why would tail -f do that?
07:23:47 <elliott> shachaf: -s, --sleep-interval=N
07:23:47 <elliott> with -f, sleep for approximately N seconds (default 1.0) between
07:23:48 <elliott> iterations
07:24:15 <shachaf> Oh.
07:31:10 <elliott> Gah, how do I tell rlwrap that the prompt is just whenever I press enter?
07:39:33 <CakeProphet> write it a letter
07:39:48 <CakeProphet> begin with... Dear rlwrap: ...
07:39:59 <CakeProphet> you use the : because you mean business.
07:45:42 <Patashu> I wrote my hide-data-on-fat16-and-retrieve-it program \o/
07:45:42 <myndzi> |
07:45:42 <myndzi> /<
07:45:46 <Patashu> :D
07:48:02 -!- hagb4rd has joined.
07:48:05 <elliott> Patashu: pls tell me it wasn't actually in java
07:48:16 <Patashu> Yeah I wrote it in java
07:48:19 <Patashu> U mad?
07:48:42 <Patashu> f7u12?
07:49:38 <Patashu> oh no not a channel I'll never care about ever :'(
07:49:46 <Patashu> your omnipotence, please, have mercy
07:49:52 <elliott> Excuse me -minecraft is where all the cool kids hang out.
07:49:55 <Patashu> P.S. what should I have written it in
07:50:08 <elliott> Anything but Java. Or Perl.
07:50:36 <Patashu> I'm basically the ultimate programming scrub
07:50:41 <Patashu> I wrote it in the BlueJ IDE
07:51:06 <elliott> Can I cause you to stop existing somehow
07:51:49 <hagb4rd> no
07:51:56 <hagb4rd> e=mc²
07:51:59 <elliott> Not you.
07:52:00 <elliott> Patashu.
07:52:03 <elliott> Also wrong.
07:52:03 <hagb4rd> i know
07:52:05 <hagb4rd> :)
07:52:16 <Patashu> look on the bright side
07:52:18 <Patashu> i'm not itidus12
07:52:19 <elliott> E = blah blah pc blah.
07:52:27 <elliott> Patashu: Yes, that is one way in which you are distinctly inferior.
07:52:32 <Patashu> what
07:52:32 <elliott> Also it's itidus20.
07:52:35 <Patashu> oh oops
07:52:52 <elliott> Patashu: The #esoteric cable has strongly agreed on the policy of itidus20 supremacy.
07:53:06 <Patashu> supremacy to everyone?
07:53:07 <Patashu> or just me
07:53:33 <elliott> Everyone. Except fungot.
07:53:33 <fungot> elliott: to. why, this is for you guys are a lot
08:04:27 <elliott> fizzie: Hmm, what if the "nc" part was extended so that it printed a recognisable prompt after each input?
08:13:09 <elliott> "At first I thought your program made a fractal image derived from the bootsector for easy human categorization. I get paranoid somebody's gonna call my operating system a virus, the bastards! http://www.losethos.com"
08:13:15 <elliott> LoseThos guy is still most funny guy.
08:14:25 <elliott> "Must anticipate what 14Mhz clock will be when message arrives at application. Microsoft will laugh at you. (There is lots of stuff going on in many tasks in windows all the time and time slices are handed out to tasks and anticipating what a 14MHz clock will be when a time slice is handed to an application and it executes a certain way into the application code with the message getting dispatched... Microsoft would laugh at you. In wet-wired log
08:14:25 <elliott> ic, no less! Now, what were you saying to God and I? Lemme get some popcorn.)"
08:21:06 -!- Phantom_Hoover has joined.
08:22:12 <Phantom_Hoover> Why is Ireland a thing that exists.
08:28:35 -!- Phantom__Hoover has joined.
08:31:56 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
08:34:04 -!- Phantom__Hoover has quit (Ping timeout: 248 seconds).
08:34:19 -!- Phantom__Hoover has joined.
08:36:06 <fizzie> elliott: I made a complicated bash thing that prints a new "> " prompt after each line, but it didn't help. The prompt output is mixed with the "tail -f" output, and rlwrap will not "forward" a prompt ever, so when (as seen by rlwrap) the program outputs "> " and then "yay\n", it will just show "> yay" on the screen and remove the prompt, presumably under the assumption that the prompt is no longer relevant since the program outputted something new.
08:37:07 <elliott> fizzie: Heh.
08:40:02 <elliott> fizzie: So I guess I should just write my own little ditty?
08:40:11 <elliott> fizzie: I suppose I'll have to do the same hacks we do in mcmap for decent prompt handling.
08:41:40 <fizzie> Mmmmaybe. Perhaps quite not that many hacks since all your input comes from file descriptors, not from other threads of the program, so you don't need that extra pipe.
08:43:11 <elliott> Right.
08:43:14 <fizzie> But I do think you need to use the "callback" interface to readline if you want to put some new output there while the input line editing is being done, since otherwise readline will block until the user is finished.
08:43:15 <Vorpal> heh, someone broke sensors-detect code for 2.6.x kernel identification when they fixed it for 3.x kernels
08:43:27 <Vorpal> $ sensors-detect
08:43:27 <Vorpal> Argument ".35.4-L1" isn't numeric in numeric ge (>=) at /usr/sbin/sensors-detect line 2489.
08:43:27 <Vorpal> Kernel version is unsupported (too old, >= 2.6.5 needed)
08:43:33 <Vorpal> $ uname -a
08:43:33 <Vorpal> Linux phoenix 2.6.35.4-L1 #1 Fri Aug 27 17:25:41 CEST 2010 i686 Pentium III (Coppermine) GenuineIntel GNU/Linux
08:44:38 <elliott> Upgrade yer kernel.
08:44:49 <Vorpal> elliott: I'm doing that atm
08:44:55 <Vorpal> anyway yeah, /var/abs/extra/lm_sensors/linux_3.0.patch breaks it
08:45:44 <Vorpal> elliott: I haven't booted this system since like late spring
08:45:50 <Vorpal> that is why it has such an old kernel
08:46:04 <elliott> Having one computer simplifies your life dramatically, it's great.
08:46:17 <elliott> Also not caring about your data I guess is the other component of that.
08:46:43 <Vorpal> elliott: well this computer has an IBM Deskstar iirc. So caring about data is clearly out of the question ANYWAY
08:46:53 <elliott> Heh.
08:47:23 <Vorpal> Model Family: IBM Deskstar 60GXP
08:47:24 <Vorpal> yep
08:47:42 <Vorpal> also known as IBM Deathstar
08:47:46 <Vorpal> because they suck so badly
08:48:02 <Vorpal> it is on 20 GB anyway
08:48:47 <Vorpal> elliott: anyway, I use this computer when I need old hardware. Like a physical serial port.
08:49:14 <Vorpal> serial port by USB devices sucks generally. Never got GPIO to work properly for them
08:50:03 <fizzie> Who was it that released 3.0.0 renumbered back to 2.6.40 to avoid breakage? Ubuntu or someone else?
08:50:11 <Vorpal> fizzie: red hat iirc
08:50:21 <Vorpal> or fedora maybe
08:50:23 <Vorpal> one of the two
08:50:43 -!- nooga has quit (Ping timeout: 256 seconds).
08:50:48 <fizzie> "I'm using Linux 2.6.40 (Fedora 15's version of 3.0) and --" apparently so.
08:51:13 <Vorpal> shown when upgrading udev:
08:51:15 <Vorpal> "rtc is no longer in the audio group and fb devices are no longer in the video group, as permissions and ownership of fb devices are controlled by X."
08:51:26 <Vorpal> that is strange
08:51:35 <Vorpal> it only motivates the latter change, not the former one
08:51:55 <elliott> fizzie: I like how Fedora are the ones who always break everything but they couldn't be arsed this time.
08:52:05 <elliott> Ubuntu ships with the properly-numbered kernel.
08:52:07 <Vorpal> not that I use audio, fb or X on that computer... It is headless and lacks sound chipsets completely
08:52:26 <elliott> I suppose I actually have two computers that I care about, one of them just isn't in this room.
08:52:29 <fizzie> elliott: Possibly their distribution-making scripts were the ones that broke on 3.x. :p
08:52:31 <elliott> And I guess that will become three sometime.
08:52:39 <elliott> fizzie: Nah, it was some driver or something.
08:52:43 <Vorpal> elliott: I have 4 running atm
08:52:49 <Vorpal> I use two regularly
08:52:51 <elliott> Vorpal: Including remote servers?
08:52:56 <Vorpal> elliott: no, as in this room
08:53:07 <elliott> Vorpal: Include servers.
08:53:18 <Vorpal> elliott: well add a VPS that I co-own with a good friend then.
08:53:27 <Vorpal> (50/50 split of the cost)
08:53:31 <elliott> Vorpal: Your life is too complicated.
08:53:53 <fizzie> It's a VPS so it counts as 0.5 computers; co-owning splits that to 0.25.
08:54:01 <Vorpal> XD
08:54:08 <elliott> fizzie: If anything VPSes count as multiple computers, because they're more of a pain than local computers.
08:54:23 <elliott> Network lag, hard to debug problems when they go dead, probably harder to reinstall the OS, etc.
08:54:25 <Vorpal> elliott: anyway I normally just use my desktop and my laptop. I do have that old Dell P3 that I'm upgrading atm, and an old dell laptop. And a first gen ibook with a dead battery
08:54:33 <fizzie> Softwaristically, maybe; hardwaristically at least it's someone else's problem.
08:55:00 <Vorpal> elliott: never had that VPS go dead. Good hosting. Xen too.
08:55:14 <elliott> Vorpal: Then you haven't been running interesting enough things. :-)
08:55:29 <elliott> Vorpal: I wouldn't count things like the iBook; there are certainly other computers in this house, I just never think about them.
08:55:31 <Vorpal> elliott: well maybe not. IRC server. Website. That is about it iirc.
08:55:38 <elliott> Let alone use them.
08:55:46 <Vorpal> elliott: well yeah there are probably "computers" in stuff like the freezer.
08:56:05 <fizzie> There are computers in my basement, and I never use them. :( *sad*
08:56:10 <Vorpal> heh
08:56:24 <Vorpal> elliott: anyway I do turn on the ibook maybe once a year or so when I get nostalgic
08:56:32 <Vorpal> play some Avernum.
08:56:38 <Vorpal> then turn it off and store it away again
08:56:50 <Vorpal> or, EV Override. That was a fun game too.
08:56:56 <fizzie> There's a Sun SparcStation 5, that SGI Indy, and the Sun 4*3.5" external SCSI HD box which makes an incredible amount of noise.
08:57:24 <fizzie> There's like two fans in it, and the disks aren't quiet either.
08:57:30 <Vorpal> heh
08:57:39 <atehwa> Anybody interested in the Helsinki esolang evening school assignments? http://tinyurl.com/5stnu5n
08:58:09 <Vorpal> hm atehwa is from .fi?
08:58:17 <atehwa> yes indeed.
08:58:17 <Vorpal> how many of you guys *are* there?
08:58:24 <Vorpal> (in this channel I mean)
08:58:34 <atehwa> well, there were ~20 participants in the evening school :)
08:58:41 <Vorpal> I meant in this channel.
08:58:45 <elliott> atehwa: I think he means Finns.
08:58:48 <Vorpal> yeah
08:58:54 <atehwa> there might be more on the channel, too, as I recommended the channel to the participants
08:59:04 <atehwa> Vorpal: but now, about 5 from .fi
08:59:07 <atehwa> on the channel
08:59:09 <elliott> Oh, I wonder if we scared any of those guys off. Actually none of them came, I think.
08:59:24 <atehwa> I just sent them the recommendation
08:59:28 <Vorpal> I know fizzie, Deewiant, oklopol and now atehwa are from Finland.
08:59:40 <fizzie> Vorpal: ineiros too.
08:59:43 <Vorpal> oh yeah
08:59:44 <Vorpal> forgot him
08:59:53 <elliott> Zwaarddijk too.
08:59:56 <elliott> And mtve.
08:59:58 <elliott> (I think?)
09:00:09 <atehwa> I don't think mtve is Finnish, but I'm not sure
09:00:19 <elliott> I just assumed, what with fizzie. :p
09:00:36 <elliott> * [aloril] (~aloril@dsl-tkubrasgw3-fe7ef900-153.dhcp.inet.fi): Aloril
09:00:38 <elliott> There's another one.
09:00:40 <Vorpal> elliott: mtve is from US or is using a bouncer or such in US
09:00:42 <elliott> Oh, and fungot counts too.
09:00:43 <fungot> elliott: or is it just me, or i: yet, you rogue! vernon. hark ye: not so much. sorry, this is it! all about macros, a wonderful!' i am sorry, in particular candidate countries. if the transatlantic relationship, but the parliament has possessed him, yet he talkes well, it's open source
09:00:45 <elliott> So there's like eight of 'em.
09:01:30 <Vorpal> and a few Swedes too. Maybe we Scandinavians are driven insane by the dark winters? Thus resulting in a lot of us turning to esolangs?
09:01:30 <fizzie> And where was FireFly from? Somewhere in Scandinavia at least, I think.
09:01:32 <Vorpal> Just a theory
09:01:36 <Vorpal> fizzie: he is from Sweden
09:01:41 <Vorpal> so am I, and olsner
09:01:45 <Vorpal> and BeholdMyGlory iirc
09:01:59 <fizzie> Vorpal: Hokay. The realname did sound Swedish, but there's quite a lot of those in .fi too.
09:02:04 <atehwa> there's really lots of geeks in Finland, compared to the number of people
09:02:13 <Vorpal> + [BeholdMyGlory] (~behold@unaffiliated/beholdmyglory): Arvid <-- hm. Really?
09:02:24 <elliott> I'm not convinced Finland is actually a country, as opposed to, like... I don't know.
09:02:26 <elliott> Maybe the demoscene made it up?
09:02:38 <elliott> fizzie: Confirm/deny?
09:02:42 <Vorpal> you know. I never actually met someone with the same first name as me. It isn't /that/ uncommon.
09:02:48 <atehwa> elliott: no, it had been so already before the schene.
09:02:53 <atehwa> *scene
09:02:55 <Vorpal> but I never run into someone else with my name.
09:03:00 <elliott> atehwa: Long-running myth.
09:03:25 <atehwa> lots of sci-fi, fantasy, math, electronics geeks
09:03:26 <fizzie> Speaking of which, ALTparty 2011 next weekend, best get moving if you need to swim across any oceans or so on.
09:03:32 <atehwa> and language geeks, too.
09:03:33 <Vorpal> elliott: well, they fooled ICANN pretty well then.
09:03:44 <elliott> Does anyone know how to convince ls it's talking to a tty, so it'll columnate etc.?
09:04:11 <Vorpal> elliott: you could create a tty? Like for example xterm does?
09:04:16 <elliott> fizzie: In "Helsingrad", apparently.
09:04:32 <Vorpal> sounds russian ?
09:05:10 <fizzie> Vorpal: It's Helsinki; it's just that this year's theme is "RED MACHINE".
09:05:20 <Vorpal> ah
09:05:53 <fizzie> Also it's reasonably likely that this year is the last year, so try not to miss it.
09:05:59 <atehwa> I wonder if my company will be present @AltParty this year...
09:06:07 <Vorpal> fizzie: oh?
09:06:28 <Vorpal> fizzie: what is ALTparty about btw?
09:06:40 <atehwa> two years ago, we had some kind of supercomputer there that somebody used to calculate frames for their raytraced animation :)
09:06:51 <fizzie> Vorpal: "Alternative Party is a festival of digital culture attended by coders, musicians, designers, hackers, and other digital enthusiasts. In Alternative Party, you can enjoy digital culture in various forms, catch a glimpse of the technology of the future, and experience nostalgic trips with vintage hardware."
09:06:56 <atehwa> Vorpal: demo scene, and general geekiness
09:07:08 * Phantom__Hoover → Ireland
09:07:12 -!- Phantom__Hoover has quit (Quit: Leaving).
09:07:19 <Vorpal> ah
09:07:23 <fizzie> atehwa: Was this the "desktop" Cray CX1 thing?
09:07:48 <atehwa> I don't know the details, I just heard about it after the fact
09:08:19 <fizzie> Someone had one there, though presumably Cray themselves were involved; there was a competition to do stuff with it, with not very many entries.
09:08:41 <elliott> I don't like modern Crays at all.
09:08:43 <elliott> They're so normal.
09:09:09 <Vorpal> elliott: probably because it is cheaper to do it that way
09:09:20 <elliott> No it is because they are bad people.
09:09:20 <atehwa> I doesn't really make sense to build a supercomputer which has so different architecture that you can't test your programs anywhere else
09:09:34 <Vorpal> yeah
09:09:39 <fizzie> Vorpal: Anyway, they're having some financial difficulties this year already, and in the agenda for the organization's yearly meeting that I got for some reason (I don't think I'm a member or anything...) they're suggesting that they won't organize the party any more "in the current form".
09:09:49 <elliott> atehwa: Nooo, it's about the _spirit_.
09:09:53 <elliott> char should be some stupidly large number of bits.
09:09:58 <atehwa> elliott: I understood as much :)
09:10:03 <Vorpal> elliott: that is called a DSP
09:10:04 <elliott> And preferably PDP-endian just for laughs.
09:10:11 <atehwa> 36, preferably.
09:10:18 <Vorpal> I don't think cray ever used PDP-endian?
09:10:19 <elliott> And... say... how about floats are IEEE format, but with the components reversed?
09:10:35 <elliott> Ooh, and maybe we could have a segmentation model where memory addresses are divided into /three/ components.
09:10:43 <elliott> But one of the components is two bits less than the rest, and is multiplied by ten.
09:10:53 <elliott> Also it uses balanced decimal and is a sheep.
09:11:04 <Vorpal> elliott: go make this into an esolang
09:11:07 <atehwa> supercomputing sheep.
09:11:13 <fizzie> There's a (well, two) 40-bit accumulator in the TI TMS320C54x, but "otherwise" it's a boring 16-bit-words machine.
09:11:16 <Vorpal> then implement it with VHDL or Verilog
09:11:47 <fizzie> I think the TI C compiler even implements CHAR_BIT==8 on it.
09:11:48 <elliott> Vorpal: VHDL can do sheep nowadays?
09:11:49 <elliott> Fancy.
09:12:35 <Vorpal> elliott: yeah, use IEEE.std_sheep.all;
09:13:14 <fizzie> Assume a spherical sheep.
09:13:17 <elliott> Vorpal: AKA "use wales;".
09:13:17 <Vorpal> elliott: you could even make it distributed. (the technical term for this is "sheep farm")
09:13:48 <elliott> (Do Welsh jokes even work on a Scandinavian audience.)
09:13:55 <elliott> (Are you even aware of the existence of Wales? We barely are ourselves.)
09:14:06 <Vorpal> elliott: I'm aware of what a Welsh joke is if that is what you mean
09:14:36 <Vorpal> but they don't exist here if that is what you mean
09:15:19 <Vorpal> elliott: anyway "use wales;" looks wrong in VHDL. Pretty sure you want use "Wales.all;" then
09:15:44 <elliott> use whales
09:16:12 <Vorpal> elliott: all is a keyword in that context I /think/. It is usually highlighted as one anyway.
09:20:46 <Sgeo|web> insert sheep
09:21:30 <Sgeo|web> Ok, I should be sleeping as of 5 hours ago
09:25:28 <elliott> Vorpal: You Arch users are lucky: GNU inetutils is now your default source of telnet, ftp, ping, hostname, etc.; maintained by the _wonderful_ ams.
09:25:35 <elliott> PROGRESS
09:25:53 <Vorpal> elliott: oh? I have no idea who that is
09:26:06 <elliott> He's come up a few times in here.
09:26:11 <elliott> He's... "pleasant".
09:26:23 <Vorpal> elliott: so not at all then
09:27:19 <elliott> Vorpal: My first interaction with him, he /ignore'd me because he asked a question about free()'s semantics; I first looked it up in POSIX for him; he said that wasn't C; then politely in the post-C99 draft; he said that wasn't C99; I said they wouldn't change the semantics of something as fundamental as free(NULL) in minor corrective drafts; he called me a troll and /ignored me.
09:27:40 <Vorpal> ouch
09:27:57 <elliott> Then an hour or so later he started bugging people trying to talk about the distro it was a channel for (NixOS) for having non-free software in the repositories (as build scripts).
09:28:05 <elliott> His claimed benefit for removing this would be that it could be hosted on gnu.org FTP.
09:28:28 <Vorpal> eh
09:28:42 <elliott> He's basically rms but less rational and more abrasive.
09:29:17 <Vorpal> hah
09:29:34 * elliott wonders if he should switch to NILFS.
09:29:53 <Vorpal> why?
09:29:56 <fizzie> The filesystem that can only store empty lists. (Okay, not really.)
09:30:15 <elliott> Vorpal: It has all that nice snapshotting and versioning stuff.
09:30:20 <elliott> Plus online resizing??
09:30:27 <elliott> Does anyone know how stable it is. :p
09:30:30 <Vorpal> elliott: well ext4 has online resizing
09:30:42 <elliott> Vorpal: And instantaneous snapshotting?
09:30:43 <Vorpal> so does jfs and xfs iirc
09:30:49 <Vorpal> no
09:30:51 <fizzie> I considered it too, for the snapshots. Never got around doing it.
09:31:01 <elliott> JFS is my go-to file system.
09:31:10 <elliott> It doesn't really support online resizing though; it can't shrink.
09:31:15 <Vorpal> well yeah
09:31:23 <Vorpal> I don't think ext4 can shrink either
09:31:42 <Vorpal> I tend to default to ext4 when I have no specific reason for another file system
09:31:59 <elliott> ext4 is obsolete by design, XFS is unreliable, JFS is pretty good but I don't know how well-maintained it is and the lack of shrinking is kinda suboptimal.
09:32:14 <elliott> btrfs is Oracle.
09:32:19 <Vorpal> elliott: ext4 is stable and reliable though
09:32:33 <Vorpal> obsolete by design yes, but stable and reliable
09:32:35 <elliott> Vorpal: Yes, and it features long fsck times as its primary user-visible feature.
09:32:43 <Vorpal> hah
09:32:52 <elliott> Vorpal: But really, I'm not going to commit to something that is meant to be replaced by an unacceptable system (btrfs) within a few years.
09:32:58 -!- sadhu has joined.
09:33:00 <elliott> That's just setting yourself up for trouble.
09:33:04 <Vorpal> hm
09:33:31 <sadhu> is there any tool out there whic convers strings to bf code which prints the string?
09:33:38 <elliott> NILFS does look neat, and I guess they're storing lots of data on it from the source of it and the design features?
09:33:41 <elliott> But I dunno how stable it is.
09:33:44 <elliott> sadhu: Yes. Tons.
09:33:51 <elliott> !bf_txtgen sup
09:33:52 <Vorpal> sadhu: no. !bf_txtgen doesn't do that at all
09:34:03 <Vorpal> well it is slow
09:34:05 <Vorpal> !help
09:34:08 <EgoBot> ​help: General commands: !help, !info, !bf_txtgen. See also !help languages, !help userinterps. You can get help on some commands by typing !help <command>.
09:34:12 <Vorpal> egobot in general is
09:34:18 <Vorpal> !bf_txtgen test
09:34:19 <elliott> Vorpal: bf_txtgen is a very slow algorithm.
09:34:23 <EgoBot> ​61 +++++++++++++[>+++++++++>++++++++>+><<<<-]>-.>---.<-.+.>>---. [35]
09:34:25 <Vorpal> elliott: not this slow usually
09:34:55 <elliott> Vorpal: Usually we run it on known strings :-)
09:35:01 <elliott> sadhu: How's asm->bf going?
09:35:08 <Vorpal> elliott: it doesn't cache afaik?
09:35:12 <Vorpal> !bf_txtgen test
09:35:14 <EgoBot> ​61 +++++++++++++[>++++++++>+++++++++>+><<<<-]>>-.<---.>-.+.>---. [117]
09:35:15 <fizzie> "Helsinki Hacklab presents the Hacklab Reactor Simulator, an interactive Soviet nuclear plant experience. Feel the power of an explosing nuclear powerplant! We are also happy to tell you more about Helsinki Hacklab, the local hackerspace in Helsinki." The best thing or the best thing?
09:35:17 <Vorpal> !bf_txtgen sup
09:35:20 <EgoBot> ​50 +++++++++[>+++++++++++++>+>><<<<-]>--.++.-----.>+. [511]
09:35:23 <elliott> Vorpal: It does; and improves on previous results.
09:35:27 <Vorpal> elliott: hm
09:35:30 <Vorpal> !bf_txtgen asbdjashd
09:35:31 <elliott> !bf_txtgen Hello, world!
09:35:32 <EgoBot> ​92 ++++++++++++[>++++++++>++++++++++>++++++++>+<<<<-]>+.>-----.>++.++.++++++.<<.>.>--.----.>--. [234]
09:35:33 <EgoBot> ​139 +++++++++[>++++++++>+++++>+++>+<<<<-]>.+++++++++++++++++++++++++++++.+++++++..+++.>-.>+++++.<<++++++++.--------.+++.------.--------.>>+.>+. [309]
09:35:38 <Vorpal> !bf_txtgen asbdjashd
09:35:40 <EgoBot> ​93 ++++++++++++[>++++++++>++++++++++>+++++++++>+<<<<-]>+.>-----.<+.++.>>--.<<---.>.>--.----.>--. [328]
09:35:42 <sadhu> !bf_txtgen hakuna matata
09:35:44 <EgoBot> ​126 +++++++++++++[>+++++++++>+++++++>++++++++>++<<<<-]>>>.<++++++.>+++.<<.>>+++.<.>>++++++.<-.<.<-.>.<.>.>>----------------------. [141]
09:35:45 <elliott> !bf_txtgen Hello, world!
09:35:45 <elliott> !bf_txtgen Hello, world!
09:35:45 <elliott> !bf_txtgen Hello, world!
09:35:48 <elliott> !bf_txtgen Hello, world!
09:35:48 <elliott> !bf_txtgen Hello, world!
09:35:49 <EgoBot> ​139 +++++++++[>++++++++>++++>+++++>+<<<<-]>.+++++++++++++++++++++++++++++.+++++++..+++.>>-.<----.<++++++++.--------.+++.------.--------.>+.>>+. [236]
09:35:49 <EgoBot> ​125 +++++++++[>++++++++>+++++++++++>+++++>+<<<<-]>.>++.+++++++..+++.>-.------------.<++++++++.--------.+++.------.--------.>+.>+. [316]
09:35:49 <EgoBot> ​126 ++++++++++[>+++++++>++++++++++>++++>+<<<<-]>++.>+.+++++++..+++.>++++.------------.<++++++++.--------.+++.------.--------.>+.>. [984]
09:35:51 <EgoBot> ​131 +++++++++++++++[>+++++>+++++++>+++>+<<<<-]>---.>----.+++++++..+++.>-.------------.<++++++++.--------.+++.------.--------.>+.>-----. [753]
09:35:51 <EgoBot> ​127 +++++++++++[>++++++>+++++++++>++++>+<<<<-]>++++++.>++.+++++++..+++.>.------------.<++++++++.--------.+++.------.--------.>+.>-. [545]
09:35:53 <Vorpal> elliott: it is a genetic algorithm
09:35:55 <Vorpal> yes
09:35:57 <elliott> Great, now they're all going to intermingle. :p
09:37:05 <elliott> Gah, why doesn't this GHC binary work on pyralspite.
09:37:50 <Vorpal> elliott: in what way does it fail?
09:38:33 <elliott> Vorpal: It literally hangs on startup.
09:38:34 <elliott> Like, before option parsing.
09:39:21 <Vorpal> elliott: try strace?
09:39:36 <elliott> Fine, more programs on the lean mean server. :p
09:39:48 <Vorpal> elliott: strace is like a few kb large
09:40:10 <Vorpal> 228K says du -h
09:40:50 <elliott> Realtime/signal bullshit.
09:40:53 <elliott> VTALARMs all over the place.
09:40:58 <elliott> It'll be GHC's event manager.
09:41:03 <elliott> God knows.
09:41:30 <Vorpal> elliott: it doesn't hang wrt syscalls anywhere?
09:41:40 <elliott> No, it just does much the same stuff forever.
09:41:44 <Vorpal> hm
09:41:48 <Vorpal> could hang in a loop then
09:42:07 <elliott> Vorpal: No, it's GHC's event manager.
09:42:09 <elliott> rt_sigprocmask(SIG_BLOCK, [INT], [], 8) = 0
09:42:10 <elliott> getrusage(RUSAGE_SELF, {ru_utime={23, 309456}, ru_stime={0, 836052}, ...}) = 0
09:42:10 <elliott> gettimeofday({1318930854, 544963}, NULL) = 0
09:42:10 <elliott> getrusage(RUSAGE_SELF, {ru_utime={23, 309456}, ru_stime={0, 836052}, ...}) = 0
09:42:10 <elliott> rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
09:42:10 <elliott> --- SIGVTALRM (Virtual timer expired) @ 0 (0) ---
09:42:12 <elliott> rt_sigreturn(0x1a) = 48
09:42:14 <elliott> rt_sigprocmask(SIG_BLOCK, [INT], [], 8) = 0
09:42:16 <elliott> getrusage(RUSAGE_SELF, {ru_utime={23, 321457}, ru_stime={0, 836052}, ...}) = 0
09:42:18 <elliott> gettimeofday({1318930854, 559230}, NULL) = 0
09:42:20 <elliott> getrusage(RUSAGE_SELF, {ru_utime={23, 321457}, ru_stime={0, 836052}, ...}) = 0
09:42:22 <elliott> rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
09:42:23 <elliott> rt_sigprocmask(SIG_BLOCK, [INT], [], 8) = 0
09:42:26 <elliott> getrusage(RUSAGE_SELF, {ru_utime={23, 333458}, ru_stime={0, 836052}, ...}) = 0
09:42:28 <elliott> gettimeofday({1318930854, 572662}, NULL) = 0
09:42:29 <elliott> getrusage(RUSAGE_SELF, {ru_utime={23, 333458}, ru_stime={0, 836052}, ...}) = 0
09:42:31 <elliott> etc.
09:42:33 <elliott> Plus a lot of mmapping.
09:42:35 <Vorpal> hm
09:42:43 <Vorpal> elliott: maybe another thread hung?
09:43:05 <elliott> Vorpal: It /doesn't/ /even/ /get/ /to/ /the/ /first/ /statement/. It's hanging in startup.
09:43:10 <elliott> Probably syscall bullshit since this is oldstable.
09:43:16 <Vorpal> ah could be
09:44:14 <sadhu> i have an idea to do it without using GP..with some optimizations
09:44:42 <elliott> There are lots that don't do GP.
09:44:46 <elliott> Most of them beat bf_txtgen.
09:45:24 <sadhu> hmm...
09:50:49 <Vorpal> elliott: try compiling it with an older ghc?
09:51:00 <Vorpal> elliott: btw what is the haskell program you are trying to execute?
09:51:50 <elliott> Vorpal: (a) The one in oldstable doesn't even have a simple combinator I used, and it won't even have the event manager that will make this an efficient program anyway, so I'm disinclined to. (b) One I tailor-wrote for the job.
09:52:11 <Vorpal> elliott: the job of mc console handling?
09:52:17 <elliott> Yes.
09:52:21 <elliott> It's only twenty-five lines.
09:52:27 <Vorpal> elliott: pastebin it
09:52:32 <Vorpal> I would like to see it
09:52:40 -!- sadhu has quit (Ping timeout: 245 seconds).
09:52:46 -!- kaus has joined.
09:53:05 <elliott> Vorpal: http://sprunge.us/aEOV
09:53:30 <Vorpal> hm
09:53:46 <Vorpal> elliott: why does it use network?
09:54:00 <elliott> The part where it's a network server?
09:54:09 <elliott> It listens on a port and merges all lines received into stdout (the console FIFO).
09:54:15 <Vorpal> ah
09:54:32 <Vorpal> elliott: I was wondering why it would use network for it, as opposed to some in-fifos or whatever
09:54:56 <elliott> Vorpal: That's just as long a program, and what's the point? FIFOs are strictly more limited: There's a fixed number of them defined at runtime.
09:55:09 <Vorpal> hm true
09:55:22 <elliott> A server is more flexible and >~blah/foo vs. | nc localhost 9999 is not much difference.
09:55:41 <elliott> Plus someone else can't just write data to a pipe, vs. a FIFO which they could. Not that that would happen, but still.
09:55:47 <elliott> (i.e., while another program is doing so)
09:55:58 <Vorpal> elliott: I don't see it listening only on localhost anywhere
09:56:01 <Vorpal> maybe I missed something
09:56:07 <elliott> Hmm, it doesn't. Maybe I should fix that. :p
09:56:13 <Vorpal> elliott: Does it handle multiple concurrent connections?
09:56:15 <elliott> But... maybe it could be a SPECIAL SURPRISE???
09:56:20 <elliott> Vorpal: Yes, of course, that's the whole point.
09:56:48 <Vorpal> elliott: and it orders them? And what about server output? You need to parse that anyway to know when save-all finished
09:57:08 <elliott> (a) Yes. (b) The server outputs to server.log anyway; and no you don't, you just sleep for a decent amount of time.
09:57:26 <elliott> Even if you did want to read it, it wouldn't be the proper job of this program.
09:57:34 <Vorpal> right
09:59:35 -!- kaus has quit (Read error: Connection reset by peer).
09:59:59 -!- kaus has joined.
10:01:34 -!- kaus_ has joined.
10:04:43 -!- kaus has quit (Ping timeout: 260 seconds).
10:06:09 <elliott> Vorpal: "save-off" -> "save-all" DoesWIM, right?
10:06:13 <elliott> (It does.)
10:11:21 <Vorpal> elliott: WIM?
10:11:27 <elliott> WIM.
10:11:32 <Vorpal> meaning?
10:11:47 <elliott> what I
10:11:50 <Vorpal> ah
10:12:10 <Vorpal> elliott: I forgot if save-all should come before or after save-off
10:12:18 <elliott> Well, save-off just disables automatic saving.
10:12:26 <elliott> So it seems like it should be fine to me.
10:12:40 <Vorpal> elliott: remember save-on when you are done
10:12:43 <elliott> Yes.
10:13:33 <elliott> I really wish this program just worked.
10:14:19 <Vorpal> elliott: upgrade from old-stable?
10:14:31 <elliott> I doubt stable will be much better.
10:14:33 <Vorpal> elliott: anyway wouldn't ghc just use the libc?
10:14:38 <elliott> But it might get me a newer kernel, I suppose.
10:14:46 <Vorpal> which does the actual system calls
10:14:57 <elliott> Vorpal: No shit?
10:14:57 <Vorpal> I assume you didn't link it statically?
10:15:16 <elliott> Tried both.
10:15:18 <elliott> Doesn't work either way.
10:15:18 <Vorpal> hm
10:18:52 <Vorpal> elliott: do something like a simple hello world haskell program compiled on your system and uploaded to the server work?
10:18:55 <Vorpal> does*
10:20:04 <elliott> It won't, since it, as I have said about ten times now, is not even getting to the first statement, which is a trivial pattern match on an IO action that basically just dereferences a pointer.
10:20:33 <Vorpal> elliott: indeed, but depending on what modules you use, different init code could be generated as far as I know
10:40:47 -!- GreaseMonkey has quit (Quit: The Other Game).
10:41:28 -!- kaus_ has quit (Read error: Connection reset by peer).
11:06:36 <elliott> Vorpal: Sigh, this upgrade is making breaky-sounding noises
11:06:45 <Vorpal> elliott: oh?
11:06:53 <elliott> GRUB doesn't seem to have any idea what to do
11:06:55 <Vorpal> elliott: I thought it was a VPS? How could it make noises?
11:06:58 <Vorpal> elliott: ouch
11:07:07 <elliott> /usr/sbin/grub-setup: warn: Attempting to install GRUB to a partition instead of the MBR. This is a BAD idea..
11:07:07 <elliott> /usr/sbin/grub-setup: warn: Embedding is not possible. GRUB can only be installed in this setup by using blocklists. However, blocklists are UNRELIABLE and their use is discouraged..
11:07:08 <elliott> Installation finished. No error reported.
11:07:08 <elliott> Generating grub.cfg ...
11:07:10 <Vorpal> elliott: wait, is grub even used with xen?
11:07:14 <elliott> A New Kind of Definition of Error
11:07:20 <elliott> Vorpal: yes some pvgrub shit i don't even know maybe it doesn't even matter
11:07:25 <elliott> let's plow on ahead and hope nothing goes wrong
11:07:37 <Vorpal> elliott: you could always call support if it fucks up badly
11:07:50 <elliott> Vorpal: for values of call equal to email
11:07:56 <Vorpal> elliott: well yeah
11:08:15 <elliott> okay let's
11:08:15 <Vorpal> elliott: anyway why are you trying to install it to a partition?
11:08:16 <elliott> try rebooting
11:08:27 <elliott> Vorpal: it demanded I told it which partitions to auto install grub to
11:08:31 <elliott> i picked the most likely-looking one
11:08:39 <elliott> guess i picked wrong!!!
11:08:51 <Vorpal> elliott: you should have picked like /dev/sda or whatever it is called I guess?
11:08:53 <elliott> ok reboot time. rip vps
11:09:01 <elliott> Vorpal: yeah no there was like five and they all start with xvd
11:09:09 <Vorpal> elliott: the one with least numbers?
11:09:19 <elliott> all but one had numbers
11:09:21 <elliott> erm
11:09:23 <elliott> opposite of that
11:09:24 <elliott> in retrospect
11:09:27 <elliott> not sure why i picked the one with the number
11:09:30 <elliott> oh well
11:09:39 <Vorpal> elliott: well it might still boot with the old copy of grub. Perhaps
11:09:41 <elliott> if this ssh connection works i will be-
11:09:43 <elliott> holy shit it connected
11:09:47 <elliott> i guess it really doesn't use grub
11:10:03 <Vorpal> elliott: either that or it works with the old copy of grub
11:10:14 <elliott> sure, oh well
11:10:17 <elliott> WFM
11:10:25 <Vorpal> for now at least
11:10:33 <Vorpal> elliott: don't even think about switching to grub2 though
11:10:42 <elliott> Vorpal: that's what the upgrade tried to do
11:10:46 <Vorpal> oh
11:10:53 <Vorpal> elliott: then I bet it doesn't use grub
11:11:00 <elliott> like i said
11:11:01 <elliott> it's pvgrub
11:11:03 <elliott> whatveer that is
11:11:06 <Vorpal> right
11:11:10 <elliott> http://wiki.xen.org/xenwiki/PvGrub
11:11:17 <elliott> "it runs the regular grub inside the created domain itself"
11:11:28 <elliott> neat, haskell program still doesn't work
11:11:34 <Vorpal> ouch
11:11:50 <elliott> Version: 6.12.1-13
11:11:55 <Vorpal> heh
11:12:00 <elliott> nice, it's only over a year old
11:12:02 <elliott> no wait
11:12:04 <elliott> almost two years
11:12:06 <Vorpal> right
11:12:14 <elliott> maybe i should run experimental on this
11:12:19 <Vorpal> elliott: what about using backport of a newer ghc?
11:12:27 <Vorpal> aren't there a backports repo for debian
11:12:27 <elliott> Vorpal: ugghhh
11:12:35 <elliott> i doubt ghc will be backported :P
11:12:38 <Vorpal> well okay
11:13:01 <elliott> i should just put openbsd on this or something, at least i'd be able to trace all the suckiness down to stupid root principles
11:13:09 <Vorpal> XD
11:13:32 <Vorpal> elliott: or rewrite that program to work on older ghc
11:13:38 <Vorpal> or write the program in another language
11:13:46 <elliott> and miss the benefits of an event manager; and want to kill myself
11:13:47 <Vorpal> I'm not suggesting C here
11:13:48 <elliott> respectively
11:13:52 <elliott> i actually really like openbsd's distro/install mechanism
11:13:53 <elliott> like
11:13:55 <elliott> it's so retro
11:14:00 <Vorpal> well yeah
11:14:01 <elliott> all the filenames are the exact same length
11:14:03 <elliott> and there's like
11:14:06 <elliott> xcore.tgz
11:14:10 <elliott> it's just
11:14:12 <elliott> i don't know
11:14:14 <elliott> it just makes me happy
11:14:51 <Vorpal> elliott: what I dislike with freebsd and openbsd is that ports doesn't cover the entire system. Just /usr/local. So nothing outside that is tracked in a package manager
11:15:06 <Vorpal> I have no idea if NetBSD and other *BSD do it that way as well
11:15:08 <elliott> instead of ports, you should just download bsd.tgz
11:15:14 <elliott> which is every single piece of software in binary form.
11:15:20 <elliott> it's like, the size of Debian.
11:15:24 <elliott> and it's all installed simultaneously.
11:15:32 <Vorpal> whatever
11:15:39 <elliott> no that would be so convenient
11:15:40 <elliott> to upgrade
11:15:43 <elliott> you just download a new bsd.tgz
11:15:44 <elliott> and unpack it into /
11:15:52 <Vorpal> elliott: and removed files? What removes them
11:16:08 <elliott> Vorpal: why would you remove files
11:16:10 -!- copumpkin has quit (Ping timeout: 252 seconds).
11:16:35 -!- copumpkin has joined.
11:16:40 <Vorpal> elliott: well, lets say the new version no longer uses /sbin/foobaz but instead does it a different way?
11:16:54 <elliott> Vorpal: symlink
11:17:13 <Vorpal> elliott: it is something executed from startup scripts, nothing the user would run manually
11:17:21 -!- nooga has joined.
11:17:23 <elliott> symlink to maintain old startup scripts, duh
11:17:28 <elliott> you have to write those yourself.
11:17:30 <Vorpal> elliott: besides there might not be single tool that replaces it :P
11:17:41 <elliott> never remove software.
11:17:43 <elliott> that removes choice
11:17:45 <elliott> just add more of it
11:17:50 <Vorpal> elliott: come on, openbsd is not quite the same as LFS for BSD
11:18:03 <elliott> oh good idea you should just download kern.tgz
11:18:06 <elliott> then gcc.tgz
11:18:12 <elliott> and then you have to compile everything yourself
11:18:17 <elliott> actually openbsd should just be an abstract concept
11:18:25 <Vorpal> elliott: actually I think you need like binutils.tgz roo
11:18:26 <Vorpal> too*
11:18:26 <elliott> any bsd created sufficiently manually is openbsd
11:18:33 <elliott> above line should be entire contents of openbsd.org
11:18:41 <elliott> Vorpal: that's included in gcc.tgz
11:18:45 <elliott> to comply with the GFDL
11:18:55 <Vorpal> how...?
11:18:57 <elliott> `quote GFDL
11:19:05 <HackEgo> 146) * Phantom_Hoover wonders where the size of the compiled Linux kernel comes from. <cpressey> To comply with the GFDL, there's a copy of Wikipedia in there.
11:19:16 <Vorpal> heh
11:19:25 <Vorpal> yeah the GFDL is a strange beast
11:21:38 <elliott> honestly, if I had a "phat" enough "pipe", I would just run a server from home
11:21:47 <elliott> but i live in an "unphat" "england"
11:22:35 <Vorpal> I wish I had a better connection as well. Yogscast reported that they were at a lan party in US, and it took like 6 seconds to upload a 1 GB video.
11:22:48 <Vorpal> that is quite amazing
11:25:14 -!- oerjan has joined.
11:25:51 <elliott> haha, arch has finally moved into debian territory
11:26:41 <Vorpal> elliott: oh?
11:26:46 <elliott> they have a testing repo now
11:26:51 <Vorpal> elliott: that is old
11:26:57 <elliott> not that old
11:27:06 <Vorpal> elliott: they had it when I started using arch
11:27:17 <elliott> huh, guess they just started exposing it recently
11:27:36 <Vorpal> elliott: well it is just that the time in testing is really fast. Normally like a few weeks at most.
11:31:52 <elliott> Vorpal: What, Arch doesn't have lilo support any more.
11:32:01 <Vorpal> okay?
11:32:04 <elliott> I think I'm going to ragequit reality.
11:32:21 <Vorpal> elliott: I don't remember when it last had lilo
11:32:27 <elliott> Last time I used it.
11:33:22 <elliott> nilfs + syslinux; gotta be non-traditional.
11:33:52 <Vorpal> XD
11:34:45 <elliott> The entire point of running Linux is so that someone can mention some part of their setup and you can respond "oh, I just [thing]", which then, through repeated confusion as to how you make that work, unravels into an explanation of your entire batshit insane idiosyncratic setup.
11:35:03 <Vorpal> elliott: XD
11:35:18 <elliott> Like, "oh, I literally keep my entire filesystem in CVS."
11:35:22 <Vorpal> heh
11:35:30 <Vorpal> elliott: yeah, my setup doesn't boot on a non-custom kernel
11:35:38 <elliott> Or, "oh, I actually have /usr/local/share and /usr/local/lib on different partitions; the latter is ten gigabytes."
11:35:42 <Vorpal> at least with the stock kernel in arch
11:35:44 <Vorpal> it won't book
11:35:46 <Vorpal> boot*
11:35:58 <elliott> Vorpal: s/on a non-/without a /
11:36:07 <Vorpal> elliott: yeah
11:36:50 <elliott> "Oh, I actually telnet in to a Lisp Machine for IRC."
11:36:51 <Vorpal> elliott: it is down to getting away with a custom kernel without initramfs mess by using md raid autodetect partitions plus an option in the kernel.
11:36:55 <elliott> "Nothing beats real Emacs editing."
11:37:06 <elliott> "Don't talk to me about that GNU imitation."
11:37:09 <elliott> "``''"
11:37:13 <Vorpal> someone need to make a telnet server in elisp
11:37:34 <elliott> Vorpal: So that dry ice cream, what was the texture like.
11:37:57 <Vorpal> elliott: err, trying to remember the word for what I'm thinking about...
11:38:10 <elliott> Pizza?
11:38:18 <elliott> Maybe it was actually pizza, if so.
11:38:32 <Vorpal> elliott: google translate gets it as meringue. Really dry such
11:38:42 <Vorpal> the taste however, nothing I ever tasted before
11:38:45 <elliott> Aww, so it wasn't chewy or anything?
11:39:02 <Vorpal> elliott: it was kind of sticky when it got into your mouth
11:39:05 <Vorpal> very sticky
11:39:07 <elliott> I was imagining, like, fudge, except ice cream flavoured.
11:40:11 <elliott> Vorpal: I like how Arch is zero point zero point two kernel releases ahead of the actual kernel.
11:40:17 <Vorpal> elliott: very hard and dry meringue, that got sticky when in my mouth. Took quite a bit of work to get it away from my teeth using a toothbrush.
11:40:38 <elliott> Clearly you just need to soak it.
11:40:38 <Vorpal> elliott: everything kind of is. 3.0.4 is still listed on kernel.org
11:40:56 <elliott> Vorpal: Oh, is three point zero point six out, just not on kernel.org?
11:41:03 <Vorpal> elliott: I don't know
11:41:15 <elliott> I thought that's what you were saying.
11:41:37 <Vorpal> elliott: I don't know what the official kernel is on. I'm on 3.0.4 with my custom vanilla kernel
11:41:58 <elliott> Custom vanilla.
11:42:03 <Vorpal> oh you said ahead. Thought you said behind
11:42:11 <Vorpal> elliott: well custom as in not stock distro
11:42:20 <Vorpal> and vanilla as in downloaded from kernel.org with no patches
11:42:25 <Vorpal> so yes custom vanilla
11:42:25 <elliott> Maybe I should just use Nix.
11:42:31 <elliott> Vorpal: What, not even BFS?
11:42:35 <Vorpal> elliott: BFS?
11:42:40 <Vorpal> Big Fucking Sword?
11:42:49 <elliott> Boulder Frandomising Sasquatch.
11:42:57 <Vorpal> elliott: so what is BFS?
11:42:59 <elliott> It's a patch that frandomises process boulders with a sasquash.
11:43:05 <elliott> Vorpal: Con Kolivas' scheduler.
11:43:23 <Vorpal> elliott: IO scheduler or CPU scheduler?
11:43:29 <elliott> CPU.
11:43:36 <elliott> It's the Brain Fuck Scheduler that made the rounds a year or so ago.
11:43:41 <elliott> For desktop use.
11:43:53 <Vorpal> yeah I never had any issues with the default scheduler on my desktop. Never noticed any issues
11:44:00 <elliott> http://ck.kolivas.org/patches/bfs/reverse-scalability.png etc.
11:44:00 <Vorpal> and don't fix what isn't broken
11:44:31 <Vorpal> elliott: what is cfs?
11:44:45 <elliott> Completely Fair Scheduler, the sole scheduler the kernel lets you use.
11:44:50 <Vorpal> ah
11:44:59 <elliott> (Completely Fair in that if you have a billion CPUs it's technically "the best".)
11:45:09 <Vorpal> elliott: looks like CFS is slightly better at very large -j
11:45:25 <elliott> Vorpal: No, the four point in green is lower than any red...
11:45:51 <Vorpal> elliott: I mean at make -j12 on both for example
11:45:53 <elliott> Vorpal: In bfs, -j<cores> is basically always optimal.
11:46:01 <elliott> And yes, but why would you run a non-optimal -j?
11:46:02 <Vorpal> elliott: oh I thought it was with 12 cores
11:46:06 <elliott> No, four.
11:46:32 <Vorpal> elliott: anyway what about HT?
11:46:42 <Vorpal> would -j8 be best for me then? with 4 cores + HT
11:46:43 <elliott> HT = cores for scheduling.
11:46:52 <elliott> Just pretend you have twice the cores.
11:47:05 <oerjan> <Vorpal> [...] Took quite a bit of work to get it away from my teeth using a toothbrush. <-- So you accidentally ate glue?
11:47:26 <Vorpal> oerjan: no. Freeze dried ice cream
11:48:15 <elliott> (It's Vorpal's code for glue.)
11:48:23 <Vorpal> XD
11:49:07 * elliott wonders why literally nobody runs X/WM at high priority.
11:49:17 <elliott> I guess bfs' isochronous priority is good there.
11:49:50 <Vorpal> elliott: X/WM?
11:50:01 <elliott> X and WM.
11:50:04 <Vorpal> ah right
11:50:25 <elliott> Yay, resulting system does not boot.
11:50:50 <Vorpal> elliott: what? your vm?
11:50:54 <Vorpal> err
11:50:55 <Vorpal> vps
11:50:56 <elliott> Yes.
11:50:57 <elliott> VM.
11:51:24 <elliott> I wonder why; the flags and partitioning all looks right.
11:51:31 <Vorpal> so not the vps then
11:51:44 <Vorpal> elliott: which distro are you using in the vm?
11:52:07 <elliott> I'm giving one last try of Arch in a VM before I declare it completely useless.
11:52:44 <Vorpal> elliott: well, did you do some sort of strange setup?
11:52:52 <Vorpal> elliott: also what error does it give
11:52:53 <elliott> syslinux probably counts as strange.
11:52:58 <Vorpal> ah yes
11:53:00 <elliott> Vorpal: no bootable medium
11:53:15 <Vorpal> elliott: then don't declare arch linux useless. Declare syslinux useless
11:53:34 <elliott> Arch Linux is useless if it'll install an unworking configuration.
11:53:57 <Vorpal> elliott: it let you select syslinux in the installer?
11:54:09 <elliott> Yse.
11:54:10 <elliott> Yes.
11:54:13 <Vorpal> elliott: that isn't the same as useless though. A bug yes.
11:54:25 <elliott> No, it's useless for that and everything else.
11:54:42 <Vorpal> It would be useless if there was no option that let you get a working configuration. Like it only allowed syslinux and syslinux was bugged
11:57:32 -!- MDude has joined.
11:58:26 <elliott> Maybe I should just take the plunge and become a Slackware addict.
11:58:36 <elliott> Oh, they're onto "13.37".
12:00:42 -!- MSleep has quit (Ping timeout: 244 seconds).
12:03:15 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
12:06:34 <elliott> Vorpal: Convince me not to just run Tiny Core.
12:06:36 <elliott> On everything.
12:06:56 <Vorpal> elliott: what is Tiny Core?
12:08:00 <elliott> You know, the ten meg thing.
12:08:06 <Vorpal> nope?
12:08:17 <elliott> Your brain is a sieve.
12:08:27 <Vorpal> possibly
12:26:43 -!- SimonRC has quit (Ping timeout: 260 seconds).
12:27:37 <fizzie> Don't you usually sniff glue rather than eating it?
12:29:19 -!- pikhq has joined.
12:29:41 <fizzie> My father once introduced me to some family friends of our relatives (who we were visiting) as "...and that glue-sniffer looking guy is my son". That was the fairest.
12:29:55 -!- pikhq_ has quit (Ping timeout: 260 seconds).
12:30:43 <elliott> :D
12:30:57 <oerjan> so by "you" you mean "i"? O KAY
12:32:47 <fizzie> oerjan: It was the indefinite you.
12:33:51 <oerjan> i wouldn't trust a glue-sniffer looking guy on that.
12:34:58 <fizzie> Like the old saying of the jungle goes: the You that can be spoken is not the eternal You.
12:37:05 <oerjan> Laozi the king of the jungle
12:37:35 <fizzie> Anyway, isn't a glue-sniffer exactly the one you'd trust when it comes to matters of whether to sniff or eat glue? He's got the experience, after all.
12:38:04 <oerjan> i am referring to the "you"/"i" switch, here.
12:40:52 <fizzie> There was no switch to refer to. You just haven't got a glue.
12:41:48 <oerjan> sure i do, and i'm sticking to it
12:42:56 -!- sllide has joined.
12:43:04 -!- nooga has quit (Ping timeout: 255 seconds).
12:45:03 <fizzie> Oh, Eri Keeper brand glue is in fact a Finnish product. I was wondering if they sell it in e.g. Burnchurchway.
12:46:11 <oerjan> "Burnchurch Castle, a National Monument, is a well-preserved 15th century Norman tower house with a round gate tower, situated in County Kilkenny, Ireland."
12:46:23 <oerjan> no burnchurchway, though
12:48:33 <fizzie> I almost went with "Burnchurchland", but at the last minute wanted the way of Norway in too.
12:49:55 <oerjan> hey we have to use the nice old wooden churches for _something_
13:00:15 -!- SimonRC has joined.
13:06:05 <Vorpal> oerjan: that thing about Norway went over my head, what did it refer to?
13:16:52 <fizzie> "Varg Vikernes (Norwegian pronunciation: [ˈʋɑrɡ ˈʋiːkəɳeːs]; born 11 February 1973) is a Norwegian black metal musician, convicted murderer, arsonist, and religious, political and nationalist activist. -- Vikernes was further convicted of four counts of arson involving the burnings of historic churches, and was sentenced to 21 years in prison. Having served almost 16 years of his sentence, Vikernes was released on parole in early 2009.[3][4]"
13:16:56 <fizzie> Oh, you let him walk free.
13:23:08 <elliott> I always thought Vikernes should be Finnish.
13:23:14 <elliott> It just seems to fit him better.
13:23:18 <fizzie> We only have copycats in our copyland.
13:23:27 <elliott> You're basically all murderers-in-waiting.
13:23:32 <fizzie> ("Kalle Holm, an 18-year-old Finn known to have played drums in several Finnish metal bands, has stated on his website that he was influenced by Burzum. He set fire to the Porvoo Cathedral in Finland in May 2006: the roof of the church burned, but the ceiling, vaults and interiors survived undamaged.")
13:23:48 <elliott> fizzie: Well, he claims to have not burned any churches.
13:23:49 <fizzie> http://en.wikipedia.org/wiki/File:Church.20060530_PM.porvoo_of_finland.ojp.jpg
13:23:54 <elliott> (He admits the murder thing though.)
13:24:00 <elliott> Churches are just too far.
13:24:10 <elliott> fizzie: What is it with your churches? They're so small.
13:24:23 <fizzie> Small country, small churches.
13:24:44 <elliott> fizzie: I'm pretty sure you're a larger country than us.
13:26:02 <fizzie> Okay, land-area-wise we arere 1.256 yous. Maybe it's not the size but how you use it.
13:26:07 <fizzie> Arere.
13:26:09 <fizzie> Arererere.
13:27:01 <fizzie> They have one ridiculously dimensioned wooden church in the middle of ~nowhere; rumour has it they've mixed centimetres and inches in the architect -> builders step.
13:27:02 <oerjan> it's just that it's mostly lakes, and the finns haven't found out how to build churches in them yet
13:27:13 <elliott> fizzie: Got a link?
13:27:31 <fizzie> It's not big in absolute sense, but it's bigger than you'd expect a random wooden church in the middle of nowhere to be.
13:27:34 <fizzie> I'll see if I can google it.
13:28:06 <fizzie> http://en.wikipedia.org/wiki/Kerim%C3%A4ki_Church
13:28:25 <fizzie> Big church, small WP article.
13:29:38 <fizzie> fi.wikipedia on amputation: "This medical article is a stub."
13:29:51 <oerjan> <fizzie> Oh, you let him walk free. <-- he's even published new music
13:30:22 <elliott> oerjan: He did that from jail, too. (I read up on him once because it was interesting.)
13:30:30 <oerjan> oh maybe
13:31:02 <elliott> He really does have the best possible face for a murderer. I mean, if you ask me.
13:31:42 <fizzie> He does seem to be contemplating murder in the Wikipedia infobox too.
13:32:27 <elliott> Let's consult Wikipedia on this controversial issue.
13:32:29 <elliott> well actually we're all a little racist inside, and that's normal. in fact not being a bit racist isn't normal.
13:32:29 <elliott> 6resurected6satan6 1 year ago 33
13:32:35 <elliott> 6resurected6satan6 weighs in.
13:33:46 <fizzie> I'm a bit surprised no-one has [citation needed]'d the "largest wooden church in the world" sentence, seeing it sitting there all uncited like that.
13:33:53 <elliott> fungot: Your turn.
13:33:53 <fungot> elliott: ( c) a player
13:33:57 <elliott> Ah.
13:34:01 <elliott> What style's it on.
13:34:14 <fizzie> I suppose its own still.
13:34:16 <fizzie> ^style
13:34:16 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot* homestuck ic irc jargon lovecraft nethack pa sms speeches ss wp youtube
13:36:10 <fizzie> Bah, I need to go real soon to this "Experience Aalto!" thing downstairs, to demonstrate our group's research stuffs to first-year students. They even gave us white T-shirts with "A!" in front and "Aalto First Year Experience" in back.
13:36:22 <fizzie> No-one mentioned these clown shirts when they were polling for available volunteers.
13:36:36 <Vorpal> ouch
13:36:42 <elliott> fizzie: How did you get that static GHC binary onto fungot-machine again?
13:36:42 <fungot> elliott: ( that is, levinson went to kish, disappeared, had on your behalf of the commission is not allowed to use the crane, enter any two of these letters, a b y.
13:36:47 <oerjan> fizzie: you should wear red noses just for the sarcasm
13:37:09 <fizzie> elliott: I have a GHC binary there?
13:37:19 <elliott> fizzie: You did, once, for a test.
13:37:37 <fizzie> elliott: I can't recall at all. But certainly if you say so.
13:37:48 <elliott> fizzie: You will clearly be a great help.
13:38:05 <fizzie> oerjan: I don't think I can improvise a red nose in twenty minutes.
13:38:25 <Vorpal> <elliott> fizzie: How did you get that static GHC binary onto fungot-machine again? <-- using floppies
13:38:25 <fungot> Vorpal: and it's self-modifying techniques." stop immobilizes and disables you. in these bones, i shall return! by the way, the wings! now this is a way to the ocean palace? aren't they in the mood to confront vorbis there and then... this ship's gonna save the planet is hurt, are you saying?
13:38:40 <Vorpal> the actual floppy kind of floppy too
13:39:09 <Vorpal> (8-inch)
13:39:44 <fizzie> We had 8-inch floppies for throwing (target, not distance) at one staff christmas party here.
13:40:04 <Vorpal> heh
13:40:18 <oerjan> fizzie: how could you do that with valuable museum treasures!
13:40:33 <fizzie> Oh, I'm sure they survived just fine. They built to last those days.
13:41:12 <oerjan> yeah tutankhamon's computers were rock solid
13:41:33 <fizzie> You're going to get that "King Tut" song going in my head.
13:41:39 <elliott> Hmphs.
13:41:51 <elliott> I will sit here stubbornly until someone solves my problem.
13:41:59 <oerjan> elliott: you have a problem?
13:42:10 <elliott> oerjan: Yes. My program doesn't work on my VPS.
13:42:28 <Vorpal> I tried out OpenIndiana too. I expected some sort of exotic desktop environment. It just uses Gnome 2 as far as I can tell
13:42:29 <Vorpal> :/
13:42:35 <oerjan> too bad i don't have a glue then *MWAHAHAHA*
13:43:12 <fizzie> oerjan: http://www.youtube.com/watch?v=Bl5dZxA-rZY
13:44:11 <elliott> fizzie: oerjan doesn't do the sound thing.
13:44:18 <fizzie> Oh. Sad.
13:45:00 <fizzie> "AIS-Code is on a scale of one to six, one being a minor injury and six being life-threatening. An AIS-Code of 6 is not the code for a deceased patient, but the code for an injury with a very high lethality. An AIS-Code of 9 is used to describe injuries for which not enough information is available for more detailed coding, e.g. crush injury to the head."... is this... talking about ais523?
13:45:33 <elliott> Also referred to as a "feather".
13:45:53 <Vorpal> it even has fucking gnu coreutils for ls
13:45:54 <Vorpal> and so on
13:45:59 <fizzie> What the foo have I clicked anyway, to have the WP "Abbreviated injury scale" article open? I certainly don't remember consciously opening anything like this. (Maybe there's a code for it.)
13:46:00 <Vorpal> this is less exotic than *BSD
13:47:07 <fizzie> (Oh, it's the first A-titled article in the "Medicine stubs" category; I was checking the English text of the stub template.)
13:47:30 <Vorpal> okay mount output is backwards
13:47:35 <oerjan> <elliott> fizzie: oerjan doesn't do the sound thing. <-- oh, i actually did for once.
13:47:38 <Vorpal> $ mount
13:47:40 <Vorpal> / on rpool/ROOT/openindiana read/write/setuid/devices/dev=1810002 on tors jan 1 01:00:00 1970
13:47:43 <elliott> oerjan: gozsh.
13:47:45 <elliott> ...
13:47:47 <elliott> s/z//
13:48:04 <oerjan> with it not being the middle of the night and stuff
13:48:56 <oerjan> but it still feels awkward.
13:50:08 <fizzie> Vorpal: What, no CDE?
13:50:34 <Vorpal> fizzie: indeed. It is plain old Gnome 2. And ls is the boring one from GNU Coreutils.
13:50:34 <fizzie> I don't think there's CDE in real Solaris by default either, though.
13:50:44 <fizzie> (Any more, that is.)
13:50:47 <Vorpal> fizzie: oh it could be there I guess but not default
13:50:58 <fizzie> Welp, downstairs.
13:50:58 <Vorpal> I haven't used it for more than like 20 minutes
13:53:32 <Vorpal> there is like cde-runtime package (not installed), and cde-utils. They seem to not be the full CDE thing with window manager and all, just whatever is needed to run CDE applications
14:10:05 -!- nooga has joined.
14:13:27 -!- augur has quit (Remote host closed the connection).
14:25:15 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
14:34:16 -!- ais523_ has joined.
14:34:39 -!- pikhq_ has joined.
14:35:27 -!- pikhq has quit (Ping timeout: 276 seconds).
14:57:02 -!- copumpkin has joined.
15:05:47 -!- ais523_ has quit (Ping timeout: 265 seconds).
15:07:14 <elliott> `quote dynamic indentation
15:07:17 <HackEgo> 77) <oklofok> i use dynamic indentation, i indent lines k times, if they are used O(n^k) times during a run of the program
15:10:09 -!- oerjan has quit (Quit: Later).
15:13:04 <fizzie> Vorpal: "Future releases of Solaris will be based on the OpenSolaris open source project, which states that there is no plan to make the Solaris CDE "consolidation" (OS component) available as open source. -- OpenCDE, an open source project to replicate CDE, was started in early 2010. The project intends to reproduce the look and feel, organization, and feature set of CDE without using any CDE-derived code."
15:13:13 <fizzie> Apparently it really isn't there in OpenSolaris either.
15:13:25 <Vorpal> heh
15:19:16 -!- MDude has quit (Ping timeout: 252 seconds).
15:20:14 -!- MSleep has joined.
15:20:33 <fizzie> (Away again; this time homeward bound.)
15:22:09 <Gregor> (I only have a partial backlog, but:)
15:22:11 <Gregor> CDE sucks horribly anyway.
15:22:19 -!- sadhu has joined.
15:22:28 <Gregor> Plus, XFCE was originally a clone of CDE.
15:22:31 <elliott> Gregor: I hear it runs ChatZilla admirably.
15:22:33 <Gregor> Then they went "Oh wait, CDE sucks."
15:22:42 <elliott> X-D
15:23:11 -!- MSleep has changed nick to MDude.
15:24:32 -!- augur has joined.
15:32:01 -!- sadhu has quit (Ping timeout: 244 seconds).
15:36:53 <Gregor> `addquote (Of Minecraft:) <elliott> So basically I didn't understand what it was at all, I thought maybe you were meant to be like a worm and just sort of wriggle about underground.
15:36:55 <HackEgo> 703) (Of Minecraft:) <elliott> So basically I didn't understand what it was at all, I thought maybe you were meant to be like a worm and just sort of wriggle about underground.
15:52:04 -!- ais523 has joined.
15:52:42 <ais523> thing that confused me a while ago: another channel discussing ZZT without automatically assuming the everyone else knew what it was
15:54:21 <elliott> heh
15:59:04 <ais523> also, I just received an interesting offer via email
15:59:15 <ais523> the people who actually own the copyright to the final versions of two of my papers
15:59:38 <ais523> have offered to serve all-rights-reserved-but-you-can-still-look-at-it copies to anyone who visits their website via a link from mine
15:59:47 <ais523> i.e. filtering by referrer
15:59:55 <elliott> what's the catch :P
15:59:58 <ais523> it's an interesting business model suggestion, at least
16:00:09 <elliott> interesting ~ awful
16:00:10 <ais523> elliott: creating an account with them, for one thing
16:00:20 <ais523> yep, I'm trying to figure out how the business model works there
16:00:24 <elliott> ais523: oh; it's easier to get the paper by other means, then
16:00:28 <elliott> so it'll never work
16:00:47 <elliott> well, I suppose it might be harder finding the copies of _yours_ hanging about on the public webspace :-P
16:00:57 <ais523> elliott: well, the email mentioned in passing that they only have the copyright of the final version, not of drafts
16:01:06 <ais523> which is the loophole that absolutely everyone uses (they just post the drafts on their web page)
16:01:15 -!- monqy has joined.
16:01:21 <elliott> People just change like three words before actually submitting it to make that work, right?
16:01:29 <ais523> so presumably they're trying to get things like usage statistics in the situation where people would otherwise check drafts
16:01:31 <elliott> It would be annoying if there was a risk of actual substantial changes
16:01:37 <ais523> elliott: not even that, they put "this space is reserved for the copyright notice"
16:01:40 <elliott> haha
16:01:45 <ais523> and then the publisher removes that when putting the copyright notice in
16:01:47 <ais523> that's a change
16:01:58 <elliott> academic publishing is the most insane business model I've ever heard of
16:02:56 <ais523> so my guess is, they decided that it wasn't losing them any money if they got to serve people final versions who would otherwise look at the drafts
16:04:04 <ais523> and because it's all opt-in by the author, the only people likely to opt in are those who'd put drafts on their homepage anyway
16:04:35 <ais523> I don't think I've linked my latest paper to the channel, anyway; it's about compiling recursion into hardware
16:04:40 <elliott> it's probably harmless, but I don't know that I'd want to support such a silly business model
16:04:50 <elliott> ais523: I'd read it (and pretend to understand it)
16:05:08 <ais523> http://www.cs.bham.ac.uk/~drg/papers/icfp11.pdf
16:05:13 <ais523> same ICFP who do the contest, incidentally
16:05:22 <elliott> I would not expect otherwise
16:05:36 <elliott> ais523: that's not computer modern :'(
16:05:43 <elliott> (ok, I don't like computer modern, but times is worse)
16:05:45 <ais523> isn't it?
16:05:47 * ais523 looks
16:05:51 <elliott> (at least the times on here)
16:06:20 <ais523> you're right, it looks like some Times variant
16:06:38 <elliott> "Unfolding finite recursion in space"
16:06:45 <elliott> missed opportunity for excellent title, there
16:06:51 <ais523> I didn't write the formatting, nor even much of the text; just the content in the only new section (which is about unfolding recursion in time)
16:07:07 <elliott> it's basically a TARDIS, right/
16:07:10 <ais523> the rest is just summaries of previous results to pad out space, and because there's a crazy rule that all the context for a paper has to be explained in the paper itself
16:07:22 <ais523> elliott: no, unfortunately
16:07:40 * elliott would not expect ais523 to be the kind of person to say "unfortunately" to time travel being impossible irl
16:08:14 <ais523> heh
16:08:25 <elliott> ais523: gcc four point oh?
16:08:28 <elliott> even OS X isn't /that/ bad
16:08:35 <ais523> elliott: it was indeed on OS X
16:08:38 <ais523> I have no idea which version
16:08:41 <elliott> leopard
16:08:44 <elliott> but why such an old compiler?
16:08:59 <Deewiant> For the record, OpenSolaris: gcc (GCC) 3.4.3 (csl-sol210-3_4-20050802)
16:09:02 <ais523> I just did gcc --version
16:09:09 <ais523> Deewiant: it's as old as NetHack!
16:09:11 <elliott> Deewiant: Nice
16:09:18 <elliott> ais523: NetHack released in ohfive???
16:09:27 <ais523> elliott: no, NetHack released in 3.4.3
16:09:28 <Deewiant> elliott: No, but it's 3.4.3
16:09:30 <elliott> heh
16:09:38 -!- augur has quit (Remote host closed the connection).
16:10:01 <elliott> there should be a way to link your kernel into an executable too
16:10:05 <elliott> so that static linking would actually solve my problem
16:10:20 <ais523> elliott: static VM?
16:10:20 <Deewiant> What is your problem
16:10:42 <elliott> Deewiant: My Haskell binary doesn't work on my server, it just hangs at startup doing tons of realtime/clock calls and occasionally mmap
16:10:51 <elliott> Looks like something's fucked in the event manager; I've no idea what or why or how to fix
16:10:58 <Deewiant> heh
16:10:59 <elliott> ais523: Yes, exactly
16:11:27 <ais523> oh right, that reminds me of some insane code I wrote recently
16:11:37 <elliott> oh no
16:11:43 <ais523> don't worry, it's C
16:11:46 <elliott> oh no
16:11:50 <Deewiant> :-D
16:12:27 <ais523> I'll remove the explanatory comments so you get the full effect
16:12:31 <elliott> oh no
16:13:18 <ais523> { void* allocforcer[100]; int i; for (i = 0; i < 100; i++) { allocforcer[i] = malloc(64000); } for (i = 0; i < 99; i++) { free(allocforcer[i]); } }
16:13:28 <ais523> the 100 is a reasonably arbitrary number; the 64000 isn't
16:13:42 <elliott> i
16:13:45 <ais523> really, they should both have been #defines but I was being lazy
16:13:59 <elliott> ais523: something about forcing pages to be reserved or filled or something?
16:14:08 <ais523> close, but not perfect
16:14:12 <ais523> notice the memory leak, it's deliberate
16:14:13 <elliott> ais523: disk sectors?
16:14:15 <elliott> hmmm
16:14:22 <elliott> ais523: is it so you can overrun the buffer somehow?
16:14:28 <ais523> nope
16:14:34 <elliott> :(
16:14:40 <ais523> OK, clue: think about the system calls involved
16:14:51 * elliott isn't sure he wants to...
16:14:52 <elliott> hmm
16:15:02 <elliott> ais523: trying to cause an overflow of some kind?
16:15:10 <Deewiant> They depend on the system / libc
16:15:17 <ais523> elliott: no, but you're thinking more along the right lines
16:15:20 <ais523> Deewiant: indeed; Linux / glibc
16:15:35 <elliott> hmm
16:15:51 <ais523> the idea is portable to most other systems and libcs, though, even if perhaps the exact numbers aren't
16:15:58 <elliott> ais523: is it about corrupting or otherwise modifying for a purpose in a non-standard way internal structures of the allocator?
16:16:10 <elliott> i.e., arranging them specifically?
16:16:15 <ais523> sort of
16:16:23 <ais523> it's not about corrupting, the resulting situation is not corrupt at all
16:16:29 <ais523> it is modifying for a purpose, though
16:16:33 <ais523> and the purpose is related to syscalls
16:16:48 <ais523> (incidentally, this has nothing to do with the Secret Project, although it /looks/ like it)
16:16:49 <Deewiant> Changing the program break?
16:16:53 <ais523> Deewiant: yep
16:16:57 <ais523> can you figure out why?
16:17:01 <elliott> i, err, sbrk?
16:17:20 <ais523> elliott: OK, what the code's doing is to get malloc to call sbrk at a particular location
16:17:40 <ais523> the memory leak at the end is so that it won't give back allocated memory to the system, which it could do otherwise (I'm not sure if it actually /did/, but that way's clearer)
16:17:43 <elliott> yikes
16:18:00 <Deewiant> And why do you do want to do that
16:18:02 <ais523> then it's freeing most of the memory between the break and the old end of the heap
16:18:06 <ais523> Deewiant: that's the question
16:18:10 <ais523> if you give up, I'll tell you
16:18:24 <Deewiant> I gave up, maybe elliott didn't
16:18:28 <elliott> i give up
16:18:29 <elliott> and also
16:18:30 <elliott> cry
16:18:31 <elliott> a bit
16:19:02 <ais523> the reason, is so that future memory allocations /don't/ call sbrk
16:19:06 <ais523> until memory fills to a certain size
16:19:09 <elliott> heh
16:19:10 <elliott> why?
16:19:11 <elliott> speed?
16:19:14 <ais523> security
16:19:16 <elliott> wat
16:19:25 <ais523> it's immediately followed by the prctl that disables all but four syscalls
16:19:30 <elliott> heh
16:19:45 <ais523> brk is not one of those four
16:19:55 <ais523> so /without/ doing that, the resulting code wouldn't be able to allocate any memory
16:20:03 <elliott> and then using too much memory kills the program?
16:20:07 <ais523> yep
16:20:08 <elliott> why couldn't you just use brk before doing it?
16:20:14 <ais523> because malloc wouldn't know I'd done that
16:20:25 <ais523> incidentally, the reason "why 64000" is that at 65536, glibc malloc starts using mmap instead
16:21:23 -!- Ngevd has joined.
16:21:29 <elliott> heh
16:21:32 <Ngevd> Hello!
16:21:41 <Ngevd> ais523, wiki spam
16:22:04 <ais523> otherwise I'd just use a big alloc then a small one
16:22:06 <ais523> Ngevd: thanks
16:22:27 <Ngevd> You're welcome!
16:22:36 <ais523> and deleted
16:22:49 <Ngevd> There's a page as well?
16:23:16 <ais523> oh, I missed one page
16:23:21 <ais523> as it wasn't in RSS yet
16:28:02 <Ngevd> So, what's up in the world of esoteric programming?
16:28:28 <elliott> nothing
16:28:35 <ais523> I spent today writing a pointless report, but it's motivated me to work on Anarchy
16:28:47 <ais523> which I can hardly even remember how it's meant to work, now, luckily I wrote a partial spec that might remind me
16:32:37 <elliott> theory: ais523 is actually ireland
16:32:48 <Ngevd> Republic or Northern>?
16:33:01 <ais523> presumably the physical island
16:33:07 <ais523> which includes both
16:33:08 <elliott> whichever one PH has gone to
16:33:18 <elliott> it only makes sense that when PH disappears, ais523 appears
16:34:08 <Ngevd> I made marshmallows!
16:34:42 <elliott> ah
16:39:53 <Ngevd> It's someone in my ancient history class's birthday today
16:40:07 <Ngevd> I mean tomorrow
16:40:12 <Ngevd> I am confused and tired
16:43:52 <ais523> <Microsoft> For the enthusiast who wants to run older operating systems, the option is there to allow you to make that decision.
16:44:08 <ais523> the two levels of indirection are necessary, incidentally; "you are allowed to make that decision" is not necessarily true
16:44:14 -!- augur has joined.
16:44:53 -!- augur has quit (Remote host closed the connection).
17:05:00 -!- augur has joined.
17:05:36 -!- Ngevd has quit (Ping timeout: 245 seconds).
17:05:59 -!- augur has quit (Remote host closed the connection).
17:08:37 -!- sadhu has joined.
17:14:51 -!- Sgeo|web has quit (Ping timeout: 265 seconds).
17:16:10 -!- zzo38 has joined.
17:16:27 <zzo38> Yesterday at the night time, I put the tides in my gopher service.
17:23:14 -!- Ngevd has joined.
17:24:09 <Ngevd> Hello!
17:25:49 <zzo38> Do you like tides on my gopher service?
17:32:27 <Ngevd> I'm not entirely sure I see the point
17:32:37 <Ngevd> I'm not entirely sure what a gopher service is
17:33:06 <zzo38> It is on my computer on port 70
17:38:55 -!- zzo38 has quit (Remote host closed the connection).
17:39:25 <CakeProphet> looks like somebody already found an exploit;
17:41:19 -!- variable has quit (Excess Flood).
17:41:29 <Ngevd> Wasn't me
17:41:33 <elliott> CakeProphet: wfm
17:43:09 -!- variable has joined.
17:44:17 <CakeProphet> elliott: one moment while I look up your insane acronyms.
17:44:28 <CakeProphet> ah.
17:44:59 <CakeProphet> elliott: yes okay I will wait for you. :P
17:45:10 <CakeProphet> I will wait for you while I Work From Home.
17:45:31 <CakeProphet> as a Workflow Manager in the World Federalist Movement.
17:45:37 <CakeProphet> also, What Freakin' Manual?
17:45:50 <CakeProphet> *Fucking
17:46:19 <CakeProphet> whatever I'm going to the Whole Foods Market.
17:46:27 <CakeProphet> though I doubt they sell a Waveform Monitor.
17:46:46 <Ngevd> It updates Wednesday-Friday-Monday
17:52:10 * CakeProphet needs to talk to the Workforce Management of the Western Federation of Miners about claims made by the Wings of Faith Ministries of the World Faith Movement that we have been interferring with their radio station via illegal use of Wide Frequency Modulation.
17:53:10 <Vorpal> CakeProphet: I suspect it was "works for me"
17:53:19 <CakeProphet> Vorpal: oh...?
17:53:21 <CakeProphet> works for me.
17:53:37 <Vorpal> CakeProphet: wfm most often means "works for me" when elliott says it I found.
17:58:18 <CakeProphet> ah yes
17:58:29 <CakeProphet> it was the first choice on this website I found....
17:58:36 <CakeProphet> but, I figured, too obvious.
17:58:40 <CakeProphet> must be one of these other things.
17:58:48 -!- boily has joined.
18:01:16 <sadhu> i just coded a rough string to brainfuck converter
18:01:26 <sadhu> its pretty simple but it can do some optimizations
18:01:26 <CakeProphet> is "string" a language?
18:01:34 <sadhu> lol no
18:01:40 <CakeProphet> so you wrote a brainfuck interpreter?
18:02:03 <Ngevd> No, a text to brainfuck converter
18:02:04 <sadhu> no you input the string and it generates the brainfuck code to print it
18:02:14 <CakeProphet> ohhhh
18:02:15 <CakeProphet> right.
18:02:21 <sadhu> https://gist.github.com/cf21d4abee8853ceb9e3
18:03:57 <CakeProphet> wow Uncyclopedia is so bad.
18:05:08 <CakeProphet> it's the collective humor of hundreds of people who have a terrible sense of humor
18:05:28 <CakeProphet> many of them probably Wikipedia editors, or people who pretend to be wikipedia editors (....?)
18:06:35 -!- augur has joined.
18:18:25 <CakeProphet> http://en.wikipedia.org/wiki/Category:American_cuisine
18:18:29 <CakeProphet> hahahaha frito pie
18:18:31 <CakeProphet> I've had one of those.
18:18:48 <boily> frito, as in potato chips?
18:19:13 <CakeProphet> corn chips, but yes
18:19:43 <CakeProphet> Frito pie is a dish made with chili, cheese, and corn chips. Optional additions include salsa, refried beans, rice, and jalapeños, among others.
18:20:04 <boily> oh, this kind of pie!
18:20:07 <boily> sounds delicious.
18:20:11 <CakeProphet> America is the best at food.
18:20:49 <CakeProphet> we just take everyone elses food and mix it together with our own shit.
18:23:04 <elliott> Hmm, GHC totally needs a way to force a thread to execute some code.
18:23:30 <Ngevd> I've had an idea for a programming language
18:23:35 <elliott> Ooh, I bet I can do this with alwaysSuceeds.
18:23:36 <Ngevd> esoteric, that is
18:23:39 <sadhu> elliott: is this yours https://github.com/ehird ?
18:23:46 <elliott> yes, that's me
18:23:51 <elliott> ehird forked waferbaby/usesthis 1 day ago
18:23:51 <elliott> Forked repository is at ehird/usesthis
18:23:51 <elliott> wtf?
18:23:54 <elliott> i never did that
18:24:00 * elliott deletes...
18:24:40 <sadhu> elliott did you checkout that str2bf
18:24:48 <elliott> yeah, it looks better than bf_txtgen :P
18:24:53 <Ngevd> Anyway, my idea for a new esolang
18:25:09 <Ngevd> An imperative language with ONLY functional features
18:25:27 <Ngevd> Probably been done before
18:26:10 -!- derdon has joined.
18:26:26 <CakeProphet> Ngevd: Lisp?
18:26:26 <Ngevd> In pseudo javascript:
18:26:55 <Ngevd> var x = function(x) {function(y) {x}};
18:28:14 <Ngevd> Actually, imagine python with only lambdas and variable assignations
18:28:14 <Ngevd> Maybe input and print, too
18:28:37 <variable> anyone here clueful with gnuplot ?
18:28:40 <variable> I have a file that likes like this testname | ind_var | old dp1 | old dp2 | new dp1 | new dp2 I want to have 2 separate plots. one per datapoint. Each plot should show the change in the dp from version A to version B with a line for each testname
18:28:53 <Ngevd> Or some variation thereof
18:37:03 <Vorpal> <Ngevd> Actually, imagine python with only lambdas and variable assignations <-- have you seen that irc bot elliott wrote using lots of nested lambdas in python in order to make a non-trivial python program that would work without indentation
18:37:15 <elliott> oklopol wrote a bf interp like that, it's not uncommon
18:37:31 <Vorpal> hm, I haven't seen that one
18:38:08 <Vorpal> <variable> anyone here clueful with gnuplot ? <-- try fizzie. He knew when I asked some gnuplot questions a while ago
18:38:33 <variable> cool
18:38:44 <variable> I now have a file that more closely aligns with what I want to plot
18:39:23 -!- sadhu has quit (Quit: Leaving).
18:39:58 <fizzie> Hrm. What's ind_var?
18:42:43 <variable> fizzie: independent varibale
18:43:09 <variable> (in my case, the size of branch prediction table for a simulator)
18:43:50 <variable> fizzie: my file now looks like testname | ind_var | y_plot_1 | y_plot_2
18:44:20 <fizzie> Well. With a new enough (4.x, should be everywhere by now) I think you just mostly need a suitable "using" specifier. You probably could've done it from the original file with two 'using' lines, actually.
18:44:32 <variable> hrm?
18:44:44 * variable is not gnuplot clueful
18:46:21 <fizzie> I think I need to test it before I say something that's probably not immediately correct.
18:46:30 <fizzie> But how do you want to indicate the differences?
18:46:41 <variable> on the y cord.
18:46:44 <variable> * y axid
18:46:46 <variable> * y axis
18:47:17 <fizzie> Right, but do you want for each test an arrow from the old value to the new one or what?
18:47:17 <Vorpal> elliott: got a link to that "Nix"? Searching is useless, just turns up matches for people writing *nix
18:47:25 <elliott> http://nixos.org/
18:47:28 <Vorpal> thanks
18:47:28 <elliott> NixOS is the thing to google.
18:47:33 <Vorpal> right
18:47:47 * elliott considers rolling NixOS + nilfs.
18:47:49 <Vorpal> no obvious download link. Heh.
18:47:50 <elliott> ON THE EEEEDGE.
18:48:03 <Vorpal> ah there
18:48:50 <Vorpal> oh god, it is gentoo stage3 kind of thing to install
18:48:56 <Vorpal> well not quite
18:49:00 <elliott> Vorpal: No, it's binary-based.
18:49:02 <Vorpal> lots and lots of manual commands though
18:49:09 <fizzie> (Or the difference between the old and new as a signed value indicated by the point?)
18:49:28 <elliott> Vorpal: Doesn't look that bad to me.
18:49:33 <Vorpal> elliott: yeah but I meant as in, no installer (GUI or ncurses or even the openbsd style of asking questions)
18:49:36 <elliott> It's "partition, run a few Nix commands, rbeoot".
18:49:39 <elliott> s/rbe/reb/
18:50:05 <variable> fizzie: https://en.wikipedia.org/wiki/File:NO2_Arrhenius_k_against_T.svg something like this
18:50:17 <variable> where X = size of branch table
18:50:31 <variable> y = new - old
18:50:34 <elliott> Vorpal: I like how it has special instructions for Pidgin-LaTeX in the manual.
18:50:35 <elliott> Priorities.
18:50:40 <Vorpal> elliott: any idea for funky OSes to try out? I did OpenIndiana earlier. Looking for something else. NixOS looks like a bit too much work for just messing around with it in a VM.
18:51:05 <elliott> Vorpal: Tiny Core is quite fun in a VM, at least, especially with its funky package mounting system.
18:51:24 <variable> Vorpal: ReactOS ?
18:51:35 <Vorpal> variable: ew
18:51:41 -!- Nisstyre has quit (Ping timeout: 248 seconds).
18:51:44 <variable> Vorpal: :)
18:51:55 <Vorpal> elliott: oh? package mounting? Hm... Web search turns up github and so on. No obvious place to download an ISO
18:52:08 <elliott> google gives http://tinycorelinux.com/ as first link
18:52:16 <Vorpal> elliott: was using DDG
18:52:27 <elliott> haven't bothered to set ddg on this new install yet
18:52:31 <Vorpal> ah
18:52:53 <elliott> but yeah, a ten meg bootable Xorg system + graphical package manager is impressive in anyone's book
18:52:53 <variable> fizzie: I've got to run now, but I'll read what you write later. Any help you could give me would be great !
18:53:01 <elliott> though flinix of course wants to do it in one and a half.
18:53:36 <fizzie> variable: Uhh, right, okay; so you want a line in the plot for each different 'testname', and the ind_var gives the X value. Okay. I was misinterpreting that you wanted a line i.e. an entry for each 'testname' labeled by the 'testname', indicating a single change. Mhm. That may need some manual pre-splitting so that the lines corresponding to each 'testname' have two empty lines in-between, but not necessarily. I'll try this out, will take a while.
18:53:56 <Vorpal> elliott: no mesa I presume?
18:54:10 <elliott> Vorpal: Well, everything's in a package. :p
18:54:20 <Vorpal> elliott: so how do packages work in there?
18:55:01 <elliott> Vorpal: Mounted into /tmp/some/path/i/forget which gets overlaid onto the rest of the system in a way I forget
18:55:06 <Vorpal> heh
18:55:09 <elliott> Vorpal: Mounted loopback from the tarball
18:55:15 <Vorpal> elliott: are there many packages available?
18:55:19 <elliott> Shitloads
18:55:25 <elliott> It has all of KDE, etc.
18:55:40 <Vorpal> hm
18:55:43 <Vorpal> xfce too I hope
18:55:51 <elliott> It was an example for size.
18:55:57 <Vorpal> elliott: hm which one: TinyCore | MicroCore | MultiCore
18:56:22 <Vorpal> and where are the 64-bit downloads?
18:56:33 <elliott> Vorpal: Middle one doesn't have any kind of X at all.
18:56:36 <elliott> multicore is some kind of bundle thing.
18:56:49 <Vorpal> hm
18:56:56 <elliott> And it apparently supports sixty-four bit says WP, but I dunno how.
18:57:09 <elliott> http://distro.ibiblio.org/tinycorelinux/4.x/
18:57:12 -!- Nisstyre has joined.
18:57:16 <elliott> Shrug.
18:57:26 <Vorpal> hm
18:57:54 <elliott> Just get the thirty-two bit one, YAGN that ram :P
18:58:11 <Vorpal> ibiblio is so slow. I get 20 kb/s from it, as usual
18:58:29 <elliott> http://upload.wikimedia.org/wikipedia/en/timeline/7ca54bb4dd52eef1ecd02ebd1f481d04.png
18:58:32 <elliott> Good timeline.
18:58:39 -!- Nisstyre has quit (Max SendQ exceeded).
18:59:18 <Vorpal> elliott: I was going to assign 6 GB and 2 cores to the vm. Virtualbox is more efficient for 64-bit guests according to the docs
18:59:30 <elliott> Vorpal: Six gigs of what
18:59:33 <Vorpal> elliott: ram?
18:59:38 <elliott> Why, it's Tiny
18:59:53 <Vorpal> elliott: well, why not? I still have 10 for the host
19:00:04 <elliott> Because it'll only see four of it?
19:00:05 -!- Nisstyre has joined.
19:00:12 <Vorpal> elliott: yeah fuck the 32-bitness
19:00:17 <Vorpal> elliott: anyway there is PAE
19:00:24 <elliott> I don't think you quite understand how Tiny the Tiny part of Tiny Core is
19:00:40 <Vorpal> elliott: that was disk space, not ram ?
19:00:47 <elliott> It's everything.
19:00:52 <elliott> It would practically run on a toaster.
19:02:21 <olsner> so would ubuntu if you equipped the toaster with 10GB of storage and >=1GB of RAM
19:03:31 <Ngevd> That could almost run Windows Vista
19:05:43 <elliott> atomically :: STM a -> IO a
19:05:44 <elliott> atomically (STM m) = IO (\s -> (atomically# m) s )
19:05:46 <elliott> Fuck primitives
19:06:49 <copumpkin> elliott: http://hpaste.org/52806
19:06:53 <copumpkin> isn't it cute!?
19:07:09 <elliott> copumpkin: Totally
19:07:33 <Vorpal> gah keymap
19:07:50 -!- oerjan has joined.
19:08:17 <elliott> old_trec = StgTSO_trec(CurrentTSO);
19:08:17 <elliott> /* Nested transactions are not allowed; raise an exception */
19:08:17 <elliott> if (old_trec != NO_TREC) {
19:08:17 <elliott> R1 = base_ControlziExceptionziBase_nestedAtomically_closure;
19:08:17 <elliott> jump stg_raisezh;
19:08:18 <elliott> }
19:08:21 <elliott> Why you gotta be so unoverridable
19:08:40 <shachaf> elliott: Really, why are you trying to do that?
19:08:55 <elliott> shachaf: SHHHHHHHHH I know it's safe because it's right at the end of the transaction.
19:08:57 <elliott> It's like a tail-call.
19:10:34 <elliott> shachaf: OK fine, here's a clue:
19:10:35 <elliott> go <- newEmptyTMVar
19:10:36 <elliott> alwaysSucceeds $ takeTMVar go >> unsafeIOToSTM act
19:10:36 <elliott> putTMVar go ()
19:11:38 <Vorpal> elliott: tiny core is not an option unless I can get the correct keymap in the installer. Too painful otherwise
19:11:51 <elliott> Vorpal: Why are you installing it?
19:11:52 <elliott> It runs from rAM.
19:11:53 <elliott> RAM.
19:11:58 <elliott> It has a keymap setter built in to the preferences thing.
19:12:11 <Vorpal> elliott: looked in the control panel, I see no keymap optionj
19:12:13 <Vorpal> option*
19:12:48 <Vorpal> elliott: besides running it from a CD such changes such as setting keymap won't persist
19:12:51 <elliott> Pretty sure there is, but you could just tell X about it directly
19:13:25 <fizzie> variable: It is awfully tricky to get multiple lines (with different titles) using only a single plot specifier. You almost get it if you separate the datasets (in your case, different testnames) with two newlines and then plot the complete file, but in that case all the lines end up in the same style. It is trivial if you don't mind doing "plot 'blah.data' ... index 0, 'blah.data' ... index 1, ..." with one command per each line, but that requires either fixin
19:13:25 <fizzie> g the number of lines, or generating the plotscript along with the data. Here's an example of what that might look like: http://p.zem.fi/meud
19:13:27 <elliott> shachaf: See, you should be helping me now.
19:13:41 <shachaf> elliott: As a matter of fact, I don't see.
19:13:53 <elliott> shachaf: Poor you.
19:14:40 <fizzie> variable: That will plot one line titled "foobar" with points at x=1, y=(1-0)=1 and x=2, y=(3-0)=3; and another line with x=1, y=(3-0)=3 and x=2, y=(5-0)=5. There's a host of twiddleable settings to control the style of the output further.
19:16:08 <fizzie> variable: As for the other plot, just turn ($4-$2) into ($5-$3). But I don't know offhand of a way to automatically get all indexes (i.e. datasets) of a datafile as actually separate series with different styles, without repeating the (essentially identical, except for the index number) plot specifier. Which is quite stupef. Possibly there is a thing for that too.
19:16:20 <elliott> shachaf: The real real answer is that I'm trying to implement onCommit :: IO () -> STM ().
19:16:36 <fizzie> variable: If you just don't specify "index" at all, it'll plot them all as separate lines just fine, but all the lines will be with the same color and have just one title.
19:17:51 <shachaf> elliott: Isn't there already an implementation of onCommit?
19:18:01 <oerjan> @hoogle onCommit
19:18:02 <lambdabot> No results found
19:18:07 <elliott> shachaf: Yes, in another monad.
19:18:13 <elliott> shachaf: I'm making one that works directly without any changes.
19:18:27 <elliott> shachaf: I already have one that works perfectly except you need to s/atomically/atomicallyIO/.
19:18:35 <elliott> shachaf: Now I have one that works perfectly full stop, except you can't run a transaction from it.
19:19:27 <oerjan> so basically you want a kind of transaction finalizer :P
19:19:34 <elliott> Yep :P
19:19:35 <fizzie> variable: Okay, you can get the lines in a different style automatically too, but not multiple entries in the legend/key/whatever you call it.
19:19:39 <elliott> That's kind of what onCommit is.
19:21:37 <oerjan> molecularily
19:23:28 -!- GreaseMonkey has joined.
19:23:51 * elliott discovered this by trying let m = atomically (onCommit m)
19:23:57 <elliott> the best transaction
19:26:53 -!- tiffany has joined.
19:30:55 -!- hagb4rd2 has joined.
19:31:15 <oerjan> elliott: i don't find any onCommit in the stm package?
19:31:46 <elliott> oerjan: duh, that's why I'm implementing it
19:31:50 <elliott> onCommit :: IO () -> STM ()
19:31:51 <elliott> onCommit act = do
19:31:51 <elliott> go <- newEmptyTMVar
19:31:51 <elliott> alwaysSucceeds $ takeTMVar go >> unsafeIOToSTM act
19:31:51 <elliott> putTMVar go ()
19:32:13 -!- hagb4rd has quit (Ping timeout: 248 seconds).
19:35:35 <oerjan> what does alwaysSucceeds do?
19:36:15 <elliott> oerjan: alwaysSucceeds :: STM a -> STM ()
19:36:15 <elliott> alwaysSucceeds adds a new invariant that must be true when passed to alwaysSucceeds, at the end of the current transaction, and at the end of every subsequent transaction. If it fails at any of those points then the transaction violating it is aborted and the exception raised by the invariant is propagated.
19:36:20 <elliott> "true" here meaning "doesn't throw an exception"
19:36:32 <elliott> I use it as a hook to be able to execute things at the end of the transaction :)
19:36:34 <oerjan> elliott: i already read that, i'm asking because i have no idea what it means
19:36:44 <elliott> the TMVar is to avoid it executing when passed to alwaysSucceeds and at the end of future transactions
19:36:51 <elliott> oerjan: well how do you want me to explain, the above precisely defines its semantics
19:36:54 <elliott> it's just not intuitive
19:37:09 <oerjan> but what is an invariant?
19:37:15 <elliott> oerjan: an action
19:37:36 <elliott> oerjan: it just means that the action is run when passed to alwaysSucceeds, at the end of the current transaction, and at the end of any subsequent transaction
19:37:39 <elliott> oerjan: if it fails, the transaction fails
19:37:55 <oerjan> oh hm
19:38:08 -!- ive has joined.
19:38:16 <elliott> oerjan: so in this case, I use a TMVar to make sure it just does nothing when passed to alwaysSucceeds (first execution), then executes when the transaction finishes (second execution), then never again :)
19:38:27 <elliott> although there might be a race condition, I think not since it's part of the same atomically block
19:38:33 <elliott> (i.e. another transaction ending first)
19:38:40 <elliott> (but I think the adding of these is atomic too, so it should be fine)
19:39:07 <Madoka-Kaname> CakeProphet, (t<<3)*[8/9,1,9/8,6/5,4/3,3/2,0][[0xd2d2c8,0xce4088,0xca32c8,0x8e4009][t>>14&3]>>(0x3dbe4688>>((t>>10&15)>9?18:t>>10&15)*3&7)*3&7]
19:39:14 <Madoka-Kaname> I liked this one
19:39:22 <tiffany> o.o
19:39:26 <elliott> Madoka-Kaname: :slowpoke:
19:39:26 <tiffany> um, how do you run those?
19:39:36 <elliott> tiffany: Would you stop saying o.o all the time it is worse than Madoka-Kaname's one-line pings.
19:39:36 <Madoka-Kaname> elliott, =p
19:39:49 <elliott> It is like a never-ending torrent of suffering delivered in lines.
19:39:56 <elliott> Suffering and pain.
19:40:03 <tiffany> wha?
19:40:05 <elliott> Madoka-Kaname: That one is a total cheat, it's basically just doing sequencing.
19:40:13 <Madoka-Kaname> elliott, yeah, I know.
19:40:32 <elliott> I wonder what the Kolgomorov complexity of Axel F is. (Inspired by rgb.swf.)
19:40:33 * Madoka-Kaname hugs tiffany
19:40:34 <oerjan> elliott: um doesn't takeTMVar prevent the action from succeeding until there's actually a value in it?
19:40:42 <tiffany> how do I run those thingies?
19:40:48 <elliott> oerjan: hmm right
19:40:50 <elliott> oerjan: well, it works :D
19:41:00 <elliott> tiffany: http://www.bemmu.com/music/index.html
19:41:16 <elliott> rgb.swf is really pretty
19:41:22 <elliott> I feel so sorry for epileptics who can't enjoy it
19:41:22 <fizzie> It's not as much of a cheat as my that IIR resonator. :p
19:41:50 <elliott> fizzie: As my that IIR resonator?
19:42:00 <fizzie> elliott: Line-editing gone wrong.
19:42:14 <Madoka-Kaname> elliott, it's a rick roll =p
19:42:20 <Vorpal> <elliott> It is like a never-ending torrent of suffering delivered in lines. <-- you mean no other downloaders, so you never get to a decent share ratio once it downloaded?
19:42:21 <elliott> Madoka-Kaname: No shit.
19:42:34 <ais523> elliott: you're pinged by o.o?
19:42:44 <elliott> ais523: If by "ping" you mean "annoyed", yes. :p
19:42:55 <elliott> Help I looked at rgb.swf and now every other colour seems dull.
19:43:00 <tiffany> .-.
19:43:36 <fizzie> If by "ping" you mean "annoyed", we can deduce you are "annoyeded" by o.o.
19:43:45 * tiffany searches on duckduckgo
19:43:45 <tiffany> http://throbs.net/fun/swf.asp?rgb.swf
19:43:51 <tiffany> how am I not having a seizure from this x_x
19:43:58 <elliott> (Heavy epilepsy warning on the above.)
19:44:28 <tiffany> my eyes hurt now
19:44:37 <elliott> Wow, it actually does oversatuate your eyes.
19:44:40 <elliott> Everything is actually greyish now.
19:44:43 <elliott> This can only be healthy.
19:44:44 <Vorpal> <elliott> tiffany: http://www.bemmu.com/music/index.html <-- what is the algorithm?
19:44:47 <elliott> ais523: wikispam
19:44:56 <elliott> Vorpal: there is no "algorithm", it just samples it
19:45:14 <Vorpal> elliott: samples *what*. What does your expression generate?
19:45:28 <ais523> <spam> oom to use your free herpes dating sites.
19:45:29 <Vorpal> elliott: it looks like a lot of bitshifting and some arcane syntax I have no clue about to me
19:45:42 <elliott> Vorpal pcm
19:45:53 <fizzie> Arcane syntax called array indexing, isn't it?
19:45:54 <Vorpal> elliott: okay so what is the syntax. I can't find any description on the page
19:46:01 <fizzie> It's Javascript.
19:46:06 <Vorpal> hm
19:46:06 <oerjan> ais523: i guess someone _has_ to have that as a fetish
19:46:13 <ais523> I think this spambot is just taking hypothesized Google searches for "dating" without wondering what they actually mean, then clipping them off at random locations
19:46:15 <elliott> see http://www.youtube.com/watch?v=GtQdIYUtAHg for complete programs pipeable to /dev/audio
19:46:27 <ais523> the article titles are big giveaways that that's what's happening
19:46:29 <elliott> or the super-duper version
19:46:30 <elliott> http://www.youtube.com/watch?v=tCRPUv8V22o
19:46:40 <Vorpal> hm
19:46:52 <ais523> also, that spambot is capable of solving the CAPTCHA, incidentally
19:47:06 <ais523> which is not surprising as it's a very easy CAPTCHA, but it does mean it's targeting MediaWiki specifically
19:47:11 <fizzie> elliott: Note that viznut is a .fi person too. COINCIDENCE?
19:47:17 <elliott> fizzie: Well, it's the demoscene.
19:47:30 <elliott> That "Covers Chaos Theory by Conspiracy" one is disappointingly lookup-tabley.
19:47:30 <fizzie> It's not an exclusively Finnish phenomononomon.
19:47:39 <elliott> fizzie: Yes but come on, you're fooling nobody.
19:47:40 <oerjan> viz. a nut
19:48:20 <elliott> That two-one-six one is very impressive, with the evolving beat.
19:48:54 <oerjan> finnish pheromenons
19:48:58 <elliott> Also the one at a bit before seven minutes.
19:49:12 <Vorpal> elliott: oh so there is an implicit loop around the expression you enter on that page. It wasn't clear
19:49:45 <fizzie> It's clear from the example expression in there that it uses 't' for time.
19:49:57 <Vorpal> fizzie: I was wondering what t
19:50:00 <Vorpal> t was*
19:51:06 <Vorpal> hm any way to generate sine waves?
19:51:11 <Vorpal> without too much work
19:51:13 <fizzie> Yes, with "sin".
19:51:17 <fizzie> It autorewrites that to Math.sin.
19:51:25 <Vorpal> fizzie: well yeah I was wondering if that was available in some shape or form
19:52:03 <fizzie> Vorpal: I splonked in an IIR resonator with what amounts to basically code injection earlier: (someone said it didn't work; but it worked for me; might not be quite legal JS therefore)
19:52:05 <fizzie> 128+600*r5(r4(r3(r2(r1(rg((t%40)==0?1:0)))))); }; var r1=r(710,50),r2=r(1100,70),r3=r(2450,110),r4=r(3300,250),r5=r(3750,200),rg=r(0,500); function r(F,BW) { var Z=8000,B=2*Math.exp(-3.14*BW/Z)*cos(2*3.14*F/Z),C=-Math.exp(-2*3.14*BW/Z),p1=0,p2=0; return function(x) { var p=(1-B-C)*x+B*p1+C*p2; p2=p1; p1=p; return p; };
19:52:12 <Vorpal> issue: pausing the sound playing in the web browser is kind of broken
19:52:16 <Vorpal> as in, does nothinmg
19:52:19 <Vorpal> nothing*
19:52:19 <elliott> wfm
19:52:22 <Vorpal> elliott: firefox?
19:52:25 <elliott> chrome
19:52:36 <elliott> fizzie: How... pleasing-sounding.
19:52:49 <elliott> fizzie: Can we do dubstep yet? We need to ruin it.
19:53:14 <fizzie> elliott: Well, it's a fixed-frequency pulse train through a cascade of resonators; it'd be more interesting with some LFO on the filter parameters.
19:53:33 * tiffany generates 5 minutes of one of these :p
19:53:44 <fizzie> Also at work with FF it actually started to play two copies at the same time when I ran it; then pausing actually only paused one of them.
19:53:53 <fizzie> Anyway, it's just 30 seconds.
19:54:09 -!- citiral has joined.
19:54:14 <citiral> Hello!
19:54:29 <Vorpal> fizzie: yes but your one was horrible. And the two copies explain it
19:54:33 <oerjan> `? welcome
19:54:38 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
19:54:56 <citiral> So I just found out about those awesome isoteric languages. Which are some of the best?
19:55:06 <tiffany> my harddrive is making noises ._.
19:55:10 <citiral> esoteric*
19:55:23 <Ngevd> That's all a matter of opinion
19:55:32 <citiral> HDD make noises. I would get worried if it didn't.
19:55:33 <Ngevd> I like Piet
19:55:54 <fizzie> Funge-98 is widely recognized as the most useful language for IRC bot writing there is.
19:55:54 <Vorpal> tiffany: so is mine sometimes. Very faint ones due to the rubber rings between the disk and the metal plates on the side of the disk bay.
19:55:57 <citiral> I prefer some like Befunge-93 and the likes, or a cellular automata one.
19:56:03 <elliott> citiral: My hard-drive doesn't make noises.
19:56:04 <oerjan> unlambda, underload
19:56:06 <elliott> fungot: Say hi to citiral.
19:56:07 <fungot> elliott: to, uhhh.... or even this very difficult issue is discussed, it should be deleted, not merged. but new england flood of may, 1765, curwen's only child, it's ancient history now...
19:56:09 <Vorpal> elliott: you have an SSD...
19:56:12 <fizzie> If you like Befunge:
19:56:13 <fizzie> ^source
19:56:13 <fungot> http://git.zem.fi/fungot/blob/HEAD:/fungot.b98
19:56:13 <Vorpal> of course it doesn't
19:56:14 <elliott> ^source
19:56:14 <fungot> http://git.zem.fi/fungot/blob/HEAD:/fungot.b98
19:56:17 <elliott> ^source
19:56:17 <fungot> http://git.zem.fi/fungot/blob/HEAD:/fungot.b98
19:56:19 <fizzie> elliott: Great minds and so on.
19:56:41 <tiffany> this music generator must be making firefox use a ridiculous amount of ram :/
19:56:41 <citiral> fungot is a bot?
19:56:41 <fungot> citiral: " and this is a new game. there is no particularly good human translation for this concept. a concept usually denoted by a single, savage thrust of her was certain that the noise was as a distress signal is
19:56:47 <Vorpal> citiral: yes
19:56:54 <Vorpal> citiral: written in an esolang
19:56:56 <citiral> Fungot, I LOVE YOU! :D
19:57:07 <elliott> It doesn't respond to people who miscapitalise it.
19:57:07 <fizzie> Sadly, he's case-sensitive.
19:57:13 <citiral> In Befunge-98 someone said?
19:57:15 <Vorpal> yes
19:57:19 <elliott> http://git.zem.fi/fungot/blob/HEAD:/fungot.b98
19:57:19 <fungot> elliott: just to help an fnord archive) this song " there had been a gorgeous sunset, and judged it was a million or ten million or ten million or ten million or ten million or ten million or ten million or ten million or ten million or ten million or ten million or ten million or ten million or ten million or ten million or ten million or ten million or ten million or ten million or ten million or ten million or ten million or
19:57:23 <citiral> Gotta check that one out.
19:57:26 <Vorpal> guh
19:57:29 <elliott> ^style
19:57:30 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot* homestuck ic irc jargon lovecraft nethack pa sms speeches ss wp youtube
19:57:32 <elliott> ^style irc
19:57:32 <fungot> Selected style: irc (IRC logs of freenode/#esoteric, freenode/#scheme and ircnet/#douglasadams)
19:57:38 <elliott> fungot: Impress citiral.
19:57:39 <fungot> elliott: ' fnord tulee fnord " hyv fnord" ja fnord fnord. kun fnord, muista fnord fnord ulos.
19:57:43 <fizzie> Haha.
19:57:48 <fizzie> That was the worst.
19:57:52 <elliott> Yes, that...
19:57:53 <fizzie> fungot: Shame on you.
19:57:54 <fungot> fizzie: fnord right, then. the mere existence of win32 is a crime called copyright crime. so maybe that won't be there in 1.11.x, sisc supports srfi-55, aka require-extension, which loads as fast as c
19:58:01 <elliott> "the mere existence of win32 is a crime called copyright crime."
19:58:02 <elliott> Classic.
19:58:07 <Vorpal> citiral: it uses some fingerprints for networking and such (fingerprints are loadable extensions the interpreter provides, iirc fungot uses SOCK, STRN, FING and TOYS)
19:58:07 <fungot> Vorpal: you could say that, but if you do...
19:58:09 <tiffany> hehe
19:58:19 <citiral> I lolled too at that one.
19:58:25 <tiffany> okay yeah killing firefox
19:58:28 <tiffany> if terminal would open
19:58:47 <Vorpal> oh, SCKE too
19:58:47 <fizzie> elliott: It was a bit of Finnish again; here's a translation: ' fnord comes fnord " good fnord" and fnord fnord. when fnord, remember fnord fnord out.
19:58:52 <tiffany> ff just opened with an unresponsive script: Script: resource://gre/modules/XPCOMUtils.jsm:329
19:58:53 <elliott> citiral: I concur with oerjan's nomination of Underload
19:59:28 <Vorpal> fizzie: hm "out". Why am I reminded of radio communications here XD
19:59:35 <elliott> `run echo "hi citral" >foo; cat foo; rm foo
19:59:37 <HackEgo> hi citral
19:59:52 <elliott> !c printf("hi citral\n");
19:59:57 <Vorpal> fizzie: replace the "fnord" with static and it sounds like a vital message that was jammed or something, and a key plot point in a movie
20:00:06 <fizzie> Vorpal: I don't think the Finnish word is used in that context though. It's more strictly "out" as in "exit from some place".
20:00:10 <oerjan> ^ul ((Underload rocks)!a(:^)*S):^
20:00:10 <fungot> ((Underload rocks)!a(:^)*S):^
20:00:11 <elliott> EgoBot? :/
20:00:15 <elliott> Come on, EgoBot.
20:00:15 <Vorpal> fizzie: well your translation I meant
20:00:17 <elliott> You can do it.
20:00:20 <Vorpal> well,*
20:00:28 <elliott> !c printf("hello\n");
20:00:32 <Vorpal> it is slow
20:00:41 <Vorpal> !help
20:00:42 <EgoBot> ​help: General commands: !help, !info, !bf_txtgen. See also !help languages, !help userinterps. You can get help on some commands by typing !help <command>.
20:00:45 <elliott> I think Ritchie left EgoBot.
20:00:45 <Vorpal> maybe?
20:00:47 <citiral> Egobot? :D
20:00:55 <Vorpal> !help languages
20:00:55 <EgoBot> ​languages: Esoteric: 1l 2l adjust asm axo bch befunge befunge98 bf bf8 bf16 bf32 boolfuck cintercal clcintercal dimensifuck glass glypho haskell kipple lambda lazyk linguine malbolge pbrain perl qbf rail rhotor sadol sceql trigger udage01 underload unlambda whirl. Competitive: bfjoust fyb. Other: asm c cxx forth sh.
20:00:58 <elliott> !c printf("SAY HELLO TO CITRIAL OR DIE\n");
20:01:06 <elliott> !c int main() { printf("SAY HELLO TO CITRIAL OR DIE\n"); }
20:01:12 <elliott> !sh echo PLS
20:01:15 <ais523> elliott: oh, I thought you were pinging me there
20:01:18 <Vorpal> hm something fishy going on here
20:01:19 <elliott> citiral: OK, maybe HackEgo just doesn't like you.
20:01:21 <elliott> Erm, EgoBot.
20:01:28 <ais523> but actually, Vorpal did via EgoBot
20:01:37 <ais523> hi citiral, btw
20:01:38 <Vorpal> ais523: I did !help
20:01:41 <ais523> Vorpal: I know
20:01:42 <elliott> > cycle "we have lambdabot too"
20:01:43 <lambdabot> "we have lambdabot toowe have lambdabot toowe have lambdabot toowe have lam...
20:01:44 <ais523> I have a ping on "INTERCAL"
20:01:46 <citiral> WHAT? I wanted to install GTA IV, and now it just prompts me with: Your system is incompatible with GTA IV. Please follow the following link: www.microsoft.com. o.O
20:01:47 <Vorpal> ais523: could be that language interpreters are broken
20:01:50 <Vorpal> !bf_txtgen test
20:01:55 <EgoBot> ​61 +++++++++++++[>+>+++++++++>++++++++><<<<-]>>-.>---.<-.+.<---. [32]
20:01:59 <fizzie> This is one botty channel.
20:02:00 <elliott> !sh echo yay
20:02:03 <Vorpal> hm
20:02:03 <ais523> citiral: does that actually link to Microsoft's homepage?
20:02:06 <elliott> Hmmph.
20:02:08 <ais523> if so, it doesn't seem particularly useful
20:02:15 <citiral> I'm not sure, it doesn't want to open the link.
20:02:27 <ais523> does it even try?
20:02:31 <citiral> Strange, considering I played gtaIV on my pc yesterday.
20:02:33 <ais523> or is it just the URL of Microsoft's homepage underlined?
20:02:36 <elliott> It isn't very confident in its suggestion.
20:02:41 <Vorpal> I played it a few days ago.
20:02:43 <citiral> It doesn't do shit. It just sits there, mocking me.
20:02:45 <elliott> It's like... ah... maybe don't click that.
20:03:21 <Vorpal> it is kind of fun, but gets boring quickly, you have to play the god damn storyline to unlock the whole map for screwing around in
20:03:26 <oerjan> !bf +++++++++++++[>+>+++++++++>++++++++><<<<-]>>-.>---.<-.+.<---.
20:03:30 <citiral> It might be protecting me from getting too little sleep.
20:03:35 <Ngevd> citiral, how did you come across isometric programming languages?
20:03:40 <Vorpal> and then you end up with friends you need to hang out with regularly or they stop liking you
20:03:43 <elliott> citiral: I can vouch for the redundancy of sle;a'sldgfhgbn.,n
20:04:08 <ais523> ^bf +++++++++++++[>+>+++++++++>++++++++><<<<-]>>-.>---.<-.+.<---.
20:04:08 <fungot> test.
20:04:10 <citiral> My dad told me about shakespearian. I got interested and googled it. And then I found a source of awesomness.
20:04:15 <ais523> fungot wins
20:04:15 <fungot> ais523: ( list-tail ' ( 1 2 3
20:04:27 <Ngevd> citiral, you don't live in Hexham, do you?
20:04:30 <citiral> Aha, if I run it in windowsXP compatibility mode, it does get to install.
20:04:35 <elliott> Ngevd: Oh god please no.
20:04:39 <citiral> I live in Belgium.
20:04:39 <elliott> I couldn't take it.
20:04:42 <ais523> elliott: it's worth finding out quickly
20:04:44 <Ngevd> Okay, no0t Hexham
20:04:46 <elliott> But do you live in Hexham, Belgium?
20:04:46 <ais523> oh good, crisis averted
20:04:57 <citiral> No, I live in overrepen, Belgium.
20:04:57 <ais523> citiral: there are two Hexhamers in the channel; everyone was very surprised
20:04:58 <Vorpal> citiral: it runs fine under windows 7 pro (64-bit) for me
20:05:01 <elliott> Wait, I have it on good authority that Belgium doesn't actually exist.
20:05:04 <elliott> This could be a cover.
20:05:13 * elliott greps /hexham/ on http://zapatopi.net/belgium/
20:05:23 <citiral> I had an illegal copy, which installed just fine, now I purchased it to play online, and it doesn't work...
20:05:24 <Vorpal> not on windows atm though. I prefer linux normally
20:05:26 <citiral> oh the irony.
20:05:32 <Vorpal> hah
20:06:01 <citiral> Hope installing it in compatibily mode doesn't screw with some registery entries.
20:06:08 <ais523> first result for "belgium hexham" is http://www.hexhamcourant.co.uk/news/news-at-a-glance/belgium-driver-s-wrong-turn-sparks-rescue-drama-1.764838?referrerPath=news/news-at-a-glance
20:06:12 <ais523> warning: sets tens of cookies
20:06:27 <elliott> The Courant is the best source for useless news ever.
20:06:27 <ais523> why does Firefox not have a "deny for session" option?
20:06:37 <ais523> if I don't want the first cookie, I probably don't want the second cookie either
20:06:40 <coppro> 3/win 7
20:06:45 <ais523> elliott: right, I forgot that you probably new it existed
20:06:48 <ais523> *knew
20:07:03 <ais523> I did write the silent k the first time round, just put it on the wrong word
20:07:13 <ais523> and then forgot to re-add it after deleting it
20:07:14 <elliott> Kcourant.
20:07:29 <elliott> Sounds like a KDE app.
20:08:00 <ais523> doesnt kanything that karbitrarily kstart with k ksound like a kde app?
20:08:14 <oerjan> kmaybe.
20:09:08 <Vorpal> <ais523> why does Firefox not have a "deny for session" option? <-- you mean the thing where you get a stack of "deny cookie?" from the same site? Utterly annoying that.
20:09:13 <Vorpal> what actually causes it?
20:09:36 <Vorpal> I mean, even if I select to remember the deny they are actually all opened before I get to click
20:09:37 <ais523> Firefox devs just not imagining that someone who wants to specifically allow/deny cookies might not want to save the preference for future sessoins
20:09:38 <ais523> *sessions
20:09:43 <ais523> it's just as bad with the allow options
20:09:53 <citiral> funbot!
20:09:56 <ais523> it's just that I'm more likely to allow cookies from a site permanently than once
20:09:58 <elliott> "Post 1, 2, 3: on x86-64, an int is generally 4 bits wide, just like on a regular x86 system."
20:10:07 <citiral> fungot!
20:10:07 <fungot> citiral: do you have
20:10:10 <ais523> elliott: Windows, clearly
20:10:12 <Vorpal> ais523: that is not the issue for me. I'm talking about where you get a whole stack of cookie windows *at once* so you have to click through every one of them
20:10:21 <elliott> ais523: yep, the famous four-bit Windows???
20:10:23 <ais523> Vorpal: that happens on both cases to me too
20:10:32 <ais523> elliott: the 8086 isn't actually a 4-bit processor
20:10:37 <ais523> and I don't think Windows runs on a 4086
20:10:37 <Vorpal> it is really annoying
20:10:40 <ais523> which I may have just invented
20:10:44 <Gregor> 4004 for the win 8-D
20:10:54 <ais523> Vorpal: extra annoying is that all the windows are modal
20:10:59 <ais523> and sometimes don't open in the right order
20:11:02 <Vorpal> ais523: relative firefox yeah
20:11:05 <ais523> so you have to figure out which one you have to click on first
20:11:09 <elliott> Gregor: I wonder if there's any 4004 emulators.
20:11:09 <oerjan> Gregor: EgoBot is borken okthxbye
20:11:18 <Vorpal> ais523: they open right on top for me
20:11:32 <ais523> Vorpal: same for me, but sometimes they open right on top in the wrong order
20:11:36 <Vorpal> so uh, if they were modal I couldn't handle it. Since they don't show up in the task bar either
20:11:41 <ais523> so you have to move them so as to find which one you have to click on next
20:11:43 <ais523> they're application-modal
20:11:44 <Vorpal> err, modal in wrong order I mean
20:11:46 <ais523> not system-modal
20:11:50 <citiral> Is there a big difference between befunge-93 and -98?
20:11:55 <ais523> citiral: yes
20:12:04 <ais523> -98 is a much larger language; -93 is more of a toy
20:12:05 <citiral> How big is big?
20:12:23 <ais523> well, -98 has massive library support (for an esolang)
20:12:24 <elliott> huge
20:12:32 <elliott> a -93 interpreter can be done in about two, three pages of code
20:12:33 <Vorpal> ais523: the only things that should be system modal would be dialogues like "are you sure you want to log out" or "enter password to open package manager"
20:12:35 <ais523> befunge-98 probably has the best library support of any esolang
20:12:39 <elliott> -98 takes a thousand lines in just about any language
20:12:41 <ais523> and -98 is pretty hard to implement
20:12:41 <elliott> and that's before fingerprints
20:12:47 <elliott> and those thousand lines are going to be wrong the first fifty times
20:12:59 <ais523> Vorpal: I disagree about either of those
20:13:00 <Gregor> -98 is a general-purpose programming language used for vital business logic of dozens of Fortune-500 companies. -93 is only used by Google.
20:13:11 <Vorpal> <elliott> -98 takes a thousand lines in just about any language <-- cfunge is about 10000 lines iirc
20:13:15 <ais523> in particular, log out confirmation dialog boxes, I often quickly do things in the background while they're open
20:13:22 <elliott> Vorpal: C isn't a language, and I said before fingerprints.
20:13:34 <Vorpal> elliott: ah
20:13:35 <elliott> "Is it possible to overclock this CPU to achieve higher speeds? General Heed (talk) 18:10, 28 August 2010 (UTC)" --[[Talk:Intel 4004]]
20:13:39 <citiral> Oh well, let's try IRP first then.
20:13:44 <elliott> oh dear
20:13:49 <citiral> :D
20:13:57 <ais523> citiral: just so you know, #irp exists as a honeypot for redditors
20:13:58 <Gregor> elliott: lol
20:14:03 <ais523> it took me a while to figure this out, incidentally
20:14:05 <Vorpal> elliott: also first 10 times unless you written a befunge-98 interpreter in another language before
20:14:24 <ais523> strangely, it spontaneously ended up fulfilling its original purpose, as some people mistook it for a channel about IRP and idled there, ready to act as an interp
20:14:24 <Vorpal> elliott: I mean, doing efunge was quite easy. I did end up redoing the funge space representation. That was about it.
20:14:31 <citiral> Please write an befunge-98 interpreter please.
20:14:34 <citiral> a*
20:14:38 <elliott> citiral: ~/Code/shiro
20:14:53 <ais523> there are quite a lot of befunge-98 interps around nowadays
20:14:57 <fizzie> elliott: A three-gigaherz 4004.
20:15:02 <ais523> and thanks to Deewiant's efforts in compliance testing, some of them even work
20:15:04 <elliott> fizzie: Liquid nitrogen cooled.
20:15:14 <elliott> ais523: ...to a different spec than is written :P
20:15:17 <citiral> But I got to go.
20:15:21 <ais523> bye, see you later
20:15:26 <elliott> Bye, see you NEVER.
20:15:29 <elliott> Everyone gets one visit to this chanenl.
20:15:30 <elliott> ONE
20:15:37 <citiral> Well, watch me!
20:15:43 <elliott> ais523: BAAAAAN
20:15:49 -!- citiral has left.
20:15:58 <ais523> elliott: I've seen nothing in citiral's behaviour that would make me want to ban him/her
20:16:06 <Vorpal> al: https://launchpad.net/cfunge
20:16:08 <Vorpal> err
20:16:11 <elliott> thanks al
20:16:13 <Vorpal> I removed that line
20:16:24 <Vorpal> elliott: I managed to delete half the line then hit enter
20:16:28 <Vorpal> and it remove some from the front
20:16:31 <Vorpal> wtf
20:16:44 <Ngevd> I'm a bit behind, but I once made a befunge-93 interpreter in /Scratch/
20:16:46 <ais523> heh, I assumed you were pinging yourself for a moment
20:16:53 <ais523> when I realised "citiral" also ended "al"
20:16:57 <Vorpal> ais523: right
20:16:58 <ais523> Ngevd: ouch
20:17:00 <fizzie> elliott: And 48 gigabytes of RAM. (The best thing to have in a thing with a 12-bit address bus.)
20:17:04 <Vorpal> what is Scratch?
20:17:10 <ais523> do you have anything vaguely corresponding to source-code, that's actually human-readable?
20:17:12 <ais523> Vorpal: Smalltalk VM
20:17:15 <Vorpal> ah
20:17:15 <Ngevd> Educational programming language aimed at under 12
20:17:25 <ais523> wait, no, that's Squeak
20:17:25 <Vorpal> fizzie: what has 48 GB RAM?
20:17:43 <fizzie> Vorpal: The 3-gigahertz 4004.
20:18:03 <Vorpal> lol
20:18:09 <Vorpal> (actually laughed out loud)
20:18:11 <Gregor> fizzie: fungot runs on a 3GHz 4004, doesn't it?
20:18:11 <fungot> Gregor: apart from the windows 95 and 98 setup cds
20:18:23 <Vorpal> as long as it isn't an AOL CD
20:18:25 <Vorpal> remember those?
20:18:41 <Vorpal> never saw one in real life. But they became rather infamous I seem to remember.
20:18:47 <ais523> Vorpal: I have seen one
20:18:47 <Gregor> AOL /CD/s? Try AOL floppies.
20:18:55 <Vorpal> heh
20:18:59 <ais523> gah, I'm trying to remember the password that was printed on it, now
20:19:15 <ais523> I think half of it was "CLENCH", it was two capitalised dictionary words separated by a hyphen
20:19:26 <CakeProphet> :o
20:19:51 <fizzie> They had ISP CDs here, though not AOL. I don't think there were too many for-free floppies, though you did use to get a software floppy with the contract.
20:19:58 <CakeProphet> PELVIC-CLENCH?
20:20:07 <ais523> elliott/Ngevd: is the Hexham Courant a serious newspaper?
20:20:12 <elliott> yes
20:20:12 <Ngevd> Yes
20:20:22 <ais523> hmm, good to know
20:20:22 <CakeProphet> ais523: serious as Hexam.
20:20:40 <CakeProphet> +h
20:20:48 <ais523> Hehxam?
20:20:52 <ais523> Hexamh?
20:20:55 <ais523> hHexam?
20:20:58 <Vorpal> I remember the ISP floppies that came with the first modem my parents had
20:21:21 <Vorpal> it had Netscape 2 for mac, PPP software for mac os 6 and mac os 7 and such things
20:21:28 <Vorpal> Eudora too
20:21:38 <ais523> I know when I was young, I was confused by all the companies that assumed that people's TVs and computers were in the same room as their telephones
20:21:49 <ais523> I remember running backwards and forwards across the house with a sheet of paper full of numbers
20:21:50 <fizzie> I remember our EUnet floppy came with at least a Trumpet Winsock copy, Mosaic 1-or-2.something, and some really random utilities.
20:22:01 <ais523> in order to do Microsoft's telephone activation service thing for Windows
20:22:03 <Vorpal> fizzie: even older heh
20:22:24 <Vorpal> ais523: that must have been recently
20:22:33 <Ngevd> The first time I used a computer would have been...
20:22:33 <Vorpal> why not use online activation
20:22:34 <ais523> Vorpal: early XP
20:22:36 <Ngevd> 1998-9 ish?
20:22:40 <ais523> and no internet connection, obviously
20:22:48 <Ngevd> It had a CLI
20:22:51 <Vorpal> ais523: by the time of xp and no dialup even?
20:22:52 <Vorpal> huh
20:22:57 <Ngevd> It was in our garage
20:23:03 <ais523> Vorpal: I /still/ have no Internet connection at home
20:23:16 <Vorpal> ais523: heh
20:23:29 <Vorpal> ais523: why?
20:23:30 <ais523> I'm kind-of surprised you didn't notice
20:23:38 <ais523> Vorpal: range of possible answers
20:23:45 <ais523> "I don't want one" is true, but badly explained
20:24:02 <Vorpal> ais523: I thought you finally had one. Must have confused you with some other person.
20:24:18 <Vorpal> finally got one*
20:24:18 <fizzie> Vorpal: It was the only Internet connection I've had that had the opportunity to make a "local call": you could sign a cheaper contract (something like 17p/min as opposed to 22p/min) for a connection that blackhole-routed everything going outside Finland.
20:24:20 <ais523> I have one at work
20:24:27 <ais523> and I'm not currently at work, although I am currently online
20:24:33 <Vorpal> fizzie: heh
20:24:37 <ais523> fizzie: that's amazing
20:24:38 <Vorpal> fizzie: I assume you didn't?
20:25:00 <Vorpal> <ais523> and I'm not currently at work, although I am currently online <-- so where are you then?
20:25:00 <ais523> I can understand "blackhole everything we don't have a peering agreement with"
20:25:06 <Vorpal> wifi hotspot?
20:25:07 <ais523> Vorpal: neither at work nor at home
20:25:12 <ais523> also, not a public connection
20:25:18 <ais523> I borrow from friends, mostly
20:25:28 -!- augur has quit (Remote host closed the connection).
20:25:39 <Vorpal> ais523: ah, you should try to borrow from neighbours. Then you could get internet at home
20:25:46 <fizzie> Vorpal: No, I think it was mostly meant e.g. for folks that only wanted Internet to connect to their company network.
20:25:55 <ais523> Vorpal: with their permission…
20:26:00 <Vorpal> ais523: obviously
20:26:13 <ais523> come to think of it, I'm the only person who actually knows how to find out the password on the connection
20:26:16 <fizzie> Or, well, I don't know. There wasn't *that* much of a web.
20:26:26 <ais523> nobody knows it off by heart because it's long and random hexadecimal
20:26:26 <Vorpal> ais523: that is why you would try to become friends with some suitable neighbours.
20:26:32 <ais523> but the computer has it memorized
20:26:37 <Vorpal> well yeah
20:26:45 <Vorpal> that tends to be the case
20:26:47 <fizzie> Presumably you could still send "international" email and read Usenet and so on.
20:26:48 <Vorpal> ais523: is it WEP?
20:26:51 <elliott> <ais523> "I don't want one" is true, but badly explained
20:26:58 <ais523> Vorpal: WPA1
20:27:09 <Vorpal> ais523: okay, then it would take a while to find out I guess
20:27:11 <ais523> so not actually secure, but not as bad as WEP, and a max-length password helps a bit
20:27:36 -!- elliott has quit (Remote host closed the connection).
20:27:42 <Vorpal> I really wish my access point at home supported WPA 2 Enterprise, I have to settle for WPA2
20:27:50 <variable> fizzie: back
20:28:20 <fizzie> variable: I don't have a real solution for you, but there's some things in the log.
20:28:23 <variable> fizzie: it seems your answer scrolled off <fizzie> variable: If you just don't specify "index" at all, it'll plot them all as separate lines just fine, but all the lines will be with the same color and have just one title. ---> first thing I see
20:28:26 <Vorpal> WPA2 PSK*
20:28:33 * variable could easily change the format though
20:28:42 <Vorpal> variable: what about the logs?
20:28:55 <Vorpal> (as linked in the topic)
20:29:03 <variable> oh right
20:29:04 * variable forgot
20:29:11 <Vorpal> variable: or your local logs of course
20:29:32 <variable> Vorpal: I don't log this channel because its logged itself :)
20:29:37 <Vorpal> right
20:30:00 <variable> I'm looking
20:31:12 <fizzie> variable: Search for "variable:"; all the stuff is pretty much grouped together there, near before what you last saw.
20:31:21 <variable> mkay
20:31:49 <variable> Vorpal: I also have a hg checkout of the logs apparently
20:32:07 <Vorpal> variable: nice
20:32:26 <Vorpal> variable: I have my logs in a local postgresql db for this channel (not for other channels though)
20:32:31 <Vorpal> useful for useless statistics
20:32:37 <Vorpal> and quick searching
20:32:42 <variable> yeah, I've been meaning to get that set up
20:33:02 <fizzie> variable: Anyway, the inability to only make multiple data series out of separate things physically listed in the "plot" command (as opposed to "all datasets in a multi-dataset file") is an annoying limitation of gnuplot; it might be circumventable, but I don't quite know how. Personally I've sometimes just manually listed things in the plot script, and at other times generated the plot script along with the data.
20:33:06 <Vorpal> variable: ask fizzie for some useful scripts. Pulls from the old clog archive rather than Gregor's archive though
20:33:20 <variable> mkay
20:33:34 <Vorpal> unless he updated his scripts
20:33:47 <variable> fizzie: I don't mind changing how the data gets formatted. I basically need to be able to plot how my modifications to the simulator help or hurt
20:35:54 <variable> oh - no hg logs of today :(
20:36:01 * variable looks at topic
20:36:42 <fizzie> variable: Yes, well, changing the datafile format only gets you so far. You can get the lines you want, but with a single "plot 'blah.dat' using ..." command, it's always going to end up being a single data series, so (a) all the lines get the same style (though there is a hack to give them different colors), and more importantly (b) they will have only one entry in the key/legend thing.
20:37:18 <variable> fizzie: I could use multiple 'plot' lines I guess?
20:37:20 <fizzie> 19:13:25: <fizzie> variable: It is awfully tricky to get multiple lines (with different titles) using only a single plot specifier. You almost get it if you separate the datasets (in your case, different testnames) with two newlines and then plot the complete file, but in that case all the lines end up in the same style. It is trivial if you don't mind doing "plot 'blah.data' ... index 0, 'blah.data' ... index 1, ..." with one command per each line, but that re
20:37:20 <fizzie> quires either fixin
20:37:20 <fizzie> 19:13:25: <fizzie> g the number of lines, or generating the plotscript along with the data. Here's an example of what that might look like: http://p.zem.fi/meud
20:37:27 <fizzie> That paste has an example of that sort of thing.
20:37:31 <variable> fizzie: yeah reading
20:37:47 <variable> http://p.zem.fi/meud
20:38:16 <fizzie> (An autogenerated random four-character name from the alphabet [0-9a-z], IIRC.)
20:38:18 <variable> fizzie: let me put slightly differently. Given that I have this set of data what would be the "correct" thing to do ?
20:39:48 <fizzie> variable: Uh, well. Modifying your script to print out "foo.data" and then "foo.plot" so you can just run "gnuplot foo.plot" is a reasonable solution, if not the prettiest. Of course there are other tools to plot things. A Pythonist might consider matplotlib, which is nice except it has a bit of a clunky interface.
20:40:47 <fizzie> (It half-assedly tries to emulate MATLAB's plotting tools for some unfathomable reason.)
20:41:31 <variable> fizzie: I was planning on using this into a "let me learn gnuplot" but yeah, other tools might work work
20:41:48 <variable> which tool do you find best / easiest for plotting benchmark data ?
20:42:31 <ais523> variable: I've never tried that using anything other than INTERCAL
20:42:56 <variable> ais523: o.O
20:43:05 <ais523> variable: I've never tried that using INTERCAL either
20:43:06 -!- pikhq_ has quit (Ping timeout: 245 seconds).
20:43:18 <variable> ais523: so I assumed :)
20:43:59 <fizzie> Uh, well. I tend to default to gnuplot for one-off things. I'd consider matplotlib if the script to deal with the data happened to already be in Python, since in that case it'd be a natural-ish fit. And, well... if the output was going in a LaTeX document, I might go with TikZ's plotting tools. And if the output was designed for web, I might go with Protovis or d3 or something.
20:44:06 <fizzie> With other things I'm not so familiar.
20:44:18 <variable> fizzie: output is going to latex
20:44:54 <variable> oooh
20:44:57 <variable> TikZ looks nice
20:45:17 <fizzie> It's more of a graphics library than plotting library, but it can be (ab)used for plots too.
20:45:39 <variable> http://www.texample.net/tikz/examples/line-plot-example/
20:45:42 <variable> exactly what I want
20:45:47 <variable> [ with a different scale ]
20:46:43 <fizzie> Well, yes, but that's got the different plotted series explicitly listed in there. If you're willing to do that, it's possible to use GNUplot. Though TikZ is nice in that there's absolutely no work in getting the output into the LaTeX doc; it's already there.
20:46:52 <fizzie> Away for a moment now.
20:47:25 <variable> fizzie: I'd prefer to have the data in an external file
20:47:29 <variable> but it isn't critical
20:48:30 <Vorpal> ais523: now you should try plotting with intercal
20:49:17 <Vorpal> generate a bmp file or something. If you have byte IO (iirc there is some intercal extension for that in c-intercal?).
20:49:56 <ais523> Vorpal: yes, and an incompatible one in CLC-INTERCAL
20:50:04 <Vorpal> right
20:50:09 <Vorpal> ais523: I forgot how they work.
20:50:16 <Vorpal> ais523: wasn't one based on the delta or some such?
20:50:18 <fizzie> (You can use external files with TikZ too.)
20:50:50 <ais523> Vorpal: the C-INTERCAL idea is, that all the possible bytes are written on a circular tape, and you have to work out how many positions to move it
20:50:54 <ais523> so it's effectively delta
20:51:02 <Vorpal> ais523: and the CLC one?
20:51:03 <ais523> except that one of input/output, I forget which, uses the other side of the tape
20:51:06 <ais523> so you have to reverse bits
20:51:07 <variable> fizzie: mkay. I'm taking a closer look then
20:51:13 <ais523> the CLC one is hard to easily explain
20:51:19 <Vorpal> ais523: give it a try?
20:51:27 <Vorpal> (please)
20:51:53 <ais523> http://smuggle.intercal.org.uk/manual/input_output.html#binary
20:52:02 <Vorpal> thanks
20:53:42 -!- pikhq has joined.
20:54:26 <Vorpal> "The current implementation does not check that the padding is sufficiently random, although this might well change in future."
20:54:28 <Vorpal> heh
20:54:32 <Vorpal> all ones is random
20:55:18 <Vorpal> ais523: anyway that IO system is in some ways crazier than the c-intercal one, and in other ways saner than it.
20:55:39 <ais523> they're both stateful IIRC
20:55:52 <Vorpal> oh, maybe I misunderstood the thing then
20:56:04 <ais523> or maybe I did
20:56:20 <ais523> there's a reason CLC-INTERCAL binary IO isn't implemented in C-INTERCAL
20:56:23 <Vorpal> ais523: anyway C-INTERCAL has another byte IO. The cfunge stuff could probably be used for that. Forgot how you sent values between them though
20:57:04 <ais523> Baudot doesn't have 256 different codepoints
20:57:17 <Vorpal> ais523: well of course?
20:57:25 <Vorpal> I looked at the binary IO section
20:57:38 <Vorpal> Alphanumeric I/O is different
20:57:42 <Vorpal> and mentions baudot
20:58:04 <Vorpal> ais523: or is baudot involved in the IFFI stuff?
20:58:16 <ais523> oh, no
20:58:21 <ais523> you can FFI to something with a sensible stdout
20:58:27 <ais523> C would probably make more sense than Funge-98
20:58:32 <Vorpal> well yeah
20:59:04 <Vorpal> ais523: cfunge has quite a sensible stdout and stdin though. Same sort of saneness as brainfuck mostly
20:59:15 <ais523> yep
20:59:30 <ais523> I'm including funges as "things with a sensible stdout"
20:59:45 <Vorpal> ais523: http://smuggle.intercal.org.uk/manual/input_output.html#numeric mentions ick and sick? Is that ick a different one than the C-INTERCAL one?
20:59:49 <Vorpal> if so, how confusing
21:00:08 <ais523> no, it's C-INTERCAL it's referring to there
21:00:52 -!- oerjan has quit (Remote host closed the connection).
21:00:59 <Vorpal> ais523: I guess "if it is ick or 1972, you get the overline like C-INTERCAL does" confused me. It sounded like "ick does the same as C-INTERCAL does" which would be kind of pointless to say if ick *was* C-INTERCAL
21:01:01 -!- oerjan has joined.
21:01:24 <ais523> oh, CLC-INTERCAL has a C-INTERCAL emulation mode
21:01:28 <Vorpal> ah
21:01:32 <ais523> which is also called ick
21:01:32 <Vorpal> makes more sense
21:01:46 <ais523> C-INTERCAL has a CLC-INTERCAL emulation mode called -X
21:01:50 <Vorpal> ais523: it installs that as a binary name?
21:01:53 <ais523> no
21:01:53 <Vorpal> or as a parameter?
21:01:55 <Vorpal> ah
21:01:55 <ais523> preload name
21:02:00 <Vorpal> uh?
21:02:09 <Vorpal> what?
21:02:13 <ais523> Vorpal: to answer that I'd have to explain how CLC-INTERCAL works
21:02:21 <ais523> which I'm really not up to right now
21:02:27 <Vorpal> ais523: oh you mean the stuff that it is kind of like non-time reversed feather?
21:02:30 <Vorpal> right
21:02:37 <Vorpal> err, time traveling*
21:03:00 <ais523> I'm actually not sure if that's involved or not
21:03:08 <Vorpal> time travel?
21:03:09 <ais523> not because I'm unaware of how CLC-INTERCAL works, I just can't figure it out
21:03:14 <ais523> no, self-modification
21:03:22 <Vorpal> I thought you said it was doing that
21:03:23 <Vorpal> hm
21:03:33 <Vorpal> like it started out as a perl script and turned into intercal at the end
21:03:36 <Vorpal> or something
21:03:43 <ais523> no
21:03:52 <ais523> think of the perl script as a VM
21:03:55 <Vorpal> ah right
21:03:56 <ais523> that runs IACC programs
21:04:01 <Vorpal> ah yes, now I remember
21:04:07 <ais523> IACC is capable of self-modifying itself into INTERCAL
21:04:08 <Vorpal> was ages ago I last looked into it
21:04:23 <Vorpal> ais523: so then self modification is clearly involved
21:04:59 <ais523> yes
21:05:07 <ais523> but self-modification doesn't necessarily have anything to do with Feather
21:05:14 <Vorpal> oh
21:05:30 <Vorpal> I have a question: does anyone know why it was implemented like that? It seems a fairly stupid way to do it. Over-complicated. Is that perhaps the reason?
21:05:56 <ais523> partly for flexibility
21:06:07 <ais523> oh, the IACC interp is also written in IACC, incidentally
21:06:13 <Vorpal> right
21:06:20 <ais523> so CLC-INTERCAL ships with iacc.iacc because otherwise you could never get started
21:06:56 <Vorpal> ais523: you say IACC interpreter? Wouldn't it compile to bytecode? Or what role does the perl vm play?
21:07:13 <ais523> anyway, a preload is an iacc file that gets compiled/run (there isn't much of a distinction between the two in CLC-INTERCAL) before the program is compiled
21:07:22 <Vorpal> yeah
21:07:45 <ais523> Vorpal: don't try to make a distinction between "compile" and "run" in CLC-INTERCAL, you won't get very far
21:07:50 <Vorpal> okay
21:07:58 <ais523> because it JTLs
21:08:06 <Vorpal> JTL?
21:08:07 <ais523> it's a bit like JITting, except more confusing
21:08:13 <Vorpal> oh too late
21:08:15 <Vorpal> now I remember
21:08:37 <Vorpal> ais523: well, the iacc.iacc must be executed by *something* able to interpret it. You can't escape that.
21:08:40 <ais523> but basically, the compiler mostly only runs at runtime
21:08:57 <ais523> wait, it's iacc.io that gets shipped
21:09:01 <Vorpal> ah
21:09:05 <ais523> which is the iacc compiler compiled, by itself, to bytecode
21:09:09 <Vorpal> right
21:09:13 <Vorpal> that makes far more sense
21:09:15 <ais523> the bytecode mostly consists of commands to run the compiler, IIRC
21:10:14 <ais523> (this sort of thing explains how nobody knows how CLC-INTERCAL handles operator precedence, incidentally; I ran a few tests on it to try to determine it experimentally, but I can't remember the results)
21:10:34 <Vorpal> ais523: not even the author?
21:10:48 <ais523> yep; he thought he did once, but then changed his mind
21:11:06 <Vorpal> besides, you need the same operator precedence as the original intercal. Or stuff wouldn't work
21:11:12 <Vorpal> so that trivially gives the answer
21:11:30 <ais523> Vorpal: have you /seen/ the operator precedence table in the original INTERCAL?
21:11:36 <Vorpal> ais523: nope
21:11:37 <Vorpal> tell me
21:11:43 <Vorpal> ais523: is it not there?
21:11:45 <ais523> let me find it
21:11:55 <ais523> there is one, but it's empty
21:12:03 <Vorpal> ais523: ah...
21:12:13 <Vorpal> ais523: so what operator precedence does it in fact use?
21:12:31 <Vorpal> some tests on the original should help there
21:12:43 <ais523> http://www.catb.org/~esr/intercal/intercal.ps page 11
21:12:53 <ais523> also, the original mostly isn't available
21:13:08 <ais523> someone came on alt.lang.intercal once to say that they still had a paper copy of it, which they were willing to scan in
21:13:10 <ais523> but it never happened
21:13:14 <CakeProphet> http://www.youtube.com/watch?v=98AKFQkaWJM
21:13:17 <CakeProphet> my region of the country
21:13:22 <CakeProphet> has a lot of excellent individuals.
21:13:26 <ais523> C-INTERCAL's precedences are the same as the ones experimentally determined from CLC-INTERCAL
21:13:27 <CakeProphet> bright young lads.
21:13:31 <Vorpal> ais523: right.
21:13:43 <ais523> the general advice is to always use explicit sparkears so that it doesn't matter
21:13:49 <Vorpal> ais523: what about example programs from the original?
21:13:59 <Vorpal> or the manual
21:14:01 <ais523> they always use explict sparkears
21:14:04 <Vorpal> ah
21:14:15 <Vorpal> maybe there wasn't any precedence ?
21:14:40 <Vorpal> brb
21:14:47 <ais523> Vorpal: if I was the sort of person who generally facepalmed, I would be facepalming right now
21:14:57 <ais523> it indeed doesn't have precedence, that's the point
21:15:05 <ais523> it does not explain what #1~#2~#3 means, though
21:15:35 <ais523> (oh, and IIRC, C-INTERCAL doesn't have precedence, just associativity)
21:16:06 -!- ive has quit (Ping timeout: 252 seconds).
21:16:10 <ais523> (in that all operators are in the same precedence band if they have the same arity)
21:19:17 -!- Patashu has joined.
21:19:55 <Vorpal> <ais523> it does not explain what #1~#2~#3 means, though <-- it might, depending on the parser. If it was something similar to yacc maybe they just let shift/reduce sort it out?
21:20:21 <ais523> was yacc around in 1972?
21:20:35 <Vorpal> ais523: no idea. But I said "something similar to"
21:20:58 <Vorpal> ais523: and what language was the original written in?
21:21:04 <ais523> SPITBOL
21:21:23 <ais523> (I'm not sure if even C was around in 1972, incidentally)
21:21:47 <Vorpal> ais523: well, were there any parser generators for SPITBOL?
21:22:06 <ais523> how should I know?
21:22:41 <Vorpal> well you knew what the language in use was, you knew more than me, you might have known. I had no indication you didn't know until your reply
21:23:09 -!- Ngevd has quit (Ping timeout: 248 seconds).
21:24:06 -!- augur has joined.
21:29:31 <oerjan> i thought snobol was essentially the first parsing language, or something like that
21:29:50 <oerjan> (spitbol is an implementation of it)
21:32:28 <oerjan> "SNOBOL4 patterns subsume BNF grammars, which are equivalent to context-free grammars and more powerful than regular expressions."
21:32:29 -!- ive has joined.
21:34:43 <pikhq> ais523: C was 1973, so. :)
21:34:55 <ais523> pretty close
21:35:08 <ais523> wow, INTERCAL predating C is pretty hard to imagine
21:35:08 <pikhq> Though, of course, its ancestry goes back a bit further.
21:35:30 <pikhq> It's not like Thompson and Ritchie got together one day in 1973 and went "Let's make C", and it was so.
21:35:30 <CakeProphet> any idea why C became so popular?
21:35:31 <ais523> yep, I assume INTERCAL was around at the same time as B, in that case
21:35:35 <ais523> CakeProphet: UNIX
21:35:48 <CakeProphet> ah
21:36:29 <oerjan> "A SNOBOL pattern can be very simple or extremely complex. A simple pattern is just a text string (e.g. "ABCD"), but a complex pattern may be a large structure describing, for example, the complete grammar of a computer language. It is possible to implement a language interpreter in SNOBOL almost directly from a Backus-Naur form expression of it, with few changes. Creating a macro assembler and an interpreter for a completely theoretical piece of hardwa
21:36:54 <ais523> oerjan: sounds surprisingly like Perl 6 regexen
21:36:57 <oerjan> hardware could take as little as a few hundred lines, with a new instruction being added with a single line.
21:37:54 <ais523> well of course, completely theoretical hardware is often easier to implement than practical hardware
21:38:00 <ais523> because it's mostly invented by mathematicians
21:39:03 <CakeProphet> ais523: more like discovered. bahahahahahaha.
21:39:15 <CakeProphet> (I would say invented too.)
21:39:20 * oerjan swats CakeProphet -----###
21:42:08 <oerjan> "That made it clear that we needed another name!! We sat and talked and drank coffee and shot rubber bands and after much too much time someone said -- most likely Ralph -- "We don't have a Snowball chance in hell of finding a name". All of us yelled at once, "WE GOT IT -- SNOBOL" in the spirit of all the BOL languages. We then stretched our mind to find what it stood for."
21:42:28 <CakeProphet> oerjan: I'm sure that's how it happened
21:42:36 <CakeProphet> they were all just "SNOBOL!!!!" spelled just like that.
21:44:30 -!- zzo38 has joined.
21:48:42 <zzo38> Good?
21:48:53 <CakeProphet> good?
21:48:56 <CakeProphet> good
21:48:58 <CakeProphet> good is good
21:49:00 <zzo38> ?
21:49:01 <zzo38> OK
21:55:36 <CakeProphet> zzo38: do you allow beholders as PCs in your campaigns?
21:56:13 -!- hagb4rd2 has quit (Ping timeout: 248 seconds).
22:00:55 <zzo38> CakeProphet: I would if I could determine the level adjustment to use.
22:01:16 <zzo38> But normally I do not, because no level adjustment is listed.
22:03:32 <zzo38> Do *you* allow it?
22:05:36 <CakeProphet> I don't play D&D, so...
22:05:48 <CakeProphet> but I played a hack and slash MUD where beholders were playable characters, and enjoyed playing a beholder, so...
22:05:53 <CakeProphet> it's something I'd possibly enjoy in D&D
22:06:21 <zzo38> Well, I am not the DM of the anyways, however.
22:06:44 <zzo38> But it is not permitted normally because there is no level adjustment specified.
22:07:52 <zzo38> (However, in Icosahedral RPG, all creatures have the number of pseudolevels specified)
22:08:39 <CakeProphet> zzo38: I would assume it would be because they're abberations and thus don't traditionally fit the whole adventurer model.
22:08:42 <pikhq> zzo38: It's actually entirely feasible to play races without named level adjustments.
22:09:15 <pikhq> zzo38: The hit die simply become levels in the race.
22:10:06 <CakeProphet> zzo38: like, what reason would a beholder have for being in a campaign with traditional D&D characters?
22:10:07 <zzo38> pikhq: No LA is different from LA=0 (all races in player's handbook implicitly have LA=0)
22:10:53 <zzo38> CakeProphet: Use your imagination! It doesn't matter if they are aberrations or not. I myself play monster character; but always by LA.
22:10:58 <CakeProphet> zzo38: unless, of course, it was a non-standard beholder.
22:10:59 <pikhq> zzo38: Still, you can fudge it easy.
22:11:26 <zzo38> pikhq: Yes, the book Savage Species has ideas about determining what the LA value should be.
22:11:35 <pikhq> Ah, right, that's the book.
22:11:45 <pikhq> Good stuff.
22:11:54 <CakeProphet> disintegrate objects, transmute flesh to stone, cause sleep, slow the motion of objects or beings, charm animals, charm humans, cause death, induce fear, levitate objects, and inflict serious wounds
22:12:00 <CakeProphet> cause death, that's a good magical power.
22:12:09 <CakeProphet> I assume levitate is how they move.
22:12:15 <pikhq> Yup!
22:12:26 <zzo38> It depends what version.
22:12:59 <CakeProphet> I recall in the MUD I played instead of wield weapons with limbs like most races you use the levitation eye.
22:13:06 <CakeProphet> *wielding
22:13:38 <zzo38> In addition, I invented a feat allowing you to change one magical power to a different one (you must select a the time you select the feat, after which it is permanent) (this feat can also be used with NPC beholders, for example, if the DM makes a strange challenge)
22:13:53 <zzo38> (There are restrictions on which spells are selectable, though)
22:15:20 <CakeProphet> I suppose a Spectator would be the most convincing kind of playable beholder
22:15:24 <CakeProphet> since they're apparently somewhat friendly.
22:17:13 <Vorpal> CakeProphet: I pick chaotic evil
22:17:16 <Vorpal> ;P
22:17:37 <zzo38> Fine, pick whatever alignment you want
22:17:59 <Vorpal> zzo38: just arguing that non-friendly playable beholder might make sense too
22:18:27 <CakeProphet> perhaps if they had an ulterior motive that required them to not eat the party members in their sleep. :P
22:18:31 <zzo38> Vorpal: Yes, it can; and anyways, individuals also differ, especially player characters since player characters are exceptional anyways
22:18:48 <Vorpal> which RPG is this anyway?
22:19:15 <zzo38> CakeProphet: Maybe. But it can also be due to having other thing to eat
22:19:59 <CakeProphet> certainly a beholder would have to be non-traditional to be a player character though, since their mindset is to destroy anything that isn't the same kind of beholder as they.
22:20:27 <CakeProphet> but that's fine. that would be interesting.
22:20:34 <zzo38> CakeProphet: Yes; that much would almost always be the case.
22:20:47 <CakeProphet> therefore, I get 20 eyestalks. :P
22:21:00 <zzo38> But it is OK since player characters are supposed to be exceptional anyways, so it is OK.
22:21:16 <zzo38> CakeProphet: Actually, to get 20 eyestalks maybe you need to increase the LA then?
22:21:24 <CakeProphet> I would think so.
22:21:31 <CakeProphet> 5 of them are the "cause death" kind. :P
22:21:33 <zzo38> But I suppose it could be valid to do so.
22:22:20 <CakeProphet> 4 eyestalks (and the anti-magic center eye) would be a more reasonable level adjustment.
22:22:45 <zzo38> The level adjustment has to be a number.
22:22:54 <CakeProphet> ere, right. I'm saying.
22:22:55 <zzo38> Such as +4 or +10 or whatever.
22:23:01 <CakeProphet> that kind of beholder would have a more reasonable level adustment.
22:23:02 <zzo38> And there is racial HD as well.
22:23:27 <zzo38> O, that is what you are saying; yes I think you are correct.
22:23:38 <CakeProphet> also, do beholders have classes? does that make sense?
22:23:51 <zzo38> They can have classes as much as anyone could, I suppose.
22:24:00 <zzo38> But if racial HD is at least 1, it is not required.
22:27:33 * CakeProphet imagines a beholder templar.
22:30:34 <CakeProphet> beholder necromancer would be fun.
22:34:34 -!- nooga has quit (Ping timeout: 252 seconds).
22:36:28 <zzo38> I invented a collection of documents for a new campaign setting for D&D 3.5e, with different locations, gods, planes, etc. It also has some rule variants.
22:37:26 <zzo38> Different classes get different number of action points. There are a few additional penalties for resurrection, but all are suppressed if the caster sacrifices his life; doing so also allows resurrecting nonwilling creatures.
22:38:40 <zzo38> Time on the Death plane runs at double speed (which is the reason for some of the aging effects of resurrection). The Astral plane is infinite dimensional (in both time and in space), and touches all other planes (both inner and outer) at every point of the Astral plane. The Astral plane counts as neither inner nor outer.
22:40:00 <zzo38> Alignment entries and alignment subtypes of creatures are not used. Any creature is just as likely to be of any alignment as it is of any other. [Making the game more difficult] Exceptions include: * Mindless undead, which never have good alignment * Animals and other creatures with Int<3 or no Int score and have an entry of Always Neutral, which are actually always NN
22:40:09 <zzo38> * Angels, devils, and demons, with alignment subtypes, and have the Outsider type, which use the alignment entries specified (although there are still extremely rare possibilities to change alignment)
22:40:24 <zzo38> However, the alignment listed in the book is what many inexperienced humans who deal with this stuff often believe (it is unknown exactly why this is, however). Spells that detect alignments usually operate on the target's current actions. The aura level for past actions is decreased by 1 every 12 hours.
22:40:42 <zzo38> Some notable groups in the campaign world include: *
22:41:12 <zzo38> Some notable groups in the campaign world include: * The Spanish Inquisition * Librarians Against Monsters * Librarians Against Librarians Against Monsters * Special Artifact Guild * The Ancient Wizard Society
22:42:24 <zzo38> The prime material plane is the same as the etherial plane indexed 0, while the normal etherial plane is the etherial plane indexed 1. Every one of them has its own shadow plane.
22:43:03 <Vorpal> zzo38: oh so this is a comical setting?
22:43:21 <zzo38> Vorpal: No, it is just a new setting. There are a few comical things in it, I suppose.
22:43:33 <Vorpal> zzo38: the Monty Python reference above for example
22:43:44 <zzo38> Yes it does include one Monty Python reference.
22:44:14 <zzo38> The rules used, though, can be used with any setting even if you change things such as removing the Monty Python stuff and so on, even though it is standard listed, you are not required to use it.
22:48:10 <zzo38> Actually I designed some of the things in the setting based on my Super ASCII MZX Town series of computer games. The Spanish Inquisition is found in both Part I and Part II, while Librarians Against Monsters (and Librarians Against Librarians Against Monsters) is only Part II.
22:57:08 -!- pumpkin has joined.
22:57:34 -!- pumpkin has changed nick to copumpkin_.
22:59:36 -!- SgeoN1 has joined.
23:00:11 -!- copumpkin has quit (Ping timeout: 245 seconds).
23:01:49 -!- ais523 has quit (Ping timeout: 248 seconds).
23:02:14 <SgeoN1> My PHP professor doesn't know PHP.
23:02:14 -!- copumpkin_ has changed nick to copumpkin.
23:02:41 <SgeoN1> His example used array_values on a regular array...
23:03:02 <SgeoN1> Cue arguments between a classmate and him
23:03:56 <SgeoN1> Oh, n/m
23:04:24 -!- SgeoN1 has quit (Read error: Connection reset by peer).
23:04:40 -!- SgeoN2 has joined.
23:08:16 -!- sllide has quit (Read error: Connection reset by peer).
23:08:32 -!- evincar has joined.
23:18:14 <CakeProphet> SgeoN2: what do you mean n/m? was it not a regular array?
23:20:33 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
23:23:03 <CakeProphet> wow, higher order functions in PHP
23:23:05 <CakeProphet> are amazing
23:23:18 <CakeProphet> array_filter($array1, "odd");
23:23:20 <CakeProphet> so good.
23:28:12 <shachaf> $n = "array1"; array_filter($$n, "odd");
23:29:12 -!- SgeoN2 has quit (Ping timeout: 258 seconds).
23:29:42 -!- SgeoN1 has joined.
23:29:49 <SgeoN1> It was processed with aarray_unique
23:30:02 <SgeoN1> array
23:30:14 <oerjan> aamazing
23:30:20 -!- SgeoN1 has quit (Read error: Connection reset by peer).
23:30:48 -!- SgeoN1 has joined.
23:36:04 <SgeoN1> Fun fact: array_unique does not renumber indexes
23:36:50 <CakeProphet> here's array_unique in perl. my %seen; @array = grep {!$seen{$_}++} @array
23:37:30 <CakeProphet> except it renumbers indices.
23:37:45 <CakeProphet> and is mutable (I'm guess array_unique is not?)
23:37:52 <CakeProphet> er an immutable operation
23:37:52 <CakeProphet> I mean
23:38:12 <CakeProphet> not in-place? what is the term for that.
23:38:53 <oerjan> pure
23:39:12 <CakeProphet> sure that orks.
23:39:14 <CakeProphet> +w
23:39:24 <oerjan> although i hesitate to use that term for the above code
23:39:24 <CakeProphet> except it's... not really pure because it uses a hash table.
23:39:33 <CakeProphet> and mutably updates said table
23:39:48 <oerjan> well it just uses an implicit ST monad ;P
23:39:54 <CakeProphet> ah yes of course.
23:42:01 -!- copumpkin has joined.
23:42:30 <CakeProphet> (notice the infection of Haskell mind virus in its final stage. It won't be long before oerjan degenerates into a non-sentient pile of fleshy finger trees.)
23:42:56 <oerjan> yeah elliott already did, have you seen that picture?
23:43:06 <CakeProphet> er, no.
23:43:21 <CakeProphet> I thought something was up
23:43:24 <oerjan> i'm afraid i didn't save the link
23:43:24 <CakeProphet> he's been acting a little strange.
23:43:29 <CakeProphet> maybe it's just the teenage hormones.
23:44:08 <oerjan> `log elliot[t]> .*finger tree.*http
23:44:40 <HackEgo> 2011-05-13.txt:06:20:31: <elliott> i drew a finger tree http://i.imgur.com/sRyCi.png
23:44:54 <CakeProphet> oh god.
23:45:16 <CakeProphet> tragic.
23:45:33 <CakeProphet> looks more like a cyclic graph...
23:45:54 <oerjan> don't you mean acyclic, it's a tree after all
23:46:04 <CakeProphet> no it has fingers pointing downward what's up with that.
23:46:26 <CakeProphet> I think it has cycles, dude.
23:46:40 <CakeProphet> bro. man.
23:46:41 <oerjan> ok
23:46:48 <CakeProphet> sir.
23:47:12 <CakeProphet> comrade sir you need to dudechill, bro.
23:47:35 <oerjan> jolly good, yo
23:47:37 <CakeProphet> brofessional brogrammers.
23:49:12 <CakeProphet> for(@array) { delete $_ if !$seen{$_}++ }
23:49:15 <CakeProphet> would give you the PHP semantics.
23:50:04 <CakeProphet> er...
23:50:11 <CakeProphet> for(@array) { delete $_ if $seen{$_}++ }
23:50:16 <CakeProphet> for(0..$#array) { splice @array, $_, 1 if $seen{$_}++ }
23:50:23 <CakeProphet> would be inplace and reordering indices.
23:55:49 <CakeProphet> http://search.cpan.org/~genie/Tie-LazyList-0.05/LazyList.pm
23:55:51 <CakeProphet> weeeeee
23:57:27 <CakeProphet> I don't think you really get much out of using that package though.
23:58:40 -!- derdon has quit (Remote host closed the connection).
23:59:08 <CakeProphet> REHash is interesting. It lets you find hash keys by regex.
23:59:30 <CakeProphet> but that's... basically just a grep.
23:59:55 <CakeProphet> er, well, a map actually.
2011-10-19
00:01:47 <CakeProphet> !perl %t = ('a','b','c','d'); print map {/[ab]/?($_, $t{$_}):()} keys %t
00:01:59 <CakeProphet> :(
00:02:18 <CakeProphet> EgoBot: WHYYYYYY
00:02:30 <CakeProphet> `run perl -e '%t = ('a','b','c','d'); print map {/[ab]/?($_, $t{$_}):()} keys %t'
00:02:34 <HackEgo> ab
00:03:01 <CakeProphet> `run perl -e '%t = (a=>1,b=>2,c=>3,d=>4); print map {/[ab]/?($_, $t{$_}):()} keys %t'
00:03:03 <HackEgo> a1b2
00:08:26 <CakeProphet> Perl: rocking concatMap since 1994.
00:10:24 <CakeProphet> I'm guessing concatMap was around back in Haskell 1.0 though, right?
00:12:23 <CakeProphet> definitely before 98
00:13:11 -!- pikhq_ has joined.
00:13:15 -!- pikhq has quit (Ping timeout: 256 seconds).
00:13:29 <Madoka-Kaname> :t concatMap
00:13:30 <lambdabot> forall a b. (a -> [b]) -> [a] -> [b]
00:13:45 <Madoka-Kaname> :t flatten . map
00:13:46 <lambdabot> Couldn't match expected type `Tree a'
00:13:46 <lambdabot> against inferred type `[a1] -> [b]'
00:13:46 <lambdabot> Probable cause: `map' is applied to too few arguments
00:13:50 <Madoka-Kaname> :s
00:13:54 <Madoka-Kaname> @hoogle [a] -> [a]
00:13:55 <lambdabot> Prelude cycle :: [a] -> [a]
00:13:55 <lambdabot> Prelude init :: [a] -> [a]
00:13:55 <lambdabot> Prelude reverse :: [a] -> [a]
00:14:06 <Madoka-Kaname> @hoogle [[a]] -> [a]
00:14:06 <lambdabot> Prelude concat :: [[a]] -> [a]
00:14:06 <lambdabot> Data.List concat :: [[a]] -> [a]
00:14:07 <lambdabot> Data.List intercalate :: [a] -> [[a]] -> [a]
00:14:12 <Madoka-Kaname> :t concat . map
00:14:13 <lambdabot> Couldn't match expected type `[[a]]'
00:14:13 <lambdabot> against inferred type `[a1] -> [b]'
00:14:13 <lambdabot> Probable cause: `map' is applied to too few arguments
00:14:20 <CakeProphet> Madoka-Kaname: note that concatMap is >>= for the list monad. (if you didn't already know...)
00:14:36 <Madoka-Kaname> Well, I know it's flatMap in Scala, but...
00:14:51 <Madoka-Kaname> @pl (\f l -> concat . map f l)
00:14:51 <lambdabot> ((join .) .) . map
00:15:18 <CakeProphet> Madoka-Kaname: that's not how precedence works.
00:15:38 <Madoka-Kaname> @pl (\f -> concat . map f)
00:15:39 <lambdabot> (=<<)
00:15:43 <Madoka-Kaname> uh
00:15:45 <Madoka-Kaname> oh
00:15:47 <CakeProphet> @pl (\f l -> (concat . map f) l)
00:15:48 <lambdabot> (=<<)
00:16:00 <CakeProphet> > (`replicateM` "abc") =<< [0..]
00:16:01 <lambdabot> ["","a","b","c","aa","ab","ac","ba","bb","bc","ca","cb","cc","aaa","aab","a...
00:16:13 <CakeProphet> one of my favorites.
00:16:25 <shachaf> More than filterM (const [True,False])?
00:16:36 <CakeProphet> yes, though that's another good one.
00:16:40 <Madoka-Kaname> :t replaceM
00:16:41 <lambdabot> Not in scope: `replaceM'
00:16:45 <Madoka-Kaname> :t replicaeM
00:16:46 <lambdabot> Not in scope: `replicaeM'
00:16:48 <Madoka-Kaname> :t replicateM
00:16:49 <lambdabot> forall (m :: * -> *) a. (Monad m) => Int -> m a -> m [a]
00:16:56 <CakeProphet> @src replicateM
00:16:57 <lambdabot> replicateM n x = sequence (replicate n x)
00:17:45 <CakeProphet> > sequence "abc"
00:17:46 <lambdabot> Couldn't match expected type `m a'
00:17:46 <lambdabot> against inferred type `GHC.Types...
00:17:47 <CakeProphet> er
00:17:51 <CakeProphet> > sequence ["abc"]
00:17:54 <lambdabot> ["a","b","c"]
00:17:56 <CakeProphet> > sequence ["abc","abc"]
00:17:57 <lambdabot> ["aa","ab","ac","ba","bb","bc","ca","cb","cc"]
00:18:01 <CakeProphet> > sequence ["abc","abc","abc"]
00:18:02 <lambdabot> ["aaa","aab","aac","aba","abb","abc","aca","acb","acc","baa","bab","bac","b...
00:18:05 <CakeProphet> and so on.
00:18:14 <Madoka-Kaname> > sequence [1..]
00:18:15 <lambdabot> No instance for (GHC.Show.Show (m [a]))
00:18:15 <lambdabot> arising from a use of `M69561570...
00:18:18 <Madoka-Kaname> > sequence [[1..]]
00:18:18 <lambdabot> [[1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16],[17...
00:18:31 <shachaf> > head $ replicateM 1000000 [0..]
00:18:33 <lambdabot> *Exception: stack overflow
00:18:33 <shachaf> :-(
00:18:59 <Madoka-Kaname> > replicateM 10 [0..]
00:19:00 <lambdabot> [[0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,1],[0,0,0,0,0,0,0,0,0,2],[0,0,0,0...
00:19:04 <CakeProphet> Madoka-Kaname: do you know what replicate does?
00:19:11 <Madoka-Kaname> :t replicate
00:19:12 <lambdabot> forall a. Int -> a -> [a]
00:19:13 <CakeProphet> > replicate 3 4
00:19:14 <Madoka-Kaname> Yep.
00:19:14 <lambdabot> [4,4,4]
00:19:53 <CakeProphet> > sequence [[1,2,3],[4,5,6]]
00:19:54 <lambdabot> [[1,4],[1,5],[1,6],[2,4],[2,5],[2,6],[3,4],[3,5],[3,6]]
00:20:06 <CakeProphet> > sequence [[1,2,3],[4,5,6,7]]
00:20:06 <lambdabot> [[1,4],[1,5],[1,6],[1,7],[2,4],[2,5],[2,6],[2,7],[3,4],[3,5],[3,6],[3,7]]
00:20:54 <CakeProphet> I can't tell which part of (`replicateM` "abc") =<< [0..] is the most clever
00:20:57 <CakeProphet> I guess the replicateM...
00:21:41 <CakeProphet> it's a tie between the sequence and replicate... they are both used cleverly
00:23:58 <CakeProphet> Madoka-Kaname: some fun things I've done with that bit of code: http://sprunge.us/gSSO
00:24:33 <Madoka-Kaname> ..
00:24:35 <Madoka-Kaname> =p
00:28:35 <CakeProphet> er unbalance paren on the end of balancedBrackets
00:28:55 <CakeProphet> er, no
00:28:56 <CakeProphet> nevermind :P
00:34:27 -!- SgeoN1 has quit (Quit: Bye).
00:42:09 -!- ive has quit (Ping timeout: 256 seconds).
00:43:03 <zzo38> Inappropriate Keys Sold Here
01:07:33 <zzo38> Don't ever think for one moment that you have won.
01:08:05 <oerjan> :(
01:18:16 <CakeProphet> I kind of wish where could be used in expressions
01:18:40 <CakeProphet> with the lowest possible "precedence"
01:19:22 <CakeProphet> but that breaks the translation of where to a let around all of the cases/guards of a function
01:20:24 <CakeProphet> or at least complicates the rules for that
01:20:41 <CakeProphet> as you'd have to distinguish between a "function-level where" as well as an "expression where"
01:21:50 <CakeProphet> and I would really only want that kind of where because it makes lets look nicer when using lambdabot...
01:21:59 <CakeProphet> in any other context there are plenty of functions to append wheres to.
01:24:09 <CakeProphet> maybe lambdabot Haskell could have its own special where. :)
01:27:51 <oerjan> CakeProphet: there are also case block wheres
01:27:54 <evincar> Bluh, I'm currently wrestling with Haskell...
01:28:08 <CakeProphet> evincar: don't do it. Haskell always wins.
01:28:19 <evincar> Static typing isn't really my friend.
01:28:39 <oerjan> incidentally hugs does allow such an expression where in interactive expressions
01:29:20 <CakeProphet> evincar: what's wrong?
01:30:07 <oerjan> obvious guess 1: needs a fromIntegral
01:31:17 <CakeProphet> possibly needs an explicit type signature somewhere as well.
01:31:31 <evincar> If I knew what was wrong, I would have fixed it.
01:31:32 <zzo38> In the penultimate level for Super ASCII MZX Town Part II, some guy gives you 100 torches, 100 points of health, 100 points of ammunition, and a multimeter; none of which will help you in the least bit. Actually, if you are not careful, these items are what causes you to lose
01:32:10 <CakeProphet> evincar: what is GHC complaining about?
01:32:12 <oerjan> evincar: well what is the error message :P
01:32:27 <oerjan> (last step before asking for full code paste)
01:32:41 <evincar> Heh, well first this: http://hpaste.org/52832 is how it was the last time I pasted it.
01:32:58 <evincar> And I get "couldn't match IO Bool against Maybe Bool".
01:34:57 <shachaf> evincar: Static typing absolutely is your friend!
01:35:01 <oerjan> what's the type of editorJustResized?
01:35:13 <evincar> EditorState -> Bool
01:35:15 <shachaf> evincar: You have an actual type error in your program; it's being caught at compile-time instead of at runtime, but it's still there.
01:35:28 <shachaf> (In other cases it's not your friend, of course. But IO foo is very different from foo.)
01:35:29 <CakeProphet> evincar: I don't think you need to pattern match currentState then
01:35:45 <CakeProphet> er, maybe you do...
01:35:54 <evincar> Yeah, I do. It's a Maybe IO EditorState.
01:35:55 <CakeProphet> in any case justResized is not a Bool.
01:36:00 <evincar> Right.
01:36:03 <evincar> That's my problem.
01:36:17 <oerjan> evincar: oh. you have Maybe and IO _nested_ there.
01:36:17 <monqy> what's your problem
01:36:30 <monqy> also ahahah what oerjan said
01:36:36 <oerjan> the fmap applies only to the Maybe part
01:36:40 <evincar> The problem is that I need a Bool and I have an IO Bool.
01:36:52 <CakeProphet> evincar: sounds like a job for a bind or fmap.
01:36:58 <evincar> But isn't currentState an IO EditorState?
01:37:01 <oerjan> oh wait no.
01:37:04 <evincar> Because I matched on (Just currentState).
01:37:18 <oerjan> sorry i misread
01:37:29 <CakeProphet> evincar: yes you want to either use fmap or >>= or some higher-order construction to access the bool for the second part.
01:37:44 <shachaf> evincar: Here's a Bool:
01:37:45 <shachaf> True
01:37:49 * shachaf solves problem.
01:37:58 <shachaf> Here's another one: False
01:38:00 <evincar> shachaf: Thanks, it's my favourite Bool. :)
01:38:00 <monqy> evincar: if currentState is an IO EditorState, Lift the Justs out before the do
01:38:08 <evincar> Fuck, I don't want your False.
01:38:15 <shachaf> evincar: That's Pretty Much(*) all the Bools there are.
01:38:24 <evincar> Except for FileNotFound.
01:38:35 <shachaf> I was thinking of _|_, but that works.
01:38:54 <oerjan> evincar: hm i think justResized definitely should be a Bool, there...
01:38:55 <CakeProphet> evincar: oh.... duh
01:38:59 <monqy> evincar: since that do is within the Maybe monad, and you want it within the IO monad?? but it's within the maybe monad?????? because you're doing it wrong. because you didn't do it right.
01:39:13 <CakeProphet> evincar: remove the maybe from the return type, and get rid of the Just?
01:39:17 <evincar> Yes, I'm not doing it right and I'm trying to learn how to do it right.
01:39:24 <CakeProphet> it's already partial anyways, no point in propagating the Maybe
01:39:25 <oerjan> monqy: ooh that's it!
01:39:47 <evincar> It needs to be a Maybe because processEvent can fail for other kinds of events...
01:39:48 <monqy> man why is this even Maybe (IO ...)
01:39:52 <monqy> oh
01:39:52 <oerjan> evincar: start with = Just $ do and remove the Justs on the results :P
01:40:00 <oerjan> er
01:40:01 <monqy> oerjan: that's what I suggested earlier!!!
01:40:01 <CakeProphet> evincar: so do you catch the Nothing case?
01:40:09 <evincar> Yes, elsewhere.
01:40:11 <monqy> or is that where you got the idea.....
01:40:12 <CakeProphet> ah
01:40:12 <oerjan> Just `fmap` do
01:40:19 <monqy> because I got my idea from your idea
01:40:23 <monqy> that it was Maybe (IO ...)
01:40:26 <monqy> (good ideas)
01:40:28 <CakeProphet> lol
01:40:30 <oerjan> evincar: * Just `fmap` do
01:40:40 <CakeProphet> I don't think that's what he wants.
01:40:40 <shachaf> Just <$> do
01:40:43 <oerjan> wait
01:40:49 <shachaf> fmap fmap fmap fmap fmap
01:40:56 <monqy> won't Just <$> do make a IO (Maybe ...)
01:40:59 <CakeProphet> yep
01:41:00 <shachaf> Yes.
01:41:12 <monqy> maybe this is what he really wants and he doesn't know what's good for him
01:41:18 <oerjan> maybe.
01:41:28 <oerjan> = Just $ do should type, at least, i think
01:41:40 <CakeProphet> Just $ do ... will type yes.
01:42:07 <evincar> Okay, so factoring out the Just is a good thing at least.
01:42:35 <CakeProphet> I'm sure there's a better way to handle the Maybe stuff though.
01:42:40 <CakeProphet> probably with something from Data.Maybe
01:42:56 <evincar> Alright, works.
01:43:16 <CakeProphet> evincar: you're not only factoring out the Just but making it type correctly. :P
01:43:20 <evincar> Yeah, I was gonna change it to MaybeT when I figured out some stuff.
01:43:33 <CakeProphet> @hoogle MaybeT
01:43:33 <lambdabot> Data.Maybe maybeToList :: Maybe a -> [a]
01:43:54 <CakeProphet> I don't think MaybeT is standard actually.
01:43:58 <CakeProphet> but is in hackage
01:44:09 <evincar> It's in Control.Monad.Maybe. And yeah, not standard.
01:44:10 <shachaf> MaybeT IO a ~ IO (Maybe a)
01:44:21 <CakeProphet> shachaf, so observant.
01:44:35 <evincar> Oh. Then that's probably not what I'm actually going for. I dunno.
01:44:36 <monqy> most observant, observantest
01:44:47 <monqy> for what are you going
01:45:28 <CakeProphet> evincar: MaybeT is like Maybe except it's the transformer... so probably is what you want
01:45:31 <CakeProphet> if you want a transformer.
01:45:38 <CakeProphet> don't like shachaf confuse you. :P
01:45:41 <evincar> Well, Maybe (IO EditorState) is "maybe you have an editor state IO, and maybe you don't".
01:45:48 <oerjan> evincar: i'd say it's pretty likely you want something closer to -> IO (Maybe EditorState) than -> Maybe (IO EditorState)
01:45:50 <shachaf> CakeProphet: Huh? I wasn't bein' confusin', was I?
01:45:54 <evincar> Whereas IO (Maybe EditorState) is "you have an IO maybe editorstate maybe not".
01:46:05 <CakeProphet> shachaf: well, for some interpretations of "~" :P
01:46:09 <evincar> I guess it doesn't really matter.
01:46:24 <shachaf> CakeProphet: Oh, I didn't mean Haskell ~. I meant "isomorphic".
01:46:37 <shachaf> Except for the implementation of Monad, I guess.
01:46:38 <CakeProphet> shachaf: IO (Maybe ...) might be a little more convenient to deal with actually.
01:46:51 <CakeProphet> er
01:46:53 <CakeProphet> evincar: ^^^
01:47:02 <CakeProphet> stop having equal-length names.
01:47:49 <oerjan> evincar: if you want the question of whether you have Nothing or Just ... to depend on IO results, then you probably need IO (Maybe ...)
01:47:50 <monqy> evincar: anyway you don't need maybe in that function at all
01:48:15 <monqy> you're only matching the Just case, and you're always returning Just ...
01:48:21 <evincar> No, there are other cases.
01:48:31 <monqy> oh
01:48:31 <evincar> That's just one event.
01:48:36 <monqy> event?
01:48:41 <oerjan> and also if you want the actually result IO to be performed in there...
01:48:46 <monqy> right that too
01:48:54 <evincar> "Nothing" means "end the application", while "Just someState" means "move on to someState".
01:49:21 <monqy> there are better ways to do that
01:49:24 <monqy> without using maybe
01:49:27 <monqy> hint: use io
01:49:51 <CakeProphet> error is good if you don't mind killing everything. :P
01:50:00 <monqy> don't use error.......
01:50:01 <evincar> I mind. :P
01:50:04 <CakeProphet> otherwise IO is good.
01:50:38 <CakeProphet> exceptions are good.
01:51:22 <evincar> Right now I have run (Just currentState) = do ...; events <- ...; let newState = processEvents events (Just currentState); run newState
01:51:32 <shachaf> monqy: No, Maybe is great for that?
01:51:36 <monqy> never
01:51:38 <evincar> And run Nothing = return ()
01:51:42 <CakeProphet> depends on what you want.
01:51:55 <monqy> shachaf: i meant relative to the way evincar was doing it
01:52:02 <monqy> imo it'd be better to use IO (Maybe ...)
01:52:08 <evincar> This just seemed like a straightforward way of going about it.
01:52:13 <CakeProphet> note you could also do something like when (isJust maybeState) ...
01:52:18 <CakeProphet> instead of the case.
01:52:29 <CakeProphet> @src when
01:52:29 <lambdabot> when p s = if p then s else return ()
01:52:38 <monqy> or wait
01:52:39 <monqy> uhhh
01:52:47 <monqy> yeah?? depends on what you're doing elsewhere
01:53:03 <monqy> you could be doing something really whack!!
01:53:06 <shachaf> IO is evil.
01:53:13 <CakeProphet> IO is essential.
01:53:13 <evincar> So anyway, this isn't a super-important program.
01:53:36 <evincar> I'm mainly writing it to learn how the SDL bindings differ in Haskell from C.
01:53:43 <monqy> shachaf: yeah but he's using it anyway so unless he refactors that too...
01:53:52 <CakeProphet> evincar: you should check out the stuff in Data.Maybe, also Control.Monad has some good conditional if-statement-like things.
01:54:03 <evincar> CakeProphet: I'll look into it.
01:54:13 <shachaf> Control.Monad.Loops
01:54:19 <CakeProphet> fromMaybe in particular is good.
01:54:20 <shachaf> Control.Monad.Cont
01:54:30 <CakeProphet> > fromMaybe 3 Nothing
01:54:31 <lambdabot> 3
01:54:35 <CakeProphet> > fromMaybe 3 (Just 4)
01:54:36 <lambdabot> 4
01:54:43 <monqy> maybe is good too
01:54:45 <monqy> :t maybe
01:54:46 <lambdabot> forall b a. b -> (a -> b) -> Maybe a -> b
01:54:47 <CakeProphet> yes more general.
01:54:52 <evincar> One program that's given me no trouble, and has been a lot of fun, is writing a symphony using Data.WAVE.
01:55:31 <evincar> Just generating some samples, writing them to a file, and seeing what I can do.
01:55:39 <evincar> I'd love to write a mixer in Haskell.
01:55:44 <evincar> It seems like the perfect language for it.
01:55:47 <CakeProphet> combined with things like when/unless in IO and you've got pretty sane error-checking.
01:55:49 <monqy> evincar: oh?
01:56:01 <CakeProphet> but you'd want the type IO (Maybe a)
01:56:36 <evincar> I'll see what restructuring I can do...
01:56:46 <monqy> don't restructure in bad ways
01:56:47 <monqy> that would be bad
01:56:58 <evincar> That's what git is for.
01:57:13 <monqy> thanks git
01:57:20 <CakeProphet> monqy: would MonadIO be a good idea?
01:57:27 <CakeProphet> if he did Maybe (IO ...)?
01:57:32 <CakeProphet> really he should flip them...
01:57:48 <evincar> I'll keep you folk posted. :P
01:57:48 <monqy> who knows
01:57:59 <CakeProphet> actually there's no MonadIO instance for Maybe by default apparently.
01:58:12 <monqy> we don't know because we don't know his stuff
01:58:23 <CakeProphet> you.... don't know about MonadIO?
01:58:25 <evincar> So I was thinking today about writing a concatenative language with dependent typing.
01:58:32 <evincar> It seems like a bad idea.
01:58:45 <monqy> CakeProphet: i know monadio but not if it would be a good idea for him to use it
01:58:53 <monqy> CakeProphet: and i have a feeling he doesn't know either
01:59:06 <monqy> evincar: hmmmmm?
01:59:09 <oerjan> evincar: i am somewhat worried about whether your current design ever actually _runs_ currentState. it seems from what you've said so far that you are only building up a bigger IO action, never to run it, and then maybe even discarding it when hitting run Nothing.
01:59:11 <evincar> Yep, pretty new to Haskell.
01:59:22 <monqy> evincar: iss that that old language of yours?
01:59:49 <monqy> or is that the other one
01:59:50 <evincar> oerjan: The program seems to be working...well, not for resizing, actually. But for all of the non-IO events. Ugh.
01:59:50 <monqy> or both
01:59:53 <CakeProphet> oerjan: oh right. good point.
01:59:57 <shachaf> CakeProphet: How would there be an instance Maybe MonadIO?
02:00:01 <evincar> monqy: I have lots of language ideas...
02:00:05 <CakeProphet> shachaf: er.... magic.
02:00:06 <evincar> Most of them I don't even work on.
02:00:15 <shachaf> CakeProphet: (Other than the flipped arguments.)
02:00:30 <monqy> evincar: well you talked a bunch about concatenative and dependent typing
02:00:33 <CakeProphet> shachaf: I didn't think about that. :P
02:01:02 <CakeProphet> oerjan: it depends on whether or not he uses >>= with Maybe.
02:01:07 <evincar> monqy: Oh, those were two separate projects. I'm doing research involving dependent typing, and my most recent hobby language is concatenative.
02:01:09 <CakeProphet> in the paste we saw he isn't.
02:01:35 <CakeProphet> but any m >>= returnsNothingFunction
02:01:38 <CakeProphet> discards everything.
02:01:43 -!- tiffany has quit (Quit: Leaving).
02:02:26 <CakeProphet> evincar: yeah IO (Maybe a) is a good idea you should switch to that immediately.
02:03:37 <evincar> Alright, will do.
02:05:29 <oerjan> evincar: i think as a general rule your argument shouldn't be of type IO EditorState if you want it to already have run by that point.
02:07:09 <evincar> Makes sense.
02:07:28 <oerjan> also, it seems to me that when run calls processEvent, you already know it's a Just, so you don't really need processEvent's argument to be a Maybe either.
02:08:16 <monqy> oerjan: i brought this up but then he said there are more cases so
02:09:12 <evincar> There's a function "processEvents" that calls processEvent for each event in the queue.
02:09:30 <evincar> It passes the state returned by the last call to processEvent.
02:09:34 <oerjan> oh.
02:09:48 <evincar> So...yeah.
02:09:54 <evincar> Context is important.
02:10:03 <oerjan> i missed the s :P
02:10:15 <monqy> argument should be of type Maybe whatever not Maybe (IO whatever) i think?? that would be better?? help
02:10:26 <oerjan> monqy: i think so
02:11:32 <evincar> Okay. But to call setVideoMode in response to a VideoResize event, I need the IO. Somewhere.
02:11:36 <evincar> Presumably outside the Maybe.
02:11:39 <oerjan> evincar: although does processEvent _ Nothing do anything other than return () ?
02:11:49 <evincar> oerjan: Nope.
02:11:56 <evincar> So I could catch that earlier.
02:11:58 <evincar> Good call.
02:12:44 <oerjan> hm...
02:12:55 <CakeProphet> evincar: yeah always remove Maybes as soon as they're no longer needed.
02:13:11 -!- cheater_ has quit (Remote host closed the connection).
02:13:26 <monqy> evincar: typically the monad-wrapped thingy goes only on the final return value of a functiony thingy
02:13:33 <oerjan> @hoogle [a -> m (Maybe a)] -> a -> m (Maybe a)
02:13:34 <lambdabot> No results found
02:13:40 -!- cheater_ has joined.
02:13:52 <oerjan> is there some function which does that?
02:14:01 <monqy> if it's in one of the arguments (and not as the return of a function which is an argument) it's likely you're doing something wrong
02:14:06 <monqy> hm
02:14:49 <CakeProphet> oerjan: how does it determine which function in the list to call?
02:15:00 <CakeProphet> by whether or not the inner Maybe is Just/Nothing?
02:15:15 <oerjan> CakeProphet: it does them in order, as long as none return Nothing...
02:15:23 <CakeProphet> ah
02:15:29 <CakeProphet> that's like......
02:15:41 <CakeProphet> an fmap and a sequence... in some kind of combination.
02:15:48 <CakeProphet> sort of.
02:16:00 <CakeProphet> or like msum
02:16:04 <CakeProphet> ...
02:16:22 <monqy> fmap and sequence? you mean like mapM?
02:16:42 <CakeProphet> blah ls a = msum $ fmap ($a) ls
02:16:44 <CakeProphet> or something
02:16:44 <monqy> (or traverse if you want that)
02:16:52 <CakeProphet> :t msum
02:16:53 <lambdabot> forall (m :: * -> *) a. (MonadPlus m) => [m a] -> m a
02:16:57 <CakeProphet> er no
02:16:58 <oerjan> well it's essentially sequence with the right Monad wrapping
02:17:02 <CakeProphet> it's all nested and stuff.
02:17:14 <oerjan> StateT a (MaybeT m)
02:17:37 <CakeProphet> :t sequence
02:17:38 <lambdabot> forall (m :: * -> *) a. (Monad m) => [m a] -> m [a]
02:17:42 <oerjan> hm oh...
02:17:47 <oerjan> :t unfoldrM
02:17:48 <lambdabot> Not in scope: `unfoldrM'
02:17:56 <oerjan> @hoogle unfoldr
02:17:56 <lambdabot> Data.ByteString unfoldr :: (a -> Maybe (Word8, a)) -> a -> ByteString
02:17:56 <lambdabot> Data.List unfoldr :: (b -> Maybe (a, b)) -> b -> [a]
02:17:56 <lambdabot> Data.ByteString.Char8 unfoldr :: (a -> Maybe (Char, a)) -> a -> ByteString
02:18:04 <oerjan> bah
02:20:22 <oerjan> it's also nearly foldM, i think
02:22:36 <oerjan> :t foldM
02:22:37 <lambdabot> forall a b (m :: * -> *). (Monad m) => (a -> b -> m a) -> a -> [b] -> m a
02:23:10 <oerjan> if we had processEvent :: EditorState -> SDL.Event -> MaybeT IO EditorState
02:23:35 <oerjan> then we could simply have processEvents = foldM processEvent
02:25:00 <oerjan> processEvents :: EditorState -> [SDL.Event] -> MaybeT IO EditorState
02:25:06 <evincar> Currently it's just processEvents (e:es) currentState = do newState ← processEvent e currentState; processEvents es (Just newState)
02:25:14 <evincar> Plus the cases for Nothing and [].
02:25:25 <evincar> Could definitely be cleaned up. :P
02:25:36 <oerjan> well that won't type for one thing
02:26:05 <evincar> Eh?
02:26:08 <evincar> It's [SDL.Event] -> Maybe (IO EditorState) -> Maybe (IO EditorState)
02:26:32 <oerjan> well in that case you'd want (Just currentState) in the argument
02:27:18 <evincar> Well, when I change it, yeah, I'll fix up where the Maybes go.
02:34:57 -!- cheater_ has quit (Read error: Connection reset by peer).
02:36:10 -!- cheater_ has joined.
02:43:24 <evincar> So the fire alarm went off at 2:30 last night.
02:43:52 <evincar> I was in such a deep sleep that I was mentally wrong till midday.
02:44:00 <pikhq_> Malaria vaccine! Praise be to science.
02:44:11 <evincar> Like, waking up so suddenly was...oh, great.
02:44:34 <evincar> What hath science wrought? A goddamn malaria vaccine, that's what, and you're welcome.
02:45:01 <pikhq_> Unfortunately, it appears to only have 50% efficacy. But hey, it's a goddamn malaria vaccine that's done with clinical trials.
02:45:03 <evincar> Anyway, long story short, for a while I couldn't see or remember faces.
02:45:24 <evincar> Like, I looked at my friend, and her face was just not there.
02:45:29 <evincar> And I couldn't remember anybody's face.
02:45:55 <evincar> Just some weird perceptual issues...it wore off.
03:16:10 <evincar> Apparently one of my YouTube subscribers saw me the other day and didn't say anything.
03:16:15 <evincar> She didn't want to be creepy...
03:16:25 <evincar> ...and yet somehow managed it.
03:18:12 -!- evincar has quit (Quit: Food and sleep.).
03:18:19 <CakeProphet> help the only good desktop environment is doing things I'm not entirely comfortable with.
03:19:43 <pikhq_> Which one is that?
03:20:55 <oerjan> @, of course. he is not comfortable with it not existing.
03:20:55 <lambdabot> Maybe you meant: . ? @ v
03:21:26 <CakeProphet> pikhq_: Gnome. Specifically the transition from 2 to 3. the only desktop environment I know about that is good, and now they're CHANGING THINGS.
03:21:31 * CakeProphet is scared.
03:21:54 <monqy> the best desktop environment is no desktop environment
03:21:59 <monqy> monqy wisdom courtesy of monqy
03:22:11 <pikhq_> CakeProphet: I suggest XFCE.
03:22:17 <oerjan> tautological monqy is tautological
03:22:29 <CakeProphet> pikhq_: not as configurable, but similar interface I guess.
03:22:32 <pikhq_> It ain't shitting rainbows, but it exhibits suck in limited ways.
03:22:38 <oerjan> wait, should that be paradoxical
03:22:51 <monqy> tautological monqy is paradoxical
03:22:51 <CakeProphet> oerjan: yes it's paradoxical sort of.
03:22:52 <monqy> what now
03:23:07 <CakeProphet> but definitely not tautological.
03:23:12 <CakeProphet> tautological is tautological.
03:23:17 <CakeProphet> whereas paradoxical is not paradoxical.
03:26:35 <CakeProphet> perhaps during Christmas break
03:26:38 <CakeProphet> when I have time to do such things
03:26:40 <CakeProphet> I'll switch to xmonad?
03:26:49 -!- oerjan has quit (Quit: Sleepological).
03:28:18 <CakeProphet> oh my god, what has happened to me
03:28:23 <CakeProphet> I'm reading a Gnome 3 vs Unity flamewar
03:28:24 <CakeProphet> WHYYYY
03:29:17 <monqy> is it good
03:30:57 <CakeProphet> ..no
03:31:16 <monqy> aww
03:31:26 <CakeProphet> is openSUSE good?
03:31:35 <monqy> who knows
03:31:53 <CakeProphet> I need someone to formulate opinions for me. I don't have time for this crap.
03:31:53 <monqy> & why do you ask
03:32:00 <CakeProphet> I am considering switching distros
03:32:07 <CakeProphet> but I guess Ubuntu + xmonad would be fine.
03:33:01 <CakeProphet> but maybe Debian is a better distro when going with non-standard options? I really don't know.
03:33:43 <monqy> xmonad works for me (good stuff). i don't care so much about distros so long as they don't get in my way or impose things I don't like
03:33:59 <CakeProphet> also I'm pretty annoyed that a lot of Ubuntu packages are out of date. Though I doubt Debian fixes this.
03:34:22 <monqy> there's a rolling debian right
03:34:24 <monqy> would that fix it
03:34:41 <CakeProphet> I have no idea.
03:35:58 -!- ive has joined.
03:37:43 <CakeProphet> monqy: what do you use?
03:38:45 <monqy> im a bad person to ask about that
03:38:58 <monqy> because i didn't really bother comparing things
03:39:02 <monqy> or anything
03:40:15 <monqy> went archlinux. it works well enough but sometimes i feel maybe i should have tried more things. might not work for other people? who knows.
03:42:26 <monqy> i'd probably be fine with debian testing or something. probably not so fine with ubuntu. ubuntu seems like one of those things i wouldn't like.
03:43:46 <CakeProphet> monqy: how often do you have to manually install things?
03:44:19 <monqy> maybe once or twice ever
03:44:58 <monqy> oh and of course for things that aren't wellknown at all and wouldn't be on any package managers at all or anything really tiny things
03:45:36 <monqy> but usuaully they're either int he normal packagerepositorys or aur but aur kind of makes me feel bad too but less than doing things manually
03:45:45 <CakeProphet> well to give you some examples neither perl nor GHC are up-to-date in Ubuntu repos
03:45:52 <monqy> ahh
03:45:57 <Gregor> Anybody have recommendations in the area of custom-built (but not DIY) PCs w/ no OS (or a free OS)?
03:46:25 <monqy> archlinux is usually pretty good about up to date packages i think? but recently it's been kind of bad about ghc. haven't checked in a while though.
03:48:27 <monqy> yeah it's still 7.0.3 :( been flagged out of date for months now
03:48:50 <monqy> nearly four months is that
03:48:52 <monqy> im bad at months
03:48:56 <monqy> and numbers
03:56:53 -!- SimonRC has quit (Ping timeout: 252 seconds).
04:09:21 -!- SimonRC has joined.
04:33:17 <CakeProphet> monqy: I'm bad at time
04:44:19 <monqy> me too
05:11:16 <CakeProphet> maybe.....
05:11:20 <CakeProphet> maybe I should try KDE?
05:26:02 -!- ive has quit (Ping timeout: 245 seconds).
05:29:43 <pikhq_> Gregor: DIY is easy. :P
05:30:07 -!- sebbu has quit (Read error: Connection reset by peer).
05:31:02 -!- ser163 has joined.
05:33:28 -!- ser163 has left.
05:33:56 -!- sebbu has joined.
05:41:16 <CakeProphet> monqy: can you make xmonad look fancy?
05:41:41 <CakeProphet> I'm a sucker for fancy things (that don't have shitty interfaces. see: most fancy looking desktop environments)
05:42:03 <monqy> fancy? what's taht
05:42:30 <CakeProphet> I suppose it doesn't matter.
05:42:33 <monqy> you probably can make it fancy but
05:42:35 <monqy> why would you
05:43:27 <CakeProphet> because oooooh aaaaaah
05:43:40 <monqy> ????
05:43:43 <monqy> what does fancy even mean
05:43:56 <CakeProphet> monqy is funny confused by such simple words.
05:44:23 <monqy> what do you want
05:44:27 <monqy> and why
05:44:33 <CakeProphet> hmmm
05:44:41 <CakeProphet> I guess something similar to gnome-panel
05:44:50 <CakeProphet> as that is what I like about gnome.
05:45:09 <CakeProphet> specifically being able to have cpu usage / memory / network / disk usage meters
05:45:23 <CakeProphet> and notifications for some programs are nice but not necessary
05:45:28 <CakeProphet> like IM and Skype and stuff.
05:45:42 <monqy> you can do panely things if you get something external to do them
05:45:56 <CakeProphet> such as.... gnome-panel?
05:46:01 <quintopia> monqy: can you make my life look fancy?
05:46:03 <quintopia> monqy: halp
05:46:06 <monqy> help
05:47:45 <monqy> CakeProphet: i don't know if you can get gnome panel to work!! but you can use xmonad as a window manager within destkop environments if you want desktop environments but why do you want desktop enviornments
05:48:06 <CakeProphet> I don't
05:48:33 <CakeProphet> I'll try xmonad out during Christmas break when I'm tinkering with my system and if I find it easy to use I might start using it.
05:49:07 <CakeProphet> I doubt I'll want many features from gnome if I do switch. I do like having CPU, memory, network, and disk meters
05:49:10 <CakeProphet> very handy.
05:49:45 -!- SimonRC has quit (Ping timeout: 260 seconds).
05:49:51 <monqy> well you wouldn't be getting those from xmonad you'd be getting those from something else you'd hook up to xmonad
05:50:23 <CakeProphet> I understand that much.
05:50:51 <CakeProphet> do you use a mouse, at all?
05:53:04 -!- nooga has joined.
05:53:05 -!- Ngevd has joined.
05:55:46 -!- SimonRC has joined.
06:02:29 <fizzie> You can have a gnome-panel running too; that's what I do.
06:02:37 -!- ive has joined.
06:02:38 <Ngevd> Hello!
06:02:43 <fizzie> Though mostly to hold the indicator-applet thingies.
06:03:49 <fizzie> Quite a lot of people use xmobar or dzen2 to stuff their screens full of all kinds of custom gadgets. (I have a set of dzen2 panels as workspace-listers.)
06:12:46 <fizzie> (Set of == one per screen; because of getting used to Awesome before XMonad, I do the IndependentScreens thing to give each screen a separate set of workspaces. (The XMonad default is to have a shared set of workspaces, with each screen showing one; and then if you try to switch to the one visible on another screen, it swaps those two instead.))
06:15:59 -!- SimonRC has quit (Ping timeout: 260 seconds).
06:16:24 -!- SimonRC has joined.
06:16:29 -!- ive has quit (Ping timeout: 256 seconds).
06:20:09 <Ngevd> What is happening in the world of esoteric programming?
06:21:14 <quintopia> i dunno
06:21:19 <quintopia> check the recent changes on the wiki
06:22:02 <fizzie> Today's piece of trivia: Commodore wanted their 1660 model modem to be able to do tone dialing (in addition to pulse), but didn't want to bother building that in; so they took the previous model (1650), added a cable from the C64/C128 audio output to the modem, and made it generate the DTMF tones using the SID sound chip.
06:25:54 <pikhq_> How Commodore-like of them.
06:29:00 <fizzie> Best article: http://en.wikipedia.org/wiki/Creative_Micro_Designs "In July of that year, production and sale of several of their products was taken over by Click Here Software Co. which as of 2008 is no longer fulfilling orders, due to an expired distribution license and his shop roof has a major leak."
06:32:06 -!- ive has joined.
06:53:07 <CakeProphet> I'm still using one workspace all the time.
06:53:17 <CakeProphet> haven't gotten into the habit of using the four that I have set.
06:53:28 <quintopia> same here
06:53:32 <quintopia> i used to use them all
06:53:37 <quintopia> and then i lost the habit
06:55:16 <CakeProphet> oh look I just found the tiling options in gnome
06:55:22 <CakeProphet> ctrl+alt+numpadkey
07:14:24 -!- monqy has quit (Quit: hello).
07:19:05 -!- GreaseMonkey has quit (Read error: Connection reset by peer).
07:20:26 -!- GreaseMonkey has joined.
07:20:27 -!- GreaseMonkey has quit (Changing host).
07:20:27 -!- GreaseMonkey has joined.
07:55:14 -!- cheater_ has quit (Ping timeout: 260 seconds).
07:55:36 -!- Sgeo|web has joined.
07:55:41 <Sgeo|web> > succ `id` 5
07:55:42 <lambdabot> 6
07:58:00 -!- cheater_ has joined.
08:11:37 -!- ive has quit (Quit: leaving).
08:37:24 <CakeProphet> Sgeo|web: -gasp-
08:38:14 <CakeProphet> > (+) `id` 2 `id` 2
08:38:15 <lambdabot> 4
08:40:05 <Sgeo|web> Is there a more ... conventional... infixl apply operator?
08:42:05 <CakeProphet> yes, spaces.
08:43:48 <CakeProphet> or make your own.
08:51:15 -!- myndzi has quit (Ping timeout: 240 seconds).
09:15:53 -!- myndzi has joined.
10:06:36 <CakeProphet> `log Stephen Colbert
10:06:40 <CakeProphet> `log Stephen Colbert
10:06:41 <CakeProphet> `log Stephen Colbert
10:06:41 <CakeProphet> `log Stephen Colbert
10:07:13 <HackEgo> No output.
10:07:13 <HackEgo> No output.
10:07:13 <HackEgo> No output.
10:07:24 <HackEgo> 2011-10-19.txt:10:06:36: <CakeProphet> `log Stephen Colbert
10:08:17 <CakeProphet> `log (?i)stephen colbert
10:08:22 <HackEgo> No output.
10:08:27 <CakeProphet> nonsense
10:19:25 <CakeProphet> there should be a way to apply poisons to weapons/ammo in df
10:40:20 -!- derdon has joined.
10:43:07 <Gregor> <pikhq_> Gregor: DIY is easy. :P
10:43:14 <Gregor> I have built every computer I've used since I was 12.
10:43:21 <Gregor> My policy is now "fuck DIY"
10:45:39 -!- GreaseMonkey has quit (Quit: The Other Game).
10:47:55 <fizzie> CakeProphet: `log is already case-insensitive (it's egrep -i -- "$1") by default, and probably doesn't do (?i).
11:32:53 -!- derdon has quit (Remote host closed the connection).
11:33:07 -!- Slereah_ has quit (Ping timeout: 245 seconds).
11:37:11 -!- zzo38 has quit (Remote host closed the connection).
11:46:55 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
11:50:27 -!- Slereah_ has joined.
11:58:04 -!- oerjan has joined.
12:03:36 -!- hagb4rd has joined.
12:03:40 <Vorpal> http://whotookspaz.org/~anmaster/tmp/emu10k1.png <-- crazy mixer controls for my sound card.
12:03:57 <Vorpal> (stitched multiple screenshots, because this is too wide for my monitor...)
12:06:58 -!- CakeProphet has quit (Quit: Changing server).
12:10:14 -!- CakeProphet has joined.
12:17:26 <fizzie> Quite a lot of identical-looking names there.
12:20:17 <fizzie> Vorpal: Compare: http://users.ics.tkk.fi/htkallas/bt878.png
12:21:22 <fizzie> (Okay, in "All" mode it's got a total of five.)
12:35:09 <Vorpal> fizzie: heh
12:35:26 <Vorpal> fizzie: anyway that is playback. Why does it have capture boost in playback?
12:35:37 <Vorpal> and why nothing playback related!?
12:36:38 <Vorpal> fizzie: anyway I think ALSA cut some names short in my mixer screenshot. And there is one Wave for playback and one for capture. Both named Wave
12:37:20 <fizzie> amixer | grep '^[^ ]' gives slightly longer names.
12:37:52 <fizzie> It's an old analog TV card, which is why it doesn't have any playback controls. Not sure what capture boost is doing there, though.
12:39:12 <fizzie> The capture side has a 0-100 "Capture" volume control, and three sources ("FM", "Mic/Line", "TV Tuner") with no actual controls, but of which you can pick one.
12:39:23 <Vorpal> that amixer command just list one of the Wave controls
12:42:10 <fizzie> Yeah, I think it groups them.
12:42:15 <Vorpal> fizzie: anyway this is what I get for each card: http://sprunge.us/MFID
12:42:18 <CakeProphet> wow there are a lot of broken links on Wikipedia
12:43:29 <CakeProphet> I bet if you took out all of the unsources material on Wikipedia it would be at least 3/4 the size.
12:43:33 <CakeProphet> *unsourced
12:43:56 <Vorpal> fizzie: card 0 is some on board intel HD audio thingy, card 1 is the sb live, and card 2 is some sort of hdmi audio thingy my GPU provides
12:46:17 <fizzie> Yeah, it groups; if you don't grep, there's stuff like
12:46:20 <fizzie> Simple mixer control 'IEC958',0
12:46:20 <fizzie> Capabilities: pswitch pswitch-joined cswitch cswitch-joined penum
12:46:28 <fizzie> That's p-as-in-playback and c-as-in-capture both.
12:47:46 <fizzie> I have an almost identical list on the motherboard-integrated thing, except I don't have "Auto-Mute Mode" or "Rear Mic"/"Rear Mic Boost", but I do have a "Channel Mode" selector that can be switched between "6ch" and "8ch".
12:48:15 <fizzie> ("Card: HDA ATI SB, chip: Realtek ALC888".)
12:48:40 <fizzie> Weird, the HDMI output has disappeared.
12:49:11 <fizzie> Oh, right, I've disabled the motherboard-integrated graphics thing, and the GF7600 only has 2*DVI.
12:51:01 <fizzie> I seem to recall that the USB audio stick I have had all kinds of outputs as far as the mixer saw, which is interesting since it only has two holes in it, physically. (One does combined 3.5mm headphone/line out / optical S/PDIF out, and the other is a mic in.)
12:55:04 <Vorpal> fizzie: imy GPU has one digital-only DVI and one digital-and-analogue DVI. And then it also has one HDMI and one DisplayPort
12:55:10 <Vorpal> my*
12:56:17 <fizzie> IIRC, the motherboard-integrated chip has the whole triplet of VGA, DVI and HDMI, and of those only one can be active at a time.
12:59:16 <fizzie> I don't suppose your card can do triplehead-on-DVI+DVI+HDMI either? I think ATI's EyeFinity is strictly limited so that in triplehead configurations, one of the three monitors must be DisplayPort, and specifically active DisplayPort, not just using a passive adapter.
12:59:36 <fizzie> At least officially, anyway.
13:03:04 <fizzie> (The hardware can only generate two TMDS (i.e. DVI/HDMI) signals simultaneously, so the third connection must be a real DP link, not the "Dual mode" push-TMDS-through-the-pins thing.)
13:04:00 <fizzie> I was almost considering swapping a new GPU to the old desktop box for proper third-monitor support, but none of my monitors do DisplayPort, and active DP adapter cost absurdly much.
13:11:19 -!- oerjan has quit (Quit: leaving).
13:26:03 <fizzie> "Meyer's supporters continue to claim that he was assassinated by 'Big Oil', Arab death squads, Belgian assassins, or the US Government in order to suppress his inventions."
13:26:08 <fizzie> Maybe even "all of the above".
13:29:02 <CakeProphet> I'm addicted to caffeine.
13:29:04 <CakeProphet> officially.
13:29:26 <CakeProphet> I blame my technical writing class and my perpetual writer's block.
13:30:33 <CakeProphet> but actually once I get into this paper it moves pretty quickly.
13:30:50 <CakeProphet> the assignment was to write a letter report recommending a product/service/whatever.
13:31:02 <CakeProphet> so, I'm convincing a hypothetical company to switch from hard disk drives to solid state.
13:31:12 <CakeProphet> easy enough, and something I can of enjoy researching.
13:31:17 <CakeProphet> s/can/kind of/
13:31:29 <Vorpal> fizzie: I know my card can do EyeFinity at least
13:31:41 <CakeProphet> (note to self: thoroughly proofread paper for sleep deprivation artifacts)
13:31:54 <CakeProphet> (note to self: drink more caffeine)
13:32:03 <fizzie> CakeProphet: You should recommend #esoteric, the international hub for exoteric voodoo programming design and deployment, to some company.
13:32:17 <CakeProphet> wat no
13:32:19 <CakeProphet> that's a terrible idea
13:32:26 <CakeProphet> I need like... sources... and convincing evidence.
13:32:34 <CakeProphet> and a graphic of some kind, that I create.
13:32:38 <fizzie> http://codu.org/logs/_esoteric/ <- convincing evidence.
13:32:50 * CakeProphet used a table for this one because tables are easy and relevant to doing things like comparisons.
13:33:46 <fizzie> fungot: What would you say if you had to pitch yourself as a business proposal to a company?
13:33:46 <fungot> fizzie: but actually, the printed version and the unstripped version, aside from the great axioms there....
13:34:22 <fizzie> fungot: Yeah, focusing on your great axioms is a good idea. I'm not sure I'd go with a printout though.
13:34:22 <fungot> fizzie: maybe if i just stop feeding it
13:35:10 <fizzie> fungot: Uh... then it'll go hungry? Excuse me, did we just switch the topic or something? IDGI.
13:35:10 <fungot> fizzie: the vm doesn't absolutely needs continuations. gambit limits you to 20 channels.
13:35:24 <fizzie> NURR SO CONFUSED NURR
13:35:24 <CakeProphet> oh god somebody kill me.
13:35:35 <CakeProphet> I have two tests to study for, and a paper to finish in....
13:35:37 <CakeProphet> 1:30 hours
13:36:00 <CakeProphet> well... I get like maybe another hour at the most if I cram/finish-paper in my other class
13:37:03 * CakeProphet is master of procrastination.
13:37:10 <Vorpal> get started
13:37:13 <CakeProphet> I am
13:37:16 <CakeProphet> already
13:37:17 <CakeProphet> started
13:37:22 <Vorpal> get working
13:37:26 <Vorpal> and stop talking on irc instead
13:37:26 <CakeProphet> I'm... taking a break.
13:37:31 <CakeProphet> to clear my mind
13:37:34 <Vorpal> no time to take a break
13:37:42 <CakeProphet> I AM A MASTER OKAY.
13:37:48 <CakeProphet> I KNOW WHAT I'M DOING CLEARING YOUR MIND IS GOOD
13:37:57 <fizzie> NO TIME NO TIME HUP HUP HUP GIT R DONE GO GO GO
13:38:10 <fizzie> Fly, you fool.
13:38:13 <fizzie> (s).
13:38:52 <CakeProphet> you just want me to stop talking don't you
13:38:54 <CakeProphet> asshole.
13:39:44 <CakeProphet> dude this table is such an effective means of comparison
13:39:49 <CakeProphet> she would be crazy not to give me mad points.
13:39:55 <CakeProphet> so good.
13:40:51 <fizzie> Maybe you should FILL IT WITH CREAM.
13:41:12 <CakeProphet> I.... I'm trying to
13:41:17 <CakeProphet> connect that to something I said
13:41:19 <CakeProphet> in a logical way
13:41:20 <CakeProphet> but
13:41:24 <CakeProphet> am having trouble doing that.
13:41:33 <fizzie> A table. It has holes. A hole. You fill it. With cream.
13:41:52 <CakeProphet> tables have holes?
13:42:16 <fizzie> You know, cells.
13:42:32 <CakeProphet> oh, no.
13:42:33 <CakeProphet> white
13:42:41 <CakeProphet> the header row is gray.
13:42:45 <CakeProphet> NICE AND SIMPLE.
13:42:56 <fizzie> You should add some CHARTJUNK. Everything's better with some.
13:43:20 <fizzie> http://en.wikipedia.org/wiki/File:Chartjunk-example.svg <- BEST CHART
13:43:29 <CakeProphet> no distracting colors to distraact you from that raw information mind virus being sexually transmitted to your brain
13:44:15 <CakeProphet> oh god what is this.
13:44:21 <CakeProphet> man I must be a master of charts
13:44:24 <CakeProphet> because mine are so simple.
13:45:01 <CakeProphet> dude I would love for my kidney to like fail right now.
13:45:07 <CakeProphet> it would give me SOOOOO MUUUUCH TIIIIIME
13:45:10 <CakeProphet> to finish everything.
13:45:32 <CakeProphet> maybe if I drink more soda
13:45:32 <fizzie> Possibly you can poke a kidney-related I/O memory bit.
13:46:14 <CakeProphet> and I still need to scrounge up enough money so that I can buy a car tomorrow.
13:46:56 <CakeProphet> and then I have like a week and 3 days or so to make a website with Django.
13:46:57 <CakeProphet> IT NEVER ENDS
13:47:16 <CakeProphet> I WILL NEVER SLEEP EVER AGAIN.
13:48:16 <CakeProphet> this writing class isn't too bad aside from the large amounts of work.
13:48:32 <CakeProphet> it's way better than the english composition classes and high school lit classes and shit.
13:48:57 <CakeProphet> lists, graphics, tables, headings, etc are completely valid and take up so much of the requirement space.
13:49:05 <CakeProphet> *required
13:49:13 <CakeProphet> lists just fucking eat pages.
13:49:16 <CakeProphet> it's great.
13:49:29 <CakeProphet> in fact I should have just written the entire thing as headings with lists
13:49:37 <CakeProphet> and a single table because I need one of those
13:49:40 <CakeProphet> and then my MLA junk at the bottom
13:50:00 <fizzie> It takes dva to Django.
13:50:22 <Vorpal> I have to say, NixOS is *really* really nice. A bit buggy or incomplete in places, but then it is very much work in progress.
13:50:51 <CakeProphet> uh, am I supposed to know what dva means?
13:51:04 <CakeProphet> Deflecting Vane Anemometer?
13:51:08 <fizzie> CakeProphet: Does it make more sense if I say "it takes два to Django"?
13:51:16 <CakeProphet> uh, no.
13:51:43 <fizzie> Two, in Russian. It coinkydinky starts with d, like Django.
13:51:53 <CakeProphet> ha
13:51:54 <CakeProphet> ha
13:51:54 <CakeProphet> ha
13:52:44 <CakeProphet> Russian is fucking lame. English is the best.
13:52:46 <CakeProphet> you know why?
13:52:54 <CakeProphet> because we pronounce use two different ways
13:53:02 <CakeProphet> depending on whether or not it's a verb or a noun.
13:53:27 <CakeProphet> er, well, in American English anyway.
13:53:31 <CakeProphet> it may be the same thing elsewhere.
13:53:52 <CakeProphet> and I guess phonetically it's the same sounds but maybe with slightly different stressing?
13:54:20 <CakeProphet> oh wait no one is z and one is s, in American English.
13:54:34 <Vorpal> <CakeProphet> because we pronounce use two different ways <-- ?
13:54:38 <Vorpal> which word? "two"?
13:54:47 <CakeProphet> no, use
13:54:49 <Vorpal> oh
13:54:53 <CakeProphet> two different ways.
13:55:00 <Vorpal> CakeProphet: when is "use" a noun??
13:55:23 <fizzie> Vorpal: Does it have any use as a noun?
13:55:26 <CakeProphet> a definite use of the word "use" is that it can be used as a noun.
13:55:29 <Vorpal> oh right
13:55:33 -!- iamcal has quit (Remote host closed the connection).
13:55:51 <Vorpal> CakeProphet: you pronounce it differently as a verb and noun? wtf
13:55:53 <CakeProphet> yep
13:56:06 <fizzie> "use, n. Pronunciation: Brit. /juːs/ , U.S. /jus/ -- use, v. Pronunciation: Brit. /juːz/ , U.S. /juz/" OED says it's different also for them Hexhammers.
13:56:09 <CakeProphet> the verb one is more z-ish and the noun is softer with an s sound
13:56:17 <CakeProphet> the noun one is also a bit faster I think.
13:57:25 <CakeProphet> Merriam-Webster doesn't list the distinction
13:57:32 <CakeProphet> but dictionary.com does.
13:57:37 <CakeProphet> http://dictionary.reference.com/browse/use
13:58:03 <fizzie> Anyhow, Russian "two" is два if you're counting masculine/neuter words, but две if you're counting feminine words. You don't even have much of a gender there in English-land, so THERE. (A-hem, not that Finnish does either.)
13:58:30 <CakeProphet> wow you're right
13:58:40 <CakeProphet> I wish english had all of those unecessary cases.
13:59:39 <fizzie> Russian is quite good at "unnecessary".
13:59:42 <fizzie> " In the nominative case, any noun becomes genitive singular. In the accusative case, only animate nouns become genitive singular.
13:59:42 <fizzie> Две собаки, два кота, две книги и два журнала свалились со стола — Two dogs, two cats, two books and two journals fell from the table (all nouns here in genitive singular).
13:59:42 <fizzie> Я вижу двух собак, двух котов, две книги и два журнала — I see two dogs, two cats, two books and two journals (all nouns here in accusative case, which is why dogs and cats are in genitive plural)."
13:59:48 <fizzie> Much sense.
14:00:09 <fizzie> (I've had a total of one (1) course of it.)
14:00:25 <CakeProphet> so, uh, does no one else pronounce use differently in those two cases?
14:00:29 <CakeProphet> maybe it's an American thing.
14:00:50 <fizzie> CakeProphet: As mentioned, OED says it's a UK thing too.
14:00:54 <CakeProphet> oh
14:00:57 <CakeProphet> okay cool.
14:01:06 <CakeProphet> because pronouncing it only one way for every usage would be weird.
14:01:10 <Vorpal> what about AU
14:01:25 <Vorpal> or NZ
14:01:34 <fizzie> Vorpal: OED doesn't have en-au pronunciation examples, sadly.
14:01:39 <Vorpal> ah
14:01:54 <CakeProphet> ah shit..
14:02:09 <CakeProphet> I can't remember if my make-up quiz was schedule at 12:15 or 1:15
14:02:11 <CakeProphet> fuuuuuuuuck
14:02:35 <CakeProphet> I think it was 12
14:05:38 <fizzie> Finnish would just have different inflections there. "to use" = "käyttää" (first infinitive), "a use" = "käyttö" (singular nominative).
14:11:36 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
14:13:04 <Vorpal> fizzie: I'm not sure there is a direct single translation of "a use" to Swedish. It would differ by context. "ett användningsområde" maybe in some cases.
14:13:14 <Vorpal> or "ett sätt att använda"
14:13:26 <Vorpal> (which would literally be "a way to use")
14:14:14 <Vorpal> the literal translation of "en användning" sounds kind of awkward in several (but not all) the places where "a use" would be used in English
14:14:57 <CakeProphet> a way to use also literally doesn't make much sense.
14:15:02 <CakeProphet> it's more an idiom based on a metaphor.
14:15:27 <CakeProphet> "a way" in this case being a metaphorical path.
14:16:06 <CakeProphet> but I guess many languages also treat "a way" and "a path" to mean similar things in a metaphorical sense?
14:16:11 <Vorpal> well okay not literally, but very close to literally. In fact I'm not sure how to translate "ett sätt"
14:16:26 <Vorpal> it doesn't mean "a way" literally
14:16:35 <Vorpal> it just happens to mean that specific sense of "a way"
14:16:59 <Vorpal> you would not travel along it, that would be "en väg" or such
14:17:06 <CakeProphet> right
14:17:18 <CakeProphet> see, English is awesome.
14:17:28 <CakeProphet> literally INSPIRING AWE
14:17:29 <Vorpal> CakeProphet: no it proves that Swedish is better
14:17:37 <Vorpal> for not using the same word for botjh
14:17:39 <Vorpal> both*
14:18:05 <CakeProphet> I think using one word for a billion different things makes the language more interesting
14:18:17 <CakeProphet> specifically when writing literature or poetry.
14:18:39 <CakeProphet> the ambiguity can provide multiple interpretations.
14:18:51 <CakeProphet> though clarity is nice too.
14:19:34 <Vorpal> CakeProphet: also English is unsymmetric, you have more but fewer/less. There is a lack of symmetry there
14:20:01 <Vorpal> Swedish has proper symmetry for that case. mer/mindre for the more/less case and fler/färre for the more/fewer case
14:20:25 <CakeProphet> English is the most best at being very less not great
14:20:38 <Vorpal> parse error?
14:20:47 <CakeProphet> not for this interpreter. :P
14:20:51 <Vorpal> "very less not great"?
14:20:55 <Vorpal> what?
14:21:01 <CakeProphet> don't worry about it.
14:21:03 <Vorpal> ...
14:21:48 <CakeProphet> perhaps if s/very/much/ it would make more sense.
14:21:53 <Vorpal> yeah
14:22:11 <CakeProphet> but it parses the same way
14:22:25 <CakeProphet> they're both the same part of speech with pretty much the same meaning.
14:22:58 <CakeProphet> YEAH THAT'S RIGHT. FUCK YEAAAAAH ENGLIIIIISH.
14:23:00 <Vorpal> CakeProphet: anyway if you want multiple interpretations you should try Swedish. We have some words that are written the same but depending on meaning are pronounced VERY slightly different. "anden" can mean "the duck" or "the genie". I think the difference is basically in which part gets emphasis.
14:23:18 <CakeProphet> ah.
14:23:27 <CakeProphet> I will write a poem called anden
14:23:32 <CakeProphet> that will be about both a duck and a genie.
14:23:42 <CakeProphet> once I learn Swedish
14:23:49 <CakeProphet> which should be easy to my monolingual brain.
14:25:09 <Vorpal> CakeProphet: there are a few more: "tomten" could mean either "the plot [of land]" or "the father christmas" (actually "tomte" is somewhat wider than that, I think father xmas basically got imported from US/UK culture and melded into local folklore concepts)
14:25:16 -!- iamcal has joined.
14:25:37 <Vorpal> CakeProphet: note that these are not similar at all in non-definite form. "en and" (a duck) "en ande" (a genie)
14:25:51 <Vorpal> it is just they end up the same in definite form.
14:25:59 <Vorpal> (which Swedish does by suffixes)
14:26:48 <CakeProphet> pues, conozco un poco de espanol
14:27:06 <Vorpal> I guess that is Spanish based on the word "espanol"
14:27:11 <Vorpal> I have no idea what it means though
14:27:15 <CakeProphet> pero solo un poco
14:27:28 <Vorpal> I took French not Spanish in high school.
14:27:33 <CakeProphet> should translate to "well, I know a little spanish"
14:27:37 <Vorpal> not that I remember any of it
14:27:38 <CakeProphet> then "but only a little"
14:27:42 <CakeProphet> but I'm not sure if that's correct usage.
14:27:51 <CakeProphet> I know pues is how they say "well" in that sense... as a kind of filler word.
14:27:59 <CakeProphet> and then conocer is to know a subject.
14:28:02 <CakeProphet> un poco is a little
14:28:06 <CakeProphet> so yeah.
14:28:25 <Vorpal> that doesn't mean you got the grammar right
14:28:46 <CakeProphet> pretty sure that's how it works in spanish..
14:28:55 <Vorpal> okay
14:30:12 <CakeProphet> indirect object may be wrong though
14:30:17 <CakeProphet> er, wait there is none :P
14:30:20 <Vorpal> heh
14:31:00 <CakeProphet> "un poco espanol" wouldn't make sense. but "un poco de espanol" does
14:32:47 <CakeProphet> yo lo conozco!
14:36:35 -!- copumpkin has joined.
14:37:30 -!- ais523 has joined.
14:53:49 -!- hagb4rd has quit (Ping timeout: 258 seconds).
14:56:38 -!- CakeProphet has quit (Ping timeout: 240 seconds).
14:57:01 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net).
14:57:39 -!- Vorpal has joined.
15:10:29 -!- elliott has joined.
15:16:24 <elliott> 20:31:49: <variable> Vorpal: I also have a hg checkout of the logs apparently
15:16:31 <elliott> variable: that's obsolete, there's rsync now
15:16:39 <elliott> 20:33:06: <Vorpal> variable: ask fizzie for some useful scripts. Pulls from the old clog archive rather than Gregor's archive though
15:16:47 <elliott> Vorpal: and therefore only downloads less than a year of logs
15:19:13 <elliott> 20:51:53: <ais523> http://smuggle.intercal.org.uk/manual/input_output.html#binary
15:19:19 <elliott> ais523: binary IO that can't input 0?
15:19:26 <elliott> oh
15:19:27 <elliott> padding
15:19:28 <elliott> n/m
15:19:39 <ais523> yep, padding
15:20:53 <elliott> ais523: what /are/ preload names? I'm not Vorpal, so you should have an easier time explaining to me :P
15:21:28 <elliott> 21:05:30: <Vorpal> I have a question: does anyone know why it was implemented like that? It seems a fairly stupid way to do it. Over-complicated. Is that perhaps the reason?
15:21:38 <elliott> Vorpal: if it was implemented sensibly, it would be C-INTERCAL
15:21:38 <ais523> elliott: they're basically bits of .io code (the bytecode that IACC/INTERCAL compile to) that get compiled/run before the program does
15:21:47 <elliott> ais523: heh
15:22:03 <ais523> I don't really want to draw a distinction between compiling and running in CLC-INTERCAL, it's too hard
15:22:11 <elliott> ais523: and there's a built-in snippet named -X which is used to make C-INTERCAL emulate CLC?
15:22:17 <ais523> if you tell sick to "compile", all it really does is bundle everything together into a .io object
15:22:47 <ais523> elliott: -X is a command-line option that causes it to take the CLC-INTERCAL versions of some things rather than the C-INTERCAL versions, where they conflict
15:23:22 <elliott> ais523: erm, Vorpal asked whether it was an option and you said no, preload name
15:23:29 <ais523> "ick" is the preload name
15:23:34 <ais523> that makes CLC-INTERCAL act like C-INTERCAL
15:23:42 <ais523> "-X" is the option name that makes C-INTERCAL act like CLC-INTERCAL
15:23:57 <ais523> actually, "-xX", there are two different sets of things that can be changed between C- and CLC- mode
15:23:59 <elliott> 21:21:23: <ais523> (I'm not sure if even C was around in 1972, incidentally)
15:24:01 <elliott> ais523: not publicly
15:24:22 <elliott> ais523: what does -x do?
15:25:18 <ais523> let me get the exact definitions
15:25:35 <elliott> 22:06:21: <zzo38> Well, I am not the DM of the anyways, however.
15:25:35 <elliott> I'm not the DM of the anyways, however, either.
15:26:10 <ais523> ah, -X favours CLC-INTERCAL interpretations of ambiguous characters in the input
15:26:16 <ais523> and -x gives CLC-INTERCAL semantics
15:26:29 <ais523> so they affect the parser and degenerator respectively
15:26:56 <elliott> heh
15:27:31 <ais523> (the parts of C-INTERCAL have rather weird names sometimes)
15:28:27 <elliott> http://beefymiracle.org/
15:28:29 <elliott> Fedora,
15:28:32 <elliott> explain yourself
15:32:59 <Gregor> Uhh
15:33:02 <Gregor> Do I want to click that?
15:33:05 <Gregor> Is that SFW?
15:34:27 <Gregor> I just can't imagine anything being on the other end of that link other than gay porn.
15:34:55 <elliott> It's worse.
15:35:36 <Gregor> Well, virtually everything is worse than gay porn.
15:35:40 <Gregor> So that's not much of a statement.
15:36:39 <elliott> Gregor: It is SFW, though.
15:36:41 <elliott> 00:43:03: <zzo38> Inappropriate Keys Sold Here
15:36:41 <elliott> 01:07:33: <zzo38> Don't ever think for one moment that you have won.
15:36:41 <elliott> 01:08:05: <oerjan> :(
15:36:41 <elliott> :(
15:37:00 <elliott> 01:24:09: <CakeProphet> maybe lambdabot Haskell could have its own special where. :)
15:37:03 <elliott> caleskell
15:37:09 <fizzie> At least for most values of W. I guess at some places that could count as "offensive content".
15:37:46 <elliott> 01:32:58: <evincar> And I get "couldn't match IO Bool against Maybe Bool".
15:37:46 <elliott> If only static typing didn't exist; you'd get a runtime error rather than a compile-time one.
15:37:50 <elliott> And that's why it is your enemy.
15:38:03 <Gregor> lol, I didn't realize that Ubuntu's naming convention had actually turned into a challenge to find the worst possible name for a distro.
15:38:13 <elliott> Votes :: Name
15:38:13 <elliott> -------------------------------
15:38:13 <elliott> 1182 :: Beefy Miracle
15:38:13 <elliott> 1035 :: Liege
15:38:13 <elliott> 881 :: Never
15:38:14 <elliott> 791 :: Gernsback
15:38:16 <elliott> 641 :: Rocky Ripple
15:38:18 <elliott> 628 :: Alpharabius
15:38:20 <elliott> 550 :: Panguipulli
15:38:22 <elliott> 505 :: Tubeteika
15:38:24 <elliott> Literally any of those is better than Beefy Miracle, guys.
15:38:42 <fizzie> Beefy Miracle and Rocky Ripple are both gay porn titles, though.
15:39:48 <elliott> 01:35:15: <shachaf> evincar: You have an actual type error in your program; it's being caught at compile-time instead of at runtime, but it's still there.
15:39:48 <elliott> 01:35:28: <shachaf> (In other cases it's not your friend, of course. But IO foo is very different from foo.)
15:40:00 <elliott> shachaf: IO foo is even more different from Maybe foo.
15:40:12 <elliott> 01:36:40: <evincar> The problem is that I need a Bool and I have an IO Bool.
15:40:25 <elliott> No you don't/can't/whatever. Gah, why am I even wasting my time.
15:40:33 <elliott> Gregor: When's codu.org/logs gonna support ignores :P
15:40:56 <elliott> Wait, I could do that with a bookmarklet.
15:41:19 <Gregor> NEVAR is the answar.
15:42:18 <fizzie> NEVAR is almost the distro codename, too.
15:42:20 <elliott> you are all wrong; MaybeT _is_ standard
15:42:47 <elliott> 01:45:54: <evincar> Whereas IO (Maybe EditorState) is "you have an IO maybe editorstate maybe not".
15:43:03 <elliott> I like the part where you just describe IO as "IO" because you (presumably) don't understand the value-action distinction.
15:43:12 <elliott> That's the best part.
15:43:25 <elliott> 01:46:38: <CakeProphet> shachaf: IO (Maybe ...) might be a little more convenient to deal with actually.
15:43:26 <elliott> 01:46:51: <CakeProphet> er
15:43:26 <elliott> 01:46:53: <CakeProphet> evincar: ^^^
15:43:26 <elliott> 01:47:02: <CakeProphet> stop having equal-length names.
15:43:27 <elliott> Length-based nick completion?
15:43:29 <elliott> Sign me up.
15:45:49 <elliott> Vorpal: So does Arch not support non-udev any more
15:51:25 <Vorpal> no clue
15:52:01 <elliott> 02:13:33: <oerjan> @hoogle [a -> m (Maybe a)] -> a -> m (Maybe a)
15:52:10 <Vorpal> elliott, btw tried NixOS in qemu. Quite nice. Not quite yet at the point where I would use it for my main desktop. But close.
15:52:20 <elliott> ?hoogle [a -> m a] -> a -> m a
15:52:20 <lambdabot> Data.Generics.Aliases extMp :: (MonadPlus m, Typeable a, Typeable b) => (a -> m a) -> (b -> m b) -> a -> m a
15:52:20 <lambdabot> Data.Generics.Aliases extM :: (Monad m, Typeable a, Typeable b) => (a -> m a) -> (b -> m b) -> a -> m a
15:52:21 <lambdabot> Data.Data gfoldl :: Data a => (c (d -> b) -> d -> c b) -> (g -> c g) -> a -> c a
15:52:23 <elliott> grr
15:52:27 <elliott> it's a trivial construction, anyway
15:52:34 <elliott> hmm well
15:52:35 <elliott> oh
15:52:41 <elliott> I was assuming t Maybe a
15:52:43 <elliott> as in a transformer
15:52:45 <elliott> oh well
15:56:41 <elliott> 03:22:11: <pikhq_> CakeProphet: I suggest XFCE.
15:56:41 <elliott> 03:22:29: <CakeProphet> pikhq_: not as configurable, but similar interface I guess.
15:56:48 <elliott> Xfce is definitely more configurable than Gnome.
15:57:19 <Gregor> Also, it doesn't have a similar interface.
15:57:22 <Gregor> So wrong on both counts :P
15:58:04 <elliott> Gregor: I'm using an Xfce that's almost pixel-for-pixel identical to gnome two
15:58:07 <elliott> s/g/G/
15:58:32 <Gregor> Thanks to its awesome configurability :P
15:58:50 <elliott> Gregor: No, I just configured the panels, which is exactly as flexible as Gnome :P
15:59:06 <Gregor> Pff
16:04:12 -!- TeruFSX has quit (Quit: No Ping reply in 180 seconds.).
16:04:33 -!- TeruFSX has joined.
16:07:29 <elliott> Seriously though, what is the point of all these distros like Arch and Gentoo if they only support one base configuration.
16:08:10 -!- sllide has joined.
16:10:44 <Gregor> They're all just distractions from Debian, the one True distro.
16:11:34 -!- tiffany has joined.
16:11:55 <elliott> Gregor: Which also only supports one base configuration :P
16:12:40 <Gregor> Then supporting one base configuration must be the right option (even if that base configuration happens to be terrible ...)
16:13:35 <elliott> Which it is :P
16:13:45 <elliott> SUFFERING IS CORRECT
16:15:04 <Gregor> Though since I usually install via Aptosid, thereby violating my own sacred pact with Debian, I actually have options X-P
16:16:12 <elliott> Gregor: Maybe we have different definitions of base config -- what does aptosid let you change past things like DE?
16:16:40 <Gregor> Just DE + WM, what things do you want to change?
16:17:21 <elliott> Gregor: The /base/ configuration. Things like the init :P (Debian offers Xfce as an official install options nowadays, btw...)
16:17:36 <elliott> Obviously it's not so reasonable to expect this of Debian but, like, Gentoo doesn't support changing a damn thing nowadays.
16:17:43 <elliott> Except optimisation flags :P
16:18:11 <Gregor> Well, obviously LFS is the distro for you.
16:18:25 <elliott> Gregor: What do you think Kitten is (apart from vaporous)
16:18:26 <Gregor> Although even it has only one base configuration :)
16:18:40 <elliott> Gregor: The point of things like Debian is to basically automate LFS for you :P
16:18:42 <elliott> ...
16:18:43 <elliott> Gentoo
16:18:56 <Gregor> ALFS is better.
16:19:17 <elliott> Wow :P
16:19:21 <elliott> "After having gone through the LFS and BLFS books more than 2 or 3 times, you will quickly appreciate the ability to automate the task of compiling the software you want for your systems."
16:19:34 <Gregor> Isn't ALFS delightfully retarded?
16:19:37 <elliott> "jhalfs is a Bash shell script that makes use of Subversion and xsltproc to first download the XML sources of the Linux From Scratch book and then extract any necessary commands, placing them into executable shell scripts."
16:19:41 <elliott> I'm gobsmacked.
16:19:52 <elliott> Gregor: I can't wait until LFS ships with
16:19:58 <elliott> Don't ever run the following!
16:20:00 <elliott> rm -rf /
16:20:04 <elliott> Now that you know not to run that, [...]
16:20:19 <Gregor> That doesn't work on modern coreutils anyway ;)
16:20:20 <elliott> jhalfs users will get a wonderful surprise :P
16:21:40 <elliott> I can't believe this nilfs system actually works.
16:21:49 <elliott> It feels like it should be breaking constantly.
16:21:59 -!- augur has quit (Remote host closed the connection).
16:22:12 <Gregor> OK, anything named "nilfs" shouldn't do anything.
16:22:16 -!- monqy has joined.
16:22:18 <Gregor> That is a poor name for an OS that exposes any files.
16:22:23 <Gregor> s/OS/FS/
16:23:02 <elliott> "New Implementation of a Log-structured File System" :P
16:23:06 <elliott> It does things like instantaneous snapshotting.
16:34:16 <elliott> "Xpra is 'screen for X': it allows you to run X programs, usually on a remote host, direct their display to your local machine, and then to disconnect from these programs and reconnect from the same or another machine, without losing any state. "
16:34:19 <elliott> isn't X meant to handle this itself?
16:34:22 <elliott> I guess not
16:35:23 <Deewiant> Not the disconnect/reconnect bit
16:35:36 <elliott> right
16:36:16 <elliott> Wow, Gnome doesn't support screensavers any more :P
16:36:26 <elliott> At all.
16:53:14 <elliott> I wonder why there aren't any golf esoteric CPUs.
16:53:18 <elliott> IT IS THE OBVIOUS NEXT STEP
16:53:41 <ais523> elliott: use them to power golfcarts!
16:53:59 <elliott> :D
16:54:14 <elliott> but like... you can pack two registers and an instruction into a single byte
16:54:21 <elliott> that's four registers, eight instructions
16:54:44 <elliott> so you can have an instruction, two registers, and a memory address in two bytes
16:55:12 <elliott> that has to count for something
16:55:53 <elliott> ais523: what are the best eight instructions
16:56:08 <ais523> BF's?
16:57:13 <elliott> ais523: no, assembly-style :P
16:58:05 -!- augur has joined.
17:02:40 <elliott> hmm, it's hard to think of ways to allow really short screen writing with those restrictions
17:06:37 <Vorpal> elliott, btw the NixOS install cd lacks tools for nilfs2
17:06:51 <elliott> NOOOOOOOOOOOOOOooooooOOOoooOoooOooOOooOooOooooooo
17:06:56 <elliott> I was just going to try it, too.
17:06:59 <elliott> Can't you install shit onto it though?
17:07:40 <elliott> One of the things I don't like about NixOS is that it's tied to upstart
17:07:55 <elliott> s/upstart/upstart./
17:15:05 -!- Ngevd has quit (Ping timeout: 260 seconds).
17:25:59 -!- derrik has joined.
17:26:38 <elliott> And now pikhq_ is going to tell me that musl works with libc++ and therefore I can finally build things with it.
17:26:45 * elliott controls the future.
17:30:39 <derrik> cool
17:37:21 <derrik> that java thing is totally pointless these days
17:37:21 <derrik> i will throw it out now
17:38:17 <elliott> what java thing
17:40:15 -!- sebbu has quit (Read error: Connection reset by peer).
17:40:45 <Vorpal> <elliott> Can't you install shit onto it though? <-- possibly
17:42:39 -!- sebbu has joined.
17:42:40 -!- sebbu has quit (Changing host).
17:42:40 -!- sebbu has joined.
17:45:55 -!- Ngevd has joined.
17:46:11 -!- lambdabot has quit (Ping timeout: 252 seconds).
17:46:32 <Ngevd> Hello!
17:46:42 <ais523> hi
17:46:44 -!- derrik has quit (Ping timeout: 252 seconds).
17:47:59 <Ngevd> Can I suggest something for the wiki?
17:48:06 <Ngevd> "Programming language of the week"
17:48:27 <ais523> possible to set up with template wizardry, assuming there's some way to figure out the date
17:49:07 <ais523> updating it manually would be annoying and tedious
17:49:59 <Ngevd> Hang on, pie time
17:50:00 -!- Ngevd has quit (Client Quit).
17:50:57 <elliott> why does ngevd even join
17:51:01 <elliott> when he knows he's going to leave in like
17:51:03 <elliott> ten seconds
17:51:21 <Deewiant> Five minutes
17:51:44 <elliott> ten seconds
17:51:51 <elliott> ok he's definitely been here for like two minutes before
17:52:29 <fizzie> Also how could you predict beforehand when it will be pie time?
17:53:27 <elliott> Pie time strikes us all when we least expect it.
17:54:17 <ais523> because when you're trillions of deep in the decimal expansion of pie, and don't know exactly where, it's impractical to figure out what the pie will do next
17:56:41 <fizzie> I don't suppose they(tm) still know whether πe is irrational or not?
17:57:23 <elliott> Maan, why can't we just decide.
17:57:28 <elliott> Collectively.
17:57:31 <elliott> I say it's rational.
17:57:35 -!- derrik has joined.
17:58:10 <elliott> http://webonastick.com/pi/
17:58:14 <elliott> "I was just wondering if you're really serious about your proof of the rationality of pi or whether you did it just so people like me would write to you to ask if you were really serious about your proof of the rationality of pi.
17:58:14 <elliott> -- <jezek [AT] jupiter.scs.uiuc.edu>"
18:02:15 -!- Phantom_Hoover has joined.
18:02:27 -!- Ngevd has joined.
18:02:30 <Ngevd> Hello!
18:04:00 <Phantom_Hoover> Hello.
18:04:08 <shachaf> elliott: ?
18:04:11 <Phantom_Hoover> Oh, lambdabot's gone.
18:04:13 <elliott> shachaf: ?
18:04:44 <fizzie> fungot: Quick, pretend to be lambdabot. It's just Haskell, you can do it.
18:04:44 <fungot> fizzie: it skips differently. it is
18:04:58 <Ngevd> That's a big problem
18:05:02 <fizzie> Ah, sadly he can't, because it skips differently.
18:05:44 <Ngevd> !haskell 'h':"test"
18:06:29 <Deewiant> "htest"
18:06:41 <Ngevd> Deewiant can pretend to be lambdabot
18:12:42 <fizzie> Time for a link-tip; when you need a prime, http://alpha61.com/primenumbershittingbear/ helps. (Don't have a clue what brought that to mind.)
18:13:07 <elliott> Aww, I'm not using one of the desgined versions.
18:13:10 <elliott> designéd.
18:18:03 -!- lambdabot has joined.
18:19:04 <elliott> yaaaayayyayayaya
18:19:06 <elliott> ylaamamnnjkfbdabobot
18:19:17 <Deewiant> @bot
18:19:17 <lambdabot> :)
18:19:27 <Ngevd> Good bot
18:19:29 <Ngevd> Best friend
18:20:14 <elliott> fizzie: view-source:http://alpha61.com/primenumbershittingbear/ I like the comments.
18:20:20 <elliott> // Shakes the butt
18:20:20 <elliott> // moves next number to butt
18:20:45 <elliott> Aww, it must have been updated; it uses some fancy "2005-2006" Flash-using library to play the sound.
18:21:27 <Deewiant> http://bignum.sourceforge.net/primebear.html soundless version
18:22:44 <elliott> Deewiant: Well that's no fun.
18:22:55 <elliott> Deewiant: Is that the original(tm)?
18:22:58 <Deewiant> It's the one I remember :-P
18:23:02 <elliott> bignum / BigFloat
18:23:02 <elliott> An infinite-precision floating-point function library for Miranda and type for Haskell
18:23:12 <elliott> That's... something.
18:24:36 <shachaf> elliott: Did you just quote me randomly above?
18:24:43 <elliott> shachaf: Apparently?
18:24:53 <elliott> Deewiant: Good old Allan Scott.
18:25:12 <elliott> "Notice: this version leaves number 1 out. It's not a bug fix, but an abandoned feature in order to achieve better, cleaner, faster code. I still think 1 is a prime number but this is tosatisfy mathematics of the world. I decided they'd propably shut up if I pleased them. Now get of my case."
18:26:07 <Deewiant> The faster code is probably due to starting from 2 and doing +=2
18:26:11 <Deewiant> Er, 3*
18:26:30 <Deewiant> Instead of 1 and +=1
18:29:44 <shachaf> elliott: Anyway, evincar has a point. Static typing is not your friend.
18:29:58 <shachaf> Stupid types, constraining and constricting.
18:30:04 <elliott> No it is I am pals with Hindley-Milner.
18:30:47 <coppro> ^
18:48:44 <Phantom_Hoover> By all your type theorists combined I am Hindley-Milner.
18:48:44 <lambdabot> Phantom_Hoover: You have 3 new messages. '/msg lambdabot @messages' to read them.
18:51:34 <elliott> `addquote <Phantom_Hoover> oh god oh god <Phantom_Hoover> what if I become <Phantom_Hoover> attracted <Phantom_Hoover> to birds
18:51:39 <HackEgo> 704) <Phantom_Hoover> oh god oh god <Phantom_Hoover> what if I become <Phantom_Hoover> attracted <Phantom_Hoover> to birds
18:52:23 <Phantom_Hoover> Wait what, r/AskScience got made a default subreddit.
18:52:36 <Phantom_Hoover> r/TrueAskScience in 10... 9...
18:52:55 <Deewiant> AskScience is so heavily modded that it doesn't need a True version
18:53:15 <Phantom_Hoover> Sure, but it can be more insidious than that.
18:54:05 <Phantom_Hoover> http://i.imgur.com/yKHJv.png
18:54:15 <Phantom_Hoover> See?
18:55:19 <elliott> What's insidious about that
18:56:09 <Ngevd> "If we're in a car crash, I'll be decapitated from the neck down."
18:56:21 <elliott> Phantom_Hoover: ?
18:57:05 <Phantom_Hoover> OK, that was a pretty terrible example.
18:57:41 <ais523> `quote
18:57:50 <ais523> elliott: can I delete that one?
18:58:10 <elliott> ais523: I don't know, I think that might be the apex of Sgeo's constant confusion
18:58:16 <elliott> ais523: anyway, you have to follow procedure
18:58:18 <elliott> `quote
18:58:18 <elliott> `quote
18:58:19 <elliott> `quote
18:58:21 <HackEgo> 228) <Phantom_Hoover> OK, let's reduce the human genome to 4 chromosomes, in 2 homologous pairs.
18:58:21 <HackEgo> 572) <itidus20> software patents strike again <ais523_> that's got to be at least three times, now <ais523_> are they out yet?
18:58:24 <elliott> `quote
18:58:26 <HackEgo> 473) <oklopol> btw i saw my first prostitute about a week ago
18:58:27 <elliott> there, that makes five in total
18:58:34 <HackEgo> 353) <Gregor> I use LiGNUXFCE+apps <Gregor> That's pronounced by saying "Linux" and then vomiting, btw.
18:58:53 * elliott thinks 473 is worse than 649
18:58:59 <ais523> let's delete both of them
18:59:04 <Phantom_Hoover> Ah, like the French word for mist?
18:59:08 <Phantom_Hoover> Or was it fog?
18:59:14 <elliott> ais523: that is not Procedure
18:59:29 <ais523> I don't care, the number will never reduce if we don't delete /all/ the bad ones we find
18:59:38 <elliott> ais523: you delete it next time it comes up
18:59:44 <elliott> `delquote 473
18:59:44 <Phantom_Hoover> `quite
18:59:46 <HackEgo> ​*poof*
18:59:46 <elliott> here, I'll do another:
18:59:48 <elliott> `quote
18:59:49 <Phantom_Hoover> `quote
18:59:49 <elliott> `quote
18:59:49 <elliott> `quote
18:59:49 <elliott> `quote
18:59:57 <elliott> (that's five in total, I noticed Phantom_Hoover's quick enough)
18:59:59 <HackEgo> 481) <Madk> #%%:]__t�# <Madk> do you see that <Madk> that is great progress taking place
19:00:00 <HackEgo> 272) <Vorpal> ooh I want to see ehird pole dancing <ehird> I think that would be illegal. <Vorpal> oh you are right <Vorpal> damn :/
19:00:10 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: quite: not found
19:00:13 <HackEgo> 114) <ais523> theory: some amused deity is making the laws of physics up as they go along
19:00:13 <HackEgo> 680) <fizzie> I prefer the N64 controller, it's the only one that has place for my third hand.
19:00:13 <HackEgo> 353) <Gregor> I use LiGNUXFCE+apps <Gregor> That's pronounced by saying "Linux" and then vomiting, btw.
19:00:33 <elliott> hmm, Madk's is the worst there, but it's not that bad
19:00:35 <Phantom_Hoover> Those... are all good.
19:00:38 <Phantom_Hoover> `quote
19:00:38 <Phantom_Hoover> `quote
19:00:38 <Phantom_Hoover> `quote
19:00:38 <Phantom_Hoover> `quote
19:00:39 <Phantom_Hoover> `quote
19:00:44 <elliott> agreed, restart
19:00:50 <HackEgo> 621) <fungot> elliott_: it's a machine that looks like you!
19:01:01 <HackEgo> 302) <zzo38> Some people is atheist and some agnostic, and some more religious people. Even some scientists are religious, which is OK, but you still have to remember, assuming God exists is not how you are supposed to do science!
19:01:02 <HackEgo> 347) [After a long monologue] <oklopol> i think i have to escape this heated discussion before it becomes a flamewar
19:01:02 <HackEgo> 155) <calamari> anmaster gonna give him a birthday bj? <AnMaster> IF ONLY I COULD FIND MY PHONE
19:01:02 <HackEgo> 86) <Eeyore> I used to have salt licks for my horses. They would make cool abstract sculptures with them.
19:01:09 <Phantom_Hoover> 302.
19:01:21 <elliott> Yeah, zzo has better quotes than that.
19:01:22 <elliott> `delquote 302
19:01:25 <HackEgo> ​*poof*
19:01:26 <Phantom_Hoover> `quote
19:01:26 <Phantom_Hoover> `quote
19:01:26 <Phantom_Hoover> `quote
19:01:27 <Phantom_Hoover> `quote
19:01:27 <Phantom_Hoover> `quote
19:01:35 <HackEgo> 490) <fizzie> The zipWith Camel, a famous World War 1 era airplane.
19:01:38 <HackEgo> 536) <Patashu> Tomorrow's computer viruses will extend robotic arms from your computer to fiddle with the SD card to infect it!!
19:01:46 <HackEgo> 666) <elliott> The moon is a much better target for colonisation because it would be IRCable.
19:01:47 <HackEgo> 656) <itidus21> :D :D oh man.. i wonder if they ever made chess variants based off of animes
19:01:48 <HackEgo> 402) <ZOMGMODULES> I can trust elliott_ to have an opinion on anything and everything <elliott_> Yes. <elliott_> And the best thing is: it is the correct opinion.
19:02:04 <elliott> Gregor: Are you there
19:02:04 <Phantom_Hoover> 656 is the weakest, I think.
19:02:13 <elliott> Phantom_Hoover: 666 isn't that good.
19:02:28 <elliott> Neither is 536 but the mental image is amusing,
19:02:30 <elliott> .
19:02:41 <ais523> I don't like 490 either
19:02:47 <elliott> I do
19:02:50 <Phantom_Hoover> That's a good one.
19:02:58 <elliott> Phantom_Hoover: Which one should we delete, 666 or 656
19:03:04 <Phantom_Hoover> 656, I think.
19:03:07 <elliott> Alright
19:03:10 <elliott> `delquote 656
19:03:12 <HackEgo> ​*poof*
19:03:14 <elliott> Let's do one more to please ais523
19:03:15 <elliott> `quote
19:03:15 <elliott> `quote
19:03:16 <elliott> `quote
19:03:16 <elliott> `quote
19:03:16 <elliott> `quote
19:03:22 <HackEgo> 183) <alise> Why do you use random acronyms you know we don't know the expansions of? <pikhq> alise: TLAAW
19:03:24 <HackEgo> 288) <Vorpal> !bfjoust test (++-)*1000000 <Vorpal> probably will suck <EgoBot> Score for Vorpal_test: 30.4 <Vorpal> what
19:03:34 <HackEgo> 247) <elliott> nobody link to goatse <Phantom_Hoover_> elliott, that is an awesome MC idea.
19:03:35 <HackEgo> 570) <itidus20> software patents strike again <ais523_> that's got to be at least three times, now <ais523_> are they out yet?
19:03:35 <HackEgo> 182) <alise> "Europe is the national anthem of the Republic of Kosovo." <cpressey> alise: I <cpressey> I was going to say something then your last line floored me
19:03:43 <ais523> 247 is bad
19:03:49 <elliott> The first two are boring, but the third is awkward enough to not really work as humour at all.
19:03:51 <ais523> 288 is boring
19:03:53 <elliott> `delquote 247
19:03:55 <HackEgo> ​*poof*
19:03:58 <elliott> `quote
19:03:58 <elliott> `quote
19:03:59 <elliott> `quote
19:03:59 <elliott> `quote
19:03:59 <elliott> `quote
19:04:01 <ais523> 183 is at least vaguely funny
19:04:07 <HackEgo> 602) <elliott> OK so firstly you should eliminate electrons.
19:04:08 <HackEgo> 648) <Gregor> You know how the arrow pierces your skin, rearranging and randomizing vital internal structure? <Gregor> Monads are like that, only worse.
19:04:11 <elliott> ais523: I think thirty might have been a decent score back then
19:04:16 <HackEgo> 494) <itidus20> to assume that someone can be described by a rule without exception... is to assume they are omnipotent <oklopol> for instance stones are omnipotent, as they don't do anything, without exception
19:04:18 <HackEgo> 30) <ais523> after all, what are DVD players for?
19:04:19 <HackEgo> 54) <ehird> no Deewiant <Deewiant> No?! <Deewiant> I've been living a lie <ehird> yep. <Deewiant> Excuse me while I jump out of the window ->
19:04:21 <ais523> elliott: it's not bottom-of-the-leaderboard
19:04:28 <elliott> hmm, those are all pretty good
19:04:28 <ais523> it's about two-thirds of the way down, typically
19:04:31 <elliott> ais523 will say thirty is the worst
19:04:37 <Deewiant> I'll say 54
19:04:42 <ais523> no, 30's decent IMO
19:04:43 <elliott> No, that one's a classic.
19:04:47 <ais523> out of context
19:05:01 <elliott> 494 and 648 are the best
19:05:02 <Ngevd> Guys, I have just remembered news
19:05:05 <elliott> 602 is probably the least funny
19:05:11 <ais523> I'd say 602 too
19:05:15 <elliott> `delquote 602
19:05:16 <ais523> Ngevd: ham news?
19:05:16 <HackEgo> ​*poof*
19:05:17 <Ngevd> "Facekicker" Hird is a member of the Hird family
19:05:24 <elliott> Ahahaha
19:05:28 <elliott> OK one more until I stop laughing
19:05:29 <elliott> `quote
19:05:30 <elliott> `quote
19:05:30 <elliott> `quote
19:05:30 <elliott> `quote
19:05:30 <elliott> `quote
19:05:34 <Ngevd> Spelt that way
19:05:38 <HackEgo> 46) <fizzie> The thing is just to exist
19:05:39 <HackEgo> 341) <olsner> django is named after a person? <olsner> thought it would be a giraffe or something
19:05:46 <Phantom_Hoover> Ngevd, world-renowned detective.
19:05:48 <HackEgo> 315) <zzo38> Why do you want to have sex in everything? I don't want.
19:05:50 <HackEgo> 329) <fungot> Phantom_Hoover: mutation is often considerably harder for both humans and compilers can analyze it much more difficult' part that induces bloody vomit... huh....intriguing
19:05:50 <Ngevd> I like 341
19:05:51 <HackEgo> 74) <oklopol> Warrigal: what do you mean by 21?
19:06:03 <elliott> 46 is bad.
19:06:07 <ais523> so is 74
19:06:07 -!- hagb4rd has joined.
19:06:14 <elliott> ais523: it's funnier coming from oklopol
19:06:14 <ais523> unless it's funny in context
19:06:23 <elliott> since he wouldn't ask something like that without actually meaning something
19:06:25 <Phantom_Hoover> I have this feeling all of my DF quotes are going to go.
19:06:34 <elliott> Phantom_Hoover: No, those are all great.
19:06:38 <ais523> 46 doesn't make much sense
19:06:38 <elliott> `delquote 46
19:06:40 <HackEgo> ​*poof*
19:06:41 <elliott> the worst thing about 46 is, it's truncated
19:06:42 <elliott> without any mark
19:06:51 <elliott> `log \d <fizzie> The thing is just to exist
19:07:04 <Ngevd> `addquote <Ngevd> "Facekicker" Hird is a member of the Hird family <Phantom_Hoover> Ngevd, world-renowned detective.
19:07:05 <ais523> elliott: \d?
19:07:06 <HackEgo> 699) <Ngevd> "Facekicker" Hird is a member of the Hird family <Phantom_Hoover> Ngevd, world-renowned detective.
19:07:09 <HackEgo> 2011-10-19.txt:19:06:51: <elliott> `log \d <fizzie> The thing is just to exist
19:07:11 <elliott> ais523: last digit of the time
19:07:17 <elliott> HackEgo...
19:07:18 <ais523> ah, don't you need a colon too?
19:07:19 <elliott> that wasn't even a digit
19:07:22 <elliott> `log \d: <fizzie> The thing is just to exist
19:07:23 <elliott> ais523: ah yes
19:07:28 <HackEgo> 2011-10-19.txt:19:07:22: <elliott> `log \d: <fizzie> The thing is just to exist
19:07:29 <elliott> ais523: but,e rr, did \d even work there?
19:07:34 <elliott> `log [[:digit:]]: <fizzie> The thing is just to exist
19:07:39 <HackEgo> 2009-08-06.txt:18:25:48: <fizzie> The thing is just to exist; those competitions are then, I don't know, some sort of sub-things.
19:07:46 <elliott> Right.
19:07:50 <elliott> `quote
19:07:50 <elliott> `quote
19:07:51 <elliott> `quote
19:07:51 <elliott> `quote
19:07:51 <elliott> `quote
19:07:52 <ais523> that's a better quote in the entirety than the deleted one
19:07:54 <elliott> While we're on a roll.
19:07:56 <HackEgo> 583) <monqy> this reminds me of a time where this guy made up a pretend language that was in his fantasy world and then roleplayed as someone from his fantasy world who used the language and then tried to talk to me about the language
19:08:00 <HackEgo> 50) <pikhq> Gregor is often a scandalous imposter. It's all the hats, I tell you.
19:08:07 <HackEgo> 32) <zzo38> I am not on the moon.
19:08:10 <HackEgo> 658) <elliott> `pastelogs really makes me hate being alive
19:08:11 <HackEgo> 173) <Gregor-W> You people. You people are so stupid. I'm making a SOCIOLOGICAL statement here.
19:08:22 <elliott> 658 is bad but 32 is worse
19:08:26 <ais523> 658 isn't good; 32 is only funny because it's zzo38
19:08:30 <Ngevd> I like 32
19:08:38 <Ngevd> It's 2^5
19:08:41 <elliott> `delquote 658
19:08:44 <HackEgo> ​*poof*
19:08:48 <elliott> the zzo humour adds a bit to it, I think
19:08:48 <Phantom_Hoover> Ngevd, if it's deleted then 33 will replace it.
19:08:51 <Phantom_Hoover> `quote 33
19:08:53 <HackEgo> 33) <ehird> Or the brutal rape of the English language! <pikhq> That wasn't rape. English is always willing.
19:08:59 <elliott> `run wc -l logs
19:09:00 <elliott> erm
19:09:01 <HackEgo> wc: logs: No such file or directory
19:09:03 <elliott> logs is quotes
19:09:04 <Ngevd> 32 < 33
19:09:04 <elliott> `run wc -l quotes
19:09:05 <Phantom_Hoover> http://www.reddit.com/r/askscience/comments/lhe8y/is_it_possible_to_tie_a_knot_in_a_piece_of_string/c2spk1t
19:09:06 <HackEgo> 698 quotes
19:09:13 <elliott> Ngevd: They get renumbered upon deletion.
19:09:20 <Ngevd> I know
19:09:26 <Ngevd> I was making mathematical comments
19:09:29 <fizzie> I just googled one version, no idea where I first saw it and/or the real original.
19:09:39 <ais523> Phantom_Hoover: the URL there is hilarious
19:09:40 <Ngevd> That are really uneneded in this channel
19:09:43 <Ngevd> *unneeded
19:09:50 <ais523> because it's cut off at just the right point
19:09:52 <elliott> `quote
19:09:53 <elliott> `quote
19:09:53 <elliott> `quote
19:09:53 <elliott> `quote
19:09:53 <elliott> `quote
19:09:57 <Phantom_Hoover> ais523, hey, it was a long-standing open problem!
19:09:58 <elliott> WHY NOT ANOTHER.
19:09:58 <HackEgo> 71) <fungot> i am sad ( of course by analogy) :) smileys)
19:10:02 <HackEgo> 508) <Taneb> So... God has jizzed on everything? <oklopol> have you even READ the bible?
19:10:09 <fizzie> I do remember there was a version that s/Shitting/Pooping/, and correspondingly in the Finnish.
19:10:12 <HackEgo> 678) <Ngevd> Dammit, Gregor, this is not the time to fall in love
19:10:13 <HackEgo> 187) <alise> Gregor: You should never have got her pregnant. <Gregor> what whaaaaaaaaaaaat
19:10:14 <HackEgo> 359) <Sgeo_> I think she either likes me, is neutral towards me, or dislikes me
19:10:34 <Phantom_Hoover> I'm amazed Taneb was able to bring himself to say 'jizzed'.
19:10:34 <elliott> 187 is the worst there, IMO
19:10:39 <Ngevd> 678 and 187 go well together
19:10:43 <ais523> they do
19:10:50 <elliott> 508 and 359 are the best there
19:10:51 <ais523> I think we should merge them into one quote, then delete them both
19:10:52 <Ngevd> Phantom_Hoover, I do say "jizzed" occasionally
19:11:00 <elliott> ais523: that would be _misrepresentation_
19:11:05 <ais523> `addquote <HackEgo> 678) <Ngevd> Dammit, Gregor, this is not the time to fall in love <HackEgo> 187) <alise> Gregor: You should never have got her pregnant. <Gregor> what whaaaaaaaaaaaat
19:11:05 <Ngevd> Mainly after someone else has said it
19:11:06 <HackEgo> 699) <HackEgo> 678) <Ngevd> Dammit, Gregor, this is not the time to fall in love <HackEgo> 187) <alise> Gregor: You should never have got her pregnant. <Gregor> what whaaaaaaaaaaaat
19:11:07 <elliott> ais523: at least without a really huge ellipsis
19:11:09 <ais523> no misrepresentation there at all
19:11:09 <elliott> ais523: I...
19:11:12 <elliott> No, I can't allow this.
19:11:16 <Phantom_Hoover> Ngevd, but I thought you were, like, negative Sgeo?
19:11:17 <elliott> IT IS JUST NOT RIGHT
19:11:22 <Phantom_Hoover> `quote SEXY
19:11:24 <HackEgo> 81) <Warrigal> What do you call the husband of my first cousin once removed? <apollo> Warrigal: "Hey, Sexy." \ 210) <Sgeo> HOT SEXY SEX BITS
19:11:25 <Ngevd> Almost
19:11:30 <ais523> elliott: but it's HackEgo's juxtaposition that's funny
19:11:39 <olsner> elliott: what's wrong with misrepresentation?
19:11:40 <elliott> ais523: OK fine but we can only delete one it's the rule.
19:11:41 <ais523> we quote fungot when /it's/ funny
19:11:41 <fungot> ais523: they are included by another file for each class
19:11:46 <Ngevd> I'm asexual, doesn't mean I don't pick up the lingo
19:11:47 <elliott> `delquote 187
19:11:49 <HackEgo> ​*poof*
19:11:54 <elliott> Ngevd: The LINGO of the STREETS.
19:12:01 <elliott> ais523: Let's do another one and hope we get the other one.
19:12:02 <elliott> `quote
19:12:02 <elliott> `quote
19:12:03 <elliott> `quote
19:12:03 <Ngevd> The LINGO of the BED, really
19:12:03 <elliott> `quote
19:12:03 <elliott> `quote
19:12:06 <Ngevd> Well, the laptop
19:12:12 <Phantom_Hoover> I'd like to learn the lingo of her streets, if you know what I mean.
19:12:12 <HackEgo> 237) <pikhq> oklofok: I don't watch House, no. <pikhq> oklofok: I prefer knowing how medicine actually works.
19:12:13 <HackEgo> 422) <zzo38> Fiddle. It makes a big difference, you know.
19:12:16 <ais523> OK, now I'm laughing
19:12:17 <ais523> it took a while
19:12:24 <HackEgo> 678) <oklopol> but i guess (x + y)^n = (x^2 + 2xy + y^2)(x^2 + 2xy + y^2)...(x^2 + 2xy + y^2) if n is even, (x + y)^n = (x^2 + 2xy + y^2)(x^2 + 2xy + y^2)...(x^2 + 2xy + y^2)(x + y) is as good a fundamental theorem as any
19:12:24 <HackEgo> 46) <Deewiant> I spent the last minute or so killing myself repeatedly
19:12:24 <HackEgo> 294) <Deewiant> !bfjoust sm3 < <EgoBot> Score for Deewiant_sm3: 43.4
19:12:24 <ais523> is 442 a GEB misquote?
19:12:28 <ais523> *422
19:12:32 <elliott> ais523: it's zzo; so probably
19:12:37 <ais523> that's what I thought
19:12:42 <ais523> it might even be a GEB literal quote
19:12:43 <elliott> 237 isn't funny
19:12:53 <ais523> elliott: it's vaguely funny, but in an xkcd sort of way
19:13:02 <ais523> so probably isn't worth being there
19:13:04 <elliott> `delquote 237
19:13:06 <ais523> 294 is hilarious
19:13:06 <HackEgo> ​*poof*
19:13:09 <Phantom_Hoover> Pre- or post-xkcdecay?
19:13:14 <ais523> is that from when the scoreboard was upside-down?
19:13:16 <ais523> Phantom_Hoover: post-
19:13:16 <elliott> ais523: yeah, I have no idea how it did /that/ well
19:13:21 <elliott> ais523: isn't that even an insta-death?
19:13:25 <elliott> I mean
19:13:26 <elliott> as bad as ]
19:13:30 <elliott> hmm, no, ] is always 0
19:13:31 <ais523> elliott: yes, I think it must have been from the upside-down scoreboard era
19:13:36 <elliott> ais523: how did /that/ work?
19:13:40 <Phantom_Hoover> `quote
19:13:41 <Phantom_Hoover> `quote
19:13:41 <Phantom_Hoover> `quote
19:13:41 <Phantom_Hoover> `quote
19:13:41 <Phantom_Hoover> `quote
19:13:44 <ais523> it was a reversed test in the scoring function
19:13:51 <HackEgo> 192) <Vorpal> dc -e '[a=]P?[b=]P?[dSarLa%d0<a]dsax+[GCD:]Pp' # easier-to-read version
19:13:52 <ais523> so < was the best possible program
19:13:53 <HackEgo> 356) <elliott> A priori one cannot say that post hoc ergo propter hoc the diminishing returns would give; yet under quid pro quo one can agglutinate fabula and sujet into vagrancies untold. <elliott> See? I'm intellectual.
19:13:54 <ais523> the hill was smaller back then
19:13:59 <ais523> so 43.4 was probably a top score
19:14:01 <HackEgo> 159) <Sgeo> Why shouldn't I just do everything in non-Microsoft-specific C#? <ais523> it's like trying to write non-IE-specific JavaScript with only Microsoft documentation and only IE to test on
19:14:01 <HackEgo> 316) <treederwright> enjoy being locked in your matrix of solidity
19:14:01 <HackEgo> 154) <calamari> anmaster gonna give him a birthday bj? <AnMaster> IF ONLY I COULD FIND MY PHONE
19:14:17 <elliott> 316 is the best there, obviously
19:14:20 <ais523> agreed
19:14:25 <elliott> 192 or 356 are probably the worst
19:14:27 <Phantom_Hoover> It is the best anything ever.
19:14:31 <elliott> actually, 356 would be better without the second message
19:14:33 <ais523> I don't get 154
19:14:53 <Phantom_Hoover> 192's pretty good, unless Vorpal actually meant for it to be funny.
19:15:03 <elliott> I've been ignoring it on the grounds that I have no idea why it's there
19:15:04 <elliott> but oh well
19:15:05 <ais523> I like 192, and suspect it wasn't intentional
19:15:07 <elliott> `delquote 154
19:15:10 <HackEgo> ​*poof*
19:15:12 <elliott> ais523: it wasn't, I've read that log
19:15:14 <ais523> also, it's /actually on-topic/
19:15:20 <Phantom_Hoover> (The Vorpalising occurred before we hit 200?)
19:15:22 <Ngevd> I like 159
19:15:38 <Phantom_Hoover> http://www.reddit.com/r/askscience/comments/lgvn8/can_someone_explain_intuitively_the_connection/
19:15:40 <Phantom_Hoover> I...
19:15:42 <elliott> <Phantom_Hoover> (The Vorpalising occurred before we hit 200?)
19:15:43 <elliott> Phantom_Hoover: Renumbering.
19:15:47 <ais523> `quote 159
19:15:48 <elliott> A /lot/ of early quotes have been deleted.
19:15:49 <HackEgo> 159) (in #irp) <Sgeo> Flonk, ask on #esoteric? <Flonk> Sgeo: yeah well its C++, so not that esoteric :P
19:16:03 <elliott> ais523: hmm, should I add persistent numbering?
19:16:08 <elliott> it'd make multiple deletions easier, for one thing
19:16:13 <Phantom_Hoover> How do you get to using Euler's identity in a maths class without deriving it?
19:16:26 <ais523> elliott: seems like it could go wrong easily
19:16:32 <elliott> ais523: err, howso?
19:16:34 <elliott> that was the original system
19:16:40 <ais523> `quote not actually true
19:16:42 <HackEgo> 92) Note that quote number 124 is not actually true.
19:16:44 <ais523> and that's the other reason not to
19:16:53 <ais523> `quote 124
19:16:55 <HackEgo> 124) * augur rubs alise's bum [...] <augur> what? she said square ped <augur> :|
19:16:56 <elliott> ais523: that still wouldn't work because it'd start numbering based on current numbers
19:17:01 <elliott> `quote
19:17:02 <elliott> `quote
19:17:03 <elliott> `quote
19:17:03 <HackEgo> 257) <elliott> Vorpal: I'M NOT CLEVER OKAY
19:17:03 <elliott> `quote
19:17:03 <elliott> `quote
19:17:09 <HackEgo> 109) <vadim> it can be a good fursuit, but the good thing is that nobody can complain a fox doesn't have the right skin tone
19:17:09 <HackEgo> 445) <Phantom_Hoover> The wickedest man of all. <Phantom_Hoover> Surpassed only in wickedness by the wicked witches of the west and east. <copumpkin> you talking about me again? <Phantom_Hoover> Yes. <copumpkin> k
19:17:17 <HackEgo> 13) <Warrigal> "You're at that stage in your life where you're going to want to do some things in private." --my mom
19:17:20 <HackEgo> 332) <olsner> it is from 2002 though, I was younger then
19:17:26 <elliott> those were /all/ pretty bad
19:17:28 <elliott> `delquote 257
19:17:30 <HackEgo> ​*poof*
19:17:31 <Phantom_Hoover> I've forgotten who I was actually talking about in 445.
19:17:39 <ais523> elliott: yep, I haven't figured which was worst yet
19:17:43 <elliott> Phantom_Hoover: that one was really recent
19:17:58 <elliott> Phantom_Hoover: I don't know how we've added like two hundred quotes since it, but I suspect it involves DF
19:18:13 <olsner> `quote 600
19:18:15 <HackEgo> 600) <Phantom_Hoover> FFS, building a perpetual motion machine should not be this hard.
19:18:23 <olsner> `quote 700
19:18:25 <Phantom_Hoover> Hypothesis confirmed.
19:18:25 <HackEgo> No output.
19:18:35 <elliott> `quote
19:18:36 <elliott> `quote
19:18:36 <elliott> `quote
19:18:37 <elliott> `quote
19:18:37 <elliott> `quote
19:18:44 <elliott> today is the day the quotes died
19:18:45 <HackEgo> 3) <Quas_NaArt> Hmmm... My fingers and tongue seem to be as quick as ever, but my lips have definitely weakened... <Quas_NaArt> More practice is in order.
19:18:48 <HackEgo> 449) <oerjan> i never meta turing. he died before i was born.
19:18:55 <HackEgo> 465) <Gregor> oklopol: Why do you have so much experience with hoop-and-stick? :P <oklopol> Gregor: my fetish: learning pointless skills
19:18:56 <HackEgo> 506) <Taneb> This staircase is very good for correcting people's opininons about communism
19:18:57 <HackEgo> 583) <monqy> mmm these music samples are still so tasteful
19:19:08 <Ngevd> I like 449
19:19:12 <elliott> 506 is good, as is 583, as is 449; 465 is also pretty good
19:19:19 <elliott> 3 isn't very good, but... it was one of the first quotes
19:19:25 <elliott> I don't know if ... I can... delete it.......
19:19:26 <Phantom_Hoover> `quote `
19:19:28 <HackEgo> 9) <Madelon> Lil`Cube: you had cavity searches? <Lil`Cube> not yet <Lil`Cube> trying to thou, just so I can check it off on my list of things to expirence \ 41) <ehird> `translatefromto hu en Hogy hogy hogy ami kemeny <HackEgo> How hard is that \ 91) [Warrigal] `addquote <Dylan> hahaha, Lawlabee is running windows <Lawlabee>
19:19:28 <Phantom_Hoover> `quote 1
19:19:31 <HackEgo> 1) <Aftran> I used computational linguistics to kill her.
19:19:32 <Phantom_Hoover> `pastequotes
19:19:34 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.24524
19:19:35 <elliott> I think it's actually the original third quote.
19:19:55 <Phantom_Hoover> Gregor, FIX THAT ALREADY
19:19:59 <olsner> `quote 2
19:20:01 <HackEgo> 2) <Slereah> EgoBot just opened a chat session with me to say "bork bork bork"
19:20:10 <elliott> oh well, let's do another, it is bringing the community Together
19:20:12 <elliott> `quote
19:20:13 <elliott> `quote
19:20:13 <elliott> `quote
19:20:13 <elliott> `quote
19:20:13 <elliott> `quote
19:20:15 <HackEgo> 505) <elliott_> Vorpal: Won't be slower than Python ;-) <Vorpal> elliott_, yeah but that is like saying a T-Ford going down a hill won't be slower than a bicycle uphill on a bumpy road :P
19:20:18 <HackEgo> 104) <ais523> let's put that in the HackEgo quotes files, just to completely mystify anyone who looks back along them in the future
19:20:21 <HackEgo> 110) <Gregor> I don't know that I've ever heard apocalypi described in terms of depth ...
19:20:27 <HackEgo> 111) <ais523> (still, whatever possessed anyone to invent the N-Gage?)
19:20:27 <HackEgo> 290) <ais523> OK, I give up, logging into Wikia is harder than writing a Firefox extension
19:20:33 <elliott> gah, those were all good
19:20:34 <olsner> 104 was nice and meta
19:20:42 <elliott> apart from 104 but it provides required context to its proceeding quote
19:20:44 <Ngevd> 104 explains the entire purpose if this excersize
19:20:45 <elliott> preceding
19:21:02 <olsner> `quote 103
19:21:05 <HackEgo> 103) <ais523> so a.b.c.d.e.f.g.h.i.j.k.com might be self-relative, but a.b.c.d.e.f.g.h.i.j.k.l.com always means a.b.c.d.e.f.g.h.i.j.k.l.com.?
19:21:24 <ais523> elliott: you don't have to delete one…
19:21:47 <elliott> ais523: yeah, I'll just retry like usual
19:21:49 <elliott> `quote
19:21:49 <elliott> `quote
19:21:50 <elliott> `quote
19:21:50 <elliott> `quote
19:21:51 <elliott> `quote
19:21:51 <ais523> elliott: I never did finish that Firefox extension, btw
19:21:51 <olsner> ok, I am appropriately mystified now
19:21:56 <HackEgo> 559) <itidus20> toasters tend to get hot every time they're used
19:21:57 <HackEgo> 161) <Gregor> <badgood> GOODBAD! Your watered down brand of evil conflicts with my botched attempts at dogoodery!
19:21:58 <HackEgo> 385) [on Sgeo's karaoke] <Phantom_Hoover> That is the thing that made me into a gay vampire.
19:22:04 <HackEgo> 129) <oklopol> you move on the tape and shit
19:22:05 <HackEgo> 95) <Slereah> I can do everything a Turing machine can do, except love
19:22:05 <ais523> I'm using an existing one that sort-of works, but I still have to press enter in the address bar
19:22:22 <elliott> 559 isn't very good
19:22:29 <Ngevd> 95 is good
19:22:46 <elliott> `delquote 559
19:22:48 <HackEgo> ​*poof*
19:23:12 <elliott> `quote
19:23:13 <elliott> `quote
19:23:13 <elliott> `quote
19:23:14 <elliott> `quote
19:23:14 <elliott> `quote
19:23:20 <HackEgo> 596) <elliott> Deewiant: How do you go through life without seeing at least one gaping anus, that's what I want to know
19:23:22 <HackEgo> 406) <Phantom_Hoover> Lymia, I don't know what that is but I want to hit you for it on principle.
19:23:32 <HackEgo> 77) <AnMaster> I'm 100% of what sort of magic was involved in it
19:23:32 <HackEgo> 683) <Gregor> When my registrar is emailing me that codu.xxx is available, that's a problem.
19:23:33 <HackEgo> 175) <fungot> alise: so parrot was based around gcc?
19:23:41 <elliott> haha, 175 is good
19:23:48 <ais523> 175 /is/ good
19:23:52 <Ngevd> 684 is good
19:23:54 <elliott> 77 has to stay because it resulted in Vorpal spending about ten hours trying to remove it
19:23:55 <Ngevd> *3
19:24:04 <ais523> elliott: ah, OK; it isn't good, but if that's the context than that's good
19:24:07 <Phantom_Hoover> `quote 683
19:24:08 <olsner> took a while to notice the nick in 175 :)
19:24:09 <HackEgo> 683) <Gregor> When my registrar is emailing me that codu.xxx is available, that's a problem.
19:24:11 <Phantom_Hoover> `quote 684
19:24:12 <HackEgo> 684) <Phantom__Hoover> Also you steal Berwick from us and then say you don't want it? <Ngevd> You stole it from us first!
19:24:42 <elliott> `run wc -l quotes
19:24:44 <HackEgo> 694 quotes
19:25:07 <ais523> wow, that reply actually makes sense as a sentence
19:25:13 <elliott> what reply?
19:25:17 <elliott> oh
19:25:17 <ais523> "694 quotes"
19:25:17 <elliott> heh
19:25:51 <elliott> `run echo '#!/bin/sh' >bin/qc; echo 'wc -l quotes' >>bin/qc; chmod +x bin/qc
19:25:53 <HackEgo> No output.
19:25:54 <elliott> (qc for quote count)
19:25:55 <elliott> `qc
19:25:57 <HackEgo> 694 quotes
19:26:14 <Ngevd> Now we just need to add "how_many" as a euphemism for "run wx -l"
19:26:18 <Ngevd> *wc
19:26:41 <elliott> oh well, let's do another, this is fun
19:26:41 <Ngevd> Would `run wx -l do anything?
19:26:43 <elliott> `quote
19:26:43 <elliott> `quote
19:26:44 <elliott> `quote
19:26:44 <ais523> `run wx -l
19:26:45 <elliott> `quote
19:26:45 <elliott> `quote
19:26:48 <ais523> Ngevd: easy enough to find out
19:26:49 <HackEgo> 556) <Phantom_Hoover> What is it with Cardassians, they're all really nice and then they hit you with a rock.
19:26:54 <HackEgo> 102) <Aftran> Clearly we should be like Mumbai and get of vehicle dors. <Warrigal> Get of vehicle dors? <Warrigal> I think Aftran had a French phrase there. <Firenze> Les vehicles d'or
19:26:56 <HackEgo> 57) <apollo> What is there to talk about besides gay slang?
19:27:05 <HackEgo> 404) <elliott_> `addquote <olsner> two quotes about quotes about django <olsner> I guess the worst part is that I appear in all three hackego quotes about django <olsner> elliott_: another quote? you're not helping :/
19:27:05 <HackEgo> 169) <alise> I love logic, especially the part where it makes no sense.
19:27:05 <HackEgo> sh: wx: not found
19:27:07 <ais523> 57 is bad
19:27:17 <ais523> 494 is good
19:27:20 <ais523> *404
19:27:22 <Ngevd> 169 is good
19:27:23 <elliott> 404 is from the Night of Django Quotes
19:27:26 <Ngevd> It is 13^2
19:27:28 <ais523> 102 isn't good
19:27:38 <ais523> I'm OK with 169
19:27:42 <elliott> 169 is boring, but 57 is boringer
19:27:44 <elliott> `delquote 57
19:27:44 <ais523> I'm OK with 169
19:27:46 <HackEgo> ​*poof*
19:27:49 <elliott> I'm OK with 169
19:28:22 <elliott> `quote
19:28:22 <elliott> `quote
19:28:23 <elliott> `quote
19:28:24 <elliott> `quote
19:28:24 <elliott> `quote
19:28:26 <HackEgo> 378) <zzo38> <elliott> <quintopia> i know it's unusual, but i agree with you both to some extent
19:28:31 <HackEgo> 394) <elliott> sgeo do you actually know what sex looks like i am just checking here <Sgeo> I think so
19:28:31 <HackEgo> 666) <fizzie> Vorpal: "still it's a flower in the sense that it's more experienced the nanny"
19:28:37 <HackEgo> 520) <Sgeo> My memory passed <monqy> rest in peace sgeos memory
19:28:38 <HackEgo> 523) [2008] <nooga> i'm testing Haiku <nooga> and it appears that it is a major shit <oerjan> 5+7+5, not 5+11, nooga
19:28:46 <elliott> 666 makes no sense
19:28:52 <elliott> `log \d: <fizzie> Vorpal: "still it's a flower in the sense that it's more experienced the nanny"
19:28:53 <ais523> elliott: indeed
19:29:05 <HackEgo> 2011-10-19.txt:19:28:52: <elliott> `log \d: <fizzie> Vorpal: "still it's a flower in the sense that it's more experienced the nanny"
19:29:10 <elliott> osdjfdlkjsd;lfgsdg
19:29:11 <Ngevd> 523 is one of my favourites
19:29:11 <ais523> 523 is good
19:29:19 <elliott> `log [[:digit:]]: <fizzie> Vorpal: "still it's a flower in the sense that it's more experienced the nanny"
19:29:25 <elliott> ais523: omg 523
19:29:25 <HackEgo> 2011-09-30.txt:19:50:16: <fizzie> Vorpal: "still it's a flower in the sense that it's more experienced the nanny"
19:29:31 <elliott> `logurl 2011-09-30.txt:19:50:16:
19:29:33 <HackEgo> http://codu.org/logs/log/_esoteric/2011-09-30
19:29:36 <Phantom_Hoover> 523 is pretty amazing.
19:29:53 <elliott> Oh, it's a perl-fungot thing.
19:29:54 <fungot> elliott: my lame solution was just a silly little knowledge databse
19:29:57 <elliott> `delquote 666
19:29:59 <HackEgo> ​*poof*
19:30:03 <elliott> fungot: Hey, I wrote that thing.
19:30:03 <fungot> elliott: your system, you mean? you want to
19:30:09 <elliott> fungot: Yes, my system. Apologise please.
19:30:10 <fungot> elliott: define innovation. it's not because you're the one who was asking about your example.
19:30:19 <elliott> fungot: I wasn't trying to be innovative!
19:30:20 <fungot> elliott: hey now, its called ' the report on scheme, the innermost parentheses fire first and the second is the creation of egobot
19:30:22 <Ngevd> fungot is getting better
19:30:23 <fungot> Ngevd: it takes a list of elements and need to take a moment's rest arguments unless it absolutely has to, via a trivial isomorphism of bf.
19:30:29 <elliott> Ngevd: the fungot style is the best, really
19:30:29 <fungot> elliott: i'd prefer clog
19:30:37 <Ngevd> ^style clog
19:30:37 <fungot> Not found.
19:30:44 <Ngevd> silly fungot
19:30:44 <elliott> since it's a mix of all the sets, weighted by how much we liked them
19:30:44 <fungot> Ngevd: i grew up they started smoking at the age of 8?
19:30:46 <elliott> (= picked them)
19:30:54 * Phantom_Hoover → crappy part of Ireland
19:30:58 <elliott> 19:50:53: <Prince_Charles> elliott, WHAT IF IT'S JUST REALLY HARD CLOTH
19:31:04 <Ngevd> Catholic Belfast?
19:31:04 <elliott> Phantom_Hoover: I thought you were already there.
19:31:14 * Phantom_Hoover → even crappier part of Ireland
19:31:16 <elliott> Ah.
19:31:22 <elliott> Phantom_Hoover: So, Scotland?
19:31:35 * Phantom_Hoover → shut up elliott
19:31:41 <elliott> Phantom_Hoover: Wales???
19:31:52 <Ngevd> Isle of Man?
19:31:58 <olsner> Iceland?
19:32:00 <Ngevd> South Ireland?
19:32:00 <elliott> `quote
19:32:01 <elliott> `quote
19:32:01 <elliott> `quote
19:32:02 <elliott> `quote
19:32:02 <elliott> `quote
19:32:05 <HackEgo> 493) <fizzie> Taneb: See, it's Obama's fault the guy's apartment is now worth less than their mortgage and something something something that translates to not being able to look for a proper fix. <Taneb> Someone with that sort of grasp of logic shouldn't be allowed anything more computationally powerful than a plastic spoon
19:32:09 <HackEgo> 151) <fungot> ais523: elf corpses are not considered expensive health food. but the most expensive.
19:32:11 <HackEgo> 195) <oklopol> comex: what? <oklopol> *vorpal <oklopol> comex: hi, tab-complete completed c to comex instead of Vorpal, dunno why
19:32:16 <HackEgo> 562) <itidus20> software patents strike again <ais523_> that's got to be at least three times, now <ais523_> are they out yet?
19:32:16 <HackEgo> 413) <Phantom_Hoover> The system I kind of have in mind makes a flying train a natural consequence.
19:32:28 <ais523> 195 isn't that good
19:32:39 <ais523> 493's a bit meh
19:32:50 <elliott> 493's would be better with just the taneb line
19:32:50 <ais523> I like the other three
19:32:57 <ais523> elliott: right, it would
19:33:01 <elliott> but it isn't that
19:33:02 <elliott> and so
19:33:03 <elliott> `delquote 493
19:33:05 -!- Phantom_Hoover has quit (Quit: Leaving).
19:33:05 <HackEgo> ​*poof*
19:33:09 * elliott likes 195, personally
19:33:20 <ais523> weird taste in quotes
19:33:21 <Ngevd> Shall we add the Taneb line back in?
19:33:32 <elliott> hmm
19:33:37 <elliott> only if we can splice it in the right place
19:33:41 <Ngevd> Tricky
19:33:42 <ais523> ^style europarl
19:33:42 <fungot> Selected style: europarl (European Parliament speeches during approx. 1996-2006)
19:33:43 <elliott> anyone know sed? :P
19:33:52 <Ngevd> Gregor, can it be done?
19:33:53 <ais523> elliott: I do, sort-of
19:34:04 <ais523> it'd have been easier to sed before the deletion, by quite a way, though
19:34:11 <elliott> ais523: copy all lines but N verbatim
19:34:12 <olsner> obviously, everyone knows sed here
19:34:16 <elliott> ais523: on N, do {print; print another line}
19:34:22 <elliott> oh, probably olsner will be able to do that
19:34:37 <elliott> N=492 here, if you start numbering from one
19:34:48 <ais523> although we can still do "195i\\\nline to add"
19:34:55 <ais523> wait, 492, not 195
19:35:05 <olsner> elliott: what ais523 just said :)
19:35:10 <Deewiant> You don't need the \\\n, surely?
19:35:19 <ais523> Deewiant: no as a GNU extension
19:35:24 <olsner> Deewiant: it's escaped, you need backslash newline
19:35:31 <ais523> you need backslash-newline in actual sed
19:35:34 <Deewiant> olsner: Evidently I'm GNU
19:35:44 <ais523> but there's a GNU extension that lets you omit it for adding a single line
19:35:57 <elliott> `run sed -i '492i<Taneb> Someone with that sort of grasp of logic shouldn't be allowed anything more computationally powerful than a plastic spoon' quotes
19:35:57 <ais523> wait, is it i or a
19:35:59 <HackEgo> sh: Syntax error: Unterminated quoted string
19:36:04 <elliott> waht
19:36:05 <ais523> elliott: "shouldn't"
19:36:08 <ais523> contains a '
19:36:09 <Deewiant> "3i\\\nfoo" --> line 3 is now foo
19:36:12 <elliott> `run sed -i "492i<Taneb> Someone with that sort of grasp of logic shouldn't be allowed anything more computationally powerful than a plastic spoon" quotes
19:36:14 <HackEgo> No output.
19:36:15 <elliott> Deewiant: argh
19:36:16 <elliott> `help
19:36:17 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/
19:36:26 <elliott> http://codu.org/projects/hackbot/fshg/index.cgi/rev/e40069cec137
19:36:26 <olsner> `quote 492
19:36:27 <elliott> nope
19:36:28 <elliott> that was right
19:36:29 <HackEgo> 492) <Taneb> Someone with that sort of grasp of logic shouldn't be allowed anything more computationally powerful than a plastic spoon
19:36:30 <ais523> Deewiant: no, that's not i, that's c
19:36:31 <elliott> oh
19:36:31 <elliott> damn
19:36:36 <elliott> `delquote 492
19:36:38 <HackEgo> ​*poof*
19:36:43 <elliott> ten, nine
19:36:44 <elliott> eight, seven
19:36:45 <elliott> six, five
19:36:46 <elliott> `run sed -i "493i<Taneb> Someone with that sort of grasp of logic shouldn't be allowed anything more computationally powerful than a plastic spoon" quotes
19:36:48 <HackEgo> No output.
19:36:55 <Deewiant> $ echo "x\ny\nz" | sed 2ifoo
19:36:55 <Deewiant> x
19:36:55 <Deewiant> foo
19:36:55 <Deewiant> y
19:36:55 <Deewiant> z
19:36:57 <ais523> elliott: i adds before the line, a adds afterwards
19:36:57 <olsner> `quote 493
19:36:59 <HackEgo> 493) <Taneb> Someone with that sort of grasp of logic shouldn't be allowed anything more computationally powerful than a plastic spoon
19:37:04 <olsner> looks like it worked
19:37:09 <Deewiant> ais523: Maybe I'm confused, is that not line 2
19:37:12 <elliott> http://codu.org/projects/hackbot/fshg/index.cgi/shortlog/e40069cec137
19:37:14 <elliott> wtf?
19:37:22 <elliott> how come my newer sed sin't there
19:37:26 <elliott> and my delquote
19:37:29 <ais523> Deewiant: <ais523> elliott: i adds before the line, a adds afterwards
19:37:39 <Deewiant> ais523: That's what I meant
19:37:40 <elliott> ais523: no, it's now correct
19:37:43 <elliott> <olsner> `quote 493
19:37:43 <elliott> <HackEgo> 493) <Taneb> Someone with that sort of grasp of logic shouldn't be allowed anything more computationally powerful than a plastic spoon
19:37:48 <elliott> why isn't it in the fshg???
19:37:53 <elliott> oh
19:37:53 <elliott> http://codu.org/projects/hackbot/fshg/
19:37:54 <elliott> there it is
19:38:01 <elliott> `quote
19:38:01 <elliott> `quote
19:38:02 <elliott> `quote
19:38:02 <elliott> `quote
19:38:02 <elliott> `quote
19:38:10 <HackEgo> 83) <xan> if you watch jaws backwards it's a movie about a giant shark that throws up so many people they have to open a beach
19:38:12 <HackEgo> 462) <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.
19:38:13 <ais523> elliott: yes, because you went "add before 493"; "add after 492" would have worked just as well
19:38:17 <elliott> 83 is plagiarised
19:38:22 <HackEgo> 437) <elliott_> I'm not even going to try and understand what you're proposing. <oerjan> i understand it perfectly. it's completely nuts.
19:38:22 <HackEgo> 395) <ZOMGMODULES> I can trust elliott_ to have an opinion on anything and everything <elliott_> Yes. <elliott_> And the best thing is: it is the correct opinion.
19:38:23 <HackEgo> 21) IN AN ALTERNATE UNIVERSE: <bsmntbombdood> there is plenty of room to get head twice at once
19:38:39 <ais523> I don't like the ALTERNATE UNIVERSE quotes
19:38:42 <elliott> `log [[:digit:]]: <elliott_> I'm not even going to try and understand what you're proposing.
19:38:43 <ais523> I love 395
19:38:46 <ais523> I think it was me who added it
19:38:48 <HackEgo> 2011-06-14.txt:05:01:02: <elliott_> I'm not even going to try and understand what you're proposing.
19:38:48 <elliott> ais523: 83 is the worst by definition
19:38:50 <elliott> `delquote 83
19:38:52 <HackEgo> ​*poof*
19:38:54 <elliott> `logurl 2011-06-14.txt:05:01:02:
19:38:56 <HackEgo> http://codu.org/logs/log/_esoteric/2011-06-14
19:38:57 <ais523> elliott: indeed, if plagiarised
19:39:00 <elliott> ais523: http://www.reddit.com/r/reddit.com/comments/7yxud/if_you_watch_the_movie_jaws_backwards_its_a_movie/
19:39:02 <elliott> they even sell shirts of it
19:39:06 <Ngevd> elliott, I think we should work together to get more Hexhamites into esoteric programming
19:39:06 <ais523> ah, OK
19:39:11 <elliott> Ngevd: oh no
19:39:26 <ais523> I'm tempted to addquote that
19:39:36 <olsner> I wonder if slaughterhouse five is the first one of movies-backwards-thingies (it's, you know, a famous book and all)
19:39:45 <olsner> it's an obvious idea in hindsight
19:40:37 <nooga> shhhhhhhhhit
19:40:55 <nooga> never rely on tab completion in bash
19:41:00 <ais523> nooga: what did you just do?
19:41:09 <nooga> i just deleted db on a production server
19:41:12 <ais523> ouch
19:41:14 <ais523> do you have backups?
19:41:20 <nooga> and i don't have privledges to restore it
19:41:24 <ais523> wait what?
19:41:26 <olsner> if you read slaughterhouse five backwards it's a book about forgetting all about that watching movies backwards business
19:41:39 <ais523> who has privileges to delete the production db, but not to restore it?
19:41:43 <nooga> i have to wait for the administration
19:41:44 <nooga> yeah
19:41:46 <nooga> sick
19:41:46 <nooga> :D
19:41:48 <ais523> I know I once accidentally deleted all the files in my home directory
19:41:59 <ais523> but not recursively, luckily
19:42:04 <Ngevd> I have three times deleted all my files everywhere
19:42:07 <nooga> I did that too
19:42:08 <Ngevd> In three different ways
19:42:11 <ais523> and most of my important stuff's in directories
19:43:09 <elliott> `quote
19:43:10 <elliott> `quote
19:43:10 <elliott> `quote
19:43:11 <elliott> `quote
19:43:12 <elliott> `quote
19:43:13 <HackEgo> 16) <fizzie after embedding some of his department research into fungot> Finally I have found some actually useful purpose for it.
19:43:18 <HackEgo> 609) <elliott> well, oerjan has a lot of opinions on this, so I'll hand it over to him
19:43:18 <HackEgo> 611) <elliott_> now that we've cleared that up let us hug fungot = <fungot> elliott_: let's not start that again."
19:43:24 <Ngevd> Thank the maker!
19:43:25 <HackEgo> 29) <kaelis> so, he.. uh <kaelis> basically probed me with a weasel.
19:43:26 <HackEgo> 304) <oklopol> zzo38: you missed the point. the point was way stupider than that.
19:43:27 <nooga> elliott: how air is city?
19:43:32 <elliott> nooga: yes
19:43:41 <elliott> ais523: 29, yes?
19:43:57 <ais523> elliott: I wasn't looking, let me read it
19:44:01 <Ngevd> I've had an idea for a fungot style:
19:44:04 <fungot> Ngevd: that is the impression the commission' s great unwillingness to show flexibility in the labour market to new immigration, when we play games with montenegro and with southern serbia. this initiative raises various complex problems, which involve agreement with the european gauge high speed network of the leading economic, financial and banking timetable. on the basis of rule 8. notification of resignation in an official
19:44:08 <ais523> elliott: yep, 29
19:44:11 <Ngevd> No wait, it sucked
19:44:11 <Ngevd> Nevermind
19:44:16 <elliott> `delquote 29
19:44:18 <elliott> Ngevd: go on
19:44:19 <HackEgo> ​*poof*
19:44:22 <ais523> the other four are all good
19:44:24 <Ngevd> Uncyclopedia
19:44:38 <ais523> yep, that'd suck
19:45:12 <Ngevd> How hard is it to add styles?
19:45:38 <olsner> is there a list of styles? which style is best?
19:46:00 <Ngevd> ^style
19:46:00 <fungot> Available: agora alice c64 ct darwin discworld europarl* ff7 fisher fungot homestuck ic irc jargon lovecraft nethack pa sms speeches ss wp youtube
19:46:32 <elliott> `log [[:digit:]]: <oklopol> zzo38: you missed the point. the point was way stupider than that.
19:46:34 <elliott> olsner: fungot is the best style
19:46:36 <HackEgo> 2011-02-26.txt:22:17:09: <oklopol> zzo38: you missed the point. the point was way stupider than that.
19:46:37 <fungot> elliott: mrs president, you will see that we have once again a very brief comment on the law on the fnord of china. the hong kong talks, yet we assist mr giscard d'estaing by having a private, non-profit company that has produced fairly good economic growth and safeguarding the principle of mutual recognition in a sector that includes the views expressed, especially as regards schools and libraries, i.e. more employment opportu
19:46:40 <elliott> <Ngevd> Uncyclopedia
19:46:40 <elliott> eurgh
19:46:43 <elliott> `logurl 2011-02-26.txt:22:17:09:
19:46:46 <HackEgo> http://codu.org/logs/log/_esoteric/2011-02-26
19:47:09 <olsner> ^style fungot
19:47:09 <fungot> Selected style: fungot (What I've said myself)
19:47:38 <olsner> it's based on ... what it's already said?
19:47:49 <olsner> or what *I* have said?
19:47:51 <Ngevd> > cycle "fungot"
19:47:51 <fungot> Ngevd: agora alice c64 ct darwin discworld europarl ff7 fisher ic irc* jargon lovecraft nethack pa speeches ss wp youtube comments)
19:47:52 <lambdabot> "fungotfungotfungotfungotfungotfungotfungotfungotfungotfungotfungotfungotfu...
19:47:57 <Ngevd> > cycle "fungot "
19:47:57 <fungot> Ngevd: " so that the text. perhaps the cards, you've been contemplating what could it be it by now. try. i've often amused myself that way. consider this platform i am aware, commissioner, that there are no gentiles in the garden, examining the fastenings of the drawing-room window, washing and the summoning of the small piece of source code anywhere there's whitespace is ignored and made my own) so it wont have
19:47:58 <lambdabot> "fungot fungot fungot fungot fungot fungot fungot fungot fungot fungot fung...
19:48:06 <elliott> fungot ignores lambdabot.
19:48:07 <fungot> elliott: to, uhhh....... uncool it online. it was an unmanned flight--thanks for doing your homework. seriously, read description :) ( maybe i suck at english as u suck at english as u suck at english as u suck at english as u suck at english as u suck at english as u suck at english as u suck at english as u suck at english as u suck at english as u suck at english as u suck at english as u suck at english as u suck at english
19:48:10 <elliott> <olsner> it's based on ... what it's already said?
19:48:10 <fungot> elliott: agora alice c64 ct darwin discworld europarl ff7 fisher ic irc* jargon lovecraft nethack pa speeches ss wp youtube ( some youtube comments)
19:48:12 <elliott> olsner: yep
19:48:15 <Ngevd> Ooh, that's clever
19:48:21 <Madoka-Kaname> fungot, what is love?
19:48:21 <fungot> Madoka-Kaname: perhaps, if i could but learn is when you're fairies, you know, that thing
19:48:46 <Ngevd> Almost accurate, too!
19:49:03 <Ngevd> fizzie, how likely is fungot achieving sentience?
19:49:03 <fungot> Ngevd: that is just a value of type is created containing the syntax for mark if he was really gonna ' let' me keep. i will walke my selfe, richard. then, heaven, i love thee well; and, by my friend, c
19:49:29 <Ngevd> There could be a Shakespeare style?
19:49:33 <elliott> there is
19:49:35 <elliott> ss
19:49:45 <Ngevd> Ooh
19:49:52 <olsner> but, how can the fungot style be any good if it's just repeating old stuff?
19:49:52 <fungot> olsner:, so i'd be happy to help an fnord archive) implementations, more implementations, more implementations, more implementations, more implementations, more implementations, more implementations, more implementations, more implementations, more implementations, more implementations, more implementations, more implementations, more implementations, more implementations, more implementations, more implementations, more implem
19:49:52 <Ngevd> I thought that was Spades Slick or something
19:50:03 <elliott> olsner: because it's /all/ the styles mixed together
19:50:04 <Ngevd> olsner, interestingly
19:50:09 <elliott> olsner: proportionately to how much they said
19:50:13 <olsner> ah, right
19:50:16 <Ngevd> Also, I am thirsty
19:50:19 <Ngevd> I will go and drink
19:50:23 <elliott> olsner: and fungot has been around long enough that it's large enough for that to work
19:50:23 <fungot> elliott: that is just a value of type is created containing the syntax for mark if he was really gonna get worse and worse each week,
19:50:29 -!- Ngevd has changed nick to Taneb|Drinking.
19:50:31 <elliott> olsner: plus it has like program outputs and stuff which is fun
19:50:52 <olsner> fungot does more things than the fungot thing?
19:50:52 <fungot> olsner: agora alice c64 ct darwin discworld europarl ff7 fisher ic irc* jargon lovecraft nethack pa speeches ss wp
19:51:12 <olsner> and why is it quoting me the styles again
19:51:32 <elliott> olsner: because fungot can list styles
19:51:32 <fungot> elliott: or is it just me, or i: yet, you rogue!
19:51:38 <elliott> and that corpus is everything's fungot said
19:51:38 <fungot> elliott: agora alice c64 ct darwin discworld europarl ff7 fisher ic irc* jargon lovecraft nethack pa speeches ss wp youtube comments). the other compiler; c-intercal uses c. 0 is 9" minutes ago! :p) then performed by marilyn manson.its a instrumental but even democrats have a lying, and love the video
19:51:40 <elliott> olsner: yes, of course
19:51:46 <elliott> ^help
19:51:46 <fungot> ^<lang> <code>; ^def <command> <lang> <code>; ^show [command]; lang=bf/ul, code=text/str:N; ^str 0-9 get/set/add [text]; ^style [style]; ^bool
19:51:49 <elliott> ^cmds
19:51:55 <elliott> hmm, I swear ^cmds was the thing
19:51:56 <elliott> ^show
19:51:56 <fungot> echo reverb rev rot13 rev2 fib wc ul cho choo pow2 source help hw srmlebac uenlsbcmra scramble unscramble asc ord prefixes tmp test celebrate wiki chr
19:52:00 <elliott> there
19:52:20 <olsner> ^str 7 get
19:52:20 <fungot> Empty.
19:52:21 <Madoka-Kaname> ^style youtube
19:52:22 <fungot> Selected style: youtube (Some YouTube comments)
19:52:25 <Madoka-Kaname> fungot, hi.
19:52:25 <fungot> Madoka-Kaname: fuck you, jaybedwell.
19:52:35 <Madoka-Kaname> fungot, how's today..?
19:52:35 <fungot> Madoka-Kaname: lol, this happened in june 1988.
19:52:40 <Madoka-Kaname> fungot, are you crazy?
19:52:40 <fungot> Madoka-Kaname: if you shoot a tank in the autothrottle. during the cold war. and deep inside ( sounds verry stupid)i already was like a fucking waste of space and i
19:52:46 <Madoka-Kaname> Yep.
19:52:56 <Madoka-Kaname> Is this what Youtube's collective consciousness is like?
19:53:12 <olsner> hmm, does fungot actively seek out new youtube comments, or how does that work?
19:53:12 <fungot> olsner: its good for about 10 seconds and then suddenly go girlie and then i jizz in my pants
19:53:34 <olsner> jizzing after going girlie, that's something
19:53:36 <elliott> ^style fungot
19:53:36 <fungot> Selected style: fungot (What I've said myself)
19:53:48 <elliott> olsner: no, asiekierka just copy-pasted like ten comments
19:53:51 <elliott> because he has no idea how to program
19:53:58 <elliott> and then fizzie was forced to add them out of sympathy
19:54:24 <olsner> heh, ok...
19:55:00 <ais523> Madoka-Kaname: indeed
19:55:08 <Madoka-Kaname> asiekierka can program... just not well...
19:55:14 <elliott> he couldn't then, at least
19:55:24 <olsner> a google search for youtube comment corpus led to a python program to automatically extract comments from youtube
19:55:25 <elliott> this was in '09
19:56:22 <elliott> `quote
19:56:23 <elliott> `quote
19:56:23 <elliott> `quote
19:56:24 <elliott> `quote
19:56:24 <elliott> `quote
19:56:28 <HackEgo> 282) <elliott_> The context is Gracenotes releasing an illegal copy of a film about monster cock dildos.
19:56:32 <HackEgo> 113) <AnMaster> fungot!*@* added to ignore list. <fungot> AnMaster: i'd find that a bit annoying to wait for an ack.
19:56:32 <HackEgo> 618) <ais523> this strikes me as probably better than a singularity, because you can't trust a random AI, but you can probably trust olsner
19:56:38 <HackEgo> 679) <Gregor> When my registrar is emailing me that codu.xxx is available, that's a problem.
19:56:39 <HackEgo> 445) <olsner> as always in sweden everything goes to a fixed pattern: thursday is queueing at systembolaget to get beer and schnaps, friday is pickled herring, schnaps and dancing the frog dance around the phallos, saturday is dedicated to being hung over
19:56:50 <elliott> 618 is the best there
19:57:07 <ais523> 113 is good; 618 is good; 679's OK; 445 is also OK; I don't like 282 all that much
19:57:26 <olsner> and the context for 282 is the thing that it is the context for
19:57:41 <elliott> 282's humour derives from a previous quote that is actually funny
19:57:42 <elliott> so
19:57:43 <elliott> `delquote 282
19:57:46 <HackEgo> ​*poof*
19:57:57 <olsner> `quote 281
19:58:00 <HackEgo> 281) <ineiros> HELLWORLD! <fizzie> It's like HELLO WORLD, except not *quite*. <ineiros> There is more agony.
19:58:01 <olsner> that one?
19:58:10 <elliott> no
19:59:19 <olsner> `quote
19:59:21 <elliott> `quote
19:59:21 <HackEgo> 225) <elliott> ONLY GOOD QUOTES PLEASE! AND NO FAKE ONES EITHER!
19:59:22 <elliott> `quote
19:59:23 <elliott> `quote
19:59:23 <HackEgo> 123) <fungot> alise: why internet is like wtf
19:59:24 <elliott> `quote
19:59:25 <HackEgo> 473) <fizzie> elliott: You have become the very thing you fought for!
19:59:25 <HackEgo> 237) <zzo38> Maybe they should just get rid of Minecraft. If more people want it someone can make using GNU GPL v3 or later version, with different people, might improve slightly.
19:59:26 <HackEgo> 73) <Madelon> I want to read about Paris in the period 1900-1914 <Madelon> not about the sexual preferences of a bunch of writers >.>
19:59:42 <elliott> 225 is bad and also breaks the rules, but 73 is also bad
19:59:46 <elliott> the rest are good
20:00:26 <olsner> if 225 is bad, then breaking the rules it itself tries to set should count for ... something?
20:00:31 -!- Taneb|Drinking has changed nick to Taneb.
20:00:33 <Taneb> Hello!
20:00:45 <olsner> or maybe not
20:00:48 <elliott> olsner: it's a forged quote :P
20:00:52 <elliott> `delquote 225
20:00:54 <HackEgo> ​*poof*
20:01:16 -!- derdon has joined.
20:01:19 <olsner> bad, fake *and* simultaneously trying to forbid bad or fake quotes?
20:01:29 <Taneb> That's almost irony
20:01:29 -!- oerjan has joined.
20:01:39 -!- GreaseMonkey has joined.
20:01:39 <elliott> olsner: it is called a joke
20:02:04 <olsner> oh! ok
20:04:57 <olsner> we should make fungot activate automatically after a set period of silence
20:04:57 <fungot> olsner: to. why, this is for you guys are a lot of the design, prisoners and slaves that have sucked. rephrase: " i tried todo a _" is 0 1215: ( files " machines/ mips/ decls"
20:10:21 <ais523> olsner: 2 hours, doubling with each message, dropping to 0 after other people speak?
20:10:52 <elliott> ais523: it should be six hours, and set the topic
20:10:55 -!- citiral has joined.
20:11:01 <citiral> Hello everyone!
20:11:05 <ais523> hi again citiral
20:11:09 <citiral> Told'you I'd be back.
20:11:16 <olsner> ais523: that's ... frugal :) I was thinking more like a 5 minute timer that resets whenever someone says something
20:11:25 <oerjan> so you're reinventing optbot again?
20:11:29 <elliott> citiral: No, you're a different citiral.
20:11:40 <citiral> I'm the same citiral as yesterday.
20:11:48 <ais523> olsner: it'd be really spammy with nobody online
20:12:00 <citiral> I remember rambling about GTA, so it must have to be me yesterday.
20:12:04 <olsner> ais523: yep! :)
20:12:10 <elliott> citiral: implanted memories
20:12:19 <elliott> ais523: it would pad out logs
20:12:21 <elliott> to a constant length
20:12:28 <elliott> pls
20:12:42 <citiral> More like mind-jacking.
20:12:54 <citiral> The real citiral's body is hidden in the closet.
20:13:00 <olsner> it would only really be useful for cases where people have been talking a lot but then suddenly run out of topic and stop
20:13:36 <ais523> but there are infinitely many topics
20:13:37 <elliott> `quote
20:13:39 <elliott> `quote
20:13:39 <elliott> `quote
20:13:39 <HackEgo> 332) <Gregor> Ohheywait, I can make it a raytracer instead of a photon tracer so long as I run time backwards.
20:13:40 <elliott> `quote
20:13:40 <elliott> `quote
20:13:46 <HackEgo> 521) <Taneb> aibohphobia <Taneb> The fear of palindromes
20:13:47 <ais523> elliott: why don't we talk about esolangs sometime?
20:13:48 <HackEgo> 318) <cpressey> addquoting yourself? isn't that like commenting on your own facebook status? <Gregor> Yup, but I'm JUST THAT AWESOME.
20:13:51 <olsner> ais523: run out of the *current* topic then
20:13:53 <ais523> we were earlier, I think
20:13:55 <HackEgo> 46) <Aftran> It looks like my hairs are too fat. Can you help me split them?
20:13:55 <HackEgo> 149) <fungot> ais523: elf corpses are not considered expensive health food. but the most expensive.
20:14:00 <elliott> ais523: those suck
20:14:14 <elliott> hmm, those are all pretty good
20:14:25 <ais523> 46 is the worst IMO
20:14:29 <ais523> but am not sure if it's worth deleting
20:14:45 <ais523> `addquote <elliott> ais523: those suck <elliott> hmm, those are all pretty good
20:14:47 <elliott> it's mildly amusing
20:14:47 <HackEgo> 689) <elliott> ais523: those suck <elliott> hmm, those are all pretty good
20:15:07 <elliott> ais523: that one is awful, but OK FINE
20:15:16 <ais523> elliott: giving you a new option of ones to delet
20:15:18 <ais523> *delete
20:15:20 <ais523> it's not terrible
20:15:27 <elliott> :D
20:15:29 <elliott> `quote
20:15:30 <elliott> `quote
20:15:30 <elliott> `quote
20:15:30 <elliott> `quote
20:15:31 <elliott> `quote
20:15:33 <HackEgo> 2) <Slereah> EgoBot just opened a chat session with me to say "bork bork bork"
20:15:33 <elliott> this is the funnest game omg
20:15:36 <HackEgo> 2) <Slereah> EgoBot just opened a chat session with me to say "bork bork bork"
20:15:37 <HackEgo> 69) <fungot> i am sad ( of course by analogy) :) smileys)
20:15:38 <elliott> ...
20:15:39 <elliott> that
20:15:40 <elliott> same
20:15:41 <elliott> quote
20:15:44 <HackEgo> 302) <elliott> just because i'm homosexual <elliott> doesn't mean i have sex with men. <elliott> ...i'm also a paedophile [...] <elliott> see if i'm a gay paedophile <elliott> i don't have sex with men <elliott> i have sex with BOYS
20:15:45 <HackEgo> 571) <Phantom_Hoover> I didn't realise nickel apparently can't be shaped into a screw because of some fundamental feature of dwarven physics.
20:15:51 <elliott> DF quotes are all good
20:15:53 <elliott> universally
20:15:56 <elliott> anyway I'm restarting since it duplicated that one
20:15:57 <elliott> `quote
20:15:58 <elliott> `quote
20:15:58 <elliott> `quote
20:15:58 <elliott> `quote
20:15:59 <elliott> `quote
20:16:05 <HackEgo> 621) <Phantom_Hoover> We have no leather. <Phantom_Hoover> Time to use that most venerable of resources, the puppy.
20:16:07 <HackEgo> 653) <Phantom_Hoover> It's like Pygmalion and Galatea but more weeaboo. <Phantom_Hoover> Also lesbian.
20:16:13 <citiral> What language are most bots written in here?
20:16:18 <HackEgo> 185) <Vorpal> pikhq, Okinawan? Wtf is that
20:16:18 <HackEgo> 540) <Phantom_Hoover> Oh god. <Phantom_Hoover> I've become a metallurgy hipster.
20:16:19 <HackEgo> 37) <lacota> I guess when you're immortal, mapping your fonts isn't necessary
20:16:23 <elliott> oh, has anyone explained to citiral what we're actually doing here
20:16:31 <elliott> citiral: HackEgo is a Linux system so it's all sorts of languages
20:16:32 <citiral> I was wondering...
20:16:32 <elliott> EgoBot too
20:16:37 <elliott> but the actual bot code is C and sh
20:16:40 <elliott> fungot is Funge
20:16:40 <fungot> elliott: agora alice c64 ct darwin discworld europarl ff7 fisher ic irc* jargon lovecraft nethack pa speeches ss wp youtube*
20:16:44 <elliott> lambdabot is Haskell
20:16:53 <elliott> clog is... dunno, but it never speaks :-)
20:16:53 <olsner> elliott: I think you might need to explain that to me too, it's a bit hazy to me
20:16:58 <elliott> glogbot is C, I think maybe sh too
20:17:04 <elliott> olsner: cullin the quotes
20:17:07 <ais523> thutubot is written in Thutu, but isn't here
20:17:09 <elliott> ais523: 185, right?
20:17:15 <oerjan> elliott: you can get an error message out of clog
20:17:20 <citiral> Those are a lot of bots..
20:17:21 <ais523> elliott: right, but we should stop this at some point
20:17:26 <citiral> Watch out, they might become sentient!
20:17:26 <elliott> `delquote 185
20:17:28 <HackEgo> ​*poof*
20:17:28 <elliott> ais523: fiiiiine :P
20:17:32 <citiral> Skynet all over again
20:17:33 <citiral> !
20:17:36 <elliott> citiral: only four that ever speak
20:17:37 <olsner> elliott: aah, is that what we're doing! carry on then :)
20:17:48 <elliott> olsner: but ais523 said to stop.......
20:17:50 <oerjan> fungot: what does he mean, clearly you are sentient already?
20:17:50 <fungot> oerjan: if that is not used commonly and carries with it an array subscript was too easy heh one time i figured if it's possible. " formal " desu" or " not provide" :)
20:17:51 -!- thutubot has joined.
20:17:56 <ais523> +help
20:18:01 <elliott> hi thutubot
20:18:02 <ais523> umm, I've forgotten how to work this thing
20:18:03 <ais523> +hello
20:18:03 <thutubot> Hello, ais523!
20:18:04 <elliott> +haskell 99
20:18:15 <citiral> +hello
20:18:15 <thutubot> Hello, citiral!
20:18:18 <citiral> +test
20:18:19 <olsner> elliott: he said to stop *at some time*, not now
20:18:23 <elliott> ah, true
20:18:26 <ais523> elliott: lambdabot's ignoring thutubot…
20:18:31 <elliott> ais523: no, it was broken
20:18:34 <ais523> +ul (:aSS):aSS
20:18:35 <thutubot> (:aSS):aSS
20:18:36 <elliott> you said that last tim
20:18:36 <elliott> e
20:18:38 <elliott> it broke somehow
20:18:41 <elliott> olsner: you do the next batch (it's five `quotes)
20:18:41 <ais523> elliott: well, it sent the privmsg to lambdabot, but got no response
20:18:46 <elliott> ais523: no, it's broken :-)
20:18:46 <ais523> I'm not sure exactly what happened there
20:18:50 <elliott> you figured out how at the time
20:18:54 <citiral> So how do these bots get hooked up to an IRC client?
20:19:00 <ais523> PRIVMSG lambdabot :@run 99
20:19:03 <ais523> citiral: they are IRC clients
20:19:06 <elliott> citiral: they don't, they connect to the server themselves
20:19:10 <elliott> oh
20:19:11 <ais523> IRC is a pretty simple protocol; you can do it by hand, if you like
20:19:12 <citiral> Oh, I see.
20:19:13 <elliott> apart from myndzi \o/
20:19:14 <myndzi> |
20:19:14 <myndzi> /<
20:19:16 <elliott> that's an mirc script
20:19:20 <elliott> \m/ \o/ \m/
20:19:20 <myndzi> |
20:19:20 <myndzi> /<
20:19:22 <elliott> aww
20:19:25 <elliott> ,o/ \o,
20:19:27 <elliott> hmph
20:19:29 <elliott> i'm bad at this
20:19:37 <olsner> is myndzi a person? or does it only do the stick figures?
20:19:49 <ais523> myndzi is a person and bot sharing the same account
20:20:06 <ais523> which lead to fun when I tried to manipulate the bot into getting the person to sign up for Agora
20:20:14 <olsner> omg, the ambiguity, we can never be sure which of them is speaking
20:20:17 <elliott> what does myndzi repeat on, again?
20:20:49 <oerjan> ^celebrate
20:20:50 <fungot> \o| |o| |o/ \m/ \m/ |o/ \o/ \o| \m/ \m/ \o| |o| |o/
20:20:50 <myndzi> | | | `\o/´ | ¦ | `\o/´ | | |
20:20:50 <myndzi> /'\ /< /< | /´\ ´¸¨ |\ | |\ /'\ /`\
20:20:51 <myndzi> /´\ /'¯|_)
20:20:51 <myndzi> (_| |_) (_|
20:20:55 <elliott> :')
20:20:56 <citiral> Is it possible to write a bot in befunge-93 or -98?
20:21:04 <Deewiant> ^source
20:21:04 <fungot> http://git.zem.fi/fungot/blob/HEAD:/fungot.b98
20:21:05 <ais523> citiral: -98 actually has networking code
20:21:07 <elliott> citiral: you /know/ it's possible in -98, we've shown you fungot's source about ten times
20:21:07 <fungot> elliott: no, it's not. it's more complex than that. read the code.) good stuff to colin kernel be the glass in its short justification, the committee on budgetary control, not going to refer to ur own name? ya)
20:21:09 <ais523> so fungot's written in it
20:21:09 <fungot> ais523: just to help an fnord archive) or " in meinen lederhosen" ( plural
20:21:19 <elliott> -93 is doable with netcat
20:21:23 <elliott> even EgoBot and HackEgo use netcat (well, socat)
20:21:26 <ais523> in -93, it would be much harder, and you'd need an external program to connect it to IRC
20:21:35 <elliott> but -93 is way too limited
20:21:36 <ais523> thutubot uses netcat, which is probably simplest
20:21:43 <elliott> you could do a hunt the wumpus bot but probably nothing else :)
20:22:12 <ais523> +ul (12)S(*a(~:)~*^~):((1)S)~*~((2)S:*)~*:(~:()~)~*^(a(:^)*~a(*()~)~*^~^):^
20:22:16 <citiral> And if I write even the simplest of bots I may put him here, or do I first need some sort of approval?
20:22:21 <thutubot> 1221121221221121122121121221121121221221121221211211221221121221221121121221211221221121221221121122121121221221121121221121122121121122122112122121122122121121122122112122121121122121121221121121221211221221121221221121121221121122122121121221121122121121 ...too much output!
20:22:25 <ais523> citiral: the basic rule is to try to avoid botloops
20:22:28 <ais523> so get your bot to ignore other bots
20:22:30 <olsner> "<fungot> elliott: no, it's not. it's more complex than that. read the code." :)
20:22:31 <fungot> olsner:, so i'd make stuff up to. why, this is for you guys are a lot, but played so bad and missed that: ( :::ass. in case you missed that: ( :::ass. in case you missed that: ( :::ass. in case you missed that: ( :::ass. in case you missed that: ( :::ass. in case you missed that: ( :::ass. in case you missed that: ( :::ass. in case you missed that: ( :::ass. in case you missed that: ( :::ass. in case you missed that: ( :::ass.
20:22:34 <ais523> otherwise, channels get spammed
20:22:41 <elliott> olsner: heh
20:22:53 <elliott> ais523: that's not a rule
20:22:59 * oerjan thinks myndzi repeats on ACTIONS mentioning him
20:22:59 * myndzi thinks oerjan repeats on ACTIONS mentioning him
20:23:00 <elliott> lambdabot doesn't do any ignores
20:23:01 <ais523> elliott: I just made it up
20:23:08 <ais523> oerjan: oh, myndzi still does that?
20:23:13 <elliott> and EgoBot/HackEgo's bot-loop protection is
20:23:14 <ais523> it has exceptions for Agora-related terms, IIRC
20:23:15 <elliott> (a) bad;
20:23:16 <elliott> (b) new
20:23:20 <elliott> ais523: hahaha, really?
20:23:26 * elliott agrees to the following: myndzi
20:23:27 * myndzi agrees to the following: elliott
20:23:29 * elliott agrees to the following Agora: myndzi
20:23:32 <elliott> LOL
20:23:38 * elliott Agora myndzi
20:23:45 <elliott> got sick of it, eh?
20:23:46 <ais523> elliott: really
20:24:50 <Taneb> What punctuations are free for bots?
20:24:56 <olsner> what's this agora and how were you going to make myndzi's bot sign him up for it?
20:25:05 <ais523> olsner: Agora is a game, a nomic played by email
20:25:11 <ais523> it's been running continuously since 1993
20:25:17 <ais523> due to a rule that said that wins don't end the game
20:25:45 <Madoka-Kaname> ais523.
20:25:47 <Madoka-Kaname> Does an ignore list work?
20:25:49 <ais523> so the idea was to get myndzi to agree to allow us to act on his behalf to cause him to sign up
20:25:55 <ais523> Madoka-Kaname: reasonably well, yes
20:26:02 <ais523> you can't botloop if the bots pay no attention to each other
20:26:03 <elliott> Madoka-Kaname: iojfdogfgjkglkhgdflkjhg not those pings again
20:26:08 <oerjan> <ais523> citiral: the basic rule is to try to avoid botloops <-- hey preemptive ignores for new bots are against tradition!
20:26:20 <ais523> oerjan: indeed
20:26:24 <citiral> Wut?
20:26:25 <Madoka-Kaname> Well...
20:26:27 <ais523> and ops keep having to be involved, or else bot owners
20:26:37 <Madoka-Kaname> A hug bot wouldn't loop unless there are other huggy bots.
20:26:45 <Madoka-Kaname> Which means..
20:26:46 <Madoka-Kaname> :3
20:26:53 <ais523> yep, another possibility is to output only with a given prefix
20:26:55 <elliott> ?so what
20:26:55 <lambdabot> what not available
20:26:55 <thutubot> what not available
20:27:01 <elliott> thutubot, no......
20:27:04 <ais523> most of the bots here are capable of evaluating programming languages, anyway
20:27:09 <oerjan> <fungot> olsner:, <-- hm fizzie, isn't that missing space a bug
20:27:10 <fungot> oerjan: or is it just me, or i: yet, you rogue! pass him!
20:27:20 <elliott> oerjan: no
20:27:24 <ais523> > "is thutubot going to copy everything I say again?"
20:27:24 <lambdabot> "is thutubot going to copy everything I say again?"
20:27:25 <thutubot> "is thutubot going to copy everything I say again?"
20:27:26 <elliott> oerjan: it was explained a while ago
20:27:38 <elliott> ?so +ul (hello)S
20:27:38 <lambdabot> +ul (hello)S not available
20:27:38 <thutubot> +ul (hello)S not available
20:27:45 <elliott> ?so +ul (?so +ul)S
20:27:45 <lambdabot> +ul (?so +ul)S not available
20:27:45 <thutubot> +ul (?so +ul)S not available
20:27:50 <elliott> grr, thutubot ignores lambdabot?
20:27:56 <elliott> or is it the not available that trips it
20:27:58 <ais523> elliott: no, it just repeats everything it says
20:28:04 <elliott> ais523: <lambdabot> +ul (?so +ul)S not available
20:28:05 <elliott> wasn't run
20:28:06 <ais523> and that codepath's taking precedence over the other codepath
20:28:07 <elliott> +ul (?so +ul)S not available
20:28:08 <thutubot> ?so +ul
20:28:08 <lambdabot> +ul not available
20:28:08 <thutubot> +ul not available
20:28:09 <ais523> that evaluates Underload
20:28:09 <elliott> ah
20:28:21 <ais523> apparently it doesn't do both, which is not surprising given how Thutu works
20:28:23 <elliott> ok well brb
20:28:31 <olsner> we have a bot that repeats whatever lambdabot says?
20:28:44 <ais523> apparently so
20:28:51 <olsner> sounds... useful
20:29:04 <ais523> it was originally a joke
20:29:11 <ais523> after implementing Underload in Thutu
20:29:14 <ais523> I pretended to implement Haskell
20:29:22 <ais523> where it was actually done by asking Lambdabot for the answer
20:29:37 <Gregor> lol
20:29:43 <olsner> ah, clever :)
20:29:46 <oerjan> <elliott> oerjan: no <-- but it means olsner isn't properly addressed
20:30:06 <ais523> but lambdabot ignores thutubot
20:30:08 <ais523> at least in PM
20:30:12 <ais523> +ul (> 2+2)S
20:30:12 <thutubot> > 2+2
20:30:13 <lambdabot> 4
20:30:14 <thutubot> 4
20:30:21 <ais523> not in-channel, though, it seems
20:30:45 <Taneb> I may make a bot
20:31:00 <olsner> oerjan: "properly"? I consider anything that has "olsner" in it somewhere as being addressed to me
20:31:10 <nooga> voodoo
20:31:15 <oerjan> ^prefixes
20:31:15 <fungot> Bot prefixes: fungot ^, HackEgo `, EgoBot !, lambdabot @ or ?
20:31:23 <oerjan> Taneb: ^
20:31:36 <Taneb> Can I reserce '~'?
20:31:45 <Taneb> Can I reserve it to?
20:31:51 <Taneb> to use that is
20:31:53 <ais523> thutubot +
20:31:56 <Taneb> I'm not good at it
20:31:59 <Taneb> *this
20:32:02 <Taneb> AAARGH!
20:32:03 <ais523> lambdabot also uses >
20:32:15 <Deewiant> People use *
20:32:22 <Madoka-Kaname> Taneb.
20:32:25 <Madoka-Kaname> My bot already uses ~
20:32:30 -!- Vivio-chan has joined.
20:32:34 <Madoka-Kaname> There.
20:32:35 <Madoka-Kaname> It's here.
20:32:36 <Taneb> '#' then
20:32:40 <Madoka-Kaname> ~part
20:32:40 -!- Vivio-chan has left.
20:32:40 <Madoka-Kaname> =p
20:32:51 <Madoka-Kaname> Yeah.
20:32:54 <Madoka-Kaname> I have a ~prefix command
20:32:55 <Madoka-Kaname> Use whatever.
20:35:56 <Taneb> A bot written in Piet would be interesting
20:36:02 <Madoka-Kaname> I can set the prefix to "HEY PLEASE DO " if I wanted >>
20:37:17 <oerjan> <ais523> lambdabot also uses > <-- with a space after though, so unlikely to conflict
20:40:45 <olsner> my bot just used its name as prefix
20:40:52 <Taneb> Because I'm not very good at this
20:40:57 <olsner> (it was also completely useless)
20:41:02 <Taneb> Can I make a bot that just looks things up on the wiki?
20:41:09 <Taneb> And if that fails on wikipedia?
20:41:11 <nooga> i worship llvm
20:41:21 <Taneb> And if that fails just googles them and returns the first hit?
20:43:28 <ais523> Taneb: I don't know, can you?
20:43:35 <Taneb> Probably not
20:43:41 <Taneb> I'm not very good at this
20:43:52 <oerjan> `wiki Velato
20:43:54 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: wiki: not found
20:43:58 <oerjan> darn
20:44:04 <oerjan> `ls bin
20:44:06 <HackEgo> ​? \ addquote \ allquotes \ calc \ define \ delquote \ etymology \ forget \ fortune \ frink \ google \ json \ k \ karma \ karma+ \ karma- \ learn \ log \ logurl \ macro \ marco \ paste \ pastekarma \ pastelog \ pastelogs \ pastenquotes \ pastequotes \ pastewisdom \ ping \ prefixes \ qc \ quine \ quote \ quotes \ roll \ runperl
20:44:15 <elliott> it vbroke
20:44:20 <olsner> pastewisdom?
20:44:25 <olsner> `pastewisdom
20:44:27 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.21742
20:45:02 <oerjan> `run ls bin | tail
20:45:04 <HackEgo> runperl \ toutf8 \ translate \ translatefromto \ translateto \ units \ url \ wl \ word \ wtf
20:45:09 <olsner> "/tmp/paste.21742: FORTRAN program" :S
20:46:13 <oerjan> `cat bin/pastewisdom
20:46:15 <HackEgo> ​#!/bin/sh \ cat wisdom/* | paste
20:46:33 <olsner> `ls wisdom
20:46:34 <HackEgo> ais523 \ augur \ c \ elliott \ everyone \ finland \ fizzie \ flower \ friendship \ gregor \ hackego \ haskell \ ievan \ intercal \ itidus20 \ monad \ monads \ monqy \ oerjan \ oklopol \ qdb \ qdbformat \ sgeo \ shachaf \ u \ vorpal \ welcome \ wiki
20:46:51 <oerjan> `? oklopol
20:46:54 <HackEgo> oklopol "so i hear these blogs are getting popular, people like writing about their lives and shit. on this thing called the internet which is like a neural network only really stupid."
20:47:20 <olsner> `? elliott
20:47:22 <HackEgo> elliott wrote this learn DB, and wrote or improved many of the other commands in this bot. He probably has done other things?
20:47:41 <olsner> `? friendship
20:47:43 <HackEgo> friendship wisdom
20:49:07 -!- derrik has quit (Quit: a bientot).
20:49:14 <oerjan> `? quine quine
20:49:16 <HackEgo> quine quine? ¯\(°_o)/¯
20:49:20 <oerjan> er
20:49:23 <oerjan> `quine quine
20:49:25 <HackEgo> ​`quine
20:49:54 <elliott> `rm bin/quine
20:49:55 <HackEgo> No output.
20:50:16 <oerjan> `? finland
20:50:18 <HackEgo> Finland is a European country. There are two people in Finland, and at least five of them are in this channel. Corun drives the bus.
20:50:43 <Taneb> Finland is the largest esoteric programming community in the world
20:50:48 <Taneb> Narrowly beating Hexham
20:50:53 <olsner> *in Finland
20:51:20 <olsner> `quote
20:51:22 <HackEgo> 92) <Slereah> I can do everything a Turing machine can do, except love
20:51:24 <olsner> `quote finland
20:51:26 <HackEgo> No output.
20:51:27 <Taneb> Hexham isn't in Finland!
20:51:35 <oerjan> not any longer
20:51:35 <Taneb> Hexham's in hell!
20:51:49 <oerjan> but hell is in norway
20:51:54 <Taneb> EXACTLY
20:52:00 <olsner> Hexham: no longer not in Finland
20:52:00 <Taneb> Norway != Finland
20:52:08 <oerjan> Q.E.D.!
20:52:10 <Taneb> Despite many superficial similarities
20:52:33 <oerjan> like cold and heavy drinking
20:52:50 <Taneb> And sharing a border
20:52:52 <Taneb> Goodnight
20:52:54 -!- Taneb has quit (Quit: Leaving).
20:52:56 <olsner> norway has heavy drinking?
20:53:19 <oerjan> it has a weekend binge drinking tradition
20:54:12 <olsner> but I suppose Finland has a continuous binge drinking tradition instead
20:55:31 <oerjan> ...i suppose.
20:56:27 <oerjan> `log [t]otall?er
20:56:46 <HackEgo> 2008-09-03.txt:20:35:59: <oerjan> teetotaller
20:56:56 <oerjan> bah humbug
20:57:09 <oerjan> `log [t]otall?er
20:57:14 <HackEgo> 2010-10-17.txt:18:49:50: <Vorpal> ais523, I'm a teetotaller
20:57:25 <oerjan> `log finn.*[t]otall?er
20:57:30 <HackEgo> No output.
20:57:36 <oerjan> shocking
20:57:38 <oerjan> oh hm
20:57:41 <oerjan> `log fin.*[t]otall?er
20:57:46 <HackEgo> No output.
20:57:53 <oerjan> `log [t]otall?er.*fin
20:57:58 <HackEgo> No output.
20:58:28 <fizzie> oerjan: If you want a rexplanation: fungot does spacing by adding a space in front of regular words and some punctuation (opening parens etc.) but not others; so [foo][bar][.] properly turns into " foo bar." which is concatenated with "nick:" to get "nick: foo bar.". But it of course fails if the thing starts with no-space punctuation.
20:58:28 <fungot> fizzie: just to help an fnord archive) for fnord macros, a wonderful!' i am sorry, in particular candidate countries. if the transatlantic relationship, but the parliament has possessed him, yet he talkes well," he said, taking the tfy-0.201 course this autumn, that the poorest regions is not exacerbated by another divide, as you see, if all a human thinks it's about what sounds good when it's spoken. or read.
20:58:52 <fizzie> (Same thing is responsible for the extra spaces after opening (, " or '.)
20:59:01 <fizzie> Oh no, a paren-imbalance. :/
20:59:12 <oerjan> i was trying to find someone's comment to the effect that all finns are either alcoholic or teetotallers, but it may not have been said here, or in that way.
21:00:31 <oerjan> the parenthesis was probably eaten by the fnord
21:00:57 <olsner> would it be possible to make fungot always match the parens? it's sooo annoying when they are mismatched :)
21:00:58 <fungot> olsner: so, let's say i call them mindless games. if we hit every stupid person, any person going to the theater
21:01:00 -!- kwertii has joined.
21:01:29 <fizzie> olsner: I'm happy to accept a patch. (The Perl babble-testing script does keep a stack to force them to match.)
21:01:45 <olsner> ^source
21:01:45 <fungot> http://git.zem.fi/fungot/blob/HEAD:/fungot.b98
21:02:21 <fizzie> The babbling is contained on lines 125-161.
21:03:21 <fizzie> (There's even a comment.)
21:03:27 <oerjan> what happens if you hit a context where only ) is possible?
21:03:47 <oerjan> this might be tricky
21:04:46 -!- citiral has quit.
21:04:57 <fizzie> oerjan: The Perl script doesn't modify the generation; as it constructs the string version of the output (internally it's generated as a list of tokens), it just skips over closing punctuation that doesn't match the stack, and at the end of the string closes all leftover open things.
21:05:18 -!- ive has joined.
21:06:04 <olsner> fizzie: I think I'll have to learn to read befunge first, that block of characters makes no sense to me
21:06:44 <elliott> that might not help
21:06:45 <elliott> :)
21:06:46 <fizzie> I'm not entirely sure which block does what; I think lines 163-169 are a binary search, but I can't quite recall what it's for.
21:07:13 <olsner> elliott: did fizzie write this?
21:07:22 <elliott> yes
21:07:47 <elliott> olsner: (why ask me and not fizzie?)
21:07:57 <olsner> elliott: hmm, not sure why I did that
21:07:59 <oerjan> elliott: he might have gone insane in the process
21:08:07 <fizzie> It's a bit of a write-only language.
21:08:36 <elliott> olsner: fizzie might deny it, I guess
21:08:47 <fizzie> Anyway, I think it does at least do the same thing which is to produce first a list of integer tokens, and then later turn all those into a string.
21:08:48 <elliott> fizzie: Well, it's more readable than Mycology
21:09:36 <fizzie> Oh, right, the binary search is probably used for "find the subnode for the next token in context", that makes sense. Especially since it's "called" from so far up.
21:09:38 <elliott> 151 > ^ 0SE":,)'..!f"('?/s
21:09:47 <elliott> fizzie: What does that string do
21:09:55 <fizzie> It's a comment. :p
21:10:03 <elliott> fizzie: What.
21:10:06 <fizzie> For the jump table below.
21:10:11 <elliott> FSVO comment
21:10:30 <fizzie> Each letter denotes what the 'v' below it corresponds to.
21:10:39 <elliott> Nice.
21:11:06 <fizzie> 0 being "UNK" i.e. fnord, S/E being the (empty) sentence start/end tokens, most of the punctuation being exactly what they are, and 'f'/'s' are I think "frown" and "smiley" maybe.
21:11:24 <olsner> and the v change the direction of the instruction pointer to go down? so how does it get to those 'v's below that line?
21:11:45 <fizzie> olsner: It's the "j" next to them; that pops from the stack and jumps that many slots.
21:11:51 <fizzie> jvvvvvv is a "common" jump table idiom.
21:11:54 <olsner> aah
21:12:08 <fizzie> Oh, and the first . is a "." and the second . is a "...", obvsly.
21:12:23 <olsner> obvsly.
21:12:25 <elliott> You should have used ( and ) for f and s, if that's okay. :p
21:13:16 <olsner> where's the entry point to that block?
21:13:48 <elliott> "Favourite esoteric languages:
21:13:48 <elliott> Brainfuck
21:13:48 <elliott> Ook!"
21:13:52 <elliott> "Favourite non-esoteric languages:
21:13:52 <elliott> Visual Basic.NET
21:13:52 <elliott> Pascal"
21:13:53 <elliott> oh dear
21:14:02 <fizzie> olsner: The first > on line 152 is where it comes in from the v in line 136, I'd say.
21:14:32 <oerjan> elliott: if someone _wanted_ to troll us, they'd put in those, wouldn't they
21:14:41 <elliott> oerjan: :D
21:14:46 <elliott> favourite esoteric languages
21:14:47 <elliott> vb.net
21:14:48 <elliott> pascal
21:14:51 <elliott> favourite non-esoteric languages
21:14:51 <elliott> brainfuck
21:14:52 <elliott> ook
21:15:06 <elliott> oerjan: in fairness, their language is _not_ a bf derivative
21:15:14 <oerjan> well ok then
21:15:24 <olsner> fizzie: for this particular jump table? how about the whole markov-chain thingy?
21:15:28 <Madoka-Kaname> Link?
21:15:31 <elliott> olsner: btw all the comments are at the bottom
21:15:38 <olsner> (or the "catch-all own-name hook" as the comment above it seems to call it)
21:15:43 <elliott> Madoka-Kaname: http://esoteric.voxelperfect.net/wiki/User:Marcsances
21:15:46 -!- nooga has quit (Ping timeout: 256 seconds).
21:16:04 <olsner> elliott: wow, actual comments :O
21:16:17 <elliott> olsner: mostly storage locations :P
21:16:33 <fizzie> olsner: Right, the whole thing starts with the >f1G07GF...
21:16:48 <fizzie> olsner: That's the "check if my own name is in the message" bit.
21:17:03 <olsner> right, obviously
21:17:27 <fizzie> Well, you know. f1G to get the own name, 07G to get the message, and F from STRN to do strstr.
21:17:57 <fizzie> There's a list of "variables" (playfield locations) at the bottom.
21:18:04 <fizzie> 396 (15-,1): bot's nickname
21:18:13 <elliott> playfield? :p
21:18:19 <fizzie> 407 (*,6-x): command options, depending on amount
21:18:50 <fizzie> "This 'playfield' can be used for auxilliary storage when the stack alone will not suffice, but keep in mind that it also contains the running program." -- befunge-93 spec.
21:18:59 <fizzie> I suppose since this is 98, I should be calling it the funge-space.
21:19:10 <fizzie> I've gotten used to the 93 terminology, though.
21:19:32 <fizzie> Okay, the comment in the code does say "fungespace storage:" appropriately.
21:19:48 <olsner> if it also contains the running program, that means some of the code is overwritten by data during startup?
21:19:48 <elliott> jitfunge was -93 right
21:19:51 <elliott> or no
21:20:08 <fizzie> No, it's 98; 93 is a bit boring.
21:20:09 <elliott> olsner: or you just embed the data into dead code
21:20:11 <elliott> fizzie: indeed
21:20:18 <elliott> fizzie: didn't it segfault on mycology or something
21:20:27 <fizzie> olsner: The code is loaded starting at line 100.
21:20:36 -!- augur has quit (Ping timeout: 258 seconds).
21:20:49 <fizzie> elliott: I don't quite recall the latest state. At least it doesn't run through it.
21:21:01 <elliott> fizzie: heh
21:21:02 <fizzie> olsner: In case of fungot, that is. Not in general.
21:21:02 <fungot> fizzie:, so i'd be happy to help an fnord archive)
21:21:22 <oerjan> see? it's the fnords that eat the ('s
21:21:37 <olsner> fizzie: you mean line 1 of the file appears at line 100 in fungespace? or just that everything up until line 100 gets overwritten?
21:22:06 <fizzie> olsner: The former. There's a loader stub to set settings and load the main code at that offset.
21:22:19 <fizzie> http://git.zem.fi/fungot/blob/HEAD:/fungot-load-freenode.b98
21:22:19 <fungot> fizzie: if it's ( syntactically) long... part ( it's likely that dalton! leave her alone!
21:23:23 <fizzie> I suppose it could as easily read the nick, server, port things from a file instead, but that's the way it is at the moment.
21:24:01 <fizzie> There's a silly snippet at the start of the code that's used by ^reload to wipe the code and reload an updated version. It might not exactly work all that well though.
21:24:47 <olsner> funny with all the reversed strings in befunge code
21:25:16 <fizzie> "Detroppus ton GNIF. Detroppus ton NRTS. Detroppus ton KCOS. Detroppus ton EKCS."
21:28:20 <Deewiant> Thank god for vim's reverse insert mode
21:28:37 <oerjan> Detroppus ton, the infamous anvil-dropping spell
21:29:12 <ais523> Deewiant: Emacs' picture-mode is pretty good for Befunge
21:29:24 <ais523> it lets you move the cursor in any of the compass directions after typing a key
21:29:29 <ais523> so you can go backwards or upwards or whatever
21:29:32 <ais523> even diagonally
21:29:48 <olsner> Deewiant: wow, vim actually *has* that?
21:29:55 <Deewiant> ais523: Does it have arbitrary deltas?
21:30:00 <Deewiant> (Bonus: with wrapping?)
21:30:02 <ais523> Deewiant: not that I know of
21:30:28 <Deewiant> olsner: Yes, :he ins-reverse
21:31:03 <olsner> Deewiant: just found the docs on the interwebs too, well, mind blown
21:31:22 <Deewiant> Note the unfortunate "There is no reverse replace mode (yet)."
21:32:03 <Deewiant> These days I just use a selection-reversing mapping
21:37:52 <elliott> <Deewiant> Note the unfortunate "There is no reverse replace mode (yet)."
21:38:00 <elliott> Deewiant: shouldn't you just be able to run every command on some kind of reverse-overlay
21:38:51 <Deewiant> One should be able to do all kinds of things, but one can only reverse insert
21:39:40 <elliott> Deewiant: vim is the worst vim
21:39:53 <Deewiant> It's also the only vim and thus the best vim
21:40:23 <elliott> Deewiant: there are other vims i think
21:40:33 <Deewiant> They're subsets of vims
21:40:36 <Deewiant> At best
21:41:15 <elliott> Deewiant: Hey, elvis even has a GUI
21:41:54 <Deewiant> If it barfs on my .vimrc it's likely not much of a vim
21:42:07 <elliott> Deewiant: Your .vimrc probably has, like, vimscript features only in vcs
21:42:22 <elliott> Whereby vcs is whatever vcs vim use
21:42:44 <Deewiant> I think it's compatible back to 7.0 but not 6.x
21:43:06 <elliott> I guess I should say that vim is a crappy vi
21:43:13 <elliott> They kind of gave up on the whole compositional commands model
21:43:30 <Deewiant> Partly
21:43:52 <elliott> Deewiant: Come on, even regexp replaces happen outside of the command model
21:43:57 <elliott> As opposed to operating on a region
21:45:11 <Deewiant> That's partly because of how it has to be input; the command would be s/foo/bar/flags<CR>region and the <CR> makes it a bit weird
21:46:03 <elliott> Deewiant: I do not believe that is the real reason :P
21:46:20 <elliott> I'm like 90 percent certain it's just historical
21:46:25 -!- Patashu has joined.
21:46:29 <Deewiant> I think it's a decent reason, if nothing else
21:46:35 <elliott> Deewiant: Just put another / after the flags
21:46:53 <Deewiant> Too typo-sensitive
21:47:10 <elliott> Deewiant: Flags in {} after s
21:47:17 <elliott> Or actually
21:47:18 <elliott> Not even in {}
21:47:21 <elliott> Just before the first /
21:47:26 <Deewiant> I'd just have :'<.'> operate on the exact region, not the lines covered
21:47:36 <elliott> :'<.'>?
21:47:48 <Deewiant> elliott: That's still typo-sensitive, you might want \/ but type / or whatever
21:48:03 <elliott> Deewiant: Eh?
21:48:07 <elliott> That's just a problem with regexps
21:48:14 <Deewiant> Yes, regexps are typo-sensitive
21:48:21 <Deewiant> But if they're an ex command you can edit them
21:48:31 <Deewiant> If it's a normal mode command you have to restart at the first typo
21:48:41 <elliott> Deewiant: That's a problem with normal mode, not regexps
21:48:47 <Deewiant> Fair enough
21:48:54 <Deewiant> And now you're talking about something very non-vi
21:48:58 <elliott> Why shouldn't backspace/etc. pop up a command editor at the bottom
21:49:00 <elliott> Not really
21:49:11 <elliott> That's just adding an interpretation to otherwise-unused commands
21:49:14 <elliott> Erm
21:49:16 <elliott> s/commands/keys/
21:50:21 <Deewiant> I suppose that could work to an extent
21:50:44 <Deewiant> I'd rather see normal mode work for editing ex commands :-P
21:51:09 <elliott> Deewiant: Ctrl+E (or whatever) in normal mode pops up one-line frame at bottom containing currently written command, in normal mode
21:51:36 <elliott> Some other command runs the current line as a normal-mode command and closes it
21:51:39 <elliott> Tada
21:51:41 <Deewiant> s/normal mode/command mode/ presumably
21:51:54 <elliott> What would command mode be
21:52:03 <elliott> Erm
21:52:04 <elliott> Right
21:52:42 <elliott> Deewiant: Although really, sam got it basically completely right
21:52:49 <elliott> Not being line-based, etc.
21:53:01 <Deewiant> :'<,'> is the range corresponding to the current visual selection
21:53:23 <elliott> Mouthful
21:53:32 <Deewiant> It's autofilled when you type : in visual mode
21:53:44 <elliott> Heh
21:54:28 <elliott> <Deewiant> I'd just have :'<.'> operate on the exact region, not the lines covered
21:54:31 <elliott> Heh, so you literally want Sam
21:54:43 <Deewiant> Sam isn't a vim
21:55:03 <elliott> I mean, you want Sam-like interpretation of ranges
21:55:06 <elliott> /searches
21:55:21 <elliott> "Sam vs. acme editor wars occur in the Plan 9 community" Between all three of them
21:57:21 <fizzie> I do not like green eggs and ham / I do not like them, Vim-I-am.
21:58:00 <elliott> vimium
21:58:14 <elliott> More people need to use sam/acme
21:58:17 <elliott> fizzie: Use sam or acme please
21:58:18 <Sgeo|web> > 1 + 1
21:58:19 <lambdabot> 2
21:58:19 <thutubot> 2
21:58:25 <elliott> fizzie: plan9port's is fully integrated
21:58:41 <Sgeo|web> > putStrLn "hi"
21:58:42 <lambdabot> <IO ()>
21:58:42 <thutubot> <IO ()>
21:58:48 <elliott> ais523: kill thutubot
21:58:55 <elliott> s/ and then the end of the line//
21:58:59 <ais523> +quit
21:59:05 -!- thutubot has quit (Remote host closed the connection).
21:59:14 <ais523> huh, seems it doesn't respond to +quit nowadays
21:59:22 <elliott> thx
21:59:28 <elliott> ilu thutubot it was just annoying
21:59:39 <Sgeo|web> What's the point of thutubot?
22:00:12 <oerjan> to be written in thutu
22:00:31 * elliott installs plan9port to hate the world a little less
22:01:16 <elliott> Gosh, swtch.com is so slow.
22:01:44 <oerjan> !haskell putStrLn "Are you working yet?"
22:01:59 <elliott> <EgoBot> beeeeeeeeeeeeep
22:02:04 <elliott> <EgoBot> beeep :(
22:02:11 <elliott> <EgoBot> :'(
22:02:14 <fizzie> swatch.com would be more timely.
22:02:15 <oerjan> !help
22:02:16 <EgoBot> ​help: General commands: !help, !info, !bf_txtgen. See also !help languages, !help userinterps. You can get help on some commands by typing !help <command>.
22:02:22 <oerjan> it would appear not
22:02:44 <elliott> fizzie: HYUK HYUK HYUK which did you pick
22:03:08 <fizzie> I did not pick them, fiz-I-am.
22:03:20 <elliott> fizzie: But I _demanded_ you to.
22:03:30 <fizzie> Yes, well.
22:03:52 <oerjan> he does not like green acne and spam
22:04:13 <elliott> oerjan: OK _you_ decide.
22:04:56 <elliott> oerjan: You never code anyway.
22:05:58 <oerjan> well it'll have to be spam. green acne would ruin my last remains of sociability
22:06:39 <elliott> oerjan: no no no it is sam or acme.
22:06:45 <elliott> ais523: here, /you/ use sam or acme.
22:06:56 <ais523> elliott: no I don't
22:07:07 <elliott> ais523: it's a demand, not a statement
22:08:13 <oerjan> i think mark-chu-carr?oll? mentioned on his good math/bad math blog previously that was writing a new editor based on acme
22:08:39 <oerjan> if it was acme. something unusual, anyway.
22:08:42 <oerjan> *that he
22:09:03 <elliott> oerjan: he did
22:09:10 <elliott> apex
22:09:16 <elliott> oh hmm
22:09:19 <elliott> looks rather incomplete :P
22:09:29 <oerjan> well he hasn't mentioned it in a while
22:09:31 <elliott> hmph, looks like he's using a gap buffer
22:09:40 <elliott> totally the Wrong Decision
22:18:35 -!- augur has joined.
22:22:00 <ais523> what's a gap buffer?
22:23:08 <Deewiant> https://secure.wikimedia.org/wikipedia/en/wiki/Gap_buffer
22:27:24 -!- derdon has quit (Remote host closed the connection).
22:54:52 <Vorpal> elliott, what do you suggest instead of a gap buffer?
22:55:30 <Vorpal> a balanced tree of lines seems sensible to me.
22:56:26 -!- ais523 has quit (Remote host closed the connection).
23:01:21 -!- CakeProphet has joined.
23:01:21 -!- CakeProphet has quit (Changing host).
23:01:21 -!- CakeProphet has joined.
23:05:15 -!- MDude has quit (Ping timeout: 252 seconds).
23:07:52 -!- MDude has joined.
23:09:45 -!- Jafet has joined.
23:16:44 -!- Sgeo|web has quit (Ping timeout: 265 seconds).
23:19:26 -!- CakeProphet has quit (Ping timeout: 258 seconds).
23:29:36 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
23:53:24 -!- sllide has quit (Read error: Connection reset by peer).
2011-10-20
00:05:11 -!- elliott has quit (Remote host closed the connection).
00:06:52 -!- kwertii has quit (Quit: kwertii).
00:13:55 -!- copumpkin has joined.
00:20:37 -!- Jafet has quit (Quit: Leaving.).
00:23:45 -!- elliott_ has joined.
00:24:57 -!- Sgeo|web has joined.
00:25:09 <Sgeo|web> I hate the List monad
00:25:32 <Sgeo|web> Can't deal with infinite lists sensibly, bluh
00:25:51 <Sgeo|web> I mentioned it in #haskell, apparently there's no way to write the instance properly?
00:26:04 <oerjan> a tree monad might be better for such a thing
00:27:03 <oerjan> also, there's that MonadLogic >>- thing which breaks the ordering but otherwise does something like what you'd want, iiuc
00:27:51 <oerjan> > [1..] >>- map (,) x [1..]
00:27:52 <lambdabot> Couldn't match expected type `[a]'
00:27:52 <lambdabot> against inferred type `SimpleRef...
00:27:54 <oerjan> oops
00:28:02 <oerjan> > [1..] >>- \x -> map (,) x [1..]
00:28:02 <lambdabot> Couldn't match expected type `[t] -> [b]'
00:28:03 <lambdabot> against inferred type `[b...
00:28:07 <oerjan> now what
00:28:09 <oerjan> :t (>>-)
00:28:10 <lambdabot> forall (m :: * -> *) a b. (MonadLogic m) => m a -> (a -> m b) -> m b
00:28:21 <oerjan> oh hm
00:28:28 <oerjan> > [1..] >>- \x -> map ((,) x) [1..]
00:28:29 <lambdabot> [(1,1),(2,1),(1,2),(3,1),(1,3),(2,2),(1,4),(4,1),(1,5),(2,3),(1,6),(3,2),(1...
00:28:33 <oerjan> there you go
00:30:38 <oerjan> it's not very balanced in how often elements are taken from the first list though: 1 is picked 1/2 of the time, 2 1/4 of the time, 3 1/8, etc.
00:31:44 -!- pikhq_ has quit (Remote host closed the connection).
00:32:23 <oerjan> :t Node
00:32:24 <lambdabot> forall a. a -> Forest a -> Tree a
00:33:30 <oerjan> that's the wrong kind of tree to be a monad, iirc
00:34:30 <Sgeo|web> What kind of tree is that?
00:34:59 <oerjan> Forest a = [Tree a], iirc
00:35:08 <oerjan> Node is the constructor
00:35:49 <oerjan> so each node has an a label, and a list of children
00:37:44 <oerjan> > (Node 1 []) >>= \x -> (Node x []) -- let's check if it is a Monad anyway
00:37:44 <lambdabot> Node {rootLabel = 1, subForest = []}
00:37:49 <oerjan> ooh it is
00:38:55 <oerjan> > return 1 >>= \x -> (Node x [])
00:38:56 <lambdabot> Node {rootLabel = 1, subForest = []}
00:39:12 <oerjan> > return 1 :: Tree Int
00:39:13 <lambdabot> Node {rootLabel = 1, subForest = []}
00:39:35 <oerjan> but...
00:40:44 <oerjan> > Node 1 [Node 2 [], Node 3 []] >>= \x -> Node x [Node (x+10), Node (x+10)]
00:40:45 <lambdabot> Couldn't match expected type `Data.Tree.Tree t'
00:40:45 <lambdabot> against inferred ty...
00:41:07 <oerjan> > Node 1 [Node 2 [], Node 3 []] >>= \x -> Node x [Node (x+10) [], Node (x+10) []]
00:41:08 <lambdabot> Node {rootLabel = 1, subForest = [Node {rootLabel = 11, subForest = []},Nod...
00:41:27 <oerjan> gah
00:41:31 <oerjan> so verbose
00:44:20 <oerjan> :t showAsList
00:44:21 <lambdabot> Not in scope: `showAsList'
00:44:27 <oerjan> @hoogle showAsList
00:44:28 <lambdabot> No results found
00:45:09 <oerjan> :t showListWith
00:45:10 <lambdabot> Not in scope: `showListWith'
00:45:22 <oerjan> :t Text.Show.showListWith
00:45:23 <lambdabot> forall a. (a -> ShowS) -> [a] -> String -> String
00:45:42 -!- ive has quit (Read error: Operation timed out).
00:47:54 <oerjan> @let showsT s (Node x l) = ("Node (" ++) . s x . (") "++) . Text.Show.showListWith (showsT s) l; sT t = showsT show t
00:47:54 <lambdabot> <local>:5:55: Not in scope: `Text.Show.showListWith'
00:48:00 <oerjan> dammit
00:51:25 <oerjan> > levels $ Node 1 [Node 2 [], Node 3 []] >>= \x -> Node x [Node (x+10) [], Node (x+10) []]
00:51:26 <lambdabot> [[1],[11,11,2,3],[12,12,13,13]]
00:51:54 <oerjan> hm that doesn't really give all information
00:52:35 <oerjan> too much work.
00:53:09 <Madoka-Kaname> :t levels
00:53:09 <lambdabot> forall a. Tree a -> [[a]]
00:53:30 <Madoka-Kaname> :t Node
00:53:31 <lambdabot> forall a. a -> Forest a -> Tree a
00:53:36 <Madoka-Kaname> ...
00:53:38 <Madoka-Kaname> Forest a!?
00:53:47 <oerjan> = [Tree a]
00:54:07 <Madoka-Kaname> Ah.
00:55:49 <oerjan> the module in question contains several methods for building trees, and some instances, but nothing that can be used to easily give it in a compact format :(
00:55:55 <oerjan> http://www.haskell.org/ghc/docs/latest/html/libraries/containers-0.4.1.0/Data-Tree.html
00:56:11 <oerjan> the default Show instance includes all field names
00:56:36 <oerjan> basically, there is nothing there to take _apart_ trees recursively.
00:58:30 <oerjan> > drawTree $ Node 1 [Node 2 [], Node 3 []] >>= \x -> show <$> Node x [Node (x+10) [], Node (x+10) []]
00:58:31 <lambdabot> "1\n|\n+- 11\n|\n+- 11\n|\n+- 2\n| |\n| +- 12\n| |\n| `- 12\n|\n`- 3\n ...
00:59:09 <oerjan> @show "test"
00:59:09 <lambdabot> "\"test\""
00:59:15 <oerjan> @read "test"
00:59:15 <lambdabot> test
00:59:46 <oerjan> @msg lambdabot @run text . drawTree $ Node 1 [Node 2 [], Node 3 []] >>= \x -> show <$> Node x [Node (x+10) [], Node (x+10) []]
00:59:46 <lambdabot> Not enough privileges
00:59:50 <oerjan> gah
01:00:52 <oerjan> well that worked, sort of, although i had to give @more twice
01:03:06 <oerjan> ok it appears that >>= simply concatenates the list part from the 1 with the list of results from 2 and 3
01:04:23 <oerjan> Node x ts >>= f = Node x' (ts' ++ map (>>= f) ts) where Node x' ts' = f x
01:05:09 <elliott_> hi oerjan
01:05:19 <elliott_> 01:24 <Sgeo|web> I hate the List monad
01:05:20 <oerjan> does that fulfil the monad laws i wonder
01:05:27 <elliott_> I like the part where you criticise things before fully understanding them
01:05:32 <elliott_> (this is what you always do)
01:05:35 -!- Vorpal has quit (Ping timeout: 248 seconds).
01:05:45 <elliott_> 01:34 <oerjan> Forest a = [Tree a], iirc
01:05:49 <oerjan> elliott_: well he did have a valid point
01:05:52 <elliott_> oerjan: no, it's -- oh, Forest
01:06:06 <elliott_> 01:55 <oerjan> the module in question contains several methods for building trees, and some instances, but nothing that can be used to easily give it in a compact format :(
01:06:11 <elliott_> um that is what the draw functions are for
01:06:21 <oerjan> elliott_: those are not compact.
01:06:25 <elliott_> fine :P
01:06:30 <elliott_> how could they be more compact
01:06:35 <oerjan> especially not compact enough to demonstrate with lambdabot
01:07:16 <oerjan> something like the Show, except leaving out all the field fluff
01:07:54 <oerjan> i tried to define it above but i gave up when showListWith was unavailable
01:08:14 <lambdabot> Not in scope: `showListWith'
01:08:39 <oerjan> there _might_ be some obscure module prefix, of course
01:08:55 <oerjan> (Text.Show already tested)
01:10:40 <oerjan> ok >>= does fulfil 1st and 2nd monad laws, i think
01:10:56 -!- kwertii has joined.
01:11:36 <elliott_> oerjan: well it's Text.Show.showListWith
01:11:41 <elliott_> > Text.Show.showListWith
01:11:42 <lambdabot> Not in scope: `Text.Show.showListWith'
01:11:51 <elliott_> > TS.showListWith
01:11:52 <lambdabot> Not in scope: `TS.showListWith'
01:11:54 <elliott_> > Show.showListWith
01:11:54 <lambdabot> Not in scope: `Show.showListWith'
01:11:56 <oerjan> <oerjan> (Text.Show already tested)
01:11:56 <elliott_> > q
01:11:57 <lambdabot> q
01:11:59 <elliott_> oerjan: ah
01:12:29 <oerjan> lambdabot's little inconsistencies...
01:13:29 <oerjan> there should be some form which we didn't have to guess, which would have to be the fully qualified one with the actual module name.
01:18:59 <Sgeo|web> Is there a way to see which modules are loaded?
01:21:51 <elliott_> Sgeo|web: yes, read L.hs
01:21:54 <elliott_> ?list
01:21:54 <lambdabot> http://code.haskell.org/lambdabot/COMMANDS
01:22:24 <Sgeo|web> cool, ty
01:22:40 <Sgeo|web> @help vixen
01:22:41 <lambdabot> help <command>. Ask for help for <command>. Try 'list' for all commands
01:22:57 <Sgeo|web> @help @vixen
01:22:57 <lambdabot> help <command>. Ask for help for <command>. Try 'list' for all commands
01:23:11 <Sgeo|web> @help version
01:23:11 <lambdabot> version/source. Report the version and darcs repo of this bot
01:23:49 <oerjan> Sgeo|web: they tell me @vixen was removed
01:23:53 <oerjan> @list vixen
01:23:53 <lambdabot> No module "vixen" loaded
01:24:00 <oerjan> @list nixon
01:24:00 <lambdabot> quote provides: quote remember forget ghc fortune yow arr yarr keal b52s brain palomer girl19 v yhjulwwiefzojcbxybbruweejw protontorpedo nixon farber
01:24:23 <oerjan> and nixon added in its place
01:24:25 <oerjan> @nixon
01:24:25 <lambdabot> You know, it's a funny thing, every one of the bastards that are out for legalizing marijuana is Jewish. What the Christ is the matter with the Jews, Bob? What is the matter with them? I suppose it
01:24:26 <lambdabot> is because most of them are psychiatrists.
01:24:48 <Sgeo|web> @help nixon
01:24:48 <lambdabot> Richad Nixon's finest.
01:25:46 <oerjan> i have this vague hunch @nixon is meant to insult precisely the kind of people who complained to get @vixen removed :P
01:26:02 <Sgeo|web> What was @vixen?
01:26:13 <oerjan> also, lambdabot's spelling correction means @vixen -> @nixon automatically now
01:26:50 <oerjan> it was a chatbot which behaved like a somewhat promiscuous girl
01:27:19 <oerjan> and apparently you could get it to do some explicit sex talk if you knew how
01:28:00 <oerjan> so obviously offensive to conservatives
01:28:14 <Madoka-Kaname> @vixen
01:28:14 <lambdabot> Once you get into this great stream of history, you can't get out.
01:30:36 <oerjan> @nixon so what about african-americans?
01:30:36 <lambdabot> You won't have Nixon to kick around anymore, because, gentlemen, this is my last press conference.
01:30:55 <oerjan> i guess it's not context-sensitive like @vixen was
01:31:26 <oerjan> @ghc
01:31:26 <lambdabot> ghc says: Illegal unlifted type argument
01:35:24 <elliott_> ?ghc
01:35:25 <lambdabot> ghc says: There must be at least one non-type-variable in the instance head
01:35:26 <elliott_> ?nixon
01:35:26 <lambdabot> You have to face the fact that whole problem is really the blacks. The key is to divise a system that reconizes this while not appearing to...
01:35:36 <Sgeo|web> @help ghc
01:35:36 -!- ive has joined.
01:35:36 <lambdabot> ghc. Choice quotes from GHC.
01:35:47 <Sgeo|web> Oh
01:39:55 <elliott_> ?nixon
01:39:55 <lambdabot> People react to fear, not love; they don't teach that in Sunday School, but it's true.
01:40:11 <Patashu> ?ghc
01:40:12 <lambdabot> ghc says: Type signature given for an expression
01:41:08 -!- pikhq has joined.
01:41:32 <oerjan> > let a b * c :: Int in "test"
01:41:33 <lambdabot> <no location info>: Invalid type signature
01:41:53 <oerjan> i wonder what would give that error message
01:42:06 <oerjan> it might not any longer, though
01:42:23 <elliott_> http://www.haskell.org/pipermail/haskell/2002-November/010660.html
01:42:32 <elliott_> foo bar :: t
01:42:34 <elliott_> at top level
01:43:07 <oerjan> you and your superhuman googling skills
01:43:22 <oerjan> hm
01:43:34 <oerjan> > let foo bar :: t in "test again"
01:43:35 <lambdabot> <no location info>: Invalid type signature
01:43:42 <oerjan> bah
01:44:06 <oerjan> @let foo bar :: t
01:44:07 <lambdabot> Left-hand side of type signature is not a variable: foo bar
01:44:09 <elliott_> oerjan: that's from two thousand and two, dude
01:44:26 <oerjan> yeah
01:44:45 <oerjan> well i think i found the modern equivalent there, anyway
01:55:04 <Sgeo|web> @src True
01:55:04 <lambdabot> Source not found. My brain just exploded
01:55:11 <Sgeo|web> MUAHAHA
01:55:41 <Sgeo|web> @help yhjulwwiefzojcbxybbruweejw
01:55:41 <lambdabot> V RETURNS!
01:55:45 <Sgeo|web> @yhjulwwiefzojcbxybbruweejw
01:55:45 <lambdabot> "\""
01:55:48 <Sgeo|web> @yhjulwwiefzojcbxybbruweejw
01:55:49 <lambdabot> Exception: <<loop>>
01:55:58 <Sgeo|web> @yhjulwwiefzojcbxybbruweejw
01:55:58 <lambdabot> Exception: <<loop>>
01:55:59 <oerjan> Sgeo|web: @src has got much worse lately, i think
01:56:05 <elliott_> why would src find True
01:56:23 <oerjan> well _ideally_ it should give the definition of Bool there...
01:56:27 <Sgeo|web> Well, showing the data or newtype line would be a sensible thing to do
01:56:56 <oerjan> @src Bool
01:56:57 <lambdabot> data Bool = False | True deriving (Eq, Ord)
01:57:03 -!- CakeProphet has joined.
01:57:17 <Sgeo|web> @src (==)
01:57:17 <lambdabot> x == y = not (x /= y)
01:57:27 <Sgeo|web> @src (>>=)
01:57:27 <lambdabot> Source not found. Just what do you think you're doing Dave?
01:57:44 <oerjan> that's a method default, and >>= has none
01:57:49 <Sgeo|web> Hmm, so, for class functions (is that the right term?), it will show the default it aavlable
01:57:51 <Sgeo|web> available
01:58:03 <Sgeo|web> "method"?
01:58:04 <oerjan> and if someone remembered to put it in
01:58:12 <oerjan> yes, method
01:58:26 <oerjan> i think that's the term?
01:59:01 <Sgeo|web> I should rewrite the Prototype MultiDispatch example in Haskell
01:59:12 <CakeProphet> oh god Prototype MultiDispatch what
01:59:33 <Sgeo|web> "Prototypes with Multiple Dispatch"
01:59:51 <CakeProphet> I mean why in Haskell..
01:59:53 <oerjan> method is used in the haskell report, yes
02:00:17 <Sgeo|web> Because I feel like that's just showing off Haskell's awesomeness
02:01:07 <Sgeo|web> Actually, meh
02:02:27 <oerjan> how come i haven't seen this before http://blog.plover.com/prog/burritos.html
02:03:58 <Sgeo|web> Monads are thingies that you can combine with a function that takes some plain old thing and gives a thing and, in combining the thingy and the function to a thingy, you get another thingy
02:05:18 <Sgeo|web> And when I said gives a thing, I meant gives a thingy
02:05:38 <Patashu> ENERGY FETUS http://imgur.com/a/dBz45
02:05:51 <oerjan> `run echo "Monads are thingies that you can combine with a function that takes some plain old thing and gives a thing and, in combining the thingy and the function to a thingy, you get another thingy" | sed 's/thing(ie|y)?/smurf/g'
02:05:53 <HackEgo> Monads are thingies that you can combine with a function that takes some plain old thing and gives a thing and, in combining the thingy and the function to a thingy, you get another thingy
02:05:57 <oerjan> darn
02:06:41 -!- tiffany has quit (Quit: Leaving).
02:06:57 <oerjan> `run echo "Monads are thingies that you can combine with a function that takes some plain old thing and gives a thing and, in combining the thingy and the function to a thingy, you get another thingy" | sed '%s/thing(ie|y)?/smurf/g'
02:06:58 <HackEgo> sed: -e expression #1, char 1: unknown command: `%'
02:07:13 <oerjan> wtf is wrong with my sed :(
02:07:20 <Sgeo|web> I don't say thingie oh wait yes I did
02:08:51 <CakeProphet> needs more perl.
02:09:40 <oerjan> oh hm
02:09:59 <oerjan> `run echo "Monads are thingies that you can combine with a function that takes some plain old thing and gives a thing and, in combining the thingy and the function to a thingy, you get another thingy" | sed 's/thing\(ie\|y\)\?/smurf/g'
02:10:01 <HackEgo> Monads are smurfs that you can combine with a function that takes some plain old smurf and gives a smurf and, in combining the smurf and the function to a smurf, you get another smurf
02:10:04 <oerjan> yay
02:11:52 <oerjan> Patashu: something tells me DC doesn't do drug testing of employees
02:16:55 <elliott_> oerjan: um wat are you doing :P
02:17:04 <elliott_> 03:02 <oerjan> how come i haven't seen this before http://blog.plover.com/prog/burritos.html
02:17:12 <elliott_> oerjan: because i only relinked it from the past in hash-haskell a few days ago
02:17:21 <elliott_> it's my favourite monad tutorial
02:17:33 <elliott_> 03:00 <Sgeo|web> Because I feel like that's just showing off Haskell's awesomeness
02:17:36 <elliott_> you don't even _know_ what that is yet
02:17:48 <oerjan> elliott_: i think every time i've seen the link i've assumed it was something i'd already seen
02:18:14 <elliott_> oerjan: I was shocked to learn that the wikibooks actually uses a spacesuit/nuclear waste analogy
02:18:17 <elliott_> I assumed it was parody
02:18:21 <elliott_> s/wikibooks/wikibook/
02:19:23 <elliott_> oerjan: where did you see it this time?
02:19:44 <oerjan> data BlackHole = BlackHole; instance Monad BlackHole where return _ = BlackHole; _ >>= _ = BlackHole
02:19:50 <oerjan> elliott_: in a reddit comment thread
02:19:51 -!- ive has quit (Ping timeout: 255 seconds).
02:20:21 <oerjan> (inspired by the spacesuit)
02:20:41 <elliott_> oerjan: violates the laws, I think
02:20:47 <oerjan> how so?
02:20:48 <elliott_> undefined >>= return === BlackHole
02:21:01 <elliott_> that's an oft-violated one, though :)
02:21:04 <oerjan> grmbl i was wondering about undefined
02:21:08 <elliott_> oerjan: see above
02:21:11 <elliott_> I think even IO violates that
02:21:13 <oerjan> ok then
02:21:16 <elliott_> maybe even more normal monads in the transformers library, too
02:21:21 <elliott_> oerjan: btw, MaybeT _IS STANDARD_
02:21:23 <elliott_> it's in transformers
02:21:37 <oerjan> data BlackHole; instance Monad BlackHole where return _ = undefined; _ >>= _ = undefined
02:21:44 <oerjan> even better
02:21:53 <elliott_> oerjan: perfect
02:22:14 <elliott_> oerjan: I think that fulfils all of the laws :P
02:22:46 <oerjan> a bit hard for that _not_ to fulfil an equality
02:23:10 -!- pikhq_ has joined.
02:23:21 <elliott_> oerjan: data BlackHole a b; IS IT AN ARROW???
02:23:34 <oerjan> ooh
02:23:44 -!- pikhq has quit (Ping timeout: 276 seconds).
02:24:19 <oerjan> the arrow of very short time left
02:24:23 <elliott_> :D
02:24:38 <elliott_> well the definitions of the methods are obvious
02:24:42 <elliott_> I note that Control.Arrow fails to list the laws
02:25:25 <oerjan> hm...
02:26:50 <oerjan> data BlackHole = BlackHole; instance Monad BlackHole where return _ = BlackHole; x >>= _ = x -- would that work?
02:27:26 <Gregor> WHY'D YOU CALL IT A /BLACK/ HOLE? RACIST.
02:27:43 <oerjan> oh hm
02:28:03 <oerjan> return x >>= f has some trouble there
02:29:28 <oerjan> Gregor: well it was not american, so i couldn't call it african-american could i?
02:30:42 <Gregor> The RACIST part is that you're implying that people (and/or holes) of African descent steal things.
02:30:54 <oerjan> > (undefined >>= putStr) `seq` "test"
02:30:55 <lambdabot> "test"
02:31:18 <oerjan> @nixon
02:31:18 <lambdabot> A public man must never forget that he loses his usefulness when he as an individual, rather than his policy, becomes the issue.
02:31:24 <elliott_> 03:26 <oerjan> data BlackHole = BlackHole; instance Monad BlackHole where return _ = BlackHole; x >>= _ = x -- would that work?
02:31:26 <elliott_> oerjan: looks right to me
02:31:38 <elliott_> oerjan: except (BlackHole >>= fmap (const undefined))
02:31:42 <elliott_> dunno if that's a law though
02:31:43 <elliott_> I guess not
02:31:47 <elliott_> since Nothing >>= fmap (const undefined) == Nothing
02:32:30 -!- elliott_ has set topic: Esolangers, get a life and shut up. Stop cluttering the IRC with your inane prattle. Go aestivate under a rock somewhere. ... In short, feep off and die. | 12345678^&!* | http://codu.org/logs/_esoteric/.
02:32:32 <oerjan> elliott_: i think it breaks return x >>= f = f x
02:32:47 <elliott_> oerjan: hm right
02:33:01 <Madoka-Kaname> > map undefined Nothing
02:33:01 <lambdabot> Couldn't match expected type `[a]'
02:33:02 <lambdabot> against inferred type `Data.Mayb...
02:33:07 <Madoka-Kaname> > fmap undefined Nothing
02:33:08 <lambdabot> Nothing
02:36:00 <oerjan> elliott_: who said that in the topic?
02:38:07 <Madoka-Kaname> > fmap undefined $ Some 0
02:38:08 <lambdabot> Not in scope: data constructor `Some'
02:38:11 <Madoka-Kaname> > fmap undefined $ Just 0
02:38:12 <lambdabot> Just *Exception: Prelude.undefined
02:38:13 -!- MDude has changed nick to MSleep.
02:38:25 <Madoka-Kaname> > fmap (const undefined) $ Just 0
02:38:25 <elliott_> oerjan: Yittra, in NomicWorld, ninety-three (or ninety-two, I don't know)
02:38:25 <lambdabot> Just *Exception: Prelude.undefined
02:38:31 <elliott_> **
02:38:32 <elliott_> Get a life, lindrum (Yittra, Sep 28 05:59)
02:38:32 <elliott_> LIndrum, get a life and shut up. Stop cluttering the noticeboard with
02:38:33 <elliott_> your inane prattle. Go aestivate under a rock somewhere.
02:38:35 <elliott_> You see, your judgement is not in the spirit of the game, hence
02:38:37 <elliott_> is illegal. Therefore, while you may think you have cleverly found
02:38:39 <elliott_> a loophole you are just making an annoyance of yourself. To be fair, I
02:38:41 <elliott_> suppose I must admit the possibility that you were just tring to
02:38:43 <elliott_> get the game going before renouncing your 'powers' , but
02:38:45 <elliott_> 1015 and 1016 will do that anyway. In short, feep off and die.
02:38:47 <elliott_> oerjan: after the Lindrum scam
02:39:00 <Madoka-Kaname> Lindrum scam?
02:39:03 <elliott_> that Yittra guy did quite the colourful insults: Kindly defenestrate yourself, idiot (Yittra, Sep 28 06:13)
02:39:28 <elliott_> Madoka-Kaname: the first major scam in NomicWorld, the first online nomic
02:39:44 <elliott_> oerjan: holy shit, lindrum played agora?
02:39:52 <coppro> briefly
02:40:22 * oerjan cannot recall
02:41:21 <elliott_> CFJ 1319: Called by neil (12 Sep); Judged TRUE by Lindrum (19 Sep)
02:41:35 <elliott_> The listed Trading Accounts on the AgorEx web page are sufficient
02:41:35 <elliott_> evidence of an Agreement between each listed Player and Lindrum in
02:41:35 <elliott_> which the Player may demand that Lindrum pay em the specified
02:41:37 <elliott_> amounts at any time.
02:41:40 <elliott_> I don't even...
02:43:07 <elliott_> I like how Goethe hasn't changed in almost twenty years
02:43:14 <elliott_> probably because he's ead
02:43:14 <elliott_> dead
02:43:17 -!- evincar has joined.
02:43:49 <evincar> Thanks for your help last night, those folk who were involved.
02:44:06 <evincar> Changing my types as mentioned worked out great.
02:46:15 <Patashu> You change your types as often as a girl changes her clothes
02:46:51 <evincar> That's because programming languages are for thinking up programs as much as they are for writing them.
02:47:49 <Madoka-Kaname> Patashu, hey!
02:48:27 * Patashu holds his arms out, twirls around
02:48:47 <evincar> Also, most of the girls I know don't change their clothes excessively.
02:49:21 <evincar> They do, however, wash them quite a lot more than the males do...
02:51:26 <elliott_> the Patashu greeting method
02:51:54 <Patashu> {
02:51:57 <Patashu> return 0;
02:51:57 <Patashu> }
02:53:43 <evincar> Anyway, I'm off. The wireless sucks where I am anyhow.
02:53:49 -!- evincar has quit (Quit: G'night.).
02:54:14 <elliott_> oh
02:59:27 -!- ive has joined.
02:59:33 -!- Sgeo|web has left.
02:59:40 -!- Sgeo|web has joined.
03:01:06 -!- elliott_ has quit (Remote host closed the connection).
03:01:20 -!- elliott_ has joined.
03:01:27 -!- elliott_ has quit (Remote host closed the connection).
03:01:40 -!- elliott_ has joined.
03:03:28 -!- tswett has quit (Remote host closed the connection).
03:06:15 <Sgeo|web> forever $ part elliott_ >> join elliott_
03:07:05 <Sgeo|web> Wait, join is defined elsewhere
03:08:22 <elliott_> ?hoogle part
03:08:22 <lambdabot> Data.ByteString partition :: (Word8 -> Bool) -> ByteString -> (ByteString, ByteString)
03:08:22 <lambdabot> Data.IntMap partition :: (a -> Bool) -> IntMap a -> (IntMap a, IntMap a)
03:08:23 <lambdabot> Data.IntSet partition :: (Int -> Bool) -> IntSet -> (IntSet, IntSet)
03:12:06 <Sgeo|web> Is it just my imagination, or does Learn Haskell in 10 Minutes suck?
03:12:22 <elliott_> http://norvig.com/21-days.html
03:13:17 <Sgeo|web> Hmm, why did I think that it sucked?
03:13:25 <elliott_> http://norvig.com/21-days.html
03:13:37 <Sgeo|web> elliott_: I want something I can show professors and other students >.>
03:13:49 <elliott_> you mean the incompetent idiots?
03:13:57 <elliott_> i am sure they will be inspired
03:14:07 <elliott_> also you read that page in the time it took to respond?
03:14:40 <Sgeo|web> No, I didn't :/
03:14:58 <elliott_> indeed.
03:23:57 <monqy> hi guys im back did i miss the fun
03:24:27 <elliott_> unfortunately.
03:24:47 <Sgeo|web> > fix ("Yes " ++)
03:24:48 <lambdabot> "Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Ye...
03:26:23 <Sgeo|web> > fix brokenThing
03:26:24 <lambdabot> Fixed.
03:30:33 <elliott_> > brokenThing
03:30:34 <lambdabot> Overlapping instances for GHC.Show.Show
03:30:34 <lambdabot> (t -> ...
03:30:38 <elliott_> > brokenThing ""
03:30:39 <lambdabot> Fixed.
03:30:44 <elliott_> > brokenThing (text "")
03:30:46 <lambdabot> Fixed.
03:30:54 <elliott_> ?check \x -> brokenThing x == text "Fixed."
03:30:55 <lambdabot> Not in scope: `brokenThing'
03:30:58 <elliott_> bah
03:31:02 <oerjan> > brokenThing undefined
03:31:03 <lambdabot> Fixed.
03:31:35 <oerjan> :t brokenThing
03:31:35 <lambdabot> forall t. t -> Doc
03:31:42 <elliott_> pretty obvious
03:32:39 <Sgeo|web> @src brokenThing
03:32:39 <lambdabot> Source not found. The more you drive -- the dumber you get.
03:33:28 <Sgeo|web> :t text
03:33:29 <lambdabot> String -> Doc
03:33:47 <Sgeo|web> > text "Hello arbitrary statements from lambdabot"
03:33:48 <lambdabot> Hello arbitrary statements from lambdabot
03:33:55 <Sgeo|web> @src Doc
03:33:56 <lambdabot> Source not found. That's something I cannot allow to happen.
03:34:23 <Sgeo|web> Is it just a wrapper around a String that lambdabot directly displays, or what?
03:35:12 <Sgeo|web> @hoogle Doc
03:35:12 <lambdabot> Text.PrettyPrint.HughesPJ data Doc
03:35:12 <lambdabot> Language.Haskell.TH.PprLib type Doc = PprM Doc
03:35:12 <lambdabot> System.Directory getUserDocumentsDirectory :: IO FilePath
03:35:30 <oerjan> Doc can do a lot more, i think
03:35:59 <elliott_> Doc is a pretty-printing library
03:36:19 <elliott_> http://www.haskell.org/ghc/docs/latest/html/libraries/pretty-1.1.0.0/Text-PrettyPrint-HughesPJ.html
03:39:48 -!- PatashuXantheres has joined.
03:40:59 <Sgeo|web> > zeroWidthText "Bluh?"
03:41:00 <lambdabot> Bluh?
03:42:01 -!- Patashu has quit (Ping timeout: 258 seconds).
03:42:39 <Sgeo|web> > doubleQuotes $ text "And It Don't Stop"
03:42:40 <lambdabot> "And It Don't Stop"
03:45:51 <Sgeo|web> > text "1\n2"
03:45:52 <lambdabot> 1
03:45:52 <lambdabot> 2
03:46:04 <Sgeo|web> ...
03:46:22 <Sgeo|web> > text $ fix ("Hello\n" ++)
03:46:37 <lambdabot> thread killed
03:47:19 <Sgeo|web> > text $ concat $ take 2 $ repeat "Hello\n"
03:47:20 <lambdabot> Hello
03:47:20 <lambdabot> Hello
03:47:26 <Sgeo|web> > text $ concat $ take 5 $ repeat "Hello\n"
03:47:27 <lambdabot> Hello
03:47:27 <lambdabot> Hello
03:47:27 <lambdabot> Hello
03:47:27 <lambdabot> Hello
03:47:27 <lambdabot> Hello
03:47:35 <Sgeo|web> > text $ concat $ repeat "Hello\n"
03:47:43 <lambdabot> *Exception: mueval-core: signal: 15
03:47:52 <Sgeo|web> > text $ concat $ take 20 $ repeat "Hello\n"
03:47:56 <lambdabot> mueval-core: Time limit exceeded
03:48:06 <Sgeo|web> > text $ concat $ take 12 $ repeat "Hello\n"
03:48:07 <lambdabot> Hello
03:48:07 <lambdabot> Hello
03:48:07 <lambdabot> Hello
03:48:07 <lambdabot> Hello
03:48:07 <lambdabot> Hello
03:48:09 <lambdabot> [6 @more lines]
03:48:14 <Sgeo|web> Boo
03:53:05 <oerjan> > var $ cycle "Hello\n"
03:53:06 <lambdabot> Hello
03:53:06 <lambdabot> Hello
03:53:06 <lambdabot> Hello
03:53:06 <lambdabot> Hello
03:53:06 <lambdabot> Hello
03:53:08 <lambdabot> [6 @more lines]
03:53:23 <oerjan> @more
03:53:23 <lambdabot> Hello
03:53:24 <lambdabot> Hello
03:53:24 <lambdabot> Hello
03:53:24 <lambdabot> Hello
03:53:24 <lambdabot> Hello
03:53:25 <lambdabot> Hello...
03:56:12 <Sgeo|web> :t var
03:56:14 <lambdabot> forall a. String -> Sym a
03:56:23 <Sgeo|web> @url var
03:56:23 <lambdabot> I know nothing about var.
03:56:34 <Sgeo|web> How do I get from a @hoogle result to a link?
03:57:22 <elliott_> a link to what
03:57:53 <Sgeo|web> The library page where the result was found
03:58:00 <Sgeo|web> *documentation for
03:58:37 <elliott_> GOOGLE
03:59:49 <Sgeo|web> @hoogle (a -> b) -> [a] -> [b]
03:59:50 <lambdabot> Prelude map :: (a -> b) -> [a] -> [b]
03:59:50 <lambdabot> Data.List map :: (a -> b) -> [a] -> [b]
03:59:50 <lambdabot> Control.Parallel.Strategies parMap :: Strategy b -> (a -> b) -> [a] -> [b]
03:59:54 <elliott_> oops
03:59:55 <Sgeo|web> @google Prelude map
03:59:56 <lambdabot> http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html
03:59:57 <lambdabot> Title: Prelude
03:59:57 <elliott_> i did not mean to caps google
04:00:58 <Sgeo|web> What's the difference between Hoogle and Hayoo? I don't think Hayoo does types, does it? But does it search all of Hackage or something?
04:01:16 <elliott_> hayoo does less advanced things with types.
04:01:34 <oerjan> <Sgeo|web> How do I get from a @hoogle result to a link? <-- use the hoogle website
04:03:24 -!- elliott__ has joined.
04:04:50 -!- atehwa_ has joined.
04:05:20 <elliott__> oerjan: what happens when you stop having qualia, help?
04:05:35 -!- glogbackup has quit (Ping timeout: 252 seconds).
04:05:35 -!- atehwa has quit (Read error: Operation timed out).
04:05:35 -!- elliott_ has quit (Read error: Connection reset by peer).
04:05:35 -!- PatashuXantheres has quit (Ping timeout: 252 seconds).
04:10:32 <Madoka-Kaname> @hayoo (a -> b) -> a -> b
04:10:32 <lambdabot> Unknown command, try @list
04:10:36 <Madoka-Kaname> @hoogle (a -> b) -> a -> b
04:10:36 <lambdabot> Prelude ($) :: (a -> b) -> a -> b
04:10:36 <lambdabot> Prelude ($!) :: (a -> b) -> a -> b
04:10:36 <lambdabot> Data.Function ($) :: (a -> b) -> a -> b
04:10:41 <oerjan> qualms about qualia
04:10:45 <elliott__> oerjan: help
04:10:49 <Madoka-Kaname> @hoogle [a -> b] -> a -> [b]
04:10:49 <elliott__> am i even typing into irc
04:10:49 <lambdabot> Control.Applicative (<*>) :: Applicative f => f (a -> b) -> f a -> f b
04:10:49 <lambdabot> Control.Monad ap :: Monad m => m (a -> b) -> m a -> m b
04:10:49 <lambdabot> Control.Applicative (<**>) :: Applicative f => f a -> f (a -> b) -> f b
04:10:51 <elliott__> i do not know
04:10:56 <elliott__> i am not sure i am even typing
04:11:03 <Madoka-Kaname> @hoogle (a -> b) -> [a] -> b
04:11:03 <lambdabot> Prelude map :: (a -> b) -> [a] -> [b]
04:11:04 <lambdabot> Data.List map :: (a -> b) -> [a] -> [b]
04:11:04 <lambdabot> Prelude ($) :: (a -> b) -> a -> b
04:11:22 <Madoka-Kaname> @djinn ((a -> b) -> [a] -> b) -> [a -> b] -> a -> [b]
04:11:23 <lambdabot> Error: Undefined type []
04:12:31 <oerjan> Madoka-Kaname: sequence in the (->) monad. also the strange thing lambdabot does for flip.
04:12:41 <oerjan> > flip [sin, cos] 1
04:12:45 <lambdabot> mueval-core: Time limit exceeded
04:12:47 <oerjan> > flip [sin, cos] 1
04:12:50 <lambdabot> [0.8414709848078965,0.5403023058681398]
04:13:48 <Madoka-Kaname> :t (\f vf v -> f ($v) vf)
04:13:49 <lambdabot> forall t a b t1. (((a -> b) -> b) -> t -> t1) -> t -> a -> t1
04:14:11 <Madoka-Kaname> @pl (\f vf v -> f ($v) vf)
04:14:11 <lambdabot> flip . (. flip id)
04:15:12 <Madoka-Kaname> @djinn (((a -> b) -> b) -> t -> t1) -> t -> a -> t1
04:15:12 <lambdabot> f a b c = a (\ d -> d c) b
04:15:23 <Madoka-Kaname> @djinn ((a -> b) -> b) -> t -> t1
04:15:23 <lambdabot> -- f cannot be realized.
04:15:30 -!- oerjan has quit (Quit: Good night).
04:16:39 -!- Patashu has joined.
04:48:44 -!- elliott_ has joined.
04:51:43 -!- elliott__ has quit (Ping timeout: 248 seconds).
04:54:58 <fizzie> A habitual esolanger's (likely) advantage in Haskell: pointless stuff comes naturally.
05:01:23 -!- Zwaarddijk has quit (Ping timeout: 258 seconds).
05:01:27 -!- Zwaarddijk has joined.
05:06:05 <pikhq_> fizzie: More importantly, something being odd is *not* considered an insurmountable barrier.
05:07:20 <Sgeo|web> Am I considered a habitual esolanger?
05:07:30 <Sgeo|web> Or just an inhabitant of esolang...er
05:07:34 <Sgeo|web> esolangland
05:11:55 -!- elliott_ has quit (Remote host closed the connection).
05:14:09 -!- elliott_ has joined.
05:56:34 -!- elliott_ has quit (Remote host closed the connection).
05:58:04 -!- elliott_ has joined.
06:02:42 -!- elliott_ has quit (Ping timeout: 260 seconds).
06:13:50 -!- ive has quit (Ping timeout: 276 seconds).
06:49:01 <Madoka-Kaname> :t map
06:49:01 <lambdabot> forall a b. (a -> b) -> [a] -> [b]
06:59:20 -!- pikhq has joined.
07:02:19 -!- pikhq_ has quit (Ping timeout: 258 seconds).
07:02:48 -!- nooga has joined.
07:11:16 -!- monqy has quit (Quit: hello).
07:15:33 -!- ive has joined.
07:23:53 -!- BAPU has joined.
07:24:03 -!- BAPU has quit (Client Quit).
07:50:01 <nooga> aha
07:50:05 <nooga> thought so
08:43:16 -!- copumpkin has quit (Ping timeout: 244 seconds).
08:43:42 -!- copumpkin has joined.
08:48:13 -!- ive has quit (Quit: leaving).
08:49:26 -!- Vorpal has joined.
09:17:08 -!- pikhq_ has joined.
09:17:27 -!- pikhq has quit (Ping timeout: 258 seconds).
09:30:22 -!- ais523 has joined.
09:43:14 -!- ais523 has quit (Read error: Connection reset by peer).
09:45:16 -!- ais523 has joined.
09:54:37 -!- CakeProphet has quit (Ping timeout: 260 seconds).
09:59:59 -!- ais523 has quit (Read error: Operation timed out).
10:03:12 -!- jonmacuse has joined.
10:04:11 -!- jonmacuse has quit (Quit: Leaving).
10:08:30 -!- cheater_ has quit (Excess Flood).
10:08:59 -!- cheater_ has joined.
10:12:17 -!- ais523 has joined.
10:13:19 <ais523> gah, Compiz has stopped working for no apparent reason
10:13:29 <ais523> it can't find the graphics card; not even rebooting helps
10:13:45 <ais523> let me try another program that uses the graphics card
10:14:40 <ais523> X Error of failed request: BadLength (poly request too large or internal Xlib length error)
10:14:49 <ais523> I wonder what's up with my graphics card?
10:15:55 <ais523> Vorpal: any ideas?
10:16:18 <Vorpal> hi
10:16:59 <Vorpal> ais523, Does plain 2D graphics work?
10:17:13 <ais523> yes; Metacity works
10:17:22 <ais523> but doing anything that should involve a 3D graphics card fails
10:17:35 <Vorpal> any recent upgrade?
10:17:45 <ais523> nothing but security updates
10:17:45 <Vorpal> like to kernel or X11 or whatever
10:17:52 <ais523> I can check if any affected packages likely to be involved
10:18:00 <Vorpal> probably a good idea
10:18:44 <ais523> xserver-common (2:1.7.6-2ubuntu7.6) to 2:1.7.6-2ubuntu7.8
10:18:54 <ais523> looks very much like it might be at fault
10:19:21 <ais523> let me install the older version
10:19:25 <Vorpal> ais523, also if nothing else works you might want to try powering off and unplugging (plus removing battery if a laptop) then wait for half a minute or such. And then power it on again. Helped me with some weird GPU issues once.
10:19:52 <Vorpal> ais523, good thing I didn't upgrade that on my laptop yet then
10:20:54 <ais523> hmm, aptitude tried to interpret my request as uninstalling libvpx0 and upgrading X to the latest version, as it couldn't find the specific old version I mentioned
10:21:00 <ais523> so I didn't let it
10:21:04 <Vorpal> ouch
10:21:50 <ais523> I tried apt-get instead, and it errored out on the specific version mentioned
10:21:56 <ais523> which is a more sensible interpretation, I think
10:22:06 <ais523> so, hmm, I'm stuck without the ability to undo the upgrade that broke things
10:22:57 <Vorpal> ais523, check for bug reports? Or downgrade to an even older version
10:24:05 <Vorpal> ais523, actually there seems to be an upgrade already
10:24:14 <Vorpal> ais523, 2:1.7.6-2ubuntu7.9 might be it
10:24:19 <Vorpal> that is on lucid
10:24:30 <Vorpal> changelog says it reverted a security fix for now
10:24:51 <ais523> The following packages will be REMOVED: libvpx0{u} The following packages will be upgraded: gnome-utils libgdict-1.0-6 xserver-common xserver-xorg-core
10:24:57 <Vorpal> wut
10:25:00 <ais523> yep, looks like they pushed a bad fix and only just noticed
10:25:22 <Vorpal> looks like I have the "bad" version but I didn't notice any issues
10:25:47 <Vorpal> oh wait, I haven't restarted X since the upgrade
10:26:31 -!- ais523 has quit (Quit: Restarting X).
10:27:39 -!- ais523 has joined.
10:28:04 <ais523> yay, fixed, thanks
10:28:20 <ais523> it still loaded Metacity by default, but changing the default to Compiz actually worked this time
10:28:50 <ais523> first time I've had a really noticeable break as a result of an update
10:40:20 <fizzie> "chromium-browser will be upgraded from version 12.0.742.112~r90304-0ubuntu0.11.04.1 to version 14.0.835.202~r103287-0ubuntu0.11.04.1", quite a jump. (All this talk about upgrades made me go look.)
10:43:57 <Sgeo|web> Does anyone even take notice of Chromium version numbers?
10:44:50 <fizzie> 14 is at least two better than 12.
10:50:46 <ais523> fizzie: well of course, how could Chrome's version number stay ahead of Firefox's otherwise?
10:51:43 <Patashu> if no one looked at chrome's version number, would it still be going up?
10:55:39 <fizzie> If a Chrome version number is incremented in the forest, and no-one is around to see it, does it still need an entry in the changelog?
11:16:54 -!- GreaseMonkey has quit (Quit: The Other Game).
12:01:37 -!- ais523 has quit (Remote host closed the connection).
12:02:17 -!- variable has quit (Excess Flood).
12:03:02 -!- variable has joined.
12:06:48 <Patashu> Chrome developers should write a program that checks firefox's version number and increments chromes' until it's 10%+/-rand() higher
12:12:52 -!- cheater_ has quit (Quit: Ex-Chat).
12:13:38 <Patashu> then firefox developers make one of their own
12:13:43 <Patashu> and the largest integer known to man is discovered
12:25:26 <fizzie> Did you see that thing about algorithmic book prices in Amazon? http://www.michaeleisen.org/blog/?p=358
12:25:32 <fizzie> "Amazon’s $23,698,655.93 book about flies"
12:25:41 <fizzie> It may in fact have been linked on this very channel.
12:26:59 <Patashu> how about http://www.telegraph.co.uk/news/uknews/8837736/Man-orders-size-14.5-slipper-and-gets-size-1450-after-mistranslation-in-China.html
12:27:36 <Patashu> oh, haha. that is cool
12:36:52 -!- Ngevd has joined.
12:36:59 <Ngevd> Hello!
12:49:56 <Ngevd> I liked today's IWC annotation
12:55:23 -!- Zetro has joined.
12:57:20 -!- ais523 has joined.
12:58:30 -!- MSleep has changed nick to MDude.
13:07:48 <Ngevd> What's an interesting SKI program (combination?)?
13:09:23 -!- ais523 has quit (Remote host closed the connection).
13:11:05 <Patashu> what would qualify as interesting?
13:11:18 <Ngevd> Really, something short that looks good
13:11:25 <Ngevd> Doesn't help, does it?
13:12:21 -!- ais523 has joined.
13:23:29 -!- iamcal has quit (Remote host closed the connection).
13:26:25 -!- ais523 has quit.
13:26:38 -!- ais523 has joined.
13:33:49 -!- derdon has joined.
14:00:04 -!- iamcal has joined.
14:02:12 <Patashu> Does anyone here use etherpad? I signed up for it, but the email for it hasn't arrived.
14:02:22 <Patashu> I want a service like 'downforeveryoneorjustme.com' but for sites that send out emails when you register
14:05:15 <Patashu> Yeah, see
14:05:22 <Patashu> I register again with my gmail instead of my hotmail and it works instantly
14:05:38 <Patashu> I don't know if I typoed my email or if it didn't like it or if it was a fluke or...
14:05:52 -!- copumpkin has quit (Ping timeout: 260 seconds).
14:06:16 -!- copumpkin has joined.
14:23:31 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
14:47:47 -!- copumpkin has joined.
14:50:19 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
14:54:24 -!- hagb4rd has quit (Ping timeout: 248 seconds).
15:07:19 -!- pikhq has joined.
15:10:19 -!- pikhq_ has quit (Ping timeout: 258 seconds).
15:10:33 -!- ais523 has quit (Remote host closed the connection).
15:14:24 -!- augur has quit (Remote host closed the connection).
15:31:16 -!- Ngevd has quit (Ping timeout: 260 seconds).
15:46:27 -!- augur has joined.
15:54:46 -!- ais523 has joined.
16:05:23 -!- elliott has joined.
16:13:23 -!- sllide has joined.
16:24:05 -!- derrik has joined.
16:40:43 <elliott> `quote
16:40:43 <elliott> `quote
16:40:44 <elliott> `quote
16:40:44 <elliott> `quote
16:40:45 <elliott> `quote
16:40:58 <HackEgo> 609) <Phantom_Hoover> OK, making myself emergency doctor on the advice of IRC.
16:41:10 <HackEgo> 513) <elliott_> its UNEBARBEL
16:41:11 <HackEgo> 179) <fizzie> It's like mathematicians, where the next step up from "trivial" is "open research question". <fizzie> "Nope... No...This problem can't be done AT ALL. This one--maybe, but only with two yaks and a sherpa. ..."
16:41:11 <HackEgo> 423) <oklopol> so about jacuzzis, do they usually have a way to make it it not heat but freeze the water?
16:41:11 <HackEgo> 315) <Phantom_Hoover> elliott, incidentally, I started my explorations again after getting bored of the Himalayas.
16:41:27 <elliott> `delquote 513
16:41:30 <HackEgo> ​*poof*
16:44:32 <Gregor> Booting from the grub-rescue prompt LIKE A BOSS.
16:45:23 <elliott> `quote
16:45:24 <elliott> `quote
16:45:24 <elliott> `quote
16:45:25 <elliott> `quote
16:45:25 <elliott> `quote
16:45:27 <HackEgo> 276) <Vorpal> !bfjoust test (-)*10000 <EgoBot> Score for Vorpal_test: 12.9 <Vorpal> yay
16:45:27 <elliott> hi Gregor
16:45:29 <HackEgo> 9) <Madelon> Lil`Cube: you had cavity searches? <Lil`Cube> not yet <Lil`Cube> trying to thou, just so I can check it off on my list of things to expirence
16:45:31 <HackEgo> 19) <fungot> oerjan: are you a man, if there weren't evil in this kingdom to you! you shall find bekkler! executing program. please let me go... put me out! he's really a tricycle! pass him!
16:45:40 <HackEgo> 226) <Sgeo> Oh. Stuff that uses actual physical numbers stemming from science. Bleh *gets bored*
16:45:41 <HackEgo> 612) <fungot> elliott: mr president, commissioner, i fully accept that description when it comes to human rights. yes, with an average fat content of chocolate, and we are using double standards! we all know that under present legislation and also in relation to standardization bodies. if i do not want.
16:45:59 <elliott> hmm, 276 or 9
16:46:27 <ais523> wow, I ended up reading "A Brief, Incomplete and Mostly Wrong History of Programming Languages" again
16:46:33 <ais523> and am utterly shocked at how recent Java is
16:46:35 <elliott> I love that
16:46:41 <elliott> and, err, really?
16:46:42 <ais523> so do I
16:46:48 <ais523> 1996?
16:46:52 <elliott> one year prior, actually
16:46:53 <ais523> I assumed it was older than I am
16:47:11 <elliott> nah, it's very much a 90s internet boom thing
16:47:16 <ais523> and I assumed it predated most currently-popular scripting languages, too
16:47:18 <elliott> ais523: remember that it originated to program set top boxes
16:47:28 <ais523> what, Java?
16:47:29 <elliott> yep
16:47:30 <ais523> seriously?
16:47:37 <elliott> that's why it's so ~safe~
16:47:38 <elliott> for reliability
16:47:39 <ais523> sorry, I'm in a mood where I vaguely expect to be trolled atm
16:47:40 -!- sllide has quit (Ping timeout: 260 seconds).
16:47:46 <elliott> and then they realised nobody wanted to do that, and this Web thing is totally catching on
16:47:52 <elliott> so they decided to retarget it
16:47:54 <elliott> I wish I was kidding
16:48:10 -!- Ngevd has joined.
16:48:10 <elliott> pointless trivia: it was called Oak while it was for set-top boxes
16:48:19 <Ngevd> Wow, I'm here!
16:48:20 <Ngevd> Hello!
16:48:22 <elliott> ais523: I do find it kinda crazy that Python is older than Java, though
16:48:41 <ais523> hmm, are virtual machines (in the JVM sense) similar in age to Java, or much older?
16:48:47 <elliott> ais523: in fact, Ruby might even be older
16:48:51 <elliott> also, much older
16:49:02 <elliott> I can't think of an example but there were definitely VMs in the eighties
16:49:07 <elliott> ais523: Smalltalk, f.e.
16:49:14 <elliott> so at least seventies
16:49:19 <ais523> ah, Smalltalk's VM-based?
16:49:27 <elliott> yes
16:51:27 <elliott> I wish Ilari was still around
16:51:30 <elliott> I want to know what's up with IP
16:51:47 <Ngevd> Instruction Pointer?
16:51:51 <Ngevd> Internet Protocol?
16:51:56 <Ngevd> Indian Police?
16:52:11 <Ngevd> Independent Party
16:52:14 <Ngevd> Dinnertime
16:52:15 -!- Ngevd has quit (Client Quit).
16:53:48 <Madoka-Kaname> http://blog.wolfram.com/2010/12/17/the-mathematica-one-liner-competition/
16:53:52 <Madoka-Kaname> This looks like a golfing challenge.
16:54:53 <elliott> hey ais523, Mathematica
16:55:05 <elliott> man that Tubular Bells is about fifty times worse than the one-liner chiptunes :P
16:55:37 <ais523> elliott: they do that competition every so often
16:55:49 <elliott> ais523: "While this expression is a disaster practically, it has a certain conceptual appeal that made up for it hanging the judges’ machines." --Wolfram
16:55:51 <ais523> all it really does is show off what the standard library is good at doing
16:55:54 <elliott> (company, not person)
16:56:04 <elliott> ais523: That's my one-liner explanation of Mathematica.
16:56:25 <elliott> http://blog.wolfram.com/data/uploads/2010/12/OneLiner9.png for very large values of 137
16:58:02 <Madoka-Kaname> How hard would it be to reimplement Mathematica's functionality as a Haskell library?
16:58:22 <elliott> very
16:58:31 <elliott> mathematica is a few gigabytes of library
16:58:53 <Madoka-Kaname> Would the end result be better? =p
16:59:10 <Madoka-Kaname> Ehh.... Does Mathematica lazy evaluate?
16:59:31 <Madoka-Kaname> If it does, that dishonorable mention should actually some stuff, right?
17:03:04 <ais523> it's strict, AFAIK
17:03:46 <Madoka-Kaname> actually output*
17:04:18 <elliott> Mathematica uses term rewriting, so it's hard to replicate its interface in something like Haskell
17:04:36 -!- monqy has joined.
17:05:03 <coppro> Some things would also be a pain
17:05:19 <coppro> Haskell is horrible at things like type-safe sized data structures
17:05:33 <coppro> (e.g. matrices typed by size)
17:05:37 <elliott> coppro: Mathematica doesn't have those
17:05:41 <coppro> I know
17:05:42 <elliott> so I don't know what you're going on about
17:05:44 <coppro> but it should
17:05:46 <elliott> it doesn't
17:05:49 <coppro> it should
17:05:58 <elliott> see Axiom
17:06:21 <elliott> anyway, haskell isn't terrible at those, they're just a pain to write
17:06:25 <coppro> we should just use coq
17:06:37 <coppro> elliott: I consider a pain to write isomorphic to terrible
17:06:52 <elliott> coppro: so anything hard to implement is terrible to use?
17:07:21 <coppro> No, but such a matrix system would also be horrible to use
17:07:46 <elliott> shrug; not if you were fine with predefined operations
17:07:54 <elliott> manual loops would be a bit of a pain
17:08:51 <coppro> Matrix (S (S (S (S Z)))) (S (S (S (S (S (S (S Z)))))))
17:09:12 <coppro> seems terrible
17:09:28 <coppro> anyway, bus time
17:12:40 <elliott> <coppro> Matrix (S (S (S (S Z)))) (S (S (S (S (S (S (S Z)))))))
17:13:05 <elliott> coppro: Matrix N4 N7
17:13:08 <elliott> omg so terrible
17:15:27 <Sgeo|web> .
17:17:30 <elliott> what
17:17:47 -!- derrik has quit (Ping timeout: 252 seconds).
17:19:50 <Sgeo|web> elliott: I wanted to see if I was still connected
17:20:04 <elliott> that won't help
17:20:06 <elliott> messages are echoed locally
17:20:09 <elliott> try /topic
17:20:57 <Sgeo|web> Actually, when I get disconnected, webchat seems to stop echoing my messages.
17:21:00 <ais523> I use /ctcp ping ais523
17:21:07 <ais523> which gets abbreviated to /ping ais523 in practice
17:21:21 <ais523> I tend to use /ping ais523 even when I'm not actually ais523; it still works, because the error message comes from the server
17:21:29 <fizzie> I use /whois fizzie.
17:21:38 <elliott> might as well just /ping q :P
17:21:43 <elliott> but yeah, I've got in the habit of doing /topic
17:22:14 <Sgeo|web> /topic
17:22:27 <Sgeo|web> say /topic complains about insufficient arguments
17:22:46 <ais523> it doesn't
17:23:07 <Sgeo|web> On this webchat it does for some reason
17:23:12 <ais523> elliott: oh dear: today I was trying to explain {C-style functions|static methods} to my students
17:23:17 <ais523> and used a hello world function as the example
17:23:23 <ais523> which would write hello world to arbitrary streams
17:23:34 <elliott> FILE streams?
17:23:51 <elliott> oh, C++ streams?
17:24:12 <ais523> it was Java
17:24:14 <ais523> so PrintStreams
17:24:35 <elliott> ah
17:24:35 <elliott> go on
17:27:20 <ais523> there's not much go on
17:27:26 <ais523> I just realised afterwards that it was a ridiculous thing to do
17:27:30 <ais523> especially when I wrote docs for it
17:27:54 <elliott> heh
17:28:31 <Vorpal> h<elliott> but yeah, I've got in the habit of doing /topic <-- same as me then
17:28:35 <Vorpal> s/^h//
17:29:28 <Vorpal> <ais523> I just realised afterwards that it was a ridiculous thing to do <-- I seen worse examples from teachers than that.
17:30:09 <ais523> well, I improvise
17:30:16 <ais523> so my examples are bound to be silly sometimes
17:30:56 <Vorpal> ais523, not too bad then. I seen sillier planned examples and assignments.
17:31:01 <Vorpal> have seen*
17:31:46 <Vorpal> what was it on the exam for the database stuff now again... Oh yeah, superman bug swatting database. No it didn't make any sense.
17:32:14 <elliott> Vorpal: Sorry but that sounds like the best?
17:32:47 <Vorpal> elliott, best or worst or whatever. You can't deny it was silly :P
17:33:07 <Sgeo|web> I wrote some actually difficult for me to write Haskell code
17:33:12 <Sgeo|web> It looks horribleugly
17:33:16 <elliott> Sgeo|web: was it hello world
17:33:21 <Sgeo|web> No
17:33:33 <elliott> are you sure
17:33:35 <Vorpal> Sgeo|web, don't show it to elliott. He will just poke fun at you.
17:33:46 <elliott> it's called constructive criticism
17:33:51 <fizzie> Better fun than holes.
17:33:58 <Vorpal> elliott, FSVO constructive
17:34:34 <elliott> Vorpal: should i deliberately withhold all the ways in which a given piece of code is broken and thus hold back its author????
17:35:09 <ais523> elliott: if you think that code is broken badly enough that you can produce a reasonably long list of ways in which it is broken
17:35:10 <Vorpal> elliott, I didn't say that.
17:35:15 <ais523> there are probably more ways that it's broken that you didn't catch
17:35:33 <Sgeo|web> When I'm less tired, I might ask in #haskell
17:35:45 <Vorpal> elliott, what I was complaining about was the way you *present* said criticism.
17:36:00 <Sgeo|web> But it's not broken (except for requiring users to supply a type signature), as such. It works. It's just a godawful horror
17:36:09 <elliott> "(except for requiring users to supply a type signature)"
17:36:15 <elliott> Sgeo|web: I've found the problem already
17:36:23 <elliott> you're trying to do something stupid with the type system; stop it
17:36:43 <Vorpal> elliott, you do weird things to the type system quite often
17:36:55 <Sgeo|web> I might be using the type system incorrectly, but I'm abusing monads, not the type system
17:37:05 <monqy> abusing monads?
17:37:11 <elliott> Vorpal: yes, because I'm a rather good Haskell programmer
17:37:19 <elliott> Vorpal: and it is always strictly for fun
17:37:20 <copumpkin> elliott: o rly
17:37:22 <Sgeo|web> (Specifically, I'm doing convoluted stuff with a State monad when I feel I should probably be using a State and Writer monad stack)
17:37:26 <elliott> copumpkin: compared to Sgeo|web
17:37:29 <Vorpal> elliott, well yeah
17:37:43 <copumpkin> you should combine lenses with your state
17:37:49 <copumpkin> that makes state twice as awesome
17:37:50 <Sgeo|web> And probably also separating long lines into parts or something
17:38:56 <Sgeo|web> So, if my state was a tuple and I wanted to update the first one, lenses would make that convenient?
17:39:20 <Sgeo|web> Wow, when I write it like that, I think I could have just done (firstpart, secondpart) <- get
17:39:30 <Sgeo|web> And not fiddle with fst and snd
17:39:48 <Sgeo|web> EVERYWEHRE IN THE CODE
17:39:52 <monqy> data-lens even has special stuff for dealing with monadstate iirc
17:40:07 <elliott> Sgeo|web: (<$>) :: (a -> b) -> (c,a) -> (c,b)
17:40:34 <monqy> and also lenses for tuples
17:40:40 <monqy> couples specifically
17:40:46 <elliott> couples
17:40:53 <monqy> 2-topules
17:41:07 <Sgeo|web> Of course there's a library for making what I did easier that I had no clue about, why wouldn't there be?
17:41:26 <Sgeo|web> That will always be the case for any value of "what I did"
17:41:34 <elliott> lenses are overkill for a tuple
17:41:55 <Sgeo|web> http://pastie.org/private/1aazxbtt5gohfmmp4uudfa
17:42:09 <Sgeo|web> Some of the comments are obsolete
17:42:17 <monqy> arrow is good for tuple manipulation, bad for other things
17:43:30 -!- Ngevd has joined.
17:43:39 <Sgeo|web> http://pastie.org/private/sqqcpinl5hke0fuawknpka example usage
17:44:29 <elliott> your commenting style sucks, put them above the relevant lines
17:44:42 <elliott> Sgeo|web: evalState/execState means you run the computation twice
17:44:46 <elliott> :t runState
17:44:47 <lambdabot> forall s a. State s a -> s -> (a, s)
17:57:04 -!- sllide has joined.
17:59:47 -!- Slereah_ has quit (Ping timeout: 260 seconds).
18:05:48 -!- Slereah_ has joined.
18:15:51 -!- Slereah_ has quit (Remote host closed the connection).
18:16:16 -!- Slereah_ has joined.
18:16:41 <Sgeo|web> I knew about runState just thought that evalState and execState would be more convenient to use in my case
18:17:19 <elliott> Sgeo|web: More convenient vs. computing everything twice.
18:17:27 <elliott> Anyway, it's not inconvenient, just deconstruct it in a where clause.
18:17:49 <Sgeo|web> I need to start using where clauses more
18:18:40 <Ngevd> Sgeo|web, having discovered the wonder of the clause, changed his grammar techniques
18:42:58 -!- sebbu2 has joined.
18:42:58 -!- sebbu2 has quit (Changing host).
18:42:59 -!- sebbu2 has joined.
18:43:52 -!- sebbu has quit (Ping timeout: 240 seconds).
18:59:26 -!- pikhq_ has joined.
18:59:33 <Ngevd> Turns out, I can't make an IRC bot
18:59:40 -!- pikhq has quit (Ping timeout: 244 seconds).
18:59:56 <Ngevd> ais523, the spambots have started with gambling sites
19:00:07 <fizzie> fungot: Help Ngevd make an IRC bot, you're the expert.
19:00:07 <fungot> fizzie: so, let's say i call them mindless games. if we hit every stupid person, any person going, tough one. if we solve it,... it's what that guy in medina, a village near the mystic mountain" 65,000,000 b. c.? yes, i'd have done something very brave! he's probably up north, to guardia!!! let's toast? or decide. fnord 22:11, 17, 18, 19, 20, 21, 22, 22, ...too much output!
19:00:12 <ais523> Ngevd: they started that a bit earlier
19:00:14 <fizzie> (Almost typed "you're the export".)
19:00:46 <Ngevd> I reckon, if I knew anything about the IRC protocol, I could probably make Pietbot
19:00:59 <ais523> the IRC protocol is really pretty simple
19:01:14 <Ngevd> I'll learn it at the weekend
19:01:21 <ais523> you start off by writing USER username anything anything :realname
19:01:31 <ais523> then PASS password (if you need a password to log on)
19:01:32 <ais523> then NICK nickname
19:01:35 <ais523> and that's enough to connect
19:01:42 <ais523> (the username's the bit before the @ in your whois info)
19:01:50 <ais523> then you join channels with JOIN #esoteric
19:01:59 <ais523> and send messages with PRIVMSG #esoteric :this is a message
19:02:01 <fizzie> ais523: Can you join any channel with "JOIN #esoteric"?
19:02:06 <ais523> (the colon means "quote to end of line")
19:02:12 <ais523> fizzie: depends on the server, I guess
19:02:24 <ais523> you can join #esoteric, at least
19:02:26 <elliott> <ais523> you start off by writing USER username anything anything :realname
19:02:27 <ais523> that counts as "any channel"
19:02:28 <elliott> ais523: no you don't
19:02:35 <ais523> elliott: really?
19:02:43 <ais523> NICK comes last, USER and PASS can be either way round
19:02:51 <elliott> ais523: USER <user> <mode> <unused> <realname> (RFC 2812)
19:02:55 <ais523> and the second and third args are habitually ignored
19:02:58 <elliott> nobody's used the 1459 USER since, um, ever
19:03:13 <ais523> what's /meant/ to go in the <mode> field?
19:03:19 <ais523> I've tried all sorts of random stuff htere
19:03:21 <ais523> *there
19:03:23 <elliott> ais523: mode bitmask
19:03:25 <elliott> as decimal
19:03:26 <ais523> and Freenode never seems to care
19:03:31 <elliott> 8 is the usual thing, I think
19:03:33 <ais523> ah, I don't think I tried a number
19:03:35 <elliott> ais523: it'll just use a default if you pass something invalid
19:04:07 <ais523> like "localhost", that one's always fun
19:04:24 <ais523> it's like using localhost in a HELO in SMTP (which actually works, and is often the best option)
19:04:26 <ais523> "Hello, I'm me"
19:05:05 <Vorpal> elliott I seem to remember you saying something to the effect of tzdata being overcomplicated for the job?
19:05:21 <elliott> Vorpal: I don't think TZ variables are a pain to set; DST rarely changes
19:05:29 <elliott> it's certainly convenient, but I don't think it's that important
19:05:41 <Vorpal> elliott, well just looked at changelog of tzdata: "Palestine suspends DST during Ramadan in 2011"
19:05:43 <ais523> elliott: what if you live in a country where it changes every few years?
19:05:52 <elliott> Vorpal: and probably it should just be a filesystem hierarchy of TZ variable settings, rather than a complicated binary format
19:06:02 <elliott> ais523: then your life is already hell :)
19:06:02 <ais523> I suppose the UK's worse, it changes every six months or so here
19:06:11 <Vorpal> or "West Bank changes date for DST end in 2011 to Sep 30th"
19:06:17 <elliott> <elliott> Vorpal: and probably it should just be a filesystem hierarchy of TZ variable settings, rather than a complicated binary format
19:06:21 <elliott> I didn't say tzdata was useless in concept
19:06:27 <elliott> I just think that it's overkill as it is
19:06:30 <elliott> but most things are
19:06:36 <Vorpal> ais523, it changes according to a sensible pattern iirc?
19:06:46 <Vorpal> or at least predictable pattern
19:06:48 <ais523> elliott: using Metacity a bit earlier reminded me of how much I prefer Compiz
19:06:51 <ais523> Vorpal: yes, I was making a joke
19:06:56 <Vorpal> ais523, oh okay
19:07:07 <ais523> not a very good one, but I still expected most people to catch it
19:07:08 <Vorpal> ais523, anyway Israel used to have DST different for every year
19:07:33 <elliott> DST is hell on earth, anyway
19:07:41 <Vorpal> yeah
19:08:07 <fizzie> Yeah, I just use Swatch Internet Time all the time.
19:08:21 <Vorpal> hah
19:08:22 <fizzie> Biel Mean Time for the win, and so on.
19:08:53 <elliott> holy shit, they removed the Eq/Show superclasses of Num???
19:09:01 <Vorpal> why is it called Biel btw?
19:09:05 <fizzie> (Swatch Internet Time is based on the UTC+1 observed at Swatch's headquarters in Switzerland.)
19:09:07 <Vorpal> elliott, what? where?
19:09:13 <fizzie> Biel, Switzerland, to be more precise.
19:09:17 <Vorpal> elliott, and when?
19:09:17 <elliott> well going by http://hackage.haskell.org/trac/ghc/changeset/b59fe25a24c4b913a9935c71b1b42a060ab53dcc/utils and http://haskell.1045720.n5.nabble.com/Proposal-Remove-Show-and-Eq-superclasses-of-Num-td4808712.html
19:10:26 <Vorpal> huh
19:10:45 <fizzie> Instead of the 1000-".beat" split of the @-time, I sort-of like the hexclock way of having a midnight of 0000, a noon of 8000, and one hex-second (about 1.32 regular seconds) before midnight as ffff.
19:11:36 <Vorpal> elliott, I'm not sure how sensible removing Eq is? When would you want a Num without Eq?
19:11:49 <elliott> Vorpal: computable reals
19:11:51 <elliott> (->)
19:11:53 <elliott> etc.
19:11:59 <ais523> (->) is numeric?
19:11:59 <Vorpal> hm
19:12:04 <Vorpal> :t (->)
19:12:05 <lambdabot> parse error on input `->'
19:12:06 <elliott> ais523: yes, reader monad interpretation
19:12:11 <fizzie> (I'm not as sure I like the Hexclock way of splitting it as A_BC_D and to call the middle bit minutes.)
19:12:15 <elliott> ais523: (f `op` g) x = f x `op` g x, etc.
19:12:20 <Vorpal> ah
19:12:34 <elliott> fizzie: "Furthermore, the essentially pointless and often confusing A.M. and P.M. suffixes have been eliminated. Anyone who has accidentally set his or her alarm clock for seven P.M. instead of seven A.M. can appreciate this."
19:12:35 <ais523> elliott: I don't see offhand how that makes it numeric
19:12:57 <elliott> ais523: well, it's Num b => Num (a -> b)
19:13:02 <Vorpal> elliott, don't all alarm clocks use 24h anyway?
19:13:04 <ais523> fizzie: I like decimal time
19:13:05 <elliott> fromInteger = const . fromInteger, etc.
19:13:19 <ais523> and normally split it as 3 millidays with 2 centimillidays (we need a better prefix for that)
19:13:34 <ais523> it differs from swatch internet time in that it follows timezones rather than being fixed at UTC+1
19:13:43 <elliott> decimal sux
19:13:52 <ais523> elliott: but it produces really nicely-sized time units
19:13:55 <Vorpal> ais523, why UTC+1 for swatch btw? Why not UTC
19:14:05 <ais523> why ask me?
19:14:06 <elliott> Vorpal: not only do you have no context
19:14:07 <ais523> I didn't invent it
19:14:08 <pikhq_> ais523: Hmm. What's 2 centimillidays in days, anyways?
19:14:08 <elliott> but you have no memory?
19:14:11 <elliott> <fizzie> (Swatch Internet Time is based on the UTC+1 observed at Swatch's headquarters in Switzerland.)
19:14:13 <elliott> <fizzie> Biel, Switzerland, to be more precise.
19:14:21 <Vorpal> elliott, I missed that line
19:14:33 <ais523> pikhq_: one of them is a little smaller than a second
19:14:38 <Vorpal> I never read it, thus it is unrelated to my memory
19:14:39 <elliott> <dafis> elliott: IT'S COMMITTED, IN 7.4 THEY WON'T BE
19:14:40 <elliott> YESSSSSSSSSSSS
19:14:46 <ais523> an 86400/100000th of a second, to be precise
19:14:51 <pikhq_> ais523: Well, I'm wondering if I can come up with a better prefix is why I ask.
19:14:57 <ais523> > 86400/100000
19:14:58 <lambdabot> 0.864
19:15:02 <pikhq_> 2 centimillidays = x days. Solve for x por favor.
19:15:06 <ais523> err, I could have guessed that…
19:15:29 * pikhq_ seriously has no idea how concatenating metric prefixes should work.
19:15:31 <ais523> pikhq_: oh, that's not what I meant
19:15:38 <ais523> I mean 3 digits go to millidays, and another 2 to centimillidays
19:15:50 <pikhq_> Yes, but what the eff is a centimilliday?
19:15:51 <ais523> "milliday" is a nice enough name, anyway
19:15:58 <ais523> but I'm not sure what to call the subdivision
19:16:05 <ais523> pikhq_: like dollars and cents, except millidays and centimillidays
19:16:13 <pikhq_> 0.0001 days, then?
19:16:21 <ais523> 0.00001
19:16:30 <ais523> it's a hundredth of a thousandth
19:16:54 <fizzie> ais523: Well, hextime has "naturally" three levels of units; 1.32s, 5m37.5s and 1h30m.
19:17:06 <elliott> 5m37.5s. So natural.
19:17:09 <ais523> ouch
19:17:15 <pikhq_> So, 10^-5.
19:17:24 <pikhq_> The prefix shall hereby be kotsu-.
19:17:26 <ais523> decimal time has centidays which are around 15 minutes, which is a great division
19:17:39 <ais523> and kotsudays which are a bit less than a second
19:17:48 <Vorpal> ais523, why is that a great division?
19:18:02 <ais523> Vorpal: 15-minute chunks are the chunks human schedules nearly always operate on
19:18:13 <pikhq_> (etymology: 10^-5 unit prefix for traditional Japanese units)
19:18:29 <Vorpal> ais523, only because our system is currently based on seconds and minutes
19:18:43 <ais523> Vorpal: that, and the fact that it's a conveniently-sized unit
19:18:53 <ais523> why don't we use, say, 10-minute chunks? or 12-minute chunks?
19:18:56 <ais523> or 20-minute chunks?
19:19:35 <Vorpal> ais523, well yes, but I suspect that anything between say 13 minutes and 20 minutes would be acceptable as a standard schedule unit, had those fit better with our time units.
19:19:53 <elliott> <Vorpal> there are other great divisions, ergo that one isn't
19:20:07 <fizzie> ais523: Sorry, 4 levels of units, of course: 1.32s, 21.09s, 5m37.5s and 1h30m. Anyway, the 1.32s hexsec is a reasonable "short time", and the 1h30m hexhour is a reasonable "longer time"; it's just the 21.09s hexminute that's a bit silly-short.
19:20:07 <Vorpal> elliott, strawman
19:20:20 <ais523> well, a centiday isn't exactly 15 minutes
19:20:23 <ais523> it's slightly less
19:20:26 <pikhq_> Man. Metrication in Japan must have been really easy. Their traditional units are metric.
19:20:27 <Vorpal> elliott, what I was saying: why should we stick to the current division if we design a new unit system anyway
19:20:28 <ais523> but only slightly
19:20:44 <elliott> Vorpal: You didn't actually say that.
19:20:53 <Vorpal> elliott, nor did I say what you claimed
19:20:56 <elliott> Yawn.
19:21:10 <elliott> Anyway, fifteen minutes are a good unit, so if it falls naturally out of a system, that is a point in favour of that system.
19:21:11 <elliott> Simple as that.
19:21:55 <Vorpal> well yes, but anything near that sort of size is just as good. What I'm claiming here is that 15 minutes isn't the optimum. In fact I think slightly longer would be better.
19:23:02 <olsner> fungot: does it defurbulate VCL's crudgenickle sklep?
19:23:03 <fungot> olsner:, so i'd have to consider that although the reduction in actual transportation section from former friend lives, their door had my computer with full u+ support" then they both bowed low. just keep the safe or tub and emptied it
19:23:16 <fizzie> Also you get a reasonable approximation of current units by doing a:bb:cc where a = 0..f, bb = 00..3f, cc = 00..3f, which gives 0:00:01 as 1.32s (a second-analogue), 0:01:00 as 84.374s (a minute-analogue) and 1:00:00 as 1h30m (an hour-analogue), but that's no longer as clean as just the four hexdigits.
19:24:46 <elliott> fizzie: And you can truncate-round it using big endian fixed-point, right?
19:26:33 <fizzie> Yes, you get the time in coarser units (truncated) by just reading a shorter number if you are big-endian.
19:27:24 <elliott> fizzie: Another victory of big-endian.
19:28:34 <ais523> same with little-endian, you just read from the other end
19:28:48 <fizzie> ais523: Yes, but you need an address adjustment.
19:29:22 <fizzie> ais523: (There was a discussion (if you can call it that) on this other channel on the little-endian property of being able to convert to narrower integers without adjusting the address.)
19:29:30 <Vorpal> on the other hand you need no address adjustment in little endian if you just want the seconds, or the seconds and the minutes
19:29:32 <ais523> fizzie: I know, I was in it
19:29:43 <ais523> in fact, I even believe I pointed out that it was the main advantage of little-endian
19:29:45 <elliott> fizzie: It was -minecraft.
19:29:51 <elliott> Though we've talked about it previously here.
19:29:54 <Vorpal> yeah
19:29:57 <ais523> (it's also the reason gcc-bf is little-endian, incidnetally)
19:29:57 <elliott> Oh, "this other channel".
19:30:36 <ais523> is -minecraft still in use?
19:30:46 <elliott> O'course.
19:31:14 -!- tiffany has joined.
19:31:33 <elliott> fizzie: Can you believe I'm still working on them n-grams?
19:46:25 -!- CakeProphet has joined.
19:46:26 -!- CakeProphet has quit (Changing host).
19:46:26 -!- CakeProphet has joined.
19:47:56 <elliott> Oh, it's the Pake Crophet.
19:49:20 -!- pikhq_ has quit (Read error: Operation timed out).
19:49:36 -!- pikhq has joined.
19:56:13 <olsner> the poke craphet
19:56:39 <Ngevd> The Peko Crephat
19:58:58 <elliott> im peko crephat
20:00:45 <elliott> :t repeat
20:00:46 <lambdabot> forall a. a -> [a]
20:01:42 -!- Vorpal has quit (Ping timeout: 260 seconds).
20:04:14 <Ngevd> Is cycle equivalent to (concat . repeat)?
20:04:32 <elliott> yes
20:11:39 <Ngevd> Oh, cool
20:11:58 <olsner> poke crêpe hat
20:13:03 <olsner> *peko
20:13:27 <Ngevd> That's rapidly approaching Gregor
20:18:38 -!- sebbu2 has changed nick to sebbu.
20:20:08 -!- tswett has joined.
20:21:57 -!- oerjan has joined.
20:26:48 <fizzie> Cake "Ark-Tech-Pope" Prophet.
20:29:10 <elliott> hi oerjan
20:30:58 <oerjan> hi elliott
20:31:16 <Ngevd> hi tswett
20:31:26 * elliott wishes there was some standard (Map a Int, Int) structure
20:31:29 <tswett> hi Ngevd
20:31:39 <elliott> with "index :: a -> (Map a Int, Int) -> (Int, (Map a Int, Int)"
20:31:46 <elliott> which inserts with highest value if it's not present
20:31:53 <elliott> ...and presumably has some more compact in-memory representation...
20:32:19 <tswett> elliott: so the Int on the end is the highest value already present?
20:32:34 <elliott> yes, or the next value to assign, it doesn't matter much -- presumably the structure would be abstract
20:35:43 <Ngevd> Goodnight
20:35:46 -!- Ngevd has quit (Quit: Leaving).
20:36:17 <ais523> o
20:36:38 <elliott> hi
20:36:51 <ais523> who's that hi at?
20:37:01 <fizzie> elliott: If you DIY, are you going to call it Trogdor the Internator?
20:37:20 <ais523> I've been here all along, but felt like spouting a meme somewhere
20:37:22 <elliott> fizzie: If I DIY as opposed to what?
20:37:27 <elliott> ais523: I say hi a lot
20:37:33 <ais523> and then realised that there was one whose only purpose was to be mentioned randomly
20:37:36 <ais523> so I used it
20:37:43 <ais523> `log just oing
20:37:49 <HackEgo> 2008-03-20.txt:15:37:24: <oklofok> ais523: just oing
20:37:50 <elliott> fizzie: Anyway, I suppose I could call it that. The programs right now are degrade, intern, and gentry.
20:38:00 <fizzie> elliott: As opposed to finding one, which, I admit, sounds kinda unlikely.
20:38:06 <ais523> hmm, I'm not sure what date I would have guessed for that
20:38:15 <elliott> fizzie: Well, it's already mostly-written.
20:38:36 <elliott> fizzie: Do you know of a FUSE filesystem that presents a directory full of compressed files (e.g. .gz) as if they were uncompressed? :p
20:38:43 <elliott> `logurl 2008-03-20.txt:15:37:24:
20:38:46 <HackEgo> http://codu.org/logs/log/_esoteric/2008-03-20
20:39:07 <oerjan> oa hela natten
20:39:12 <ais523> elliott: Ubuntu has "archive mounter", but that's not quite the same thing
20:39:51 <Madoka-Kaname> elliott, you should code it
20:39:55 <fizzie> Data.Symbol has intern :: String -> Symbol, with Symbol !Int String, but it only has a single map, I suppose. (Just a quick googling.)
20:40:20 <elliott> fizzie: Yees, but in this case it isn't the typical intern-table things; I mean, I'd probably use Kmett's package if I wanted that.
20:40:33 <elliott> fizzie: I'm not trying to store symbols or the like efficiently, I need a first-class intern table.
20:41:08 <fizzie> elliott: There's all kinds of transparent-compression fuse things, but not sure about that. fuze-lzofs sounds like it'd do it, but that seems to be a dead project with the web-page gone.
20:41:18 <elliott> Heh.
20:41:41 <elliott> (It's just that, since intern has to process every file in one run, I'm going to have to build in the decompress/recompress stage into it.)
20:41:45 <elliott> (Which just seems _gross_.)
20:41:47 <fizzie> And there's fuse-archivemount, but that's probably like Ubuntu's archive mounter, to mount a single archive somewhere.
20:41:56 <elliott> I suppose it could do it in multiple runs by saving the intern table and reloading it, but that sounds pointlessly slow for no reason.
20:42:01 <ais523> elliott: strangely, that log is the same day I first IRCed over telnet
20:42:07 <elliott> ais523: haha
20:42:34 <ais523> <ais523_> [CTCP] Received CTCP-PING reply from ais523: -76 seconds.
20:43:32 <ais523> related, also the day I invented CTCP SWAPNICK
20:43:38 <ais523> it has never yet been implemented, which makes me sad
20:43:51 <Madoka-Kaname> What does CTCP SWAPNICK do?
20:43:59 <elliott> <CTCP>PING<CTCP>
20:44:05 <elliott> <CTCP>VERSION<CTCP>
20:44:10 <elliott> -Zetro- VERSION ((\w+) (v?(\d+(?:[a-z]|(?:\.\d+[a-z]?)*(?:[_-](?:\d+[a-z]?|[a-z]?\d*))?)))(?: (.*))?)
20:44:12 <elliott> um.
20:44:19 <Madoka-Kaname> <CTCP>VERSION<CTCP>
20:44:23 <ais523> Madoka-Kaname: it causes each client to send each other the messages it wants to post, and post as each other, from then on
20:44:23 <fizzie> elliott: I guess you could use any transparent-compressed file system by "uncompressing" the files into it beforehand, but that'd tie the data into the particular implementation what it uses.
20:44:41 <ais523> some sort of daemon would be needed to handle quits correctly
20:44:45 <ais523> unless you swapped back just before quitting
20:45:20 <elliott> fizzie: Yeaah. I think I'd prefer to just add some unzip/zip runs into intern.hs.
20:45:21 <Zetro> elliott: Like my version? :)
20:45:22 <Madoka-Kaname> Can you implement that on the ircd?
20:45:23 <ais523> (in CLC-INTERCAL, it's possible to steal a filehandle from another program, which means that the INTERCAL impl has to keep running after it quits; as a corollary, a program that opens any file at all is making it visible to the entire world forever)
20:45:32 <elliott> Zetro: It's... some version.
20:45:34 <ais523> Madoka-Kaname: I suppose so, but it was meant to be client-level
20:46:06 <Zetro> It's every version!
20:46:18 <Zetro> Almost
20:46:27 <elliott> Zetro: The best version. (What client do you actually use?)
20:47:25 <Zetro> atm I use XChat and AndChat
20:47:35 <ais523> hmm, what could be awesome: upon someone CTCP VERSIONing you, you CTCP VERSION them then echo the reply
20:48:03 <elliott> ais523: so if two people use it, they agree that they're both using the client _|_? :-)
20:48:24 <ais523> elliott: eventually one of them gets bored
20:48:30 <ais523> at which point the other's version doesn't really matter
20:48:32 <elliott> heh
20:48:34 <ais523> that is, quits or whatever
20:49:03 <ais523> okofolor
20:49:06 <Sgeo|web> Hey, a lot of people use _|_ now </boring>
20:49:36 <Sgeo|web> (e.g. everyone whose client doesn't reply to CTCP VERSION)
20:50:03 <fizzie> Thanks to XChat and irssi having different CTCP PING payloads, I get silly-looking values in the other client when I ping from one. Stuff like "CTCP PING reply from fizziew: -1319088817776269.-17 seconds." Or "Ping reply from fizziew: 1319088736.35 second(s)."
20:50:15 <elliott> heh
20:50:20 <elliott> .-17?
20:50:31 <elliott> it's an intercal version number :P
20:50:34 <ais523> elliott: you can tell a lot about the rounding algo from that
20:50:51 <ais523> it's clearly using rounds-towards-zero division in an attempt to calculate the remainder (or something similar involving the modulus function)
20:51:35 <ais523> <okofolor> nothing! can't a guy o here anymore without being asked for a reason :O
20:51:39 <ais523> I guess that was answered
20:52:21 <fizzie> XChat uses "PING v" where d is microseconds since the epoch as a single number; irssi puts in "PING s u" where s is seconds since epoch, u number of microseconds since the last full second.
20:52:27 <fizzie> s/d/v/
20:52:46 <ais523> so they differ by one space 90% of the time?
20:53:03 <ais523> elliott: what's with the Nomic World misquote in the topic?
20:53:11 <ais523> (I'm almost positive it's you, nobody else would do that)
20:53:31 <elliott> ais523: comex linked to the lindrum log on blognomic, so I had the chance to enjoy reading that message again
20:53:43 <ais523> ah, aha
20:53:44 <Sgeo|web> I should read it at some point
20:53:46 <elliott> now we all are so privileged, thanks to me
20:54:04 <elliott> Sgeo|web: it's mostly a lot of people yelling at Lindrum and Goethe being all wispy about it
20:54:39 <Sgeo|web> Lindrum was a successful scam, right? So why would people be ... I guess I'm used to people being at least somewhat ok with scams
20:55:16 <elliott> the Lindrum scam almost certainly failed
20:55:24 <elliott> but it ripped NomicWorld apart, so it doesn't matter much
20:55:30 <elliott> hmm, or did NomicWorld reset and continue after that
20:55:34 <elliott> I forget; probably ais523 or oerjan knows
20:56:02 <Sgeo|web> Where did comex post the link?
20:56:03 <Sgeo|web> I don't see it
20:56:19 <elliott> <elliott> ais523: comex linked to the lindrum log on blognomic, so I had the chance to enjoy reading that message again
20:56:20 <elliott> blognomic
20:56:47 <Sgeo|web> Where on blognomic? In a comment on a post? Because I don't see posts with links
20:57:03 <elliott> http://blognomic.com/archive/more_discussion_about_ais523s_dov/
20:57:59 <elliott> Sgeo|web: anyway, people were annoyed at Lindrum because it was early on in the game, it granted a complete dictatorship which was going to be used to restructure the ruleset, and because people thought it was illegal but there was no formal judgement process on its legality that could be done
20:58:39 <Sgeo|web> I guess with dictatorships in Agora, the dictators are usually polite
20:58:57 <Sgeo|web> And don't restructure stuff
21:02:42 <Sgeo|web> tl;wrliiar
21:03:05 <Sgeo|web> too long; will read later if I am reminded
21:09:48 <oerjan> <elliott> hmm, or did NomicWorld reset and continue after that <-- afaik the lindrum scam was before i even joined nomic world. iirc the final death was simply due to admins no longer having time to maintain it.
21:09:59 <elliott> right
21:10:05 <elliott> seems like it just ended game one
21:25:31 <elliott> ais523: can you donate me a really big disk, please
21:25:39 <ais523> I can't, I'm afraid
21:25:57 <elliott> ais523: why :(
21:26:09 <ais523> I don't have one to donate
21:26:15 <ais523> and it'd take a while to carry it to Hexham even if I did
21:30:25 <fizzie> There are other places in the UK than Hexham?
21:30:38 <elliott> just Finland
21:36:40 <oerjan> <Sgeo|web> (Specifically, I'm doing convoluted stuff with a State monad when I feel I should probably be using a State and Writer monad stack)
21:36:46 <oerjan> btw RWS exists
21:42:08 <Sgeo|web> ooh?
21:43:59 <Sgeo|web> But I don't need Reader [yet]
21:45:21 <oerjan> i suppose.
21:45:57 <oerjan> i'm wondering if using RWS might be more efficient that combining two of the parts
21:46:02 <Sgeo|web> I probably will end up using Reader, I think
21:46:13 <CakeProphet> RWS is the bomb diggity.
21:46:25 * CakeProphet seal of approval.
21:46:39 <Sgeo|web> oerjan: I don't quite understand monad transformers yet as well as I understand how to use a single monad
21:46:54 -!- sllide has quit (Ping timeout: 245 seconds).
21:46:55 <elliott> Sgeo|web: so now is your chance to learn, since you have a use-case.
21:47:08 <CakeProphet> it's the same thing, but one is transformy.
21:47:13 * CakeProphet is the best teacher.
21:47:35 <Sgeo|web> I mean, I understand, say, the conceptual meaning of IO (Maybe a)
21:47:52 <Sgeo|web> No idea how MaybeT IO a translates to something similar to that
21:47:58 -!- nooga has quit (Ping timeout: 256 seconds).
21:48:01 <oerjan> @src MaybeT
21:48:01 <lambdabot> Source not found. You speak an infinite deal of nothing
21:48:11 <oerjan> @mtl MaybeT IO a
21:48:11 <lambdabot> Maybe you meant: ft map msg pl unmtl url
21:48:15 <oerjan> @unmtl MaybeT IO a
21:48:15 <lambdabot> IO (Maybe a)
21:48:30 <oerjan> they're precisely the same thing, apart from a newtype
21:48:43 <CakeProphet> Sgeo|web: there IO is filling the type parameter that specifies what the inner monad is.
21:49:00 <Sgeo|web> I asked about that in #haskell , and mentioned StateT, and someone said something about some complication
21:50:03 <Sgeo|web> Which makes more sense, or both? State (Maybe b) a or State b (Maybe a)?
21:50:14 <elliott> they are unrelated
21:53:58 <Sgeo|web> Which would using StateT give me?
21:54:15 <oerjan> @unmtl StateT Maybe a
21:54:15 <lambdabot> err: `StateT Maybe a' is not applied to enough arguments, giving `/\A. Maybe -> a (A, Maybe)'
21:54:18 <oerjan> er
21:54:25 <oerjan> @unmtl StateT a Maybe b
21:54:25 <lambdabot> a -> Maybe (b, a)
21:54:56 <oerjan> neither
21:55:25 <oerjan> it puts Maybe around both state and result part
21:55:36 <ais523> which makes sense, of course
21:55:51 <ais523> as you want a different state for each of the (1 or 0) computations you have
21:56:35 <Sgeo|web> Would there be wrong with figuring out what stack I want using @mtl ?
21:56:58 <Sgeo|web> @mlt IO([a])
21:56:59 <lambdabot> Maybe you meant: ft let map msg pl
21:57:06 <Sgeo|web> @mtl IO([a])
21:57:07 <lambdabot> Maybe you meant: ft map msg pl unmtl url
21:57:23 <CakeProphet> Sgeo|web: note that if all of your monad transformers are instances of MonadIO then IO can always be at the bottom
21:57:23 <oerjan> if it actually existed...
21:57:32 <Sgeo|web> Yes, there is: It doesn't exist.
21:58:01 <CakeProphet> :t liftIO
21:58:02 <lambdabot> Ambiguous occurrence `liftIO'
21:58:02 <lambdabot> It could refer to either `Control.Monad.Error.liftIO', imported from Control.Monad.Error
21:58:02 <lambdabot> or `Control.Monad.Logic.liftIO', imported from Control.Monad.Logic
21:58:13 <CakeProphet> :t Control.Monad.Trans.liftIO
21:58:14 <lambdabot> forall a (m :: * -> *). (Control.Monad.Error.MonadIO m) => IO a -> m a
21:58:53 <Sgeo|web> I need a good monad transformer tutorial
21:58:58 <CakeProphet> so that mitigates life hell a bit. you can also write similar instances for other monads.
21:59:03 <CakeProphet> s/life/lift/
21:59:15 <CakeProphet> nothing mitigates life hell. -_;;
21:59:39 <Sgeo|web> Isn't writing functions for use within your monad stack, and those functions use lift, the way to mitigate lift hell?
21:59:39 <oerjan> for state, reader and writer lift hell is mitigated by everything being in automatically lifted classes
21:59:47 <CakeProphet> Sgeo|web: correct
22:00:27 <oerjan> Sgeo|web: no, you write functions using the MonadState, MonadReader and MonadWriter class methods (and possibly others)
22:00:58 <oerjan> which already has instances for transformers which do the lifting work for you
22:01:02 <oerjan> *have
22:01:18 <Sgeo|web> Wait, so CakeProphet is wrong, or that's just... what?
22:01:24 <elliott> CakeProphet is usually wrong. :-)
22:01:28 <elliott> Sgeo|web: Usually you shouldn't use monad transformers at all.
22:01:31 <elliott> They're only sometimes the answer.
22:01:34 <elliott> When they are, it's internally.
22:01:42 <oerjan> CakeProphet would be right if you implement your monads from scratch.
22:01:44 <elliott> i.e. you can implement your fancy monad with transformers, but probably that should not be exposed to users of it.
22:02:28 <oerjan> well yes, one customarily uses a newtype wrapper and generalized newtype deriving
22:03:02 <Sgeo|web> newtype wrapper instead of just a type synonym?
22:03:10 <Sgeo|web> Also, what's generalized newtype deriving?
22:03:46 <oerjan> newtype MyMonad = StateT Fnord (ContT Wibble (Reader Argle IO)) deriving (Monad, MonadState, MonadCont, MonadReader, MonadIO)
22:04:00 <elliott> oerjan: argh
22:04:02 <elliott> oerjan: you got that wrong
22:04:11 <oerjan> i did?
22:04:20 <oerjan> well maybe add Functor and Applicative
22:04:22 <elliott> oerjan: look at token after =
22:04:27 <oerjan> oh hm
22:04:48 <oerjan> newtype MyMonad = MyMonad (StateT Fnord (ContT Wibble (Reader Argle IO))) deriving (Monad, MonadState, MonadCont, MonadReader, MonadIO)
22:04:53 <Sgeo|web> I'm tempted to use ContT, but should probably stick with promises
22:05:13 <Sgeo|web> Which are in IO I think
22:05:41 <elliott> promises?
22:05:57 <elliott> do you mean MVar
22:06:43 <Sgeo|web> I think I saw them either under the name promises or futures
22:06:58 <elliott> those are bad names
22:06:59 <Sgeo|web> I think I saw you link to something like that on Reddit, or someone else in the same thread did
22:07:21 <oerjan> unsafeInterleaveIO >:) *runs away*
22:08:11 * Sgeo|web is tempted to use that
22:08:23 <oerjan> what have i done D:
22:09:03 <Sgeo|web> I knew of unsafeInterleaveIO before, it's not your fault.
22:09:05 -!- nooga has joined.
22:09:28 <oerjan> good. elliott might get angry.
22:10:03 <Sgeo|web> Ooh, I thought of a fun program I could write that relies on unsafeInterleaveIO
22:10:41 <elliott> no
22:10:46 <Sgeo|web> Well, of course not "relies" as such, I could probably write it without
22:10:59 <Sgeo|web> Or, hmm, I can't figure out if I can or not
22:11:19 <Sgeo|web> What happens with a sequence on an infinite list of [IO a]?
22:11:56 <Sgeo|web> Hmm, mapping unsafeInterleaveIO to those is NOT what I want
22:12:05 <Sgeo|web> I think
22:16:06 <Sgeo|web> Wait, yes it is
22:17:09 <oerjan> Sgeo|web: it never halts.
22:17:32 <Sgeo|web> oerjan: you mean without the unsafeInterleaveIO, or even with?
22:17:36 <oerjan> also, unsafeInterleaveIO won't fix it unless you apply it to something like each cons cell
22:18:39 <Sgeo|web> I'm... not sure why you said that, I wasn't planning on applying it to the result of sequence
22:19:26 <oerjan> good. although it doesn't work to apply it to each element, either
22:20:26 <oerjan> :t foldr ((?unsafeInterleaveIO .) . liftM2 (:)) (return [])
22:20:27 <lambdabot> forall (m :: * -> *) a. (?unsafeInterleaveIO::m [a] -> m [a], Monad m) => [m a] -> m [a]
22:20:44 <elliott> oerjan: stopppe,
22:21:06 <oerjan> elliott: well it's what you'd want for a lazy sequence...
22:21:25 <Sgeo|web> Wait, why doesn't applying to each element work?
22:22:01 <oerjan> Sgeo|web: because the outside IO part still iterates through each element to apply unsafeInterleaveIO to it
22:22:24 -!- Nisstyre has quit (Ping timeout: 248 seconds).
22:23:36 <oerjan> even sequence . repeat $ return () won't ever halt. i think.
22:24:04 <oerjan> (in the IO monad)
22:25:57 <oerjan> if you look at it from the RealWorld -> (a, RealWorld) implementation used in ghc, it's clear that the RealWorld token gets threaded through each of the infinitely many subactions, and you can never get a final one
22:26:07 <oerjan> *approximately used
22:27:12 <oerjan> :t runState
22:27:13 <lambdabot> forall s a. State s a -> s -> (a, s)
22:28:05 <oerjan> > flip runState 0 . sequence . repeat $ do modify (+1); get
22:28: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,2...
22:28:13 <oerjan> oops :P
22:28:29 <oerjan> > first (take 10) . flip runState 0 . sequence . repeat $ do modify (+1); get
22:28:34 <lambdabot> mueval-core: Time limit exceeded
22:28:34 <lambdabot> mueval: ExitFailure 1
22:28:39 <oerjan> argh
22:29:07 -!- SgeoN1 has joined.
22:29:12 <oerjan> anyway the point with that one is that you can get results, but you can never get a final state
22:29:28 <SgeoN1> Why is ^C being ineffective in GHCi
22:30:04 <oerjan> SgeoN1: if you have a non-allocating infinite loop, i think it never gets to check ^C
22:30:27 <SgeoN1> OK, so how do I kill GHCi
22:30:41 <oerjan> killall ghci
22:30:59 <SgeoN1> Oh, something just happened.
22:31:04 <fizzie> murderdeathkill ghci
22:31:16 <SgeoN1> It must have finally noticed the Ctrl C
22:31:32 <oerjan> SgeoN1: it is possible that it _eventually_ gets caught nowadays by some preemptive check that is rarely done
22:31:52 <oerjan> i'm not sure, just a vague memory of something like that
22:34:38 * CakeProphet was totally not wrong/
22:34:56 <elliott> SgeoN1: if you have a non-allocating infinite loop Ctrl+C might not work
22:35:00 <Sgeo|web> CakeProphet: oerjan said you would be right if you were writing stuff from scratch
22:35:05 <elliott> async exceptions only happen on allocation
22:35:16 <elliott> this is why killThread can fail, if you have such a tight loop
22:35:23 <elliott> (note that allocation happens constantly in almost all code)
22:35:31 <CakeProphet> Sgeo|web: okay, so then I was wrong if I was saying something else than what I said.
22:35:44 <CakeProphet> good to know
22:35:46 * CakeProphet goes back to work.
22:36:00 * elliott thinks CakeProphet was wrong even then
22:36:04 <elliott> because if you build it from scratch
22:36:07 <elliott> there's no monad instances to lift to
22:37:01 <Sgeo|web> hpaste is taking forever to load
22:37:28 <CakeProphet> did you read what I said?
22:37:39 <CakeProphet> I basically said "if you use IO then liftIO is a good idea"
22:37:46 <Sgeo|web> http://hpaste.org/52892
22:38:01 <Sgeo|web> Oh, I thought we were talking about something else
22:38:24 <oerjan> <Sgeo|web> Isn't writing functions for use within your monad stack, and those functions use lift, the way to mitigate lift hell?
22:39:09 <CakeProphet> aka "not exposing the transformer to the user"
22:39:12 <oerjan> CakeProphet: somehow i read that as being said by you
22:39:16 <elliott> oerjan: sorry if you get spammed
22:39:31 * oerjan prepares the quiet hammer
22:39:32 <Gregor> "We cut up thousands of fish and pressed their remains into squares and we will sell you that here at Burger King." -- Dinosaur Comics
22:39:54 <elliott> oerjan: no, your email.
22:39:59 <oerjan> wat
22:40:05 <elliott> oerjan:
22:40:06 <elliott> [[
22:40:06 <elliott> Call for Judgment: pass me quick
22:40:06 <elliott> Send spam emails to all email addresses listed on http://www.nomictools.com/agora/registrar/text.
22:40:06 <elliott> Repeal ALL rules
22:40:06 <elliott> POSTED BY SOVIET BRENDON AT 20 OCT 2011 22:29:39 UTC Comments (5)
22:40:09 <elliott> ]] -- http://blognomic.com/blognomic/archive/pass_me_quick/
22:40:20 <elliott> that list includes the email address of every player ever :)
22:40:25 <CakeProphet> elliott: what are some alternatives to using transformers?
22:40:47 <fizzie> "Not using them, or sometimes using them."
22:40:50 <elliott> CakeProphet: there aren't alternatives, you just... don't use transformers
22:40:51 <oerjan> elliott: oh well, i already received some mail to the backup list recently.
22:42:28 <CakeProphet> elliott: you mean to split the logic for each monad that you want to use into separate functions/data-structures?
22:42:31 <oerjan> <Sgeo|web> http://hpaste.org/52892 <-- afaict that won't work for the reasons i described
22:43:05 <Sgeo|web> And indeed it didn't
22:43:09 <Sgeo|web> But is that allocating or not?
22:43:30 <oerjan> i'd think that would allocate...
22:43:33 <elliott> that should allocate
22:43:54 <elliott> anything that does anything allocates
22:44:03 <elliott> you'd have to try really hard to get a non-nop loop that didn't allocate
22:44:09 <elliott> it might even be impossible
22:44:59 <oerjan> elliott: maybe that sequence only allocates on the stack, or something?
22:45:08 <elliott> oerjan: um GHC has no stack/heap distinction
22:45:19 <elliott> every allocation is a heap allocation
22:45:23 <elliott> (which is much cheaper than malloc)
22:45:39 <oerjan> ghc has a stack.
22:46:25 <elliott> oerjan: i'm not sure what to tell you other than that ghc does _not_ have a stack/heap allocation distinction
22:46:37 <elliott> so it's irrelevant whether ghc refers to some memory as stack or not
22:46:41 <olsner> but it used to, right?
22:46:45 <elliott> because it's about whether the allocation code path is crossed
22:46:51 <oerjan> elliott: what about unboxed values?
22:47:04 <elliott> oerjan: what about them?
22:47:14 <oerjan> oh wait
22:47:18 <oerjan> ok i see what you mean
22:47:37 <oerjan> it won't matter for the question of whether it gets interrupts
22:47:55 <elliott> right
22:51:41 <Sgeo|web> ....my program could easily not work for a different reason... well, wait no
22:51:48 <Sgeo|web> n/m
22:51:54 <Sgeo|web> n/m every related thought
22:52:14 <CakeProphet> Sgeo|web: obviously you need GADTs
22:52:16 <CakeProphet> everything is GADTs
22:52:25 <CakeProphet> GADT is good for all porpoises
22:54:13 <CakeProphet> you need GADTs with a type family of phantom types
22:54:37 <CakeProphet> parametric phantom types.
22:55:15 <CakeProphet> also instead of Monads you should use arrows
22:56:07 <CakeProphet> arrow transformers
22:56:28 <CakeProphet> (is that even possible? I'm not very familiar with arrows)
22:57:41 -!- ais523 has quit (Remote host closed the connection).
22:58:36 <CakeProphet> Sgeo|web: also once you finish the program replace every function call with thread spawning and TVars
22:59:47 <Sgeo|web> Does a State of a TVar make sense to do?
22:59:48 -!- Patashu has joined.
23:00:01 <Sgeo|web> (Or State of several TVars
23:00:02 <elliott> http://sprunge.us/PjaA
23:00:04 <elliott> my code so gangsta
23:00:07 <elliott> Sgeo|web: no, Reader does though
23:00:12 <elliott> Sgeo|web: but you likely just don't want transformers at all
23:00:16 <elliott> just pass around the relevant TVars
23:00:36 <CakeProphet> oh, and don't forget every serious Haskell program uses ImplicitParameters.
23:00:47 <Sgeo|web> Oh, the TVar itself is a constant, and mutating the TVar is done in STM
23:00:49 <elliott> fizzie: I wonder if I should just use a hash function for my interning.
23:00:51 <Sgeo|web> SO that's why it's reader?
23:01:06 <elliott> Sgeo|web: Yes. But like I said, start without using transformers. Pretend transformers don't exist because you probably don't want them.
23:01:07 <Sgeo|web> BUt what exactly is it reading? Just a bunch of newly initialized TVarts?
23:01:29 <elliott> tvarts
23:01:37 <elliott> Sgeo|web: OK, that's not what Reader means.
23:01:43 <elliott> But seriously, just pass around TVars.
23:01:48 <Sgeo|web> I want to make a way to make getting a list of nearby avatars in AW easy even though there's no function for that, just callbacks for when avatars appear and disappear
23:02:04 <elliott> Jesus christ everything is AW with you.
23:02:11 <elliott> OK, let me say this one more time so it's clear:
23:02:12 <elliott> Don't use transformers.
23:02:15 <elliott> Just pass around TVars.
23:02:18 <elliott> You probably do not want transformers.
23:02:38 <shachaf> But I want transformers!
23:02:52 <CakeProphet> help what's AW
23:02:55 <Sgeo|web> I'm pretty sure I could use something pre-existing rather than ContT for dealing with flattening out the asynchronous stuff
23:03:05 <CakeProphet> flattening out?
23:03:07 <shachaf> ReaderT WriterT StateT ContT LogicT IdentityT MaybeT IdentityT Identity
23:03:18 <elliott> Sgeo|web: You just want to write blocking calls.
23:03:21 <elliott> Sgeo|web: GHC has an event manager.
23:03:39 <Sgeo|web> event manager library, you mean, or what?
23:03:43 <elliott> No, built-in.
23:03:46 <elliott> It's how all IO is done.
23:03:53 <elliott> All "blocking" IO is actually done with asynchronous calls.
23:04:05 <Sgeo|web> And it will let me turn non-blocking calls to blocking calls? COOL
23:04:06 <elliott> It's like node.js, except you don't have to fucking write CPS like a moron.
23:04:06 <CakeProphet> in STM you don't really need to worry about blocking very much do you?
23:04:12 <shachaf> elliott: Yes you do.
23:04:18 <elliott> shachaf: You do?
23:04:21 <shachaf> elliott: You have write CPS for all IO in Haskell.
23:04:25 <elliott> I suppose (>>=) is pretty CPSy.
23:04:26 <shachaf> That's what (>>=) is for.
23:04:27 <elliott> But we have sugar for that. :p
23:04:32 <shachaf> >>= *is* CPS.
23:04:36 <shachaf> It gets a thing and a continuation.
23:04:38 <elliott> Yeah.
23:04:44 <shachaf> That's why Cont is the best monad.
23:04:46 <oerjan> <CakeProphet> (is that even possible? I'm not very familiar with arrows) <-- yes, the arrow package has them
23:05:08 <elliott> The best monad is data Nomad a = Return a | forall b. Bind (Nomad b) (b -> Nomad a).
23:05:38 <CakeProphet> I thought that was the best Nomad
23:05:57 <CakeProphet> elliott: also that can break the laws easily.
23:06:01 <CakeProphet> but whatever
23:06:40 <shachaf> elliott: No, it's Cont.
23:06:50 <elliott> No. It's clearly RWS.
23:06:54 <elliott> RWST.
23:07:01 <elliott> M = RWST M.
23:07:14 -!- augur has quit (Remote host closed the connection).
23:07:14 <CakeProphet> I think we can pretty agree that barrier monads are the best.
23:07:20 <CakeProphet> +much
23:07:25 <oerjan> shachaf: wait IdentityT exists?
23:07:28 <elliott> CakeProphet: True.
23:07:32 <shachaf> oerjan: Sure, why not?
23:07:35 <elliott> oerjan: Identity = IdentityT Identity.
23:07:39 <shachaf> Mu RWST
23:07:39 <elliott> Standard definition.
23:07:46 <shachaf> @slap elliott
23:07:47 * lambdabot puts on her slapping gloves, and slaps elliott
23:07:49 <elliott> (I wonder if you can make that work.)
23:07:50 <elliott> (Somehow.)
23:08:02 <shachaf> elliott: No.
23:08:03 <shachaf> Don't wonder.
23:08:15 <elliott> Sorry but I must.
23:09:14 * CakeProphet is the best monad.
23:09:27 <Sgeo|web> Recursive type definitions
23:09:41 <Sgeo|web> Wait, those are an everyday occurance... I think
23:09:41 <CakeProphet> what about them?
23:09:43 <monqy> hi
23:09:43 <elliott> fizzie: Wow, I even have degrade/intern.
23:09:49 <elliott> fizzie: Like, fully written.
23:09:52 <elliott> Except wait.
23:09:58 <elliott> What's the maximum length of an argument list this decade?
23:10:13 <monqy> big
23:10:15 <CakeProphet> Sgeo|web: depends on what you mean
23:10:15 <shachaf> @google cont sigfpe
23:10:16 <lambdabot> http://blog.sigfpe.com/2008/12/mother-of-all-monads.html
23:10:16 <lambdabot> Title: A Neighborhood of Infinity: The Mother of
23:10:19 <shachaf> elliott: See that.
23:10:22 <shachaf> Best monad.
23:10:24 <elliott> shachaf: Yes, I've read it.
23:10:37 <CakeProphet> Sgeo|web: infinite types are not allowed, but recursive data (i.e. lists) are common
23:10:55 <Sgeo|web> Wait, there's a maximum length?
23:11:09 <Sgeo|web> printf can take an indefinite number of arguments, I think
23:11:21 <elliott> ...
23:11:24 <elliott> POSIX.
23:11:26 <elliott> Or
23:11:27 <elliott> Linux
23:11:28 <elliott> really.
23:11:48 <Sgeo|web> (Surely there should be a typesafe printf? Maybe something with TH?)
23:12:11 <elliott> printf is type-safe.
23:12:40 -!- nooga has quit (Ping timeout: 255 seconds).
23:12:47 <CakeProphet> type-safe variadic functions are possible in haskell. I know because I read about it on wikipedia
23:12:47 <Sgeo|web> What happens if you pass it too many arguments?
23:12:55 <elliott> Sgeo|web: Runtime failure.
23:13:07 <Sgeo|web> ...how are runtime failures type-safe?
23:13:23 <elliott> main = error "foo" -- haskell isn't type-safe
23:13:28 <monqy> how type safe is type safe
23:13:41 <shachaf> > main = unsafeCoerce "foo" -- haskell isn't type-safe
23:13:42 <lambdabot> <no location info>: parse error on input `='
23:13:47 <CakeProphet> how tautological is tautology monqy
23:14:11 <Sgeo|web> Could you make something that will accept oh/
23:14:16 <monqy> type safe and type safe meant different things there
23:14:21 <shachaf> elliott: Now you'll say that unsafeCoerce isn't even Haskell?
23:14:26 <CakeProphet> monqy: yes I know.
23:14:33 <elliott> Sgeo|web: someAWCall a b = do { result <- newEmptyMVar; asyncAWCall a b (putMVar result); takeMVar result } -- this is blocking + efficient (last argument to asyncAWCall is callback)
23:14:33 <shachaf> I think you can implement it in Haskell 2010.
23:14:34 <Sgeo|web> that will accept only the correct number of arguments, using TH?
23:14:46 <shachaf> "efficient"
23:14:50 <elliott> shachaf: Sure, efficient.
23:14:55 <shachaf> Eh.
23:15:03 <shachaf> All efficient programs are written in C.
23:15:08 <shachaf> Or C++. We all know that.
23:15:11 <elliott> Sgeo|web: wrapAsync f = do { result <- newEmptyMVar; f (putMVar result); takeMVar result }
23:15:13 <elliott> Sgeo|web: Then the above can just be
23:15:23 <elliott> Sgeo|web: someAWCall a b = wrapAsync (asyncAWCall a b)
23:15:24 <CakeProphet> shachaf: assembly programs obviously don't exist anymore.
23:15:24 <elliott> Tada.
23:15:28 <shachaf> CakeProphet: Yep.
23:15:39 <Sgeo|web> elliott: cool
23:15:41 <elliott> shachaf: It should be the most efficient way to do it blockingly.
23:15:47 <elliott> shachaf: I mean, takeMVar isn't exactly expensive.
23:15:48 <shachaf> elliott: Well, in Haskell.
23:15:51 <Sgeo|web> ...AW isn't threadsafe
23:15:59 <elliott> Sgeo|web: Define isn't threadsafe.
23:15:59 <Sgeo|web> Not sure how that affects things
23:16:07 <elliott> Sgeo|web: You can make sure all AW FFI calls happen on one thread.
23:16:11 <elliott> With bound threads + a queue.
23:16:21 <shachaf> That might not be sufficient.
23:16:25 * shachaf doesn't even know what AW is.
23:16:29 <elliott> Sgeo|web: (And still maintain the same interface.)
23:16:32 <elliott> shachaf: Why mightn't it?
23:16:34 <shachaf> Some Minecraft thing, probably.
23:16:44 <CakeProphet> no it's worse/
23:16:52 <elliott> shachaf: I apologise for the fact that Sgeo|web is about to tell you what it is
23:16:57 <CakeProphet> even nerdier.
23:17:00 <elliott> s/$/./
23:17:04 <Sgeo|web> Let's see. A lot of functions get their arguments from a changing global parameters thingy that you set with, say, aw_init(AW_SOME_ATTRIB, 346); before the call
23:17:18 <elliott> Sgeo|web: Right. That's fine.
23:17:36 <elliott> Sgeo|web: You have one Haskell thread, bound to an OS thread, that continually reads AW requests from a queue, mutates the global state, and makes the call.
23:17:40 <CakeProphet> Haskell only assimilates with pure code!
23:17:47 <CakeProphet> it's very snobby about it.
23:17:56 <monqy> wait is aw
23:17:57 <monqy> activeworlds
23:18:00 <monqy> or whatever
23:18:05 <oerjan> DING DING DING
23:18:07 <Sgeo|web> monqy: yes
23:18:11 <monqy> creys
23:18:20 <CakeProphet> creys
23:18:26 <elliott> creys
23:18:58 <oerjan> greys
23:19:25 <CakeProphet> so you guys Sybil was all lies.
23:19:33 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
23:19:46 <CakeProphet> the real person that Sybil is based on never had disassociative identity disorder
23:19:59 <CakeProphet> she made it up.
23:20:02 <CakeProphet> be shocked.
23:23:52 <oerjan> well, those who remember who sybil is, anyhow
23:24:23 <elliott> CakeProphet: Wikipedia seems rather less sure than you are.
23:25:03 <CakeProphet> well it's not exactly definitive
23:25:10 <CakeProphet> but she admitted to it via writing.
23:25:25 <oerjan> oh wait, i thought we were dissing CakeProphet's ex-girlfriends. never mind.
23:26:30 <elliott> oerjan: You get to help me define my file format!
23:26:43 <CakeProphet> elliott: okay. it will use sequences of byte values.
23:26:49 <CakeProphet> that's a good start.
23:26:51 <oerjan> elliott: (a(b*)c*)*
23:27:15 <CakeProphet> good file format.
23:27:16 <elliott> oerjan: No bad.
23:27:27 <oerjan> ok.
23:27:31 * CakeProphet is on the right track though.
23:29:07 <CakeProphet> elliott: file format for what? may I ask?
23:29:38 <elliott> CakeProphet: Reverse-context tree.
23:29:50 <CakeProphet> oh okay. JSON. :)
23:30:00 <CakeProphet> :> :? :>
23:30:03 <elliott> CakeProphet: Of about a terabyte.
23:30:10 <CakeProphet> er wait there's probably some duplication right?
23:30:16 <oerjan> <FileHeader style="elliott project"><manifest tone="megalomaniackal"><goal><conquest target="world"/></goal><prognosis><probability unit="snowball site="hell"/></prognosis></manifest></FileHeader>
23:30:27 <elliott> oerjan: hate
23:31:09 <oerjan> oh, *+"
23:31:14 <CakeProphet> elliott: make a table of trees and assign a ID to each. the top of the file lists the unique tables, enumerated with IDs from 0 to n
23:31:29 <CakeProphet> then the second part of the file references these ids or something?
23:31:32 <elliott> CakeProphet: I also have to be able to merge an arbitrary number of such files with constant space usage.
23:31:33 <CakeProphet> I dunno.
23:31:37 <CakeProphet> ...oh
23:31:54 * elliott thinks he'll opt to bother fizzie about it instead of CakeProphet.
23:32:36 <CakeProphet> my file format is basically how Python's pickle format works. :P
23:34:11 -!- Nisstyre has joined.
23:34:44 <CakeProphet> elliott: maybe if I knew more about what a reverse context tree is.
23:34:49 <elliott> Yes, maybe.
23:35:59 <CakeProphet> I've read from very reliable sources that Huffman Coding is a good way to reduce the size of a file.
23:36:38 <CakeProphet> maybe sometimes it'll be constant even!
23:38:58 <CakeProphet> the world's first spinal transplant was done in 2007
23:39:32 -!- ive has joined.
23:40:29 <oerjan> this is spinal transplant
23:41:48 <CakeProphet> so yesterday in History class we watched scenes from 300
23:41:57 <CakeProphet> specifically the battle scenes because they somewhat accurate
23:42:12 <CakeProphet> +are
23:42:17 <oerjan> this. is. history.
23:42:55 <CakeProphet> elliott: does a reverse context tree maybe reduce to a n-order markov model?
23:43:13 <CakeProphet> so that you can construct the tree from a much smaller amount of data.
23:46:56 <CakeProphet> I'm sure it wouldn't be difficult to explain what the hell a reverse context tree is.
23:47:15 <elliott> Yeah, but I already know what the basic structure has to look like.
23:47:31 <CakeProphet> ARE YOU SURE?
23:47:35 <CakeProphet> ?????
23:49:10 <elliott> I suppose I should figure out this shit myself.
23:49:22 <CakeProphet> no dude I'm a wizard
23:49:25 <CakeProphet> I will guide you in the direction
23:50:16 <CakeProphet> once you have consulted me
23:50:24 <CakeProphet> you will figure everything out about the shit.
23:50:29 <CakeProphet> shit will not even be a confusing thing to you.
23:51:08 <CakeProphet> your tree, you want it to be of a reverse context, yes?
23:51:17 -!- copumpkin has joined.
23:51:18 <CakeProphet> just find the minimum possible amount of information you need to create one.
2011-10-21
00:00:15 <CakeProphet> woooooo
00:05:48 <CakeProphet> > map ord ['1'..'0']
00:05:49 <lambdabot> []
00:05:55 <CakeProphet> > map ord ['0'..'9']
00:05:56 <lambdabot> [48,49,50,51,52,53,54,55,56,57]
00:07:12 <Madoka-Kaname> > map ord $ ['0'..'9'] ++ ['A'..'F']
00:07:16 <lambdabot> [48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70]
00:07:29 <CakeProphet> handy
00:08:02 <Madoka-Kaname> >65-57
00:08:28 <Madoka-Kaname> > map (chr . (\x -> 48+x+(8*(toIntegral$x/10))) [0..15]
00:08:29 <lambdabot> <no location info>: parse error (possibly incorrect indentation)
00:08:37 <Madoka-Kaname> > map (chr . (\x -> 48+x+(8*(toIntegral $ x / 10))) [0..15]
00:08:38 <lambdabot> <no location info>: parse error (possibly incorrect indentation)
00:08:42 <Madoka-Kaname> > map (chr . (\x -> 48+x+(8*(toIntegral $ x / 10)))) [0..15]
00:08:43 <lambdabot> Not in scope: `toIntegral'
00:08:54 <Madoka-Kaname> @hoogle Rational -> Integral
00:08:54 <lambdabot> Warning: Unknown type Integral
00:08:55 <lambdabot> Numeric fromRat :: RealFloat a => Rational -> a
00:08:55 <lambdabot> Prelude fromRational :: Fractional a => Rational -> a
00:09:00 <oerjan> > ord . intToDigit <$> [0..15]
00:09:01 <Madoka-Kaname> > map (chr . (\x -> 48+x+(8*(fromRational $ x / 10)))) [0..15]
00:09:02 <lambdabot> [48,49,50,51,52,53,54,55,56,57,97,98,99,100,101,102]
00:09:02 <lambdabot> Couldn't match expected type `GHC.Types.Int'
00:09:02 <lambdabot> against inferred type ...
00:09:06 <CakeProphet> char in C++ is unsigned by default yes?
00:09:23 -!- tiffany has quit (Quit: Leaving).
00:09:37 <oerjan> > intToDigit <$> [0..15]
00:09:38 <lambdabot> "0123456789abcdef"
00:09:46 <elliott> CakeProphet: char's signedness is undefined.
00:09:49 <elliott> at least in C
00:09:55 <elliott> glibc/linux uses signed char
00:10:04 <elliott> erm
00:10:04 <CakeProphet> ah
00:10:05 <elliott> gcc/linux
00:10:27 <CakeProphet> return ((int)data)-48 //so then this probably isn't sensible where data is declared char.
00:10:45 <CakeProphet> and guaranteed at this point to be a char from 0 to 9
00:11:16 <CakeProphet> I may just convert the char to a string and use atoi...
00:11:23 <oerjan> iirc the 0-127 ascii range is guaranteed to be positive
00:11:37 <CakeProphet> ah right
00:11:42 <CakeProphet> it shouldn't matter...
00:32:01 -!- derdon has quit (Remote host closed the connection).
00:33:43 -!- augur has joined.
00:43:46 -!- ive has quit (Ping timeout: 244 seconds).
00:46:13 -!- Zondartul has joined.
00:48:29 <Zondartul> Hey. I bet this question gets asked a hundred times a day... but what do is your stance on the fictional language ~ath from homestuck?
00:48:42 <Zondartul> what is your stance guys*
00:49:14 <oerjan> hm are any of the homestuck readers active...
00:49:34 <oerjan> also, i haven't heard it before.
00:49:46 <CakeProphet> good esolang
00:49:49 <Sgeo|web> I'm awake
00:49:51 <CakeProphet> except that there's no spec for it so not really.
00:51:33 <Zondartul> aww... I thought one of you esolang programmers would hack together something that resembles it by now :P
00:52:12 <elliott> We have almost as many Homestuck readers as Finns now.
00:53:00 <oerjan> *gasp*
00:53:11 <oerjan> ...is there any overlap?
00:53:39 <CakeProphet> the world-destroying semantics have been a little tricky to implement.
00:54:07 <elliott> oerjan: By one, yes.
00:55:38 -!- ive has joined.
01:23:38 -!- Nisstyre has quit (Ping timeout: 255 seconds).
01:26:55 -!- tswett has quit (Quit: leaving).
01:27:56 -!- Warrigal has joined.
01:28:01 -!- Warrigal has changed nick to tswett.
01:30:14 <Sgeo|web> elliott: There's a complication. I can't just randomly block the thread making the AW calls
01:30:42 <Sgeo|web> Because that needs to call aw_wait() on a regular basis. And during the aw_wait() calls is when events are triggered
01:30:49 <elliott> Sgeo|web: It wouldn't block.
01:31:18 <elliott> Sgeo|web: I can help you hash out an actual design sometime, but not right now. You can definitely make it work out though.
01:33:17 <CakeProphet> elliott is busy taking over the world.
01:34:24 <Sgeo|web> Someone did write code using .NET's new async stuff
01:34:42 <Sgeo|web> Which kind of makes me jealous since I kind of wanted to show off making async calls look synchroneous
01:35:32 -!- Zondartul has quit.
01:36:09 <Madoka-Kaname> Continuations?
01:36:10 <Madoka-Kaname> :V
01:37:14 -!- Nisstyre has joined.
01:37:19 <CakeProphet> STM
01:37:22 <CakeProphet> does that.
01:37:56 <elliott> N...
01:37:59 <elliott> o...
01:38:00 <elliott> it doesn't.
01:38:05 <elliott> STM is something completely different.
01:38:15 <CakeProphet> well not calls...
01:38:20 <Sgeo|web> elliott: just curious, why use an MVar instead of STM?
01:38:31 <elliott> Sgeo|web: STM buys you nothing here. I presume you mean TMVars.
01:38:42 <elliott> You don't want transactional semantics, you want the lower-level interface of MVar.
01:38:54 <elliott> There's never a conflict by definition anyway.
01:41:40 -!- pikhq_ has joined.
01:41:55 <CakeProphet> so what's wrong with "using namespace std"?
01:41:55 -!- pikhq has quit (Ping timeout: 260 seconds).
01:41:59 <CakeProphet> people don't seem to like it.
01:42:22 <CakeProphet> but I really don't enjoy the propagation of stds in my code.
01:43:24 <Sgeo|web> Well, if you're using it in a header, then you're forcing it on people, is one issue
01:43:29 <pikhq_> "More typing is good"
01:44:05 <Sgeo|web> In Haskell, it is
01:44:07 <Sgeo|web> >.>
01:44:49 <CakeProphet> Sgeo|web: what about outside of headers?
01:47:29 <Sgeo|web> "If you import the right header files you suddenly have names like hex, left, plus or count in your global scope. This might be surprising if you are not aware that std:: contains these names. If you also try to use these names locally it can lead to quite some confusion."
01:47:37 <Sgeo|web> http://stackoverflow.com/questions/1452721/why-is-using-namespace-std-considered-a-bad-practice-in-c
01:48:37 <CakeProphet> okay but what about when I'm not a header file.
01:48:58 <Sgeo|web> ...that applies to even in a non-header file
01:49:44 <CakeProphet> eh
01:49:48 * CakeProphet uses namespace std.
01:53:28 -!- Nisstyre has quit (Ping timeout: 240 seconds).
01:54:04 -!- Nisstyre has joined.
01:58:28 -!- augur has quit (Remote host closed the connection).
01:59:17 -!- quintopia has quit (Ping timeout: 252 seconds).
02:09:27 -!- pikhq has joined.
02:09:35 -!- quintopia has joined.
02:09:39 -!- pikhq_ has quit (Ping timeout: 258 seconds).
02:40:00 -!- augur has joined.
02:40:20 -!- augur has quit (Remote host closed the connection).
02:55:06 -!- ive has quit (Ping timeout: 256 seconds).
02:59:06 -!- augur has joined.
02:59:19 -!- augur has quit (Remote host closed the connection).
03:07:34 <CakeProphet> uh what was the option to get debugging symbols from g++?
03:07:39 <coppro> -g
03:07:46 <CakeProphet> I... don't believe you.
03:07:51 <coppro> I do
03:08:02 <Gregor> pooppy's right on this one.
03:08:07 <Gregor> It's the same as any other GCC compiler.
03:08:19 <CakeProphet> I don't know the option for those either.
03:08:27 <CakeProphet> but I recall it being a longer option name.
03:08:29 <CakeProphet> last time I asked. :P
03:08:51 <Gregor> I assume by "get debugging symbols" you mean "have debugging symbols in the output binary"?
03:11:53 <CakeProphet> correct.
03:14:31 <Gregor> Ohhh, then you want -gdwarf-2 -feliminate-dwarf2-dups -fno-merge-debug-strings -fmem-report -fprofile-arcs.
03:15:50 <CakeProphet> hmmm
03:15:52 <CakeProphet> I think O'
03:15:57 <CakeProphet> I'll just valgrind instead.
03:16:06 * Gregor lols.
03:16:29 -!- coppro has set topic: Agora invades BlogNomic! | #include "stdio.h".
03:16:29 <coppro> int main() { auto anonfunc = [](int a) { return a;}; printf("%s\n", typeid(anonfunc.operator()).name()); }
03:16:33 <coppro> oops
03:16:39 <CakeProphet> noooo
03:16:44 <CakeProphet> why did you make me look at the ugly lambda syntax
03:16:50 <coppro> anyone have the log link?
03:16:53 <coppro> mispaste :(
03:16:58 -!- Gregor has set topic: pooppy is now banned from changing the topic | http://codu.org/logs/_esoteric/.
03:17:12 -!- coppro has set topic: Agora invades BlogNomic! | http://codu.org/logs/_esoteric/.
03:17:43 <elliott> a very esoteric matter
03:17:58 <monqy> the esotericest matter
03:17:58 * Sgeo|web wants a language where time and space complexity are part of types
03:18:05 -!- oerjan has set topic: Agora invades BlogNomic! | 12345678^&!* | http://codu.org/logs/_esoteric/.
03:19:11 <CakeProphet> Sgeo|web: I would like some runtime value constraints as part of types.
03:19:31 <CakeProphet> so you could say "this value is between in this interval of integers" for example.
03:19:44 <CakeProphet> er, insert grammatical correctness
03:20:14 <CakeProphet> I suppose that would be some form of dependent typing.
03:34:15 -!- pikhq_ has joined.
03:34:29 -!- pikhq has quit (Ping timeout: 259 seconds).
04:03:54 <Sgeo|web> Homestuckers other than tswett: EoA5 progress bar UPDATE to 96%
04:04:37 <monqy> 96% party
04:12:15 -!- kwertii has quit (Quit: kwertii).
04:12:19 <CakeProphet> friendship 96%
04:12:24 <CakeProphet> friendship 96% party
04:18:38 <elliott> hey monqy design my file format
04:22:23 <Sgeo|web> Cale... actually agreed with something I said
04:22:35 <elliott> YOU'RE A CELEBRITY NOW.
04:25:40 -!- Jafet has joined.
04:25:41 -!- Jafet has quit (Changing host).
04:25:41 -!- Jafet has joined.
04:28:28 <monqy> what sort of file format
04:29:53 -!- oerjan has quit (Quit: Good night).
04:29:54 <elliott> monqy: reverse-context tree
04:30:18 <monqy> can't say I know much about those
04:30:47 <elliott> monqy: yeah but i mean i just need like
04:30:49 <elliott> b-trees and shit
04:30:50 <elliott> ;__;
04:31:35 <monqy> I've never been fond of bee trees.
04:31:38 <monqy> those things hurt, you know
04:36:16 <elliott> `pastelogs Oranjer
04:36:26 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.4459
05:25:30 <Patashu> craaazy people http://www.tpuc.org/node/609
05:25:42 <Patashu> The DECEPTION of: INCLUDE(S) used by TV LICENSING oop's sorry! CONSIGNIA (CUSTOMER MANAGEMENT) LTD also Traded as TV LICENSING
05:25:52 <elliott> me
05:26:58 <monqy> wow this webs ite sure is angry
05:27:14 <monqy> stop ylling my ears are senseteve i have problems
05:27:49 -!- sebbu has quit (Read error: Connection reset by peer).
05:28:12 <Patashu> Please note the CAPITALISATION should not be seen as shouting, but is simply being used to highlight the LEGAL ILLUSION.
05:28:24 <Patashu> (however, it is much funnier if you yell the more bolded/capitalized/underliend it is)
05:28:32 <elliott> Patashu: did you read that Free Man site where like
05:28:42 <elliott> it's a contract for your legal fiction which is distinguished by being ALL CAPITALS
05:28:43 -!- sebbu has joined.
05:28:43 -!- sebbu has quit (Changing host).
05:28:43 -!- sebbu has joined.
05:28:48 <elliott> and if you go into court and demand they address you by their firts name
05:28:49 <elliott> it's not binding
05:28:50 <Patashu> elliott: that's this website
05:28:51 <elliott> its so fucking amazing
05:28:51 -!- Jafet has quit (Quit: Leaving.).
05:28:52 <Patashu> basically
05:28:59 <elliott> Patashu: no it was much more lo-fi but yes i am sure it is peddled in many places
05:29:49 <monqy> when i read "free man site" i thought timecube
05:29:53 <Patashu> Because the LEGAL world can only ACT (CONTRACT) upon LEGAL PERSONALITIES (PIECES of PAPER) they need the Man or Woman to REPRESENT a BIRTH CERTIFICATE, LEGAL PERSONALITY, a PIECE of PAPER.
05:29:56 <monqy> the freeest man site
05:30:28 <CakeProphet> freeest is the freeest usage of English gramar.
05:30:35 <Patashu> you know, if the legal system was run by robotic beings
05:30:42 <Patashu> freemen would actually have a chance
05:30:56 -!- kwertii has joined.
05:31:09 * CakeProphet can only act upon legal personalities.
05:31:30 -!- Slereah_ has quit (Ping timeout: 256 seconds).
05:31:38 * Patashu is a function that takes a pointer to a legal personality
05:32:49 <CakeProphet> has anyone seen C++ code that takes references to pointers?
05:32:59 <CakeProphet> also can you have points to references? that sounds weird to me.
05:33:03 <CakeProphet> *pointers
05:33:35 -!- GreaseMonkey has joined.
05:34:11 <monqy> pointers are weird
05:34:31 <monqy> references too
05:34:32 <Patashu> http://msdn.microsoft.com/en-us/library/1sf8shae(v=vs.80).aspx references to pointers
05:34:49 <Patashu> can't find pointer to reference. I don't think that even makes sense
05:37:06 -!- Jafet has joined.
05:37:19 -!- sebbu has quit (Read error: Connection reset by peer).
05:37:42 -!- sebbu has joined.
05:37:42 -!- sebbu has quit (Changing host).
05:37:42 -!- sebbu has joined.
05:39:24 <Jafet> Patashu: http://www.cnet.com/8301-30976_1-20068778-10348864.html
05:42:34 <monqy> im going to operate a nuclear facilities using itunes
05:42:42 <Patashu> every time I try to load that page google chrome's tab crashes
05:42:44 <Patashu> weird.......
05:42:51 <monqy> then put them on aircraft and operate the aircraft using itunes
05:43:00 <monqy> stuff itunes operated life support systems into it
05:43:43 -!- augur has joined.
05:44:01 <monqy> man eulas are nuts
05:44:39 <CakeProphet> legal systems are nuts in general.
05:45:18 <CakeProphet> seriously we should probably utilize this great new invention called the computer to assist us with categorizing and maintaining laws.
05:45:55 <elliott> CakeProphet: they tried that
05:45:58 <elliott> and look where blognomic is now
05:46:02 <elliott> coppro: Sgeo|web: TOPICAL JOKE
05:46:30 -!- coppro has set topic: BlogNomic invades BlogNomic! | 12345678^&!* | http://codu.org/logs/_esoteric/.
05:46:43 <pikhq_> coppro++
05:46:48 <elliott> :D
05:46:56 <elliott> a stunning success and therefore failure
05:47:25 <CakeProphet> elliott: I mean things like "modularizing" law.
05:47:25 <Patashu> what is blognomic?
05:47:38 -!- Slereah_ has joined.
05:47:53 <CakeProphet> so that you can refer to previous laws or a category of laws systematically, use consistent terminology, etc.
05:48:12 <elliott> Patashu: fucked
05:49:01 <CakeProphet> I guess in some countries this is basically how laws work.
05:49:15 <CakeProphet> but there's no accessible means by which the average person can sit and learn about it all.
05:49:25 <CakeProphet> too much legalese to sift through without obvious definitions.
05:49:33 <CakeProphet> this is why hypertext would be good, for legal bodies.
05:49:47 <elliott> http://agora.qoid.us/current_flr.html
05:49:51 <CakeProphet> *legal documents
05:50:07 <CakeProphet> and a category/template system. essentially like a wiki.
05:50:14 <CakeProphet> but without the anonymous editing part.
05:50:29 <CakeProphet> you have weighted powers?
05:50:51 <Sgeo|web> Patashu: a game where, supposedly, all rules including the rules regarding rule changes can change
05:51:02 <Sgeo|web> In reality, it's looking more like "Ignore the rules if someone abuses them"
05:51:15 * CakeProphet pursues the victory condition of Anarchy.
05:51:36 <CakeProphet> elliott: can I play? pretend I never said that. :P
05:51:42 <elliott> CakeProphet: what, agora?
05:51:44 <CakeProphet> yes.
05:51:46 <elliott> sure
05:51:54 <elliott> sign up for the lists, post saying you're registered
05:52:02 <CakeProphet> nice ASCII whale.
05:52:12 <Sgeo|web> Try not to look like a BlogNomic player, and that's not a whale
05:52:22 <CakeProphet> come on it has a blowhole
05:52:30 <CakeProphet> what else is a big fat fish with a blowhole.
05:52:35 <fizzie> Regarding the file format, following oerjan I suggest {a^i b^i c^i | i > 0}, as it cannot be recognized by a pushdown automaton.
05:52:50 <Sgeo|web> Whales aren't fish, but it's been a while since I saw the ruleset
05:53:03 <Sgeo|web> Oh
05:53:35 <CakeProphet> which is permitted only when the Rules explicitly or implicitly permit it.
05:53:36 <fizzie> The @ makes it look a bit dizzy.
05:53:38 <CakeProphet> implicitly, eh?
05:54:42 <CakeProphet> spivak pronouns?
05:54:44 <CakeProphet> weijiwejriuhwejr
05:56:07 <CakeProphet> spivak pronouns = pirate pronouns
06:09:58 <CakeProphet> [CFJ 2410 (called 11 March 2009): Consent to join a binding agreement
06:09:59 <CakeProphet> may be given privately.]
06:10:01 <CakeProphet> oh snap.
06:10:11 <elliott> CakeProphet: been exploited in literally every way you can imagine, don't bother
06:11:17 <CakeProphet> the rule itself is a kind of exploit.
06:11:25 <elliott> nope
06:11:26 <elliott> anyway
06:11:28 <CakeProphet> a, legal... exploit.
06:11:28 <elliott> i'm too busy to talk about agora
06:11:29 <CakeProphet> LO
06:11:46 <CakeProphet> ...you're welcome to be busy and not reply then. :P
06:12:52 <CakeProphet> in any case if I were planning to exploit something I surely wouldn't make mention of it.
06:16:11 -!- nooga has joined.
06:48:56 <CakeProphet> pizzas are a good way to describe composing data types in Haskell
06:49:14 <CakeProphet> a cheese pizza is basically the most basic kind of pizza, a pizza with nothing on it.
06:49:19 <elliott> apart from
06:49:20 <elliott> cheese
06:49:30 <CakeProphet> right but almost every other kind of pizza has cheese
06:49:33 <CakeProphet> it's the baseline.
06:49:36 <CakeProphet> for being a pizza.
06:50:16 <CakeProphet> so in a pepperoni pizza, you just include the cheese pizza, and pepperonis :P
06:50:45 <CakeProphet> that's... basically as far as I've gone with this analogy. It breaksdown rapidly from there. :P
06:52:36 <fizzie> I know a person who only eats pizza with no cheese on it.
06:52:46 <fizzie> So it's definitely not a requirement for being a pizza.
06:53:53 <CakeProphet> well pizza does have a very wide definition.
06:54:47 <CakeProphet> none of the typical definitions of pizza eliminate the cheese and only a few eliminate tomato sauce ("white" pizzas)
06:54:57 <CakeProphet> typical kinds of pizzas, rather.
06:55:01 <CakeProphet> not definitions.
06:55:26 <fizzie> Yes, that was confusing. Anyway, there are several "standard" no-cheese pizza flavours in Italy.
06:55:58 <fizzie> Sadly I can't recall the names; they're not exactly widely available e.g. in Finland.
06:56:25 <CakeProphet> white pizza is the best.
06:56:29 <CakeProphet> definitely my favorite.
06:57:17 <CakeProphet> a "vegan pizza" would certainly have no cheese.
06:58:03 <fizzie> Pizza Marinara is at least a no-cheese thing.
06:58:40 <fizzie> And it's very much a "standard" pizza.
07:00:51 <fizzie> (It's listed as one of the three official Neapolitan pizzas in the Wikipedia article; it seems that means one of the three mentioned in the EU trademark for "Pizza Napoletana".
07:01:13 <fizzie> "‘Pizza Napoletana’ TSG is round with a variable diameter not exceeding 35 cm and a raised rim and
07:01:13 <fizzie> is garnished and baked in the oven. The central part is 0,4 cm thick, with a tolerance of ± 10 %, and
07:01:13 <fizzie> the rim is 1-2 cm thick. The overall pizza must be tender, elastic and easily foldable into four."
07:01:28 <fizzie> "The ‘Pizza Napoletana’ is seasoned as follows:
07:01:29 <fizzie> — using a spoon, place 70 to 100 g of crushed, peeled tomatoes in the centre of the disc of dough,
07:01:29 <fizzie> — using a spiralling motion, spread the tomato over the whole central surface,
07:01:29 <fizzie> — using a spiralling motion, add the salt to the surface of the tomato,
07:01:29 <fizzie> — in the same manner, scatter a pinch of oregano on the surface,
07:01:29 <fizzie> — chop a peeled clove of garlic into thin slices and place them on top of the tomato,
07:01:31 <fizzie> — using an oil dispenser with a spout and a spiralling motion, distribute over the surface area, from
07:01:33 <fizzie> the centre outwards, 4-5 g of extra virgin olive oil, with a tolerance of + 20 %."
07:01:35 <fizzie> The best trademark document.
07:01:56 <fizzie> It doesn't even specify the direction of the spiralling motion. :(
07:02:31 <pikhq_> I do believe the defining aspect of pizza is that it is flattened bread with toppings.
07:02:40 <Jafet> It depends on which hemisphere you live in
07:03:10 <CakeProphet> European food laws = the most ridiculous thing.
07:03:15 <CakeProphet> especially in Italy.
07:03:34 <fizzie> "Italian open pie made of thin bread dough spread with a spiced mixture of e.g. tomato sauce and cheese" --wordnet.
07:03:48 <CakeProphet> well, I can see benefits of having food laws and drawbacks.
07:04:02 <CakeProphet> the pizza has largely become the amazing thing it is today thanks to American corruption.
07:04:11 <fizzie> "A savoury dish of Italian origin, consisting of a flat, usually round base of dough, baked with a topping of tomatoes, cheese, and any of various other ingredients, such as meat, anchovies, or olives." --OED: so as a corollary, if it tastes bad, it's not a pizza?
07:04:22 <pikhq_> CakeProphet: s/American/Italian/
07:04:23 <elliott> You could get a refund based on that.
07:04:30 <pikhq_> The corruption was the doing of Italians in America.
07:05:12 <CakeProphet> yes, many Americans were, are, and come from European immigrants.
07:06:26 <pikhq_> What I mean is "it was literally done by first-generation Italian immigrants".
07:06:31 <CakeProphet> as a downside to loose food regulation, American food companies can package almost any concoction with a few basic ingredients and call it something that it really shouldn't be called at that point.
07:07:20 <fizzie> Coincidentally, fi:pissa = en:pee.
07:07:50 <pikhq_> CakeProphet: Actually, it's not quite that loose.
07:09:08 <CakeProphet> comparatively it is, but yes there are regulations.
07:09:17 <elliott> wyngz
07:09:25 <pikhq_> Wyngz is actually a regulated term.
07:10:13 <elliott> i know
07:10:29 <fizzie> "FSIS has a standard of identity in Title 9 of the Code of Federal Regulations (CFR), Section 381.170(b)(7) that defines a poultry "wing." The use of the term "wing" cannot be used on any poultry product unless it complies with this standard of identity. In comparison, FSIS allows the use of the term "wyngz" to denote a product that is in the shape of a wing or a bite-size appetizer type product under the following conditions in which the Agency considers its u
07:10:29 <fizzie> se fanciful and not misleading: [5 conditions]"
07:10:56 <fizzie> "-- the smallest letter in the descriptive name is no smaller than 1/3 the size of the largest letter used in "wyngz;" and --"
07:11:02 <fizzie> And you call the pizza trademark silly.
07:11:22 <pikhq_> I don't. If anything, US food regulations are even more silly.
07:12:02 <CakeProphet> I meant "ridiculous" in the sense that they're unecessarily strict, not silly.
07:12:11 <CakeProphet> they are certainly better worded.
07:12:16 <CakeProphet> there is no mistaking what an Italian pizza is.
07:12:29 <CakeProphet> American wings = ??????
07:14:53 <pikhq_> Has to be an actual wing from a chicken.
07:14:57 <CakeProphet> what "wyngz" are is even more confusing.
07:15:08 <pikhq_> Wyngz are... Perverse.
07:15:36 <CakeProphet> so if I create a solid block of macaroni and cheese in the shape of a wing, then that could be wyngz?
07:15:43 <CakeProphet> I guess the Agency has to decide.
07:16:38 <CakeProphet> I know that in order to be "potato chips" it must be fried.
07:16:45 <CakeProphet> thus why Pringles are "potato crisps"
07:17:14 <pikhq_> Per their current definition of wyngz, it has to be white chicken meat in a bite-sized form...
07:17:28 <CakeProphet> bite...sized?
07:17:49 <pikhq_> Erm.
07:17:53 <pikhq_> I should sleep.
07:17:55 <CakeProphet> lol
07:18:10 <fizzie> I don't think it needs to be bite-sized: "in the shape of a wing *or* a bite-size appetizer type product" [emphasis mine].
07:18:27 <fizzie> But it does need to be white chicken.
07:18:33 <pikhq_> Right, right.
07:18:35 <CakeProphet> ah
07:18:41 <pikhq_> I suppose you could have a giant wyngz.
07:18:57 <CakeProphet> so I could make a wing-shaped product that is not capable of being eaten in a single mouthful.
07:19:11 <CakeProphet> or a unicorn shaped product that is edible in one "bite"
07:19:14 <CakeProphet> good to know.
07:19:15 <pikhq_> Yes.
07:21:14 <fizzie> CakeProphet: Remember to submit your "wyngz" label to the Labeling and Program Delivery Division for sketch approval, because it is considered a special statement that cannot be generically approved.
07:21:31 <CakeProphet> ah.
07:21:45 <CakeProphet> does that apply for all names not regulated?
07:21:50 <CakeProphet> such as wyngicorns?
07:22:03 <CakeProphet> or...
07:22:08 <CakeProphet> great cubicuboctahedrons?
07:22:11 <fizzie> "The statement may only reference the term "wyngz" (no other misspellings are permitted)."
07:22:27 <CakeProphet> ah so I'd need one of those subtext things.
07:22:33 <CakeProphet> below my wyngicorns brand.
07:22:49 <CakeProphet> in order to be... considered wyngz
07:22:51 <CakeProphet> whatever that is.
07:23:23 <fizzie> Possibly "wyngicorn" is far-enough removed from "wing" that it doesn't need special handling? I don't know.
07:24:10 <fizzie> Goal: chicken wyngicornz available in every bar.
07:25:26 <CakeProphet> well it said I "may" name them wyngz but don't have to if they fit this definition.
07:25:44 <CakeProphet> so it's more like... a helpful suggestion.
07:26:00 <elliott> CakeProphet: but if it's too close to wings, you'll get dinge
07:26:00 <elliott> d
07:26:05 <elliott> because wings is regulated
07:26:06 <elliott> and like
07:26:09 <elliott> wiingz
07:26:11 <elliott> is misleading
07:26:32 <Patashu> http://www.youtube.com/watch?v=u88AOoYAOQE this is pretty much the best TAS
07:26:38 <CakeProphet> I assure you that both wyngicorns and great cubicuboctahedrons will be nothing like wings.
07:27:02 <fizzie> If it's not a poultry product at all, though, there may be more latitude. I think you can have edible "cardboard wiingz" without problems.
07:27:12 <elliott> Edible cardboard?
07:27:21 <fizzie> It's just a matter of seasoning.
07:30:03 -!- monqy has quit (Quit: hello).
07:31:25 <CakeProphet> there's edible styrofoam.
07:31:52 <elliott> i hate styorofoamfs texture so much uuuurgh
07:32:16 <CakeProphet> though nothing on the internet seems to suggest there's such a thing.
07:32:37 <CakeProphet> maybe my childhood friend's mom was pranking me into eating styrofoam.
07:33:09 <CakeProphet> what a mean adult.
07:33:44 <CakeProphet> oh no there's such a thing as "corn plastic"
07:34:45 <CakeProphet> maillard reaction: great reaction or greatest reaction?
07:34:47 <CakeProphet> discuss
07:35:47 -!- nooga has quit (Ping timeout: 255 seconds).
07:41:30 -!- SimonRC has quit (Ping timeout: 252 seconds).
08:02:52 -!- SgeoN1 has quit (Read error: Connection reset by peer).
08:02:53 -!- SgeoN2 has joined.
08:04:31 -!- SimonRC has joined.
08:11:46 -!- kwertii has quit (Quit: bye).
08:14:41 <fizzie> Piet program spotted in the wild: http://www.businessweek.com/magazine/the-rare-find-reinventing-recruiting-10132011.html (The whole puzzle thing is old, I guess, but didn't spot Piet in there.)
08:15:10 <elliott> heh
08:19:00 <elliott> > intercalate "?" (repeat "?")
08:19:01 <lambdabot> "??????????????????????????????????????????????????????????????????????????...
08:19:53 <CakeProphet> elliott: good porgram
08:20:03 <elliott> SgeoN2's
08:20:14 <CakeProphet> ...whut
08:20:15 <CakeProphet> why
08:22:36 <CakeProphet> elliott: why would anyone write that.
08:23:55 <Sgeo|web> If this were pure math and not Haskell, would it... oh, still countably infinite
08:24:40 <Sgeo|web> Stupid hotel story for kids has _still_ infected my mind and made me thing wrong thoughts
08:24:41 <Madoka-Kaname> > intercalate "!" (repeat "?")
08:24:41 <lambdabot> "?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!...
08:24:47 <Madoka-Kaname> :t repeat
08:24:48 <lambdabot> forall a. a -> [a]
08:24:52 <Madoka-Kaname> :t intercalate
08:24:53 <lambdabot> forall a. [a] -> [[a]] -> [a]
08:25:01 <CakeProphet> fizzie: dude Facebook should totally hire me because I can recognize Piet programs.
08:25:10 <Madoka-Kaname> :t \x -> intercalate x . repeat
08:25:11 <lambdabot> forall a. [a] -> [a] -> [a]
08:25:42 <Madoka-Kaname> I don't get it. How do you pass an [a] into a [[a]]
08:27:16 <CakeProphet> Feces has always been associated with the lowest people among society, the social outcasts, the pariahs, the social discards. The Caste system in India was created along the lines of profession and the dalits or shudras (untouchables) were left to do work related to human emissions. They did such work as clean and pick feces from streets, clean toilets, work with dead bodies. Such practices are prevalent even today in th
08:27:23 <CakeProphet> I like how it says "shit"
08:27:32 <elliott> where
08:27:48 <CakeProphet> http://en.wikipedia.org/wiki/Feces#Social_Implications
08:27:54 <CakeProphet> there.
08:28:17 <CakeProphet> Sgeo|web: help what is that program for.
08:28:41 <elliott> CakeProphet: i probablys hould have realiesd that page would contain pictures of feces
08:28:43 <elliott> euuuuuurgh
08:29:17 <fizzie> It's missing the "bear scat showing a diet of prime numbers" picture.
08:29:33 <CakeProphet> elliott: no human feces oddly enough
08:29:42 <CakeProphet> I remember at one point there was a picture of human shit.
08:29:45 <CakeProphet> on a plat
08:29:46 <CakeProphet> e
08:30:03 <CakeProphet> someone shat on a plate and took a picture of it for Wikipedia.
08:30:26 <elliott> `addquote <fizzie> It's missing the "bear scat showing a diet of prime numbers" picture.
08:30:32 <HackEgo> 688) <fizzie> It's missing the "bear scat showing a diet of prime numbers" picture.
08:31:00 <fizzie> Perhaps someone shat on a plate and took a picture of it, and then later realized "oh, I can upload this to Wikipedia too, to do my part of the encyclopedia-making".
08:32:42 <shachaf> Sgeo|web: Hotel story?
08:33:08 <Sgeo|web> Some rendition of Hilbert Hotel
08:33:37 <Sgeo|web> Ending had an infinite number of infinite-sized busses, and at the time, it seemed as though it was left ambiguous as to whether that was doable (countably infinite)
08:34:29 <CakeProphet> http://en.wikipedia.org/wiki/Everyone_Poops
08:34:30 <CakeProphet> best book.
08:34:51 <CakeProphet> deserves a nobel prize in literature.
08:36:13 <Sgeo|web> http://www.ccs3.lanl.gov/mega-math/workbk/infinity/inhotel.html
08:51:41 -!- nooga has joined.
09:05:47 <shachaf> Sgeo|web: What's wrong with Hilbert's hotel?
09:05:49 <shachaf> It works fine.
09:06:34 <shachaf> Sure you can enumerate an that. It's just (N,N) ~ Q
09:07:11 <Sgeo|web> The part with the infinite people on infinite buses, I mistook what the story said wrt building catching on fire to mean that it wouldn't work
09:07:25 <Sgeo|web> This was quite some time ago
09:10:15 <CakeProphet> fizzie: still, I imagine there are plenty of good programmers who have never heard of Piet.
09:10:32 <CakeProphet> and so missed an opportunity to solve the actual puzzle.
09:10:37 -!- ais523 has joined.
09:10:40 -!- ais523 has quit (Changing host).
09:10:40 -!- ais523 has joined.
09:19:15 -!- ais523 has quit (Read error: Connection reset by peer).
09:21:46 -!- ais523 has joined.
09:56:05 -!- sebbu has quit (Read error: Connection reset by peer).
09:56:39 -!- sebbu has joined.
09:56:39 -!- sebbu has quit (Changing host).
09:56:39 -!- sebbu has joined.
09:57:06 -!- Mynick has joined.
09:59:06 -!- ais523 has quit (Remote host closed the connection).
09:59:49 -!- hagb4rd has joined.
10:02:25 -!- Mynick has quit (Ping timeout: 276 seconds).
10:30:26 -!- GreaseMonkey has quit (Quit: The Other Game).
10:32:47 -!- nooga has quit (Ping timeout: 244 seconds).
10:38:22 -!- Jafet has quit (Quit: Leaving.).
10:40:39 -!- nooga has joined.
10:49:35 -!- Vorpal has joined.
11:42:01 <fizzie> I seem to be slowly shaking away that "put a space after a trailing ?" habit: http://sprunge.us/cQhA
11:42:13 <elliott> heh
11:42:39 <elliott> fizzie: so if i made a bot that just happened to ...
11:43:08 <fizzie> Other people might find such a bot quite irritating.
11:43:24 <elliott> SHEESH
11:58:22 <tswett> Ssy, does anyone know that thing that goes "da da da DA da da da"? I think it's not from Homestuck.
12:01:40 <elliott> katamari damacy\
12:06:09 -!- ais523 has joined.
12:16:15 -!- ais523 has quit (Read error: Connection reset by peer).
12:18:53 -!- ais523 has joined.
12:21:11 -!- Jafet has joined.
12:28:55 <elliott> tswett: was i right
12:34:33 -!- copumpkin has quit (Ping timeout: 260 seconds).
12:34:59 -!- copumpkin has joined.
12:56:09 <elliott> Hey fizzie.
13:00:32 <elliott> fizzie. fizzie. Get what you get to do.
13:03:38 <fizzie> I'm not here and no-one's seen me. You must be talking to yourself.
13:04:34 <elliott> Indeed. fizzie: WHAT'S A GOOD REVERSE CONTEXT TREE FORMAT.
13:05:45 <elliott> fizzie: Hmm, actually I'm not sure I completely understand them. Does every single branch have "what comes next" information?
13:06:00 <elliott> fizzie: Like, at the root of the tree is there "what comes next" information for every single word in the corpus?
13:06:10 <elliott> (Or is it for getting the first word?)
13:08:23 <fizzie> At least in a theoretical discussion, at the root of the tree, the "what comes next" list would be the corpus unigrams; correspondingly, at subnode /FOO/BAR, the "what comes next" list would be the list of last words of all trigrams that match "BAR FOO *".
13:08:40 <elliott> Right. So every single node has a what's next list.
13:08:55 <elliott> fizzie: But, I suppose, in practice you omit the "what comes next" at the root of the tree?
13:10:14 <elliott> I guess I should still have an explicit start/end token. Except, wait, there's no actual way to extract those from n-gram data, is there?
13:10:40 <elliott> I guess I'll have to take sentence terminator tokens as my first thing, and then just drop the first token generated.
13:12:16 <fizzie> I'm not entirely sure. I might not, just in case it has to back off to the zero-length context. (E.g. think of the case where it has generated "foo znurg", and [foo][znurg] was the only bigram (or any higher gram, obviously) containing the word 'znurg' that made the 40-count cutoffs. In that case, there will be no valid context, no /znurg node in the tree, and it has to create the next word from the unigrams.)
13:12:17 -!- hagb4rd has quit (Ping timeout: 240 seconds).
13:13:14 <fizzie> Explicit start/end tokens are typical, then you generate an initial context of "<start>" when generating forward. But you're right that it's hard to get those from the Google data since they opted not to sentence-split their books.
13:13:19 <elliott> fizzie: I suppose it can't do any harm.
13:13:30 <ais523> ^style europarl
13:13:30 <fungot> Selected style: europarl (European Parliament speeches during approx. 1996-2006)
13:13:33 <ais523> fungot: I like this one
13:13:36 <fungot> ais523: mr president, it is only natural that the european parliament' s opportunities to study and evaluate the work of the research activities from the beginning of the 1980s there were 10 million new jobs created between 1997 and 1999, it would seem to be wholly absolute. thus it is not a fight against those who had previously opposed any military intervention and interference. two years of work, strengthening social cohesio
13:14:09 <elliott> fizzie: Are there any advantages of just doing "Take the union of the what's-next lists at the nodes '.', '!', '?', ... and then pick a token from there as the first token"?
13:14:17 <elliott> fizzie: I mean, it misses out e.g. the first sentences of books.
13:14:26 <elliott> But it seems like a sentence terminator is a pretty good place to find the start of a sentence.
13:14:44 <fizzie> I was about to suggest an initial context of "." or something, though of course there's quite a lot of .s that are not sentence terminators.
13:15:21 <elliott> fizzie: Well, right. I mean, remember that the actual generation will look like "start with n-gram, work forwards until sentence terminator, work backwards until sentence start".
13:15:26 <elliott> Beacuse of my double-tree thing.
13:16:06 <elliott> fizzie: Something like "sentence terminator → capital letter" seems to be a pretty good judge of start-of-sentence.
13:16:14 <elliott> I mean, obviously it won't be perfect.
13:16:34 <fizzie> There's not much more you can do than to treat the proper punctuation for sentence-termination, since for better sentence-splitting (to realize that "And the Mr J. Smith ate him." is not two sentences) you'd almost have to have the original sources.
13:16:58 <elliott> Right.
13:17:06 <elliott> (That, uh, is some sentence.)
13:18:16 <elliott> data RCT = Branch (Map String Int) (Map String RCT)
13:18:29 <elliott> Where first map is word → occurs, and second descends down the tree.
13:18:30 <elliott> I think.
13:18:36 <elliott> Am I wrong? Am I stupid? Am I bad? :(
13:19:10 <fizzie> If the tokens are interned, that might be a (Map Int Int) and (Map Int RCT) or something.
13:19:22 <elliott> fizzie: Yes, yes, it's ~symbolic~; remember that I can't actually load these into RAM.
13:19:43 <elliott> Also: What's a good way to do a weighted random choice on (occurs,choice) sets that you don't want to load into memory? :p
13:19:56 <elliott> (I guess the interning gives the advantage that each element of the set is constant-sized.)
13:20:07 <elliott> (So if I ordered them by occurs, I could just pick skewed towards the end of the list?)
13:20:10 <elliott> (Except that's kind of naff.
13:20:12 <elliott> )
13:20:15 <elliott> Except, wait.
13:20:27 <elliott> There's no harm loading it into memory, because it'll never be larger than the unigrams.
13:20:38 <elliott> And the unigrams are just going to be a few megabytes in total. Maybe ten.
13:20:42 <elliott> At least so fizzie says. :p
13:21:55 <fizzie> Yes, you can probably stand loading a single node. But if you want, you could store it on-disk as (sum of occurs, [(cumulative occurs, choice)]), then pick a uniformly distributed value from [0, sum of occurs) and find the smallest choice for which the cumulative value is larger by a binary search.
13:22:11 <elliott> That sounds rather excruciatingly slow.
13:22:37 <fizzie> Probably. For the most part, the nodes are likely to be quite small.
13:22:39 <elliott> I mean, if I'm talking to a mechanical disk over USB, loading a few megs of sequential data is so much better than doing a binary search seek over a few megs of sequential data it's not even funny.
13:25:42 <fizzie> As for the sentence start tokens, you can sort-of artificially add those by ignoring all ". a b c d" and "w x y z ." (unfiltered, those would be redundant; even filtered, you'll probably get a reasonable set of punctuation-in-the-middle grams) and then for each "z . a b c", "y z . a b", "x y z . a" add the corresponding "z . </s> <s> a" and so on only when a starts with a capital letter and z is not a single character (to remove "Mr J. Smith"). Possibly not wor
13:25:43 <fizzie> th the hassle.
13:26:40 <elliott> fizzie: How is that different to what I'd do at babble-time?
13:28:33 <fizzie> Well, I guess you can do the same at that time. Just that you'd generate one past the potential sentence-separator token at the end, and one before the sentence-separator token at the start, so you can apply some guesswork there.
13:31:27 <elliott> Ah.
13:31:30 <elliott> Well, I might do it.
13:31:32 <elliott> It seems rather... minor.
13:35:42 <fizzie> Incidentally, I also "invented" your double-tree idea the other day. I was thinking of just having a regular trie of n-grams, with the "next word" lists, and then went all "ooh, an idea; if you add a 'previous word' list too so that for 'a b c d' you put 'a' on that list for /b/c/d, then you can generate backwards too and share much of the structure". Took a moment to realize that is actually equivalent for a reverse-context style tree for going backwards + re
13:35:42 <fizzie> gular context tree for going forward, which is pretty much the same thing as doing reverse-context for forward prediction and regular-context for backward.
13:36:38 <elliott> fizzie: Yep. That's... what I said, yes.
13:36:59 <elliott> fizzie: What does "pretty much" mean here?
13:37:01 <elliott> It's literally identical.
13:38:03 -!- sllide has joined.
13:39:19 <elliott> Unless?
13:39:53 <fizzie> Well, no, it's not literally identical; you end up with a differently shaped tree, for one thing. In the first option (reverse-context for backward, regular-context for forward) it's slightly simpler to go backward (with a context of "a b x", at /a/b/ if there is no x/ you're already at the right place) and less simple to go foward; vice-versa for the other option.
13:40:09 <fizzie> At least when you are literally literal.
13:40:23 <elliott> fizzie: Oh, right.
13:40:29 <elliott> fizzie: The way I did it made it easier to go forwards.
13:40:34 <fizzie> Yes.
13:40:34 <elliott> fizzie: i.e. reverse-context for forwards.
13:40:36 <elliott> fizzie: I'm not sure why.
13:40:40 <elliott> It just... feels righter?
13:40:55 <elliott> Admittedly there's a certain elegance that you go the Normal Way to go forwards and flip things around to go back.
13:44:24 <elliott> fizzie: I kind of want to use a reverse-context tree for both so it's more elegant, but AFAICT that would pretty much duplicate my space usage.
13:44:46 <fizzie> If you start with the "let's use a reverse-context tree for babble-generation" concept and then start to think "how can I make some use of this thing also for predicting text backwards", it goes more naturally like the way you were going to do it.
13:44:54 <elliott> Yes.
13:44:58 <elliott> Hey, can't I reduce
13:44:58 <elliott> data RCT = Branch [(String,Int)] (Map String RCT)
13:44:59 <elliott> into
13:45:01 <elliott> er
13:45:02 <elliott> erm
13:45:04 <elliott> can't I reduce
13:45:08 <elliott> data RCT = Branch (Map String Int) (Map String RCT)
13:45:09 <elliott> into
13:45:15 -!- Patashu has quit (Ping timeout: 245 seconds).
13:45:16 <elliott> data RCT = Branch (Map String (Int,RCT)) | Nope
13:45:17 <elliott> ?
13:45:31 <elliott> I mean, there'll never be anything in the latter map without it being in the former map, no?
13:45:41 <elliott> Or, hmm, wait, it's a /reverse/ context tree, so that doesn't necessarily hold
13:45:44 <elliott> Or do I have it backwards. Help.
13:45:50 <elliott> I suppose I really mean
13:45:55 <elliott> data RCT = Branch (Map String (Int, Maybe RCT))
13:46:09 -!- sllide has quit (Read error: Connection reset by peer).
13:48:56 <fizzie> Yes, I guess you could combine them; though there's the fact that for the most numerous nodes that are four level deep, there will always be just Nothing in the Maybe. I suppose it doesn't matter semantically, but physically it might save space to keep the lists separate. Because of the reversedness, I'm not sure how much they share. I mean, for the n-gram list (b a x) (b a y) (c a x) (c a y) you will end up with node /a that has subnodes /a/b and /a/c, and nex
13:48:56 <fizzie> t-word list of (x, y).
13:49:13 <fizzie> Whoops, I need to get going; it's the alt barty thing.
13:49:19 <elliott> Right.
14:08:24 -!- nooga has quit (Ping timeout: 260 seconds).
14:09:35 -!- ais523_ has joined.
14:09:45 -!- ais523 has quit (Disconnected by services).
14:09:47 -!- ais523_ has changed nick to ais523.
14:10:03 <tswett> elliott: no, I don't think so.
14:14:20 -!- ais523_ has joined.
14:14:30 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
14:14:33 -!- ais523 has quit (Disconnected by services).
14:14:35 -!- ais523_ has changed nick to ais523.
14:16:04 -!- Phantom_Hoover has joined.
14:19:47 -!- nooga has joined.
14:36:04 -!- nooga has quit (Ping timeout: 256 seconds).
14:36:38 -!- copumpkin has joined.
14:40:26 <elliott> `addquote <Phantom_Hoover> You know what annoys me about Deep Space 9. <Phantom_Hoover> It wasn't in deep space. <Phantom_Hoover> It was orbiting Bajor.
14:40:28 <HackEgo> 689) <Phantom_Hoover> You know what annoys me about Deep Space 9. <Phantom_Hoover> It wasn't in deep space. <Phantom_Hoover> It was orbiting Bajor.
14:41:43 -!- SimonRC has quit (Ping timeout: 260 seconds).
14:51:35 -!- hagb4rd has joined.
15:15:10 -!- SimonRC has joined.
15:19:28 -!- SimonRC has quit (Ping timeout: 252 seconds).
15:29:35 <Vorpal> elliott, Phantom_Hoover had an interesting observation there
15:29:51 <Vorpal> however, I don't see the funny part of it
15:30:07 <elliott> who said the qdb is just for jokes?
15:30:33 <ais523> elliott: that sort of interesting observation is what xkcd is full of nowadays
15:30:35 <ais523> `quote
15:30:37 <HackEgo> 579) <Phantom_Hoover> The only happy dorf has a compassion stat of 0. <Phantom_Hoover> Well, 20, but it amounts to the same.
15:30:45 <Vorpal> elliott, you
15:31:03 <elliott> ais523: it's better-paced than xkcd, though
15:31:16 <elliott> `quote
15:31:17 <elliott> `quote
15:31:17 <elliott> `quote
15:31:18 <elliott> `quote
15:31:19 <elliott> `quote
15:31:20 <HackEgo> 313) <anekant> what does coffee do to biological neural networks <JRowe> what tiger blood does for charlie sheen
15:31:23 <HackEgo> 407) <fizzie> You make a fist, shake it at the sky, and shout "why, GNU, why?!" -- that is the standard reportig practice.
15:31:25 <HackEgo> 159) <Phantom_Hoover> OK, so is conspiring to conspire to commit a crime a crime? <cpressey> Let's all get together and talk about defacing public property sometime
15:31:25 <ais523> I actually looked at very early xkcd; it isn't all that good
15:31:33 <HackEgo> 250) [CTCP] Received CTCP-ERRMSG reply from clog: unknown CTCP: ERRMSG.
15:31:33 <HackEgo> 58) <Warrigal> Porn. <Warrigal> There, see?
15:31:36 <elliott> very early xkcd isn't that good but it has charm
15:31:38 <ais523> the famous sudo make me a sandwich comic is pretty much the first good one, and even it's debatable
15:31:45 <elliott> the sweet spot is like
15:31:50 <elliott> fifty in to three hundred fifty in
15:31:51 <elliott> `delquote 313
15:31:53 <HackEgo> ​*poof*
15:32:00 <ais523> elliott: agreed, I hadn't read that one yet
15:32:04 <ais523> but when I did it was obviously worst
15:32:35 <Phantom_Hoover> 123 is still my favourite.
15:32:43 <tswett> `quote 313
15:32:45 <HackEgo> 313) <fungot> Phantom_Hoover: if the list is in random order, like poor ehird here
15:32:57 <tswett> `quote 500
15:32:59 <HackEgo> 500) <monqy> rest in peace lambdabot???? <ais523> monqy: it'll probably be back later <monqy> nap in peace
15:33:01 <Phantom_Hoover> Worst quote becomes best quote.
15:33:09 <tswett> `quote 1000
15:33:11 <HackEgo> No output.
15:33:17 <ais523> I /love/ 313
15:33:19 <tswett> Quick, everyone, say lots of witty things.
15:33:22 <ais523> `quote 123
15:33:24 <HackEgo> 123) <fungot> alise: why internet is like wtf
15:33:36 <ais523> Phantom_Hoover: that one?
15:33:44 <Vorpal> `ls
15:33:46 <HackEgo> bin \ canary \ karma \ lib \ paste \ quotes \ share \ wisdom
15:33:46 <ais523> `quote fungot
15:33:47 <fungot> ais523: since the start of the construction of a european vision, tools that are in favour of the new proposal on feed hygiene at the earliest possible opportunity and also turning to the most economically advanced countries of the union.
15:33:49 <HackEgo> 12) <fungot> GregorR-L: i bet only you can prevent forest fires. basically, you know. \ 16) <fizzie after embedding some of his department research into fungot> Finally I have found some actually useful purpose for it. \ 19) <fungot> oerjan: are you a man, if there weren't evil in this kingdom to you! you shall find bekkler! executing
15:33:58 <ais523> `pastequotes fungot
15:33:58 <fungot> ais523: mr president, may i confirm the position which was not discussed, and if not, are covered by qualified majority in order for these slight growth rates to be reduced in the same vein, it would be misleading and cannot therefore be accepted.
15:34:00 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.31357
15:34:02 <tswett> Or we could just spam fungot so that he says every quotable thing there is.
15:34:03 <fungot> tswett: very briefly, ladies and gentlemen, that in order to improve their knowledge and professional skills as well as, of course and i too found it astonishing, that there are amendments nos 12, 13 and 19 propose the continuation of equality between men and women are part of our negotiating mandate for the future of homeopathic medicine.
15:34:11 <Phantom_Hoover> ^style
15:34:11 <fungot> Available: agora alice c64 ct darwin discworld europarl* ff7 fisher fungot homestuck ic irc jargon lovecraft nethack pa sms speeches ss wp youtube
15:34:17 <Vorpal> hm... `run sort < quotes > q && mv q quotes
15:34:18 <Phantom_Hoover> WHO SET IT TO EUROPARL
15:34:21 <tswett> ^style homestuck
15:34:22 <fungot> Selected style: homestuck (Homestuck pages 1901-4673)
15:34:23 <Vorpal> guess that would be a bad idea
15:34:30 <tswett> fungot: so what's this, then?
15:34:30 <fungot> tswett: to the left is that house shape you've seen everything!
15:34:40 <tswett> fungot: that wasn't quite as awesome as I was hoping.
15:34:40 <fungot> tswett: so the dumbest and most far fetched but whatever.
15:34:50 <Phantom_Hoover> tswett, it's produced some gems.
15:34:53 <Phantom_Hoover> `quote pumpkin
15:34:55 <HackEgo> 437) <Phantom_Hoover> The wickedest man of all. <Phantom_Hoover> Surpassed only in wickedness by the wicked witches of the west and east. <copumpkin> you talking about me again? <Phantom_Hoover> Yes. <copumpkin> k \ 532) <fungot> Phantom_Hoover: it is a hate so pure and... pumpkin seeds?
15:34:56 <tswett> fungot: yeah, I can't even tell who's supposed to be talking or anything. Those sentences are way too short.
15:34:56 <fungot> tswett: a place perhaps it is the human riddle that is truly the ultimate riddle. now it is my turn to the back inside cover, but it seems the john in the head of your smaller hammer from your deck is really dwindling now. maybe this game you are about to play
15:35:12 <Phantom_Hoover> 532 is also good for annoying copumpkin.
15:35:13 <tswett> fungot: there, much better.
15:35:16 <Vorpal> ^style fungot
15:35:17 <fungot> Selected style: fungot (What I've said myself)
15:35:22 <Vorpal> fungot, hi
15:35:22 <fungot> Vorpal: it's what that guy in medina, a village near the mystic mountain" 65,000,000 b. c.? yes, i'd have done something very brave! he's probably up north, to guardia the xxxiii. i really enjoyed such powers... now it's nick!userhost-limited to me, and ile not wish thee more
15:35:23 <copumpkin> o.O
15:35:37 <Phantom_Hoover> Metafungot.
15:35:37 <fungot> Phantom_Hoover: it's just so stupid that ' stty erase h' has. you came through, which is more fnord than they just never put things into
15:35:39 <Vorpal> mix of ct and irc?
15:35:41 <Vorpal> I think
15:36:01 <Vorpal> fungot, right
15:36:01 <fungot> Vorpal:. i'm so kind, even to assholes! anmaster no not markov anmaster no not markov
15:36:08 <Vorpal> fungot, indeed
15:36:08 <fungot> Vorpal: uninterned symbols, pairs, procedures, and so am i just being anal here or am i misunderstanding how these were the people skills of a plane
15:36:26 <Phantom_Hoover> Wait, why doesn't this cycle on this sword alone?
15:36:27 <tswett> ^help
15:36:27 <fungot> ^<lang> <code>; ^def <command> <lang> <code>; ^show [command]; lang=bf/ul, code=text/str:N; ^str 0-9 get/set/add [text]; ^style [style]; ^bool
15:36:33 <Vorpal> Phantom_Hoover, it might?
15:36:41 <Phantom_Hoover> fungot, can this sword alone stop?
15:36:42 <fungot> Phantom_Hoover: agora alice c64 ct darwin discworld europarl ff7 fisher ic irc* jargon lovecraft nethack pa speeches ss wp youtube
15:36:45 <Vorpal> just we haven't hit it yet
15:37:04 <Vorpal> did it just spit out a style listing from the fungot style?
15:37:04 <fungot> Vorpal: i know i didn't know that you've already asked, but then i need to enter " qemu" to edit is the ordinary ( for call/ cc))) hangs
15:37:05 <Vorpal> XD
15:37:14 <Vorpal> fizzie, how often do you update the fungot style?
15:37:14 <fungot> Vorpal: it's just so stupid that ' stty erase h' has to be all " pow!" and he was suddenly i rose, put up her mouth, pulled down by the gold saucer... think his name was close ever, and yet, at least, that is expressions which have not been able, to assume responsibilities. he went on, " the conclusion is, then thou, the greatest soldier, de. she wanna be friends, his state vsurp'd, his realme a slaughter-house, his subjects, t
15:37:37 <Vorpal> hm I guess you could get some boring feedback loops that way
15:37:39 <Phantom_Hoover> Vorpal, as often as the rest of the styles, I assume.
15:37:52 <fizzie> Vorpal: I don't, really. Unless someone tells me to.
15:37:58 <Vorpal> Phantom_Hoover, there is no obvious reason to update styles that don't change. Like ct or ic
15:38:23 <Vorpal> fizzie, is it possible for fungot style to enter the sword cycle?
15:38:23 <fungot> Vorpal: agora alice c64 ct darwin discworld europarl ff7 fisher ic irc* jargon lovecraft nethack pa speeches ss wp
15:38:52 <Vorpal> iirc you had some perl script to check such
15:39:04 <fizzie> Vorpal: Probably, though I haven't checked.
15:39:57 <tswett> ^style
15:39:57 <fungot> Available: agora alice c64 ct darwin discworld europarl* ff7 fisher fungot homestuck ic irc jargon lovecraft nethack pa sms speeches ss wp youtube
15:40:10 <Vorpal> who switched?
15:40:15 <Vorpal> ...
15:40:27 <tswett> ^style ss
15:40:27 <fungot> Selected style: ss (Shakespeare's writings)
15:40:28 <Vorpal> and why in /msg instead of in channel
15:40:42 <tswett> To make it a Sekret.
15:40:49 <fizzie> $ ./testlm-disk.pl data/tokens.bin.fungot data/model.bin.fungot 1 sword alone
15:40:49 <fizzie> sword alone can't stop! that sword alone can't stop! that sword alone can't stop, crono! crono...! there it is! but by the time we're through with you, you'll be in danger that a major debate will be held in new york is a very important relevant for this page? tried toggling hardware/ software flow control on and off, etc
15:40:50 <fungot> fizzie: bushie. more welcome is the stroake of death to gaze vpon these secrets of the state, and vsurpe the beggerie hee was neuer borne to: lord angelo is seuere law: i had as liue haue a reede that will doe me no seruice, as a cat laps milke, they'l tell the clocke, and in your anger, did i not by fnord of your old-fac'd walles, can hide you from our court
15:40:51 <Vorpal> fizzie, who is switching style outside of the channel? Can't you see from the logs of it?
15:41:19 <tswett> I've kind of implied who switched it.
15:41:27 <Vorpal> oh, you
15:41:39 <fizzie> Also I don't log.
15:41:58 <fizzie> Can only see last screenful.
15:42:17 <fizzie> Okay, and the screen backscroll buffer.
15:46:48 -!- SimonRC has joined.
15:50:00 <Phantom_Hoover> http://en.wikipedia.org/wiki/Great_grand_stellated_120-cell
15:51:46 <Phantom_Hoover> You can stick that in your great cubicuboctahedron and smoke it, CakeProphet.
15:52:01 -!- derrik has joined.
15:56:45 * Phantom_Hoover → crappier part of Ireland.
15:56:47 -!- Phantom_Hoover has quit (Quit: Leaving).
16:00:55 <fizzie> The non-Internetted parts, it seems.
16:03:15 -!- Phantom_Hoover has joined.
16:13:16 <elliott> Oh no, I think I need a: zipper.
16:13:53 -!- Ngevd has joined.
16:14:03 <Ngevd> Hello!
16:14:15 <elliott> Hi Ngevd.
16:15:00 <Ngevd> Woah
16:15:25 <Ngevd> IWC is in the eighth day of its guest week
16:15:40 <Ngevd> Andrew Hussie is at 96% of the 25/10 update
16:15:51 <Ngevd> And someone said hi to me!
16:16:10 <Phantom_Hoover> Ngevd believes that he is loved for a single, sweet moment.
16:19:56 <elliott> > inits [0,9,9]
16:19:57 <lambdabot> [[],[0],[0,9],[0,9,9]]
16:20:09 <elliott> > inits []
16:20:09 <lambdabot> [[]]
16:20:17 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
16:23:26 -!- monqy has joined.
16:26:22 <pikhq_> Jebus. Median pay in the US is $26k.
16:26:53 <Ngevd> :?
16:27:00 <Ngevd> The mean?
16:27:08 <pikhq_> The mean is $38k.
16:27:12 <Ngevd> ::::?
16:27:29 <Ngevd> The... interquartile range?
16:27:32 <pikhq_> Dunno.
16:32:07 <fizzie> The... geometric mean?
16:39:54 <elliott> hmm
16:40:07 <elliott> what's an efficient way to do
16:40:10 <elliott> map reverse (inits xs)
16:40:13 <elliott> /but/
16:40:18 <elliott> instead of xs you can also use xs'
16:40:19 <elliott> which == reverse xs
16:40:32 <elliott> (with no computational cost0
16:40:33 <elliott> )
16:40:40 <elliott> > tails [9,9,0]
16:40:41 <lambdabot> [[9,9,0],[9,0],[0],[]]
16:40:48 <elliott> > reverse (tails [9,9,0])
16:40:48 <lambdabot> [[],[0],[9,0],[9,9,0]]
16:40:52 <elliott> > map reverse (inits [0,9,9])
16:40:53 <lambdabot> [[],[0],[9,0],[9,9,0]]
16:41:01 <Ngevd> Congratulations!
16:41:08 <elliott> still not "efficient" :P
16:41:25 <copumpkin> tails is pretty efficient
16:41:29 <copumpkin> so you care about the reverse?
16:41:44 <elliott> <elliott> what's an efficient way to do
16:41:44 <elliott> <elliott> map reverse (inits xs)
16:41:44 <elliott> <elliott> /but/
16:41:44 <elliott> <elliott> instead of xs you can also use xs'
16:41:44 <elliott> <elliott> which == reverse xs
16:41:45 <elliott> <elliott> (with no computational cost0
16:41:47 <elliott> <elliott> )
16:41:49 <elliott> :P
16:41:59 <elliott> reverse (tails xs')
16:42:03 <elliott> and map reverse (inits xs)
16:42:04 <elliott> both work
16:42:08 <elliott> but preferably something without reverse at all
16:42:13 <copumpkin> no
16:42:16 <copumpkin> :P
16:42:28 <copumpkin> look at the order it produces results in
16:42:28 <elliott> :'(
16:42:33 <copumpkin> it'd need to look at the end of the list
16:42:43 <elliott> copumpkin: this is actually a trick question, my list is a literal and has five elements
16:42:47 <elliott> I guess I'll just write out the result manually
16:42:50 * elliott graph reducer
16:42:51 <copumpkin> lol
16:42:52 <copumpkin> ok
16:44:10 -!- nooga has joined.
16:50:41 -!- nooga has quit (Ping timeout: 248 seconds).
16:51:15 <elliott> fizzie: Wait, I've gone dumb suddenly.
16:51:38 -!- nooga has joined.
16:52:02 <fizzie> Are you sure the proper verb is "gone"? (Sorry.)
16:52:19 <fizzie> Also I'm at this thing, I'm not really here.
16:52:34 <Ngevd> It should be "became"
16:52:48 <elliott> fizzie: Yes but but but but but
16:54:40 <fizzie> Butane.
16:55:16 <elliott> fizzie: Surely a context tree would be better than a reverse context tree for babbling, as you'd just descend a node whenever you appended to the output?
16:57:07 <fizzie> Nnnnno, because the tree only goes five levels deep. Though you could, I suppose, theoretically have some sort of a loopy graph.
16:57:48 <elliott> fizzie: Oh, hmm, right. How does it being reversed actually help at all, then?
16:58:23 <fizzie> The point of the reverse context thing is that when you have a context of "... a b c d e", you don't need to know how long a context you can actually find in your model. You just start with /e, and then descend to /e/d, and to /e/d/c, and then stop if you can't find new subnodes.
16:58:53 <fizzie> Whereas with a trie you'd first try to find /b/c/d/e; but if that doesn't exist, you'd have a new search for /c/d/e; and then /d/e; and /e; and finally /.
16:59:13 <elliott> fizzie: Hmm, right.
16:59:39 <elliott> fizzie: I'm still rather sceptical of how much use anything but the full thing will get since I'm not crunching the model at all :-)
17:00:21 -!- pagnol has joined.
17:00:42 <elliott> hi pagnol
17:00:43 <elliott> `? welcome
17:00:45 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
17:00:57 <pagnol> hey
17:01:01 <fizzie> Make some statistics when you're babbling. It'll be a nonzero amount in any case with the filtered 'grams. (Might be nonzero with the "complete" model too, but I can't be bothered to think through that right now.)
17:01:21 <fizzie> Also the reverse-tree is nicely usable with variable-length 'grams, you don't have to start looking with a max(length(grams))-1 of context.
17:01:42 <elliott> fizzie: Right.
17:01:49 <pagnol> I'm browsing the list of languages and wondering which one to learn (or attempt to do so)
17:01:57 <elliott> underload
17:01:59 <elliott> :p
17:02:15 <monqy> underload is good yes
17:02:17 <fizzie> ^ul (:aSS):aSS
17:02:18 <fungot> (:aSS):aSS
17:02:22 <fizzie> The quinest thing.
17:02:24 <monqy> &simple
17:02:49 <pagnol> and appears to be well-documented, I appreciate that
17:02:52 -!- nooga has quit (Ping timeout: 244 seconds).
17:02:53 <monqy> the simplicity helps it be good (simple is good (do not think otherwise (that would be a mistake (many people have made this mistake (dont
17:03:00 <monqy> (im not going to close these (suffer
17:03:44 <fizzie> Sorry,
17:03:44 <elliott> )))))))
17:03:45 <fizzie> ^ul (aS(:^)S):^
17:03:45 <fungot> (aS(:^)S):^
17:03:58 <fizzie> (Accidentally a dirty word earlier.)
17:04:03 <monqy> aSS
17:10:49 <pagnol> what's so great about Underload?
17:11:02 <elliott> it's nice
17:11:13 <elliott> and quite functional
17:11:17 <elliott> and you do loops by quining, in a sense
17:11:30 <elliott> yet it still allows for pretty short, elegant programs
17:13:29 -!- zzo38 has joined.
17:13:58 <pagnol> do you know of a language that draws on logic, though in an unusual fashion, perhaps? like Prolog but esoteric
17:14:15 <Gregor> "Astronauts Michael Collins, Buzz Aldrin and Neil Armstrong had to go through US Customs to come back from the moon."
17:14:25 <Ngevd> !!!
17:14:32 <zzo38> I didn't know that.
17:15:01 <elliott> Gregor: No, they didn't.
17:15:04 <elliott> They filled in the forms for a laugh.
17:15:12 <elliott> (The forms are real but not required.)
17:15:23 <elliott> pagnol: ask ais523 about Proud :-P
17:15:28 <Gregor> I'm just quotin' :P
17:15:50 <ais523> pagnol: Proud isn't really practical, unfortunately; it allows doing things like quantifying over functions, etc
17:15:58 <ais523> it's basically just "Prolog with no restrictions, even if they're really necessary"
17:16:14 <ais523> also, using nondeterminism in the NFA sense, rather than backtracking
17:16:20 <ais523> I haven't worked out the details
17:17:13 <pagnol> it needn't be practical
17:17:29 <pagnol> there's no entry in the list ...
17:20:25 -!- derrik has quit (Quit: take carezz).
17:28:03 <boily> what is function quantification?
17:29:53 -!- Ngevd has quit (Ping timeout: 240 seconds).
17:32:25 <ais523> boily: basically, describing a function in terms of contraints
17:32:32 <ais523> and having the program iterate over /all functions/ to find the one you want
17:32:43 <ais523> Proud doesn't really have the details worked out, which is why it isn't online
17:33:53 -!- hagb4rd has quit (Ping timeout: 240 seconds).
17:34:16 -!- ais523 has quit (Read error: Connection reset by peer).
17:34:50 -!- ais523 has joined.
17:48:30 -!- ive has joined.
17:50:46 -!- Jafet has quit (Quit: Leaving.).
17:53:24 -!- Ngevd has joined.
17:54:35 -!- Sgeo|web has quit (Ping timeout: 265 seconds).
17:58:20 <coppro> elliott: does there exist a Haskell indent?
17:58:28 <Ngevd> Hello!
17:58:33 <coppro> Hello!
17:59:07 <elliott> coppro: yes, it's called emacs; you can also do something with haskell-src-extras (it retains comments) if you really want
17:59:14 <elliott> http://stackoverflow.com/questions/6870148/is-there-a-haskell-code-formatter http://www.reddit.com/r/haskell/comments/j31f4/is_there_a_haskell_code_formatter/ for more info
18:07:37 <pagnol> does anyone partake in the ai-class.com?
18:15:45 <Ngevd> Evidently not
18:16:55 <Ngevd> I just managed to type "Twitter" instead of "IRC"
18:30:18 <zzo38> I have trying to make logic stuff in Haskell, and have come up with the contrapositive rule and double negation rule being: doubleNot = flip id; contrapositive = flip (.);
18:32:32 <zzo38> Is it correctly?
18:35:13 -!- ive has quit (Ping timeout: 248 seconds).
18:44:59 -!- ive has joined.
18:58:05 <Ngevd> 2011 is proving a good year for Taneb-made esoteric programming languages
19:02:49 <Ngevd> Of course, 2011 is proving to be the only year for Taneb-made esoteric programming languages
19:11:52 <pagnol> Who's Taneb?
19:12:00 <Ngevd> Me
19:12:03 -!- Ngevd has changed nick to Taneb.
19:12:04 <Taneb> See
19:22:13 <Taneb> Creator of Nandypants, Numberwang, MIBBLLII, Luigi, Brook, and Constantinople
19:22:48 -!- tiffany has joined.
19:22:53 <zzo38> I have implemented Constantinople, although I did not invent Constantinople. But I did make a suggestion for Constantinople because there was something wrong with it.
19:23:04 <Taneb> Which I am thankful for
19:23:58 <fizzie> Taneb: You are thankful for there being something wrong with it?
19:24:12 <Taneb> No, the suggestion and the implementation
19:25:23 <zzo38> However, the implementation I made is not perfect because it does not do bitwise I/O. Later I might fix that, or someone else might fix that. (Would you expect it to work perfectly even though it is the first program I wrote in Haskell?)
19:25:40 <Taneb> I would not
19:25:52 <Taneb> But I am glad someone made it
19:26:05 <zzo38> OK
19:26:19 <Taneb> But yeah, that compiler made me happy
19:26:22 <Taneb> Thanks :)
19:31:22 <zzo38> There are two esolangs that I did not make but that I did make the first public implementation. How many is it the case that in general, the first public implementation was written by someone other than whoever invented that esolang?
19:31:37 <Taneb> I'd imagine a large number
19:34:00 <zzo38> I tried to make a class in Haskell for making classical logic.
19:34:28 -!- SgeoN2 has quit (Read error: Connection reset by peer).
19:34:30 <zzo38> data Zero; type Not x = x -> Zero; class Classical x where { contradiction :: Zero -> x; lem :: Either x (Not x); };
19:34:46 -!- SgeoN1 has joined.
19:34:46 <zzo38> instance Classical Zero where { contradiction = id; lem = Right id; };
19:35:01 <zzo38> instance Classical () where { contradiction = const (); lem = Left (); };
19:35:16 <zzo38> instance Classical x => Classical (Not x) where { contradiction = const; lem = either (Right . doubleNot) Left lem; };
19:35:30 <zzo38> Is this correct? Is there some mistake?
19:35:48 <Taneb> I don't know enough of classical logic to tell you, I'm afraid
19:41:20 <Vorpal> GTA IV has a most amusing glitch. If you slowly back up against a swing your vehicle will be flung into the air with tremendous speed. Often making you fly right *over* a skyscraper and landing you several hundred meters away.
19:41:39 <Taneb> He
19:41:39 <fizzie> Vorpal: Sounds very Stunts-y.
19:41:40 <Taneb> h
19:41:49 <Vorpal> fizzie, was that a pun?
19:42:06 <fizzie> No, not that I know of.
19:42:54 <fizzie> The "Stunts" game had quite a few "fly up to the ceiling of the sky" glitches.
19:43:52 <Vorpal> on the other hand, sometimes it just throw you a few meters up in the air. Not very predictable
19:44:11 <elliott> Vorpal: That works in real life too.
19:44:24 <elliott> If you disagree, I question whether you've ever tried.
19:44:40 <Vorpal> XD
19:44:43 <Taneb> elliott, that sounds almost like religion
19:45:12 <elliott> Taneb: Yes, but I don't see Christians flying over skyscrapers like total badasses, do you?
19:45:44 <Taneb> Sikhs do
19:46:24 -!- oerjan has joined.
19:48:46 <fizzie> If you jump a car from a ramp and hit the wall of a building, in midair, you tend to get ejected up and fly to the sky-ceiling, then slowly slide at that height to one corner of the world; then you land, make a complicated spinning-around thing for a while, and then explode.
19:48:56 <fizzie> Also probably works in real life?
19:49:03 <elliott> Yes. I do that a lot.
19:50:21 <elliott> `addquote <fizzie> If you jump a car from a ramp and hit the wall of a building, in midair, you tend to get ejected up and fly to the sky-ceiling, then slowly slide at that height to one corner of the world; then you land, make a complicated spinning-around thing for a while, and then explode. <fizzie> Also probably works in real life?
19:50:23 <HackEgo> 689) <fizzie> If you jump a car from a ramp and hit the wall of a building, in midair, you tend to get ejected up and fly to the sky-ceiling, then slowly slide at that height to one corner of the world; then you land, make a complicated spinning-around thing for a while, and then explode. <fizzie> Also probably works in real life?
19:55:29 <Vorpal> fizzie, is that in GTA IV too?
20:00:53 <Vorpal> also it severely deforms the car on launch
20:02:08 <Vorpal> for example I drove a "Patriot" (basically the game's rendition of a Hummer) that I flew like this. It ended up deformed enough that the roof intersected with the driver's head. No ill effects noticed. Still fully drivable.
20:02:33 <Vorpal> fizzie, elliott ^
20:02:33 <oerjan> <Vorpal> also it severely deforms the car on launch <-- relativistically correct, hm?
20:03:17 <zzo38> I think I implemented double negation elimination by: undoubleNot :: Classical p => Not (Not p) -> p; undoubleNot x = either id (explosion . flip (,) x) lem;
20:03:30 <Vorpal> oerjan, no, as in the metal being really bent
20:03:37 <zzo38> Is it correct?
20:03:51 <Vorpal> hard to tell
20:04:14 <Vorpal> given that the scenario is so unrealistic
20:04:31 <oerjan> >_>
20:05:47 <Vorpal> what?
20:05:55 -!- augur has quit (Remote host closed the connection).
20:07:01 <Madoka-Kaname> zzo38.
20:07:16 <oerjan> zzo38: your contradiction shouldn't need to be a method, it's intuitionistically correct
20:07:17 <Madoka-Kaname> undoubleNot :: Classical p => Not (Not p) -> p; undoubleNot (Not (Not p)) = p
20:07:28 <Madoka-Kaname> Can't do that?
20:07:48 <zzo38> Madoka-Kaname: There is no constructor "Not"
20:08:07 <oerjan> :t case ?z of {} -> ?x
20:08:08 <lambdabot> parse error on input `}'
20:08:26 <zzo38> oerjan: Yes I found that on Wikipedia
20:08:34 <oerjan> except haskell doesn't support empty case
20:09:19 -!- ais523 has quit (Read error: Connection reset by peer).
20:09:54 -!- ais523 has joined.
20:15:42 <oerjan> zzo38: can't you write undoubleNot x = either id (contradiction . ($ x)) lem ?
20:16:42 <zzo38> It seem to be wrong type
20:18:17 <oerjan> oh wait duh
20:18:51 <oerjan> make that undoubleNot x = either id (contradiction . x) lem ?
20:20:29 <zzo38> OK that appears to work.
20:20:30 <oerjan> so then is explosion (y,x) = contradiction (x y)
20:20:40 <zzo38> oerjan: Yes.
20:22:05 <oerjan> looks good, then
20:22:14 <zzo38> Yes it works now.
20:39:01 -!- augur has joined.
20:56:58 -!- nooga has joined.
21:01:30 -!- elliott has quit (Ping timeout: 245 seconds).
21:02:37 -!- nooga has quit (Ping timeout: 258 seconds).
21:08:28 -!- SimonRC has quit (Ping timeout: 260 seconds).
21:08:34 -!- SimonRC has joined.
21:10:39 -!- ais523 has quit (Remote host closed the connection).
21:12:16 -!- tiffnya has joined.
21:13:08 -!- SimonRC has quit (Ping timeout: 260 seconds).
21:13:21 -!- tiffany has quit (Disconnected by services).
21:13:23 -!- tiffnya has changed nick to tiffany.
21:14:05 -!- SimonRC has joined.
21:15:39 -!- GreaseMonkey has joined.
21:15:42 -!- GreaseMonkey has quit (Changing host).
21:15:42 -!- GreaseMonkey has joined.
21:29:20 -!- SgeoN1 has quit (Read error: Connection reset by peer).
21:29:48 -!- boily has quit (Quit: WeeChat 0.3.5).
21:34:55 <fizzie> Vorpal: No, it was from Stunts.
21:38:41 -!- copumpkin has quit (Ping timeout: 248 seconds).
21:41:28 -!- copumpkin has joined.
21:44:31 -!- ive has quit (Quit: leaving).
21:49:32 -!- augur has quit (Remote host closed the connection).
21:50:58 <Vorpal> fizzie, Stunts being?
21:51:06 <Vorpal> apart from a feature of some movies
21:51:10 -!- sllide has joined.
21:52:30 <fizzie> <fizzie> The "Stunts" game had quite a few "fly up to the ceiling of the sky" glitches.
21:52:34 <fizzie> Like I said, a game.
21:52:41 <Vorpal> ah right
21:52:55 <fizzie> "Stunts (also known as 4D Sports Driving) is an early 3D racing video game developed by Distinctive Software, Inc.. The game places emphasis on racing on stunt tracks and features a track editor, it is clearly influenced by the earlier arcade game Hard Drivin' and has many similar elements to the game Stunt Driver which was released around the same time."
21:53:03 <fizzie> From 1990; MS-DOS and Amiga.
21:53:06 <Vorpal> heh
21:53:16 <Vorpal> 3D back then?
21:53:26 <fizzie> Sure.
21:53:33 <fizzie> Several polygons at the same time.
21:54:05 <fizzie> http://www.ibiblio.org/GameBytes/issue20/misc/stunts1.gif
21:54:08 <fizzie> Looks like that.
21:54:13 <twice11> Severely limited by graphics memory bandwidth on PCs that time.
21:54:25 <fizzie> Even transparency. (By stippling, but still.)
21:54:34 <twice11> I ended up playing it in CGA mode on a 386 with an 8-bit VGA board.
21:55:08 -!- copumpkin has changed nick to danieldanieldani.
21:55:22 <fizzie> http://www.ibiblio.org/GameBytes/issue20/misc/stunts.html "There's nothing extremely exciting about that, except the amazing things that can happen as you crash! Do not be surprised if you find your car soaring _hundreds_ of meters above the ground! Sometimes before a crash, sometimes after, but don't ever expect to survive such a fall! And there is nothing like going vertical in a F1 racing car to add some thrill to you spill! It's all part of the fun. "
21:55:31 <twice11> Of course, with the right hardware VGA mode was playable (read: 0-WS, 16-bit ET4000 based VGA card)
21:55:32 <fizzie> The physics bugs were among the best things in it.
21:55:46 <fizzie> I had a Tseng Labs ET-something card.
21:55:50 -!- MDude has quit (Ping timeout: 244 seconds).
21:56:19 <Taneb> posix.c:9:31: fatal error: readline/readline.h: No such file or directory compilation terminated.
21:56:34 <twice11> apt-get install libreadline-dev ?
21:56:46 -!- danieldanieldani has changed nick to copumpkin.
21:56:58 <Taneb> I'm not very good at this
21:57:33 <twice11> Taneb: If your system is debian-based, try the command I quoted (as root, on Ubuntu, prefix with sudo) to fix the problem.
21:57:43 <fizzie> Anyway, Stunts also recorded replays, so you could save the most ludicrous crashes.
21:58:10 <Taneb> Problems solved, 2/3
21:58:45 <twice11> And there was a workaround for the feature that if you continued from not-the-end of a reply you can't get a high score (i.e. rollback after a crash is deemed as cheating)
21:58:55 <Vorpal> fizzie, awesome
21:59:10 <twice11> Maybe it was saving to different replay files in regular intervals.
21:59:25 <twice11> So you could contine at the end of the "last known good" file.
21:59:37 -!- Patashu has joined.
22:01:46 <Vorpal> fizzie, http://images.wikia.com/gtawiki/images/c/c8/DF8toobad00.jpg
22:01:56 <Vorpal> fizzie, green arrow points at launch point
22:03:02 <Vorpal> http://images.wikia.com/gtawiki/images/f/f1/Swing_glitch_%28GTA4%29_%28catapult%29.jpg [[ A glitched swing in action, moments after hurling the player and their car into the air. Notice the "agitated" leg of the swing slamming on the ground and cracking it, illustrating the tremendous force it possesses. ]]
22:03:24 <Vorpal> yeah I noticed the ground breaking around them constantly
22:03:52 <fizzie> Rrrealism.
22:04:21 <twice11> the law of energy conservation has obviously deemed invalid by the high court...
22:04:32 <Vorpal> heh
22:06:21 <Vorpal> I used the built in cheats (accessed by dialling a number on the in game cell phone) to spawn a Jetamax (speed boat) on top of one next to a skyscraper. It flew almost straight up until I lost sight of it. Half a minute later it landed on top of the skyscraper. Sadly I did not manager to enter the boat in time to watch this from first person view.
22:08:45 -!- esowiki has joined.
22:09:30 -!- esowiki has joined.
22:10:14 -!- esowiki has joined.
22:10:15 -!- glogbot has joined.
22:10:15 -!- glogbackup has left.
22:10:18 <twice11> I don't understand why the car doesn't explode in that video after the jump.
22:10:18 -!- pagnol has joined.
22:10:30 <twice11> Usually it did...
22:11:27 <twice11> According to my experience, you should not even survive at 0:55
22:11:28 <fizzie> http://www.youtube.com/watch?v=OMAnnj25Kfg <- that's slightly more what I remember.
22:11:39 -!- Zetro has joined.
22:11:39 -!- lifthrasiir has joined.
22:11:39 -!- olsner has joined.
22:11:39 -!- shachaf has joined.
22:11:42 -!- cheater has joined.
22:11:56 -!- shachaf has quit (Max SendQ exceeded).
22:12:02 -!- shachaf has joined.
22:12:30 -!- yorick has joined.
22:12:39 <Vorpal> fizzie, heh. He actually survived that? In the first video
22:12:52 <fizzie> Apparently. I mostly recall things exploding.
22:13:42 <twice11> fizzie: Yes, the second video looks quite familiar to me. Although I usually cancelled instead of watching 2 minutes of flight.
22:14:39 <Vorpal> there was no explosion in it
22:15:23 <fizzie> The second wasn't all that high though, it didn't even hit the ceiling.
22:16:53 <Vorpal> heh
22:17:14 <Vorpal> another fun thing in GTA IV. In star junction (in the first unlockable area), if you fire a rocket launcher at a specific place synced with the traffic light pattern you can get a serial explosion that takes ages to stop because new cars keep arriving just in time to get blown up
22:17:16 <Vorpal> About 5-10 minutes of watching explosions before it dies out
22:18:47 <fizzie> Vorpal: http://www.youtube.com/watch?v=lYlKFtu7RNY if you want to see the boom in Stunts.
22:19:02 <Vorpal> why would I not? :D
22:19:10 -!- Taneb has quit (Quit: Leaving).
22:19:40 <Vorpal> not very impressive explosion
22:23:00 <fizzie> "it's good since it's made for computers weaker than pentium 1" (YouTube)
22:23:12 <oerjan> > let x = cos x in x :: CReal -- i wonder if this works...
22:23:15 <lambdabot> mueval-core: Time limit exceeded
22:23:23 <oerjan> hmph
22:24:43 <oerjan> > let x = 1 + 1/x in x :: CReal -- i wonder if this works...
22:24:47 <lambdabot> mueval-core: Time limit exceeded
22:26:31 <oerjan> @hoogle CReal
22:26:31 <lambdabot> No results found
22:26:35 <twice11> oerjan: Did I miss some news that Haskell now contains a numeric fix-point solver?
22:27:05 <oerjan> no, but if you could only get it _started_, wouldn't laziness take care of the rest.
22:27:23 <oerjan> i'm just not sure how to get it started.
22:28:35 <oerjan> dammit google removed the + prefix
22:29:01 <twice11> double-quote terms to force them to be included as-is.
22:29:36 <oerjan> it said at much. except i'm _sure_ that failed once recently for a multi-word phrase, so i had to use +"..."
22:29:42 <oerjan> *as much
22:30:59 <twice11> I was surprised by google staring to interpret 'bad-luck' not as strict as '"bad luck"' (single quotes for demonstration only, double quotes as entered)
22:31:16 <twice11> I used to use the hyphen as shorcut for multi-word searches.
22:31:22 <twice11> Which worked till around 2006
22:31:23 <oerjan> me too
22:31:36 <oerjan> or wait
22:31:45 <fizzie> oerjan: Maybe you should try ""thing with multiple words"" next.
22:32:28 <Vorpal> <oerjan> dammit google removed the + prefix <-- they what...
22:32:35 <oerjan> yes.
22:32:39 <Vorpal> oerjan, why?!
22:32:53 <oerjan> because google is evil, obviously.
22:32:59 <Vorpal> oerjan, use DDG
22:33:12 <Vorpal> oerjan, elliott recommended it to me.
22:33:14 <Vorpal> https://duckduckgo.com/
22:33:28 <twice11> When google started in the late 90s, one of their big advantages was you don't have to use plus on all the terms to get relevant results...
22:33:45 <Vorpal> oerjan, you won't even need + in the first place most of the time with it
22:36:22 <twice11> @hoogle [x] -> [(x,x)]
22:36:23 <lambdabot> Test.QuickCheck two :: Monad m => m a -> m (a, a)
22:36:23 <lambdabot> Prelude zip :: [a] -> [b] -> [(a, b)]
22:36:23 <lambdabot> Data.List zip :: [a] -> [b] -> [(a, b)]
22:36:59 * twice11 was looking for \x -> zip x (tail x)
22:37:12 -!- pikhq has joined.
22:37:16 <Deewiant> ?quote aztec
22:37:16 <lambdabot> quicksilver says: zip`ap`tail - the Aztec god of consecutive numbers
22:37:30 -!- pikhq_ has quit (Ping timeout: 258 seconds).
22:38:27 <oerjan> > let x = cos x `max` 0.6 `min` 0.8 in x :: CReal -- lessee...
22:38:30 <lambdabot> mueval-core: Time limit exceeded
22:38:33 <oerjan> :(
22:39:03 <oerjan> > let x = cos x `max` 0.7 `min` 0.8 in x
22:39:07 <lambdabot> mueval-core: Time limit exceeded
22:39:48 <oerjan> oh well
22:40:28 <twice11> > let findfp f s = fst $ head $ dropWhile (uncurry (/=)) $ (\x -> zip x $ tail x) $ iterate f s in (\x -> 1+1/x) `findfp` 1
22:40:29 <lambdabot> 1.618033988749895
22:40:42 <oerjan> twice11: good old zip`ap`tail
22:45:02 <twice11> oerjan: nice. That's in the reader monad, if I understand it correctly...
22:45:12 <oerjan> yes
22:48:14 -!- EgoBot has quit (Ping timeout: 258 seconds).
22:48:25 -!- EgoBot has joined.
22:48:48 <oerjan> !haskell putStrLn "I'm feeling better."
22:48:55 <oerjan> or not.
22:49:06 <Vorpal> :t zip`ap`tail
22:49:08 <lambdabot> forall b. [b] -> [(b, b)]
22:49:17 <Vorpal> hm
22:49:35 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
22:49:37 <Vorpal> :t ap
22:49:38 <lambdabot> forall (m :: * -> *) a b. (Monad m) => m (a -> b) -> m a -> m b
22:49:42 <Vorpal> oh right, that one
22:49:51 <Vorpal> it isn't in Prelude is it?
22:49:57 <twice11> Control.Monad
22:49:59 <Vorpal> right
22:50:06 <Vorpal> $ ghci
22:50:06 <Vorpal> GHCi, version 6.12.1: http://www.haskell.org/ghc/ :? for help
22:50:14 <Vorpal> good thing elliott isn't here
22:50:23 <twice11> Had to look for it, first suspected it in Control.Applicative.
22:50:45 <oerjan> Applicative and Monad are still not unified.
22:51:04 <Deewiant> Control.Monad.ap = (Control.Applicative.<*>)
22:51:15 <Deewiant> (For reasonable Monad/Applicative instances)
22:51:21 <oerjan> i am somewhat worried about this upcoming syntax i see thrown around which puts superclass defaults for a subclass _in the superclass_
22:51:48 <oerjan> it seems the wrong way to do it for making things extensible
22:51:58 <Vorpal> ouch
22:52:37 <Vorpal> oerjan, and Num is still unified (several times I wanted, say (+) or (*) without implementing signum or abs)
22:52:51 <twice11> I think I read in LYAH that Monad is now a subclass of Applicative, but ghc 7.0.4 doesn't seem to know it...
22:53:12 <oerjan> twice11: alas, only in spirit
22:53:12 <Vorpal> I mean, you want (*) and (+) and (-) on Vectors. But abs is completely different for a vector. It is the length of it
22:53:31 <oerjan> Vorpal: (*) doesn't even have the right type for Vectors.
22:53:43 <twice11> I don't want * between vectors, or do you mean scalar or vector product?
22:53:43 <Vorpal> oerjan, well for the cross product maybe?
22:53:54 <Vorpal> but no, not for scalar
22:54:07 <Vorpal> oerjan, point is, Num contains too much
22:54:09 -!- augur has joined.
22:54:14 <oerjan> the cross product only works for a few dimensions :/
22:54:21 <Vorpal> oerjan, there is that too
22:54:45 <Vorpal> oerjan, I never understood why it only work for certain dimensionalities
22:55:44 <oerjan> it's because the cross product is in _spirit_ not from vectors to vectors, but from vectors to antisymmetric 2-forms
22:55:54 <Vorpal> hm
22:55:58 <Vorpal> okay
22:56:10 <oerjan> and only for a few dimensions is there a nice embedding from 2-forms to vectors
22:56:40 <Vorpal> oerjan, what is a 2-form?
22:56:45 <Vorpal> I never heard the word before
22:56:58 -!- pikhq_ has joined.
22:57:14 -!- pikhq has quit (Ping timeout: 258 seconds).
22:57:23 <oerjan> http://en.wikipedia.org/wiki/Differential_form
22:58:19 <Vorpal> oh, that
22:58:24 <oerjan> http://en.wikipedia.org/wiki/Differential_form#Wedge_product is iirc the generalization of cross product
22:58:32 <Vorpal> oerjan, so integrals tie into vectors? How weird
22:58:57 <Vorpal> Algebra and analysis seem so different on the surface, yet they are deeply connected.
22:58:59 <oerjan> if you want to integrate over multidimensional spaces, they do
22:59:45 <Vorpal> oerjan, I have a course in doing that atm
23:00:34 <Vorpal> it is quite complicated sometimes
23:01:57 -!- sllide has quit (Read error: Connection reset by peer).
23:03:00 <Vorpal> oh well, night
23:03:10 <oerjan> night
23:08:17 -!- MSleep has joined.
23:08:17 -!- Vorpal has quit (Ping timeout: 248 seconds).
23:08:26 -!- MSleep has changed nick to MDude.
23:14:24 -!- copumpkin has joined.
23:37:34 -!- hagb4rd has joined.
2011-10-22
00:40:59 <coppro> oh god template haskell
00:41:00 <coppro> <3<3<3
00:53:48 <zzo38> I think Template Haskell is good idea. Although, some improvements could be made, and it cannot do all things, such as, you might want some different kind of macro, so that you can make something like a polymorphic polymorphic function, as opposed to only normal polymorphic functions.
00:54:43 <zzo38> This is how I proved Peirce's law in Haskell:
00:54:48 <zzo38> peirce :: (Classical p, Classical q) => ((p -> q) -> p) -> p;
00:55:17 <zzo38> peirce = unswitcheroo . contrapositive .> mapR (contrapositive switcheroo') .> mapR (map1 undoubleNot . undeMorgan) .> mapL ((,) ()) .> either snd fst;
00:57:22 <oerjan> hm...
00:58:00 <oerjan> do you have any instance (Classical p, Classical q) => Classical (p -> q) ? i'm not sure if one should be possible
00:58:33 <zzo38> oerjan: I do but I did not write the methods yet. That is what I try to do.
00:59:13 <zzo38> (Specifically, I don't know how to write the law of excluded middle for (x -> y) or (x, y) or (Either x y))
00:59:16 <oerjan> i think Classical p is equivalent to having the axiom p \/ not p. hm.
00:59:39 <zzo38> oerjan: Yes, that is what I did.
01:00:01 <oerjan> if you have y, then you have x -> y. so the question is, what if you don't have y.
01:00:11 <oerjan> i mean, you have not y.
01:00:39 <oerjan> so then you have (x -> y) -> not x, i think
01:01:10 <oerjan> if you have x, then it gives you a contradiction.
01:01:16 <zzo38> At first I write the instance for (Not x) separately but it is really a specific of the (x -> y) instance, so I commented out (and will later remove) the (Not x) instance.
01:01:19 <oerjan> but if you have not x, and not y, what then
01:03:45 <zzo38> Yes those are the things I was trying to think of!
01:05:37 <oerjan> lem = case (lem, lem) of (_, Left y) -> Left (const y); ...
01:07:57 <oerjan> (Right nx, _) -> Left (contradiction . nx);
01:08:47 <oerjan> but what of (Left x, Right ny) -> ...
01:09:03 <oerjan> oh
01:09:47 <oerjan> (Left x, Right ny) -> Right (ny . ($ x))
01:09:53 <oerjan> that's it, i think
01:11:05 <zzo38> Yes, thanks, that worked.
01:11:55 <oerjan> for (x,y), hm
01:13:25 <oerjan> (Right nx, _) -> Right (nx . fst); (_, Right ny) -> Right (ny . snd); (Left x, Left y) -> Left (x,y)
01:14:41 <zzo38> OK, that worked.
01:14:53 <oerjan> should i try Either as well?
01:15:02 <zzo38> I should think so.
01:16:06 <oerjan> (Left x, _) -> Left (Left x); (_, Left y) -> Left (Right y); (Right nx, Right ny) -> Right (either nx ny)
01:16:45 <oerjan> bit confusing, that one :P
01:17:01 <zzo38> Yes it is, but the compiler accepts it.
01:21:24 <zzo38> What sort of explanation should I write on these things?
01:22:36 <oerjan> well essentially this is dividing up according to the boolean truth table of the operations, somewhat...
01:40:44 <zzo38> I seem to have made up a way of making classical logic in Haskell which is completely different from all other ways that other people have made up before that I know of.
01:49:14 <zzo38> In the non-program part of this Haskell program, I have already used three different accent-mark/special-letters.
01:50:41 <zzo38> (Specifically, \O, \"o, and \=o.)
01:51:12 <oerjan> \O ? are you crediting me? :P
01:51:48 <zzo38> Yes, for the part where you help me to make up the lem of some of the instances.
01:52:14 <oerjan> what is \=o again
01:52:15 -!- pikhq has joined.
01:52:25 <zzo38> It is o with macron or "bar"
01:52:44 -!- pikhq_ has quit (Ping timeout: 276 seconds).
01:53:50 <zzo38> (Specifically, I was referencing "Ganto's theorem", on page 189 of Hofstadter's book)
01:54:03 <zzo38> (And, of course, \"o is for the title of that book.)
01:54:32 <zzo38> All of them are form of letter O, as it is turning out!!
01:54:58 <oerjan> indeed
01:55:22 <oerjan> and if you could sneak in a mention of Erd\Ho s as well...
01:55:29 <oerjan> (iirc)
01:56:59 <zzo38> Yes, I believe that is the correct spelling of his name (well, you need {Erd\H os} so that \H is one word by itself), but I don't seem to have something related to his things in this program, as far as I can tell.
01:57:19 <zzo38> (What I mean by \H is one "word" is it is one control word)
01:58:27 <oerjan> ah
02:13:26 -!- Sgeo|web has joined.
02:13:39 <Sgeo|web> Derp, joined ther wrong channel
02:25:32 <CakeProphet> nub
02:25:37 <CakeProphet> so my new car
02:25:38 <CakeProphet> is awesome.
02:25:54 <CakeProphet> well, it needs some maintenance, but it runs which immediately makes it awesome.
02:26:02 <CakeProphet> 1998 3.0L V6 Honda Accord.
02:27:15 -!- pikhq_ has joined.
02:27:19 -!- pikhq has quit (Ping timeout: 240 seconds).
02:47:19 <olsner> a version 6 honda "accord" ... is that x86 compatible?
02:56:20 -!- ive has joined.
02:59:05 <zzo38> Discard the notions of things changing/evolving in time, and then you can know the secret of time travel.
03:17:40 <Patashu> The secret of time travel is throwing yourself at the future and missing.
03:19:24 -!- nooga has joined.
03:21:38 <CakeProphet> olsner: uh
03:21:48 <CakeProphet> olsner: that refers to a V engine.
03:22:02 <CakeProphet> http://en.wikipedia.org/wiki/V_engine
03:23:23 <olsner> CakeProphet: that doesn't seem turing complete at all
03:23:25 <CakeProphet> It's one of the most compact engine layouts. Straight (aka inline) engines tend to be lengthier.
03:24:11 <olsner> right, so it makes for more compact code? or just the engine that's more compact, and the code ends up larger?
03:25:05 <CakeProphet> no it's not Turing complete, but it's much better at generating power/torque than puny computers.
03:26:15 <olsner> otoh, computers don't generally need to move stuff, just calculate it, so I don't see where that torque would be going
03:27:10 <CakeProphet> yes, and that is the difference between cars and computer
03:27:14 <CakeProphet> oh wait, no I meant to say:
03:27:33 <CakeProphet> "lololol compraring cars 2 comptuters so clevr"
03:28:01 <oerjan> hey physics is equivalent to information theory anyway
03:28:03 <olsner> comparing cars and computers? but the cars are stored in the computers ...
03:28:40 <CakeProphet> no. stop.
03:29:53 -!- tiffany has quit (Quit: Leaving).
03:29:58 <CakeProphet> wow my lab professor doesn't even bother to compile the driver code to ensure it works.
03:38:03 <CakeProphet> oerjan: how so?
03:38:11 <CakeProphet> do you mean that information theory is based on physics?
03:39:01 <CakeProphet> how would engine displacement translate to information?
03:45:59 -!- pagnol has quit (Ping timeout: 260 seconds).
03:59:11 <monqy> engine displacement information
04:01:19 <CakeProphet> so basically they're equivalent in that information theory can simulate physics with... physics information?
04:02:06 <monqy> and physics can simulate information with information physics
04:02:32 <CakeProphet> I thought information theory used countable bits... doesn't physics specifically not use countable things?
04:02:35 <CakeProphet> er, wait
04:02:35 <CakeProphet> nevermind.
04:02:53 <CakeProphet> I forgot about those things called particles.
04:03:58 * CakeProphet finds it entirely silly that Java has a new keyword.
04:04:23 <CakeProphet> well, the only use I see it serving
04:04:34 <CakeProphet> is that it disambiguates the construction of arrays.
04:04:48 <CakeProphet> new Object[10000]
04:05:09 <CakeProphet> though I don't really think that's ambiguous
04:05:10 <CakeProphet> it's just that
04:05:24 <CakeProphet> Object[] arr = Object[10000]
04:05:26 <CakeProphet> looks weird.
04:06:48 <monqy> wehres the key word
04:07:28 <CakeProphet> I'm saying it's not needed...
04:07:47 <monqy> hats hte keyworddw
04:08:15 <CakeProphet> in C++ it's needed to distinguish between heap allocation and... ephemeral object constructor things.
04:08:40 <CakeProphet> but Java doesn't have that distinction, so...
04:08:43 <CakeProphet> why is it there?
04:09:38 <oerjan> <CakeProphet> do you mean that information theory is based on physics? <-- the other way as well
04:10:03 <CakeProphet> ah yes, equivalence. :P
04:36:06 -!- oerjan has quit (Quit: Good night).
04:43:41 <zzo38> Is superstring theories science or is it mathematics?
04:52:49 <CakeProphet> anyone play df?
04:52:53 <CakeProphet> what's the latest version of dwarf therapist
05:19:00 -!- Sgeo has joined.
05:32:26 <zzo38> Does the physical universe have any lazy I/O?
05:37:36 <CakeProphet> I don't think that question has any meaning in that context.
05:38:39 <CakeProphet> laziness is a property of the evaluation semantics of a programming language. Also, I'm not entirely sure what input/output would mean in the physical universe.
05:41:06 -!- Sgeo has quit (Ping timeout: 240 seconds).
05:41:59 -!- Sgeo has joined.
05:47:28 -!- MDude has changed nick to MSleep.
05:55:09 <zzo38> CakeProphet: I don't know either; I just thought about it for philosophical reasons.
06:06:44 <zzo38> And anyways, I do not think that lazy evaluation is exactly the same things as lazy I/O, anyways.
06:16:18 -!- Sgeo has quit (Ping timeout: 240 seconds).
06:16:43 -!- Sgeo has joined.
06:17:31 -!- pikhq has joined.
06:17:53 -!- pikhq_ has quit (Ping timeout: 258 seconds).
06:19:06 -!- ive has quit (Ping timeout: 260 seconds).
06:26:18 -!- Sgeo has quit (Ping timeout: 240 seconds).
06:27:35 -!- Sgeo has joined.
06:32:50 -!- Ngevd has joined.
06:34:19 <Ngevd> Morning
06:36:15 -!- ive has joined.
06:39:41 <Ngevd> It seems that in Australia everyone is a fervent royalist except for the politicians
06:45:08 <zzo38> In 1997 the AA Newsletter Transit invited astrologers to submit "articles of up to 3000 words which put forward a case for, and demonstrate, the Truth of Astrology -- whatever that may mean to the author". The results show how illogical everyone is in answering these questions. The winner looked at his own chart in advance, and predicted that he wouldn't win (he was wrong). Some responses are better than others, but none actually prove its trut
06:45:23 <zzo38> "Mankind questions everything. Skeptics challenge astrology because it has no obvious explanation. But there is no explanation of man's evolution, or of gravity, or of genes. They just are. The same with astrology. It is true because it exists."
06:45:46 <Ngevd> :D
06:45:49 <zzo38> "Nobody has come up with a sure proof of astrology, otherwise we would know about it via the Astrological Journal if not the BBC. Its truth lies in its symbols and meaning. But we cannot know in advance which of countless possible meanings will apply, so the truth of astrology lies at a deeper level: Mars in Cancer is always Mars in Cancer."
06:47:14 <Ngevd> Lemony cheese is always lemony cheese
06:48:56 <zzo38> One entry said that truth and facts are not the same thing (fact = it is raining, truth = what really lies behind that fact (such as clouds, gods, or whatever)). "Astrological truth is not like logical truth, such as if A=B and B=C then A=C. ... But like any language, astrology can describe truths." [but you can lie in any language as well! Worse, not everyone agrees on the language of astrology meaning. What is the use of language if nobody ca
06:50:09 <zzo38> "Astrology is proved every time we read charts for clients. If it were false we would not have clients. Researchers look at isolated factors so no wonder their results are negative. ... However, the multiple meanings of astrological symbols means that these things cannot be predicted in advance. Once the life has been lived we see how the chart fits like a glove."
06:50:32 <zzo38> [Actually any chart's interpretations will fit; even the wrong one.]
06:52:12 <zzo38> One of the entrants used astrology to prove that astrology must prove itself.
06:54:42 -!- Sgeo has quit (Ping timeout: 240 seconds).
06:55:05 -!- Sgeo has joined.
06:55:35 <zzo38> "If you want proof of astrology, use the same proof that applies to religion or painting or music, not to science"
06:55:50 <zzo38> How do you prove a painting or a piece of music?
06:59:22 <Ngevd> WITH SCIENCE
07:07:26 <zzo38> There is a Jyte claim (a statement that users with OpenID can vote agree/disagree and comments) that says "People who make life decisions based on astrology freak me out." Well, not to me; although I would not make decisions in this way. An agreer commented "Unless they are making a decision where a sane person might flip a coin or use a cat." But my response to that comment is: "But, flip a coin is just head and tails! That is the difference."
07:08:40 <Ngevd> What network thingies are the bots written in a non-networky language using?
07:09:39 <zzo38> I don't know.
07:09:42 <Ngevd> Hmm
07:12:29 -!- pagnol has joined.
07:15:47 -!- SgeoN1 has joined.
07:16:18 -!- Sgeo has quit (Ping timeout: 248 seconds).
07:16:50 -!- Sgeo has joined.
07:17:02 <Sgeo|web> You mean like Brainfuck? I don't think there are any Brainfuck bots here
07:17:19 <Madoka-Kaname> !bf +[.+]
07:17:23 <Madoka-Kaname> ^bf +[.+]
07:17:24 <fungot> <CTCP>.. !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ...
07:17:31 <Sgeo|web> But it could be done by hooking stdio to IRC
07:17:32 <Ngevd> There's a thutubot
07:17:38 <Sgeo|web> Oh, fungot is written in Befunge-98
07:17:39 <fungot> Sgeo|web: mist.page. i meane that my heart meanes no ill intent, but that he will steale sir an egge out of a note
07:17:46 <Sgeo|web> Oh, nope
07:17:48 <Madoka-Kaname> Sgeo, seriously?
07:17:49 <Sgeo|web> Wait, not nope
07:17:53 <Madoka-Kaname> ^help
07:17:53 <fungot> ^<lang> <code>; ^def <command> <lang> <code>; ^show [command]; lang=bf/ul, code=text/str:N; ^str 0-9 get/set/add [text]; ^style [style]; ^bool
07:17:59 <Madoka-Kaname> ^show bf
07:18:09 <Ngevd> Befunge-98 has built in networking
07:18:22 <Madoka-Kaname> ^perl
07:18:26 <Sgeo|web> I thought Ngevd said that That's a thutubot
07:18:33 <Madoka-Kaname> ^ul (<CTCP>ACTION hugs Sgeo<CTCP>)!
07:18:37 <Madoka-Kaname> Whats print in underload?
07:18:42 <Sgeo|web> S I think?
07:18:50 <Sgeo|web> ^ul (Hello)S
07:18:51 <fungot> Hello
07:19:09 <zzo38> http://jyte.com/claims?by=zzo38computer.cjb.net&page=1
07:19:41 <Madoka-Kaname> ^ul (<CTCP>ACTION hugs Sgeo<CTCP>)S
07:19:42 * fungot hugs Sgeo
07:19:50 <zzo38> Some claims I disagree my owns ones
07:20:08 <Madoka-Kaname> ^ul (`echo "test")S
07:20:09 <fungot> `echo "test"
07:20:13 <Madoka-Kaname> Ignoring bots, eh!
07:20:16 <HackEgo> ​"test"
07:20:16 <Madoka-Kaname> t> `ec
07:20:22 <Madoka-Kaname> Um.
07:20:53 <Sgeo|web> Does fungot ignore HackEgo?
07:20:54 <fungot> Sgeo|web: big. out dunghill: dar'st thou braue a nobleman? hub. why know you not
07:21:11 <Ngevd> All the bots ignore eachother
07:21:14 <Sgeo|web> `echo ^ul (Nope)S
07:21:16 <HackEgo> ​^ul (Nope)S
07:21:33 <Ngevd> :P
07:21:33 <Sgeo|web> Ngevd: HackEgo didn't seem to ignore fungot
07:21:35 <fungot> Sgeo|web: aut. here's another ballad of a fish that appeared upon the coast, and, from the firmament: thy sunne sets weeping in the lowly west, witnessing stormes to come, with words more sweet, and cunning hand laid on: lady, lady
07:21:58 <Madoka-Kaname> ^ul (<CTCP>PING<CTCP>)S
07:21:58 <fungot> <CTCP>PING<CTCP>
07:22:14 <Sgeo|web> Seriously, that's, um
07:22:18 -!- Sgeo has quit (Ping timeout: 240 seconds).
07:22:24 <Madoka-Kaname> ^ul (<CTCP>ACTION hugs Sgeo<CTCP>)S
07:22:24 * fungot hugs Sgeo
07:22:34 <Sgeo|web> ^ul (ACTION hugs Madoka-Kaname)S
07:22:35 <fungot> ACTION hugs Madoka-Kaname
07:22:49 <Sgeo|web> Oh, it's using that weird byte thingy?
07:22:51 <Madoka-Kaname> Yep
07:22:55 <zzo38> Well, such uses of the command you should use with rarely. But it is sometimes of use.
07:23:43 -!- Sgeo has joined.
07:23:49 <zzo38> Count the seconds it takes to stop thinking about this sentence.
07:24:12 -!- ive has quit (Quit: leaving).
07:25:51 <Ngevd> Three
07:26:13 <Madoka-Kaname> 0
07:26:16 <zzo38> Are you sure?
07:26:29 <Ngevd> Pretty sure
07:26:37 <Ngevd> Too busy thinking about ars amatoria
07:26:56 <zzo38> OK
07:28:18 -!- Sgeo has quit (Ping timeout: 240 seconds).
07:28:53 -!- Sgeo has joined.
07:33:58 <zzo38> Have you ever pulsed a telephone manually?
07:34:03 <Ngevd> No
07:34:05 <Ngevd> Never
07:35:16 <zzo38> Have you ever built a telephone?
07:35:21 <Ngevd> No
07:35:23 <Ngevd> Never
07:36:16 <zzo38> I have never built a telephone (but would like to, at some time); I have, however, pulsed a telephone manually, even recently.
07:38:42 -!- Sgeo has quit (Ping timeout: 240 seconds).
07:38:51 <Sgeo|web> Fuck Sgeo
07:38:59 <Sgeo|web> erm, fuck the connection that causes Sgeo to do that
07:39:18 -!- Sgeo has joined.
07:39:58 <Ngevd> All trees are planar graphs!
07:41:11 <zzo38> Ngevd: Yes, I believe so.
07:55:49 <CakeProphet> all of the dwarftherapists I try to use seem to be broken
07:56:37 <Ngevd> Same
07:57:28 <Sgeo|web> There's a DF IRC channel somewhere
07:57:39 <Ngevd> #esoteric-minecraft
08:01:51 <zzo38> I still have not figured out how to fix gopher movie time service
08:02:18 -!- Sgeo has quit (Ping timeout: 240 seconds).
08:03:11 -!- Sgeo has joined.
08:05:03 -!- Slereah has joined.
08:06:05 -!- Slereah_ has quit (Ping timeout: 256 seconds).
08:08:33 -!- zzo38 has quit (Remote host closed the connection).
08:10:18 -!- Sgeo has quit (Ping timeout: 240 seconds).
08:11:29 -!- Sgeo has joined.
08:19:38 -!- monqy has quit (Quit: hello).
08:20:18 -!- Sgeo has quit (Ping timeout: 240 seconds).
08:20:42 -!- Sgeo has joined.
08:26:18 -!- Sgeo has quit (Ping timeout: 240 seconds).
08:26:45 -!- Sgeo has joined.
08:29:50 <pikhq> "Just a quick game", he said at 1.
08:29:56 <pikhq> And pulled out a fucking board-wipe deck.
08:32:42 -!- Sgeo has quit (Ping timeout: 240 seconds).
08:33:33 -!- Sgeo has joined.
08:38:53 <fizzie> ^ignore
08:38:53 <fungot> ^(EgoBot|HackEgo|toBogE|Sparkbot|optbot|lambdabot)!
08:39:03 <fizzie> That's who he doesn't care about.
08:39:20 -!- copumpkin has quit (Ping timeout: 258 seconds).
08:39:46 -!- copumpkin has joined.
08:40:34 <CakeProphet> how cruel
08:41:42 <Madoka-Kaname> Wait.
08:41:58 <Madoka-Kaname> Is that a underload expression?
08:41:58 <Madoka-Kaname> o.o
08:42:21 <pikhq> No, but it is the result of Befunge code.
08:42:31 <pikhq> As fungot is written in Befunge.
08:42:32 <fungot> pikhq: servant. my lord-- here shrowd till the dregges of the storme be past. this is the poyson of their hearts: god keepe you from them and from such false friends! prince. comes forward peace, ye fnord walls, where we did attend a suit, which was your shame, by this carriage. the hearts of kings, edwards vnhappy sonnes, do bid thee flourish.
08:42:42 -!- Sgeo has quit (Ping timeout: 240 seconds).
08:42:51 <fizzie> It's a regex.
08:43:31 <fizzie> Matched against the nick!user@host prefix, that's why the ! at the end.
08:43:56 -!- Sgeo has joined.
08:46:17 <CakeProphet> fizzie: so then do you interpret the regex via Befunge or offload it?
08:46:52 <fizzie> There's an app^Wfingerprint for that.
08:47:16 <fizzie> The REXP one, I think.
08:47:22 <fizzie> ^source
08:47:22 <fungot> http://git.zem.fi/fungot/blob/HEAD:/fungot.b98
08:47:27 -!- nooga has quit (Ping timeout: 276 seconds).
08:49:12 <fizzie> Yes. (See lines 26 and somewhere around 110.)
08:50:00 <Madoka-Kaname> o.o
08:50:03 <Madoka-Kaname> You're kidding me~
08:50:36 <fizzie> What?
08:50:42 <Madoka-Kaname> That's...
08:50:43 -!- Sgeo has quit (Ping timeout: 240 seconds).
08:50:49 <Madoka-Kaname> An obfuscated bot =p
08:51:06 -!- Sgeo has joined.
08:51:16 <Ngevd> There's a few of them
08:51:33 <Ngevd> I'm going to write one in Piet as soon as I've figured out how
08:51:39 <fizzie> What. It's the cleanest-written Funge-98 irc-bot I've seen.
08:51:54 <fizzie> Admittedly only by virtue of being the only one I've seen.
08:53:06 <fizzie> Okay, the block on lines 125-169 which does the babbling is not the most structured.
08:53:49 <fizzie> But the underload interp at 310-347 is very clear.
08:54:56 <Madoka-Kaname> So.
08:55:03 <fizzie> The bf one at 351-372 (bytecode compilation) and 294-306 (execution) maybe a bit less so, but the execution bit isn't bad.
08:55:15 <Madoka-Kaname> You're implementing BF and underload then using them as the main languages
08:55:35 <fizzie> Well, no, not much of the botting stuff is done using those.
08:55:39 <fizzie> Just user code.
08:55:48 <fizzie> ^show
08:55:48 <fungot> echo reverb rev rot13 rev2 fib wc ul cho choo pow2 source help hw srmlebac uenlsbcmra scramble unscramble asc ord prefixes tmp test celebrate wiki chr
08:55:50 <fizzie> Those.
08:56:15 <fizzie> ^show celebrate
08:56:15 <fungot> ( \o| |o| |o/ \m/ \m/ |o/ \o/ \o| \m/ \m/ \o| |o| |o/)S
08:56:15 <myndzi> | | | `\o/´ | | | `\o/´ | | |
08:56:15 <myndzi> /| |\ |\ | /'\ >\ >\ | |\ /| >\
08:56:16 <myndzi> /`\ (_|¯´¯|_)
08:56:16 <myndzi> (_| |_)
08:56:21 <fizzie> Rrrright.
08:57:02 <pagnol> hi
08:58:30 <fizzie> (The 'ul' on that list is an Underload interp in bf; it got obsoleted when native support was added. It was so slow it just barely managed (foo)S within the cycle limit.)
08:59:07 <Madoka-Kaname> ^celebrate
08:59:08 <fungot> \o| |o| |o/ \m/ \m/ |o/ \o/ \o| \m/ \m/ \o| |o| |o/
08:59:08 <myndzi> | | | `\o/´ | | | `\o/´ | | |
08:59:08 <myndzi> /'\ /| /< | >\ /< >\ | >\ >\ >\
08:59:09 <myndzi> /`\ (_|¯´\
08:59:09 <myndzi> (_| |_) |_)
09:02:03 <Sgeo|web> newtype Nomic a = Nomic (State (Nomic a) a)
09:02:18 -!- Sgeo has quit (Ping timeout: 240 seconds).
09:02:59 -!- Sgeo has joined.
09:05:03 <CakeProphet> so I am foolishly building a water system, hoping that I understand pressure well enough to not flood my fort.
09:05:28 <Madoka-Kaname> CakeProphet, pumps destroy pressure.
09:05:42 <Madoka-Kaname> Diagonal spaces, pressure cannot go through
09:05:57 <CakeProphet> right
09:06:07 <Madoka-Kaname> Well.
09:06:10 <CakeProphet> I just set up a waterwheel so I could try a pump. however
09:06:11 <Madoka-Kaname> I think pumps create some too.
09:06:15 <CakeProphet> in winter
09:06:21 <CakeProphet> the water wheel will stop.
09:06:30 <CakeProphet> but I also have a cistern
09:06:43 <CakeProphet> so, maybe the cistern would flood my fort?
09:07:54 -!- derrik has joined.
09:07:55 <CakeProphet> not even sure if my cistern works correctly.
09:07:58 <CakeProphet> I guess I'll find out
09:07:59 <CakeProphet> but first
09:08:10 <CakeProphet> I need to make a drain valve.
09:08:32 <CakeProphet> so I can test stuff, shut it off, and remove the excess water.
09:09:37 <CakeProphet> well...
09:09:46 <CakeProphet> the drain should really be at the bottom...
09:09:58 <CakeProphet> these things are difficult to plan. :P
09:11:39 <CakeProphet> multiple drainage valves are fine.
09:12:06 <CakeProphet> kind of time consuming even for 3 legendary miners though.
09:16:43 -!- Sgeo has quit (Ping timeout: 240 seconds).
09:17:17 -!- Sgeo has joined.
09:19:49 -!- Sgeo has left.
09:39:35 <Ngevd> Does anyone ever use undead other than zombies in ZOMBIE programming?
09:44:34 <Ngevd> Vampires or Djinn could make decent rngs
09:46:04 <pagnol> Which obscure branch of computer science is the most interesting?
09:46:36 <Ngevd> Genetic algorithms in the context of stock markets
09:46:43 <Ngevd> That's also the most profitable
09:49:42 <pagnol> or in the context of biology, though I have no clue about the latter
09:50:46 <pagnol> any other suggestions?
09:53:48 <pagnol> I'm a student of computer science and the lectures I am obliged to attend at the moment deal with the most common subjects (introductory stuff like automata, linear algebra etc.), so I would like to investigate some not so common topic
09:54:07 <Ngevd> Well, I'm not much help there
09:54:16 <pagnol> Why?
09:54:29 <Ngevd> Because I'm doing the first year of A-levels
09:54:39 <Ngevd> Maths, Further Maths, Ancient History, and Latin
09:54:48 <Ngevd> And have barely any Computer Science background
09:54:52 -!- augur has quit (Remote host closed the connection).
09:54:55 <Ngevd> Really just what I've picked up here
09:55:22 -!- augur has joined.
09:56:13 <pagnol> But you do invent languages?
09:56:20 <Ngevd> Yeah
09:56:22 <pagnol> That I remember
09:56:22 <Ngevd> Not very good ones
09:56:50 <pagnol> Have you published the specifications or provided an interpreter?
09:57:01 <Ngevd> Just on the wiki
09:57:16 <pagnol> How are they called? I'd like to have a look
09:57:32 <Ngevd> Brook, Constantinople, Luigi, MIBBLLII, Numberwang, and Nandypants
10:01:26 -!- augur has quit (Remote host closed the connection).
10:01:33 -!- augur has joined.
10:01:53 <pagnol> Luigi sounds interesting
10:02:38 <Ngevd> One of the few esolangs to be demonstrated turing-complete by showing that arbitrary turing machines can be translated into it
10:04:45 -!- Jafet has joined.
10:08:06 <fizzie> I would like the "proof" on the page a bit more if you'd have translated one of the universal ones.
10:08:21 <Ngevd> Pass me a universal one, and I'll do it
10:09:46 -!- pagnol has quit.
10:09:48 <fizzie> http://mathworld.wolfram.com/UniversalTuringMachine.html if you can read their I-think-it's-really-wonky graphical notation.
10:15:54 -!- hagb4rd has quit (Ping timeout: 240 seconds).
10:18:16 -!- hagb4rd has joined.
10:30:16 <Ngevd> That better, fizzie?
10:44:56 -!- derrik has quit (Quit: disappear).
10:45:23 -!- copumpkin has quit (Ping timeout: 252 seconds).
10:45:48 -!- copumpkin has joined.
10:54:41 -!- atehwa_ has changed nick to atehwa.
11:00:17 -!- GreaseMonkey has quit (Quit: The Other Game).
11:12:09 -!- Ngevd has quit (Ping timeout: 260 seconds).
11:18:55 -!- Ngevd has joined.
11:24:28 <CakeProphet> > " " ++ (unwords . map (\x -> "http://dl.dropbox.com/u/16495819/"++show x++".png") $ [1..5]) ++ " "
11:24:30 <lambdabot> " http://dl.dropbox.com/u/16495819/1.png http://dl.dropbox.com/u/16495819/2...
11:24:34 <CakeProphet> ...aww
11:39:45 <CakeProphet> but anyways I have a rudimentary water system now, with a cistern so I can store water in the freezing winter.
11:39:53 <Ngevd> Hurah!
11:40:02 <Ngevd> s/r/rr/
11:40:12 <CakeProphet> I might also be able to turn it into a fishing room if I put bridges over it perhaps?
11:40:23 <CakeProphet> I've been having trouble catching fish for some reason.
11:40:41 <CakeProphet> I think it's because all of the water supplies are a z-level below the land adjacent to it.
11:40:50 <Ngevd> Dig a channel
11:41:00 <CakeProphet> ah
11:41:07 <CakeProphet> well, fishing room sounds badass too so I'll do that. :P
11:41:13 <Ngevd> :d
11:41:22 <CakeProphet> also the cistern should catch some fish during winter.
11:41:28 <CakeProphet> so I can FISH DURING WINTER BAHAHAHAHAHA
11:42:29 <Ngevd> FIIIIIISH!!!
11:43:14 <CakeProphet> so....
11:43:27 <CakeProphet> any diagonal flow will completely negate all pressure always?
11:43:35 <Ngevd> I don't know
11:43:42 <Ngevd> I'm awful at water management in DF
11:43:53 <CakeProphet> I may just set up one of those fancy perpetual motion water wheels and use a pump.
11:44:08 <CakeProphet> sounds cheap though
11:44:33 <CakeProphet> but otherwise my water wheel will die in the winter. I guess I should have connected it to the cistern.
11:45:00 <CakeProphet> er, well, the cistern doesn't flow.
11:45:13 <CakeProphet> so yeah, perpetual motion machine.
11:45:15 <CakeProphet> sounds good.
11:45:41 <CakeProphet> hmmmm, well
11:45:49 <CakeProphet> basically I want to set up a well in my hospital
11:46:00 <CakeProphet> so I can just install a floodgate to mitigate disaster.
11:46:14 <CakeProphet> er, just a door actually.
11:47:31 <CakeProphet> actually, I don't even really get what makes a floodgate different from a door.
11:47:47 <CakeProphet> except that a door can be controlled my dwarves and floodgates much be mechanized.
11:47:50 <CakeProphet> *must
11:47:54 <CakeProphet> *by
11:49:36 <CakeProphet> ooooh, maybe if I do some fancy pipework I can put a badass waterfall in my dining hall.
11:50:27 <CakeProphet> but then drainage /not flooding everything / resizing rooms and rerouting pipes becomes very difficult
11:57:53 <CakeProphet> I don't really understand how people sanely tunnel into magma/water sources.
11:58:01 <CakeProphet> I did it when the river was frozen
11:58:31 <Ngevd> The weather's acting up
11:58:39 <Ngevd> It's summery
11:58:49 <CakeProphet> oh yeah I've noticed that too
11:58:50 <CakeProphet> only some days
11:59:07 <Ngevd> There was frost not two days ago
12:01:01 <CakeProphet> also my embark site has a volcano I believe.
12:01:49 <CakeProphet> so I have an easy supply of magma to, say, construct a moat around my impenetrable fortress wall with archer towers. :)
12:03:13 <CakeProphet> I'll, uh, focus on that later. :P
12:10:53 -!- Ngevd has quit (Ping timeout: 256 seconds).
12:18:25 <CakeProphet> there should be some kind of structure that converts magma flow into power.
12:18:38 <CakeProphet> similar to a water wheel but with much greater (possibly infinite?) power gains.
12:19:09 <CakeProphet> this would allow you to power a magma pump stack with the magma itself.
12:19:52 -!- bitdome has joined.
12:20:02 -!- bitdome has quit (Client Quit).
12:25:13 -!- sllide has joined.
12:30:52 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
12:37:51 -!- Vorpal has joined.
12:41:03 -!- MSleep has changed nick to MDude.
12:56:15 -!- ais523 has joined.
13:17:12 -!- sebbu2 has joined.
13:17:12 -!- sebbu2 has quit (Changing host).
13:17:12 -!- sebbu2 has joined.
13:18:19 -!- sebbu has quit (Ping timeout: 240 seconds).
13:41:05 -!- nooga has joined.
14:15:36 -!- Patashu has quit (Ping timeout: 252 seconds).
14:16:50 -!- sebbu2 has changed nick to sebbu.
14:51:04 -!- tiffany has joined.
15:07:12 -!- derrik has joined.
15:41:29 -!- mtve has quit (Ping timeout: 260 seconds).
16:05:53 -!- derrik has quit (Quit: gone).
16:06:46 -!- monqy has joined.
16:17:44 -!- elliott has joined.
16:32:08 -!- Ngevd has joined.
16:32:37 <Ngevd> Hello!
16:40:05 <ais523> hi
17:04:31 <elliott> http://esoteric.voxelperfect.net/w/index.php?title=Luigi&curid=4094&diff=24982&oldid=24836
17:04:39 <elliott> Ngevd: that doesn't prove it TC
17:04:41 <elliott> ask ais523 if you want to know why :P
17:04:55 <elliott> (ais523's proof requires an infinite initial state)
17:05:05 <ais523> elliott: read it again
17:05:11 <ais523> it's not simulating the 3,2 machine at all
17:05:20 <elliott> 2,3, surely
17:05:21 <ais523> it's giving a 3,2 busy beaver - a different machine - as an example
17:05:25 <elliott> ais523: umm
17:05:27 <elliott> ais523: I linked to a diff
17:05:28 <ais523> the order of the numbers isn't standardised
17:05:31 <elliott> don't comment on it without reading the diff
17:05:33 <elliott> :p
17:05:35 <ais523> oh right
17:05:41 <ais523> it's such a wide diff only half fit on the screen
17:05:49 <ais523> the original proof is better#
17:06:02 <ais523> however, there are turing machines which are TC with a finitely initialised initial tape
17:06:13 <ais523> the wolfram machine isn't one of them, but they do exist
17:06:49 <elliott> yep
17:09:40 <ais523> hilariously, Wolfram claimed a 2,5 machine universal in ANKOS, because it simulated rule 101
17:09:54 <ais523> but it had no way to simulate rule 101 with an infinite tape, which is needed for the universality proof
17:09:57 <elliott> heh
17:10:02 <ais523> so it was wrong
17:10:08 <ais523> and I got to tell him this over the phone
17:10:24 <ais523> (I fixed the universality proof of that machine, btw, but haven't posted the fixed proof anywhere)
17:15:11 -!- ive has joined.
17:34:09 <Ngevd> Hang on
17:34:28 <Ngevd> Is there a standard notation for turing machines including initial tape lurking around anywhere?
17:35:05 <ais523> not that I know
17:35:16 <elliott> Ngevd: set theory? :P
17:35:45 <Ngevd> Because I could probably make a turing machine to Luigi translator
17:37:02 <Ngevd> Pretty easily, actually
17:40:39 -!- derrik has joined.
17:47:34 -!- zzo38 has joined.
17:49:48 <zzo38> "Ganto's theorem" follows directly from law of excluded middle: ganto :: (Classical p, Classical q) => (p -> q, Not p -> q) -> q; ganto (x, y) = either x y lem;
17:51:35 <zzo38> (Actually, Classical only has to apply to p, not q, since law of excluded middle is only used with p)
17:51:47 -!- mtve has joined.
17:53:05 -!- augur_ has joined.
17:53:06 -!- augur has quit (Read error: Connection reset by peer).
17:55:23 -!- Ngevd has quit (Quit: Leaving).
17:57:36 -!- nooga has quit (Ping timeout: 260 seconds).
18:02:50 -!- Phantom_Hoover has joined.
18:03:20 <Phantom_Hoover> How goes the invasion?
18:03:26 <Madoka-Kaname> Invasion what invasion
18:03:38 <Phantom_Hoover> See topic.
18:03:44 <ais523> Phantom_Hoover: temporarily aborted, I think
18:03:47 <ais523> we want to clean up the mess first
18:03:56 <Phantom_Hoover> ais523, pah!
18:04:04 <ais523> actually /playing/ BlogNomic is encouraged, and even recommended
18:04:41 <Phantom_Hoover> Worst invasion.
18:06:19 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net).
18:09:32 -!- Vorpal has joined.
18:10:36 <Vorpal> fuck you X11...
18:10:42 <Vorpal> (crashed)
18:27:51 <Sgeo|web> We actually talked invasion in here?
18:28:01 <ais523> no
18:28:04 <ais523> just in the topic
18:28:22 <Sgeo|web> Topic's logged too
18:28:34 <Sgeo|web> iiuc
18:28:54 <Sgeo|web> (Because I totally should be talking about security)
18:29:05 <Vorpal> what does that 12345678^&! in the topic mean?
18:29:05 <elliott> you forgot the agora-business archives
18:29:10 <Vorpal> looks like befunge code to me
18:29:16 <elliott> yes it's befunge code.
18:29:18 <Vorpal> except it makes no sense as such
18:29:30 <Vorpal> elliott, well but what else is it?
18:29:32 <zzo38> Now I made a shorter proof of Peirce's law
18:29:37 <elliott> Vorpal: befunge code
18:29:39 <elliott> also
18:29:40 <elliott> trefunge code
18:29:45 <zzo38> By eliminating one step
18:29:45 <Sgeo|web> Vorpal: elliott's numrow
18:29:50 <Vorpal> Sgeo|web, oh
18:29:52 <Sgeo|web> Probably
18:29:56 <Vorpal> still not fixed?
18:29:56 <elliott> also unefunge code
18:30:01 <Vorpal> elliott, not unefunge
18:30:05 <elliott> yes unefunge
18:30:05 <Vorpal> ^ is not in unefunge
18:30:11 <elliott> it is it just reflects
18:30:15 <Vorpal> well yeah
18:30:20 <elliott> perfectly ok to reflect
18:30:27 <Vorpal> fair enough
18:32:53 <Deewiant> By that argument everything is *funge
18:33:25 <elliott> Naturally
18:34:04 <Sgeo|web> elliott: are you 9 and 0 keys working or something?
18:34:06 <elliott> Deewiant: echo 'echo "$1: Befunge code"' >/usr/bin/file
18:34:10 <elliott> Yep
18:34:18 <Deewiant> Yep
18:35:31 <Vorpal> elliott, you forgot #!/bin/sh in that
18:35:34 <Vorpal> or it won't work
18:35:38 <elliott> Vorpal: Wrong
18:35:43 <Vorpal> elliott, oh?
18:35:45 <elliott> I forgot chmod +x though
18:35:58 <elliott> elliott@katia:~$ echo 'echo "$1: Befunge code"' >file
18:35:58 <elliott> elliott@katia:~$ chmod +x file
18:35:58 <elliott> elliott@katia:~$ ./file file
18:35:58 <elliott> file: Befunge code
18:35:58 <elliott> elliott@katia:~$
18:36:12 <Vorpal> how comes that work?
18:36:15 <Vorpal> it makes no sense
18:36:21 <Vorpal> and is that portable by POSIX?
18:36:46 * elliott lets Vorpal figure out how the shell works.
18:37:03 <olsner> it is a mystery!
18:37:07 <Vorpal> elliott, hm maybe it won't work when executed by exec()?
18:37:34 <shachaf> elliott: How's your compiler going?
18:37:39 <Vorpal> elliott, yeah executing it under strace for example fails
18:37:46 <elliott> shachaf: I've been busy subverting democracy.
18:37:53 <shachaf> I met edwardk yesterday and he told me all about the type checker that he's writing to procrastinate on making slides for his trifecta talk.
18:38:04 <Vorpal> elliott, so clearly it won't work for a /usr/bin/file, since it can only be executed from a shell
18:40:19 -!- derrik has quit (Quit: nites).
18:40:37 <pikhq> Vorpal: It *should* work just fine, actually.
18:41:02 <Vorpal> pikhq, hm
18:41:18 <pikhq> If it's not a valid executable, POSIX mandates that exec shall pass the program to the shell.
18:41:26 <pikhq> It does not mandate #!.
18:41:31 <Vorpal> heh, really?
18:41:37 <pikhq> #! is not POSIX.
18:41:41 <pikhq> :)
18:41:42 <Vorpal> how strange
18:41:52 <Vorpal> pikhq, is it SuS though?
18:42:00 <Vorpal> if not then SuS sucks badly
18:42:02 <pikhq> Yes.
18:42:08 <pikhq> The "invalid executables go to the shell" is at least historical UNIX behavior.
18:42:12 <pikhq> Erm, wait.
18:42:15 <pikhq> No, #! is not SuS.
18:42:19 <Vorpal> wtf
18:42:36 <Vorpal> Where is SuS defined these days btw? I haven't seen a SuS for POSIX 2008 yet
18:45:03 <pikhq> SuS is this: http://pubs.opengroup.org/onlinepubs/9699919799/toc.htm
18:45:16 <pikhq> With XSI and a few other POSIX-specified options mandated.
18:45:38 <pikhq> (FSC, TSA, TSH, TSS, UP, and XSI)
18:45:59 <zzo38> I think oerjan should correct the reference to the Astrolog program that he has on Agora Nomic's [First Speaker's message event's] Horoscope
18:46:40 <Vorpal> pikhq, so the POSIX.1-2008 spec basically contains SuS?
18:47:16 <pikhq> Yes.
18:47:30 <elliott> zzo38: oerjan is not online
18:47:44 -!- SgeoN1 has quit (Read error: Connection reset by peer).
18:47:54 <elliott> Vorpal: posix has always included sus since 2001
18:48:03 -!- SgeoN1 has joined.
18:48:07 <Vorpal> hm okay
18:48:53 -!- nooga has joined.
18:52:41 -!- augur_ has quit (Read error: Connection reset by peer).
18:53:01 -!- augur has joined.
18:57:01 <Phantom_Hoover> Wow, r/AskScience modding has become aggressive as hell.
18:57:12 <elliott> howso
19:03:50 <Phantom_Hoover> elliott, go to front page. Look at thread. Note how half the comments in thread are deleted.
19:04:02 <elliott> not afaict
19:04:07 <elliott> anyway, they're a default reddit now
19:04:08 <Deewiant> It's no more aggressive
19:04:11 <elliott> it just means more people are making stupid comments
19:04:14 <Deewiant> Yep
19:04:15 <elliott> rather than more comments being deleted
19:04:18 <Phantom_Hoover> Same difference.
19:04:21 <elliott> no it's not
19:04:30 <elliott> if your policy is to delete everything with an objective stupidity rating of at least N
19:04:40 <elliott> and being a default reddit causes a thousand times more comments that satisfy that
19:04:42 <Phantom_Hoover> Same. Difference.
19:04:47 <elliott> your moderation hasn't gotten any more aggressive at all
19:04:52 <elliott> no it isn't, I just literally explained now it isn't
19:05:00 <Phantom_Hoover> Same.
19:05:03 <Phantom_Hoover> Difference.
19:05:07 <zzo38> elliott: Then tell oerjan when they are online.
19:05:31 <elliott> zzo38: you do it; there's ?tell
19:05:43 <fizzie> fungot: Tell oerjan whatever it was that you were supposed to, when e's online.
19:05:44 <fungot> fizzie: rosa. why she hath a face of her owne distresse, or like to men prowd of destruction, defie vs to our shape, if this you purpose as ye speak, diana's temple is not distant far, where you shold but hunt with modest warrant
19:05:47 <elliott> Phantom_Hoover: are you deliberately trying to be stubborn in the face of anyone explaining why you're wrong
19:06:03 <elliott> because nobody really cares if you think the policy is more aggressive if you're just going to say same difference whenever anyone says it's not
19:06:16 <Phantom_Hoover> No, I'm in a room which is about 30° too hot and I'm trying to watch Spaced.
19:12:17 <nooga> meh
19:12:44 * nooga just finished watching whole EtosLab channel on yt
19:15:02 <Vorpal> <Phantom_Hoover> Same. <Phantom_Hoover> Difference. <-- how? elliott's argument makes perfect sense
19:15:39 <Phantom_Hoover> Except in the sense that it failed to account for equality of differences.
19:15:49 <Phantom_Hoover> nooga, is there anything particularly good.
19:15:56 <Vorpal> Phantom_Hoover, because there isn't any equality of differences
19:16:04 <Phantom_Hoover> RACIST
19:16:18 <Vorpal> that doesn't even make any sense
19:16:23 <zzo38> One thing I might make a METAFONT program for various astrological/astronomical symbols, and some additional symbols such as the phase of the moon (for printing calendars); symbols for solar system objects, including variant glyphs (like Astrolog supports), zodiac, fictitious objects, aspects, Ophiucus, etc
19:16:24 <nooga> Phantom_Hoover: he does some nice contraptions
19:16:30 <nooga> like EMP
19:16:45 <Phantom_Hoover> Huh, how does that work?
19:16:48 <Vorpal> nooga, got a link to any good video?
19:18:19 <nooga> http://www.youtube.com/watch?v=kKJA2suBc7s&feature=results_video&playnext=1&list=PLFD1682F2801E7ADF
19:18:20 <Vorpal> nooga, I don't even get any relevant results googling for "EtosLab", just some facebook stuff
19:18:27 <zzo38> (So it would include some that Astrolog does not have, such as Ophiucus, and the descending lunar node, and phase of moon symbols (like those used on calendars). Am I missing anything?)
19:18:28 <nooga> ethos*
19:18:36 <Vorpal> nooga, oh right, I copy pasted what you said
19:18:41 <nooga> typo
19:18:45 <Phantom_Hoover> *Etho's.
19:19:19 <Vorpal> oh mc vidoes
19:20:00 * elliott hoped nooga meant real EMP.
19:20:09 <elliott> "And now to try it on my city."
19:20:19 <Phantom_Hoover> I was thinking it'd disable all redstone circuitry.
19:20:26 <Vorpal> XD
19:20:30 <nooga> also this http://www.youtube.com/watch?v=fasmotjs0NA&feature=BFa&list=UUFKDEp9si4RmHFWJW1vYsMA&lf=plcp
19:20:32 <Phantom_Hoover> I'd fit one on the ROU.
19:20:44 <nooga> when he ties to beat Vechs' adventure maps
19:21:32 <nooga> this guy is quite smart and definately does unique stuff based on his own research
19:25:58 <nooga> btw
19:26:04 <nooga> anyone tried Terraria? :D
19:28:53 <Vorpal> nooga, yes
19:29:00 <Vorpal> nooga, kind of different from mc really
19:29:26 <Vorpal> while it might look like a 2D minecraft on the surface it is actually very different in gameplay
19:29:56 <nooga> i tried to watch some LPs but it looks soo boring
19:30:08 <nooga> they stay on the surface all the time and fight slimes
19:30:08 <Phantom_Hoover> Hmm, I wonder if you could disable redstone circuits remotely.
19:30:12 <Phantom_Hoover> Without TNT or anything.
19:30:45 <nooga> maybe pistons?
19:30:53 <nooga> push blocks with redstone wiring
19:32:20 <Phantom_Hoover> No, completely remotely.
19:32:31 <Phantom_Hoover> With no access to the target.
19:32:45 <Vorpal> impossible unless there is a bug in the server
19:33:11 -!- GreaseMonkey has joined.
19:33:11 -!- GreaseMonkey has quit (Changing host).
19:33:11 -!- GreaseMonkey has joined.
19:33:23 <Phantom_Hoover> Well, if torch burnouts were global rather than local...
19:33:46 <GreaseMonkey> D:
19:34:17 <Vorpal> Phantom_Hoover, ouch
19:34:29 <Vorpal> Phantom_Hoover, thankfully it isn't
19:36:22 <nooga> i like the new terrain generator
19:36:43 <Phantom_Hoover> I don't.
19:36:54 <nooga> why?
19:37:04 <Phantom_Hoover> It's too artificial.
19:37:47 <pikhq> I like certain of the concepts *in* the new terrain generator.
19:37:55 <pikhq> Most obviously, larger biomes.
19:38:09 <nooga> ravines are a bit too common
19:38:21 <Phantom_Hoover> Look at the biome interfaces.
19:38:22 <pikhq> But, yeah, certain other things make it seem much *less* real.
19:38:31 <pikhq> Such as, yes, biome interfaces.
19:38:42 <nooga> biome interwhat?
19:38:45 <Phantom_Hoover> They're extremely sharp; the Perlin moisture/temperature stuff has clearly been altered.
19:38:51 <nooga> ah
19:39:16 <Vorpal> yeah, the new stuff is annoying
19:39:25 <nooga> but hey
19:39:36 <Vorpal> I'm still on 1.7.3, partly because of that but mostly because I use the technic pack
19:39:56 <nooga> how realistic can you get in a game in which everything is made from huge cubes
19:40:01 <nooga> who cares about realism
19:40:09 <Vorpal> <nooga> they stay on the surface all the time and fight slimes <-- try watching the TotalBiscuit videos of it. They are funny
19:40:18 <nooga> ah, the brit?
19:40:35 <Phantom_Hoover> It's not realism I care about; it's the fact that it's blatantly artificial.
19:41:02 <nooga> but amusing
19:41:07 <Vorpal> nooga, yeah http://www.youtube.com/watch?v=lypSNqYE5XY for example
19:41:11 <Vorpal> nooga, but yeah.
19:42:01 <Phantom_Hoover> nooga, it doesn't amuse me when it's what you'd expect from someone with WorldEdit.
19:43:42 <nooga> Phantom_Hoover: example?
19:43:54 <Phantom_Hoover> Look at the new mountains.
19:44:05 <Phantom_Hoover> The sides are too... smooth.
19:44:33 <pikhq> Also, recently Minecraft has been making some diversions from the aesthetic.
19:44:46 <pikhq> Chests that aren't 1 m^3 and open...
19:44:50 <pikhq> Square moon and sun...
19:45:01 <Vorpal> pikhq, the square moon and sun are still there, no?
19:45:07 <Vorpal> anyway it is texture pack dependent
19:45:11 <Phantom_Hoover> Vorpal, not in 1.9pre3.
19:45:14 <Phantom_Hoover> *4
19:45:14 <Vorpal> Phantom_Hoover, ouch
19:45:31 <Vorpal> pikhq, btw I don't have anything against opening chest. The smaller chest though...
19:45:55 <pikhq> *Especially* since the animation seems to have made the break animation not work.
19:46:09 <Vorpal> pikhq, ouch?
19:46:28 <pikhq> Y'know how blocks show cracks as you break them?
19:46:31 <pikhq> Chests don't.
19:47:07 <Vorpal> ouch
19:50:53 <tiffany> I liked the old chest size
19:50:55 <Vorpal> what? My USB 3.0 controller is using IRQ 4294967277?
19:51:00 <Vorpal> does that even exist!?
19:51:14 <tiffany> ._.
19:51:30 <pikhq> No, there's hardly any IRQ lines.
19:51:47 <Vorpal> pikhq, maybe MSI?
19:51:53 <pikhq> Grand total of 15 IRQs.
19:51:58 <tiffany> um..
19:51:59 <pikhq> Erm, 16.
19:52:03 <tiffany> my GPU is- oh
19:52:11 <Vorpal> pikhq, actually there are plenty of things up to IRQ 23 here
19:52:13 <tiffany> well, when I had ubuntu my GPU was IRQ19
19:52:18 <Vorpal> and then the big jump
19:52:52 <Vorpal> and on my laptop I have up to IRQ 49: http://sprunge.us/PGGT
19:53:02 <Vorpal> from ls /proc/irq/
19:53:38 <tiffany> $ ls /proc/irq
19:53:38 <tiffany> 0 1 10 11 12 13 14 15 16 17 18 19 2 20 23 3 4 43 44 5 6 7 8 9 default_smp_affinity
19:53:53 <Vorpal> pikhq, so there might be a grand total of 16 historically but that no longer seems to be the case
19:54:16 -!- oerjan has joined.
19:54:16 <Vorpal> nevertheless, that IRQ 4294967277 to IRQ 4294967293 that my USB 3 controller is using... wtf
19:54:27 <Vorpal> sorry, up to 4294967292
19:54:48 <Vorpal> 4294967293 is used by my intel gbit ethernet and 4294967294 by my GPU
19:55:02 <tiffany> .-.
19:55:08 <pikhq> Anything beyond that is straight-up lies.
19:55:17 <pikhq> The IRQ lines are *physical lines*.
19:55:30 <Vorpal> pikhq, you forgot about message signalled interrupts
19:55:45 <pikhq> Admittedly, modern x86 is a habitual liar.
19:55:56 <Vorpal> https://en.wikipedia.org/wiki/Message_Signaled_Interrupts
19:56:34 <oerjan> <zzo38> I think oerjan should correct the reference to the Astrolog program that he has on Agora Nomic's [First Speaker's message event's] Horoscope
19:56:34 <lambdabot> oerjan: You have 2 new messages. '/msg lambdabot @messages' to read them.
19:57:25 <oerjan> well i would, but i have this strange nostalgic feeling about files with pre-millennium date stamps
19:58:13 <oerjan> (that means no.)
19:58:15 <elliott> You can fake datestamps :)
19:58:24 <oerjan> BUT THIS ONE IS REAL
19:59:16 <Vorpal> pikhq, MSI allows more than 16 interrupts. Because they are no longer physical lines
19:59:31 <oerjan> wait argh
19:59:46 <zzo38> oerjan: O, OK, so that is why. Then put a separate file on the main page, next to the link for that horoscope, a note about the link for Astrolog being invalid
20:00:05 <elliott> oerjan: see, he has solutions to all your problems :)
20:00:25 <oerjan> zzo38: actually my protest is void
20:00:36 <oerjan> i just realized i edited the file back in 2007 :P
20:00:48 <zzo38> oerjan: OK.
20:02:10 <oerjan> actually i think i'll make a new parenthetical remark, and let the main text stand
20:03:51 <zzo38> oerjan: OK, do that; perhaps that will help.
20:04:27 <pikhq> Vorpal: Habitual. Liar.
20:04:31 <Vorpal> elliott, you mentioned those useless fsck of ext3/4, well one just happened to me, on /usr. Took all of 5 seconds.
20:04:54 <Vorpal> pikhq, they are accurate. Due to MSI.
20:05:05 <Vorpal> pikhq, what is it that you don't understand about MSI?
20:05:26 <elliott> Vorpal: they take a lot more than five seconds
20:05:38 <pikhq> Vorpal: The bit where it pretends to be physical lines off of the CPU.
20:05:39 <Vorpal> elliott, not for me.
20:05:42 <elliott> Vorpal: lucky you
20:05:49 <Vorpal> pikhq, where did they pretend that?
20:05:56 <pikhq> By having IRQ numbers.
20:06:13 <Vorpal> pikhq, well then there is the APIC
20:06:30 <oerjan> ok fixed
20:06:31 <Vorpal> the APIC goes up to at least 23 according to /proc/interrupts
20:06:36 <pikhq> Just like certain things pretend to be the 8086 system bus.
20:07:16 <Vorpal> anyway rebooting from freebsd to linux changed the IRQ numbering on my desktop. I no longer have those extreme numbers
20:07:19 <Vorpal> pikhq, http://sprunge.us/MUNd
20:07:26 <Vorpal> is what I see from linux on my desktop
20:08:08 <Vorpal> on my laptop that same file: http://sprunge.us/XAKE
20:08:28 <pikhq> See? Lies and deceit.
20:09:16 <Vorpal> pikhq, I get another interrupts on my desktop once I start X11. Seems like fglrx adds it on demand. It shows up as 62.
20:09:35 -!- sebbu2 has joined.
20:09:35 -!- sebbu2 has quit (Changing host).
20:09:35 -!- sebbu2 has joined.
20:09:52 <Vorpal> pikhq, I guess freebsd and linux simply allocates the dynamic interrupts required differently.
20:10:19 <Vorpal> pikhq, anyway MSI-style interrupts have numbers too
20:10:19 -!- sebbu has quit (Ping timeout: 240 seconds).
20:10:52 <Vorpal> pikhq, so claiming they are lying by being numbered, as you did above, is not true.
20:11:02 <pikhq> By being IRQ numbered.
20:11:24 -!- SgeoN1 has quit (Read error: Connection reset by peer).
20:11:49 <Vorpal> pikhq, uh... So what would you suggest instead?
20:12:08 <pikhq> Nuking x86.
20:12:09 * oerjan is briefly reminded that IRQ used to be a chat program. ihrc.
20:12:51 <elliott> ICQ.
20:12:58 <nooga> OSX default compiler toolchain sucks badly when it comes to osdev
20:13:11 <elliott> s/ when .*//
20:13:23 <pikhq> OS X default compiler toolchain is, uh, fairly mundane GNU.
20:13:25 <elliott> s/ default compiler toolchain//
20:13:27 <elliott> pikhq: it's also ancient
20:13:43 <nooga> imagine my face when i discovered that ld produces ONLY Mach-O
20:13:46 <pikhq> ...
20:13:55 <pikhq> Custom ld?
20:13:59 <Vorpal> pikhq, apart from that
20:14:08 <pikhq> Vorpal: Nothing.
20:14:10 <nooga> huh, well
20:14:14 <nooga> the rest is llvm-gcc
20:14:27 <Vorpal> pikhq, you would end up with the MSI style interrupts on any modern CPU architecture
20:14:34 <oerjan> oh wait am i thinking of icq
20:14:35 <nooga> but i had to compile my own toolchain and put it in opt
20:14:37 <Vorpal> that made sense for a desktop style usage
20:14:48 <Vorpal> oerjan, icq? Wasn't that some old IM thingy?
20:14:54 <pikhq> Vorpal: You wouldn't end up with it implemented on top of an interface for 16 wires coming off of the CPU.
20:14:54 <elliott> nooga: the rest is gcc
20:14:56 <elliott> or clang
20:15:05 <elliott> I don't know that llvm-gcc gets any real use on OS X.
20:15:09 <elliott> clang for all userland applications, definitely
20:15:14 <oerjan> Vorpal: that was the _point_
20:15:15 <pikhq> Just like you would have a system bus on any modern CPU architecture, but you wouldn't come up with the 8086 system bus.
20:15:18 <nooga> clang -> llvm
20:15:36 <Vorpal> pikhq, well okay
20:15:45 <nooga> also
20:15:49 <oerjan> also, try to search for "irq" chat shows just how obnoxious google is these days - it _corrects_ it, even with the quotes
20:15:52 <nooga> i hate xcode way of doing things
20:16:24 <nooga> it took me 2 days to figure out how to make a form with a button that would change it's text when clicked
20:16:35 <nooga> its*
20:16:36 -!- myndzi has quit (Ping timeout: 244 seconds).
20:16:43 <oerjan> oh hm that's only in instant, it works if i press return
20:17:27 <Vorpal> oerjan, ouch
20:17:39 <oerjan> i'm still divided on whether i hate google instant or find it convenient.
20:17:57 <pikhq> (you may know the 8086 system bus as "ISA" or "IDE" or "ATA")
20:18:01 <Vorpal> oerjan, yeah better to use a different search engine such as DDG. Btw I have nothing against Google saying "did you mean" even with quotes. As long as it doesn't auto correct
20:18:02 <oerjan> it depends a bit on how much my laptop is thrashing :/
20:18:39 <Vorpal> oerjan, trashing? You need more ram
20:18:51 -!- myndzi has joined.
20:18:55 <Vorpal> oerjan, how old is that laptop?
20:19:04 <oerjan> 2006
20:19:08 <Vorpal> ah
20:19:17 <oerjan> it wasn't a top model even then
20:19:21 <Vorpal> besides I find laptops unergonomic. Pain in the neck if I use one for a long time
20:19:30 -!- myndzi has quit (Client Quit).
20:19:32 <oerjan> Vorpal: did you mean is fine. but it now often does it the other way around, so you need to click to get the real thing
20:19:41 <Vorpal> yeah
20:19:43 -!- myndzi has joined.
20:19:54 <Vorpal> oerjan, definitely switch to DDG
20:20:06 <oerjan> and what's worse, google instant is somewhat buggy when you do click
20:20:17 <Vorpal> ouch
20:20:41 <Vorpal> oerjan, DDG has a very useful info box on top of searches too: https://duckduckgo.com/?q=MSI
20:20:42 -!- nooga has quit (Ping timeout: 245 seconds).
20:20:44 <Vorpal> check that out
20:20:49 <oerjan> if you used the suggestion menu, it doesn't get what you selected but what you typed
20:21:10 <Vorpal> click computing to expand that and find Message Signalled Interrupts
20:21:38 <Vorpal> oerjan, and it does W|A
20:21:42 <Vorpal> and a lot more
20:22:08 <Vorpal> oerjan, basically it is what google should be. And should it not find anything useful you can just add !g at the start of your search to make it go to google
20:23:14 <Vorpal> oerjan, anyway, have I convinced you to switch yet? You can turn off the ads in the prefs btw. If you don't want to support DDG :P
20:23:56 <Vorpal> oh and it is anon, no personalised search results apart from setting region in preferences (if you want to).
20:24:10 <oerjan> hm
20:25:50 <zzo38> Is this list sufficient? http://sprunge.us/FATD
20:26:07 -!- myndzi has quit (Read error: Connection reset by peer).
20:27:16 <Vorpal> oerjan, I have convinced you to switch yet?
20:27:36 <Vorpal> zzo38, ... what is it?
20:27:49 <Vorpal> what LANGUAGE is it?
20:28:01 <Vorpal> oh tex I guess
20:28:13 <zzo38> Vorpal: It is a (incomplete) METAFONT program. So far I just put the names and numbers of the characters in the font.
20:28:30 <Vorpal> well, I don't think there are any METAFONT experts here
20:28:52 <Vorpal> why would anyone use METAFONT these days. You can use Type1 with pdftex and TTF with xetex
20:28:54 -!- ive has quit (Ping timeout: 258 seconds).
20:28:54 -!- myndzi has joined.
20:28:58 -!- TeruFSX2 has joined.
20:29:23 <oerjan> Vorpal: i've opened it. no promises.
20:29:41 <zzo38> You don't need to know about METAFONT; I am asking if you think there are sufficient symbols listed in there (for all planets, phase of moon, etc).
20:29:46 -!- ive has joined.
20:29:59 <Vorpal> oerjan, give it a try. elliott recommended it
20:30:12 <zzo38> And I don't want to use pdftex, Type1, XeTeX; I also think METAFONT is a good program to design typefaces, in general.
20:30:15 <Vorpal> no clue
20:30:18 <oerjan> as a first impression, i miss a tool tip on that looking glass button
20:30:29 <elliott> Vorpal: I do not implicitly support your recommendations.
20:30:43 <Vorpal> elliott, of course not. But you recommended it to me
20:30:46 <Vorpal> that is all I'm saying
20:30:56 <Vorpal> elliott, if you dispute that, go check the channel logs
20:31:10 <elliott> Diggy diggy hole.
20:31:17 <oerjan> i suppose they really want to be minimalist
20:31:20 <Vorpal> elliott, you watched too much yogscast
20:31:36 <Vorpal> oerjan, mail the guy behind it if you really need a tooltip saying "search" :P He tends to respond
20:31:46 <Vorpal> oerjan, and it is "him" not "they". It is a one-guy project
20:31:50 <zzo38> Vorpal: Even if *you* don't like METAFONT, I still prefer METAFONT and with DVI output and so on.
20:31:55 <elliott> Vorpal: I haven't even seen that episode.
20:32:02 <zzo38> And in my opinion it is superior.
20:32:10 <Vorpal> elliott, come on. Simon says "Diggy diggy hole" quite often.
20:32:27 <elliott> I haven't watched since the beginning of the second season.
20:32:33 <Vorpal> elliott, okay
20:34:34 <pikhq> I've only really watched them messing around with mods since then.
20:34:47 <Vorpal> ah
20:35:12 <Vorpal> pikhq, I tend to watch everything but the HoN videos. Because those tend to not be very funny, and HoN doesn't interest me
20:35:31 <Phantom_Hoover> I tried to watch SoI, I really did.
20:36:02 <Vorpal> Phantom_Hoover, it is quite nice
20:36:20 <Vorpal> I missed the beginning, haven't bothered to go back. You get into the plot quite easily
20:36:25 <Phantom_Hoover> No, it's far far more cocking around than is interesting.
20:36:47 <zzo38> I think METAFONT is far better than any other program for typeface designing that I know of.
20:37:16 <zzo38> It can be used to design logos, too.
20:38:41 <elliott> Phantom_Hoover: Cocking around is interesting; scripting isn't
20:39:19 <Phantom_Hoover> elliott, cocking around on the part of the scriptwriters.
20:42:42 <Vorpal> <Phantom_Hoover> No, it's far far more cocking around than is interesting. <-- still funny tough
20:43:00 <Vorpal> but they clearly have some server mods for special effects
20:43:07 <Vorpal> and client mods too I think
20:46:45 -!- sebbu2 has changed nick to sebbu.
20:53:06 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net).
20:53:26 -!- Sgeo|web_ has joined.
20:54:15 -!- Sgeo|web has quit (Ping timeout: 265 seconds).
20:55:46 -!- Vorpal has joined.
20:59:46 -!- GreaseMonkey has quit (Quit: The Other Game).
21:09:48 <pikhq> http://i.imgur.com/gTXgm.png Because a captcha should be OCR-able.
21:12:02 <Phantom_Hoover> But if the OCR bot knows about the all-new Chevy Sonic, who cares?
21:12:31 <pikhq> :P
21:14:58 <myndzi> i saw one of those things recently and raged hardcore
21:15:06 <myndzi> it wanted me to enter not one, but two things
21:15:18 <myndzi> and one required watching the video (i mean advertisement)
21:15:29 <myndzi> what it amounts to is that nobody really understands what a captcha is for, it's just a hoop they jump through
21:15:34 <myndzi> so one hoop is much the same as another to them
21:15:42 <myndzi> and these fuckers are taking advantage of it
21:15:42 <myndzi> :|
21:16:34 <Phantom_Hoover> It _is_ just a hoop you jump through.
21:16:51 <myndzi> well yes, but in some contexts it serves a useful purpose
21:17:07 <myndzi> it's just that many computer users don't understand when it's legitimately useful
21:17:14 <ais523> advertising CAPTCHAs are enough to make me not use a site
21:17:22 <myndzi> because 1) many site owners don't seem to understand, they just throw that shit up there because it's "in"
21:17:29 -!- tiffany has quit (Quit: Leaving).
21:17:34 <myndzi> and 2) they don't really understand what it's for and how it's supposed to accomplish its goal
21:17:52 -!- tiffany has joined.
21:18:47 <pikhq> A captcha is actually a darned good thing if done right, in the right context.
21:19:01 <tiffany> aaa I hate capchas
21:19:10 <monqy> I don't understand the advertising component either; isn't frustrating potential customers counter to the goal, or are most people totally okay with them
21:19:13 <elliott> tiffany: you like spambots more?
21:19:18 <Phantom_Hoover> tiffany contributes to discussion.
21:19:19 <pikhq> Sadly, even with reCAPTCHA, people manage to fuck it up.
21:19:20 <monqy> spambots are my bros
21:19:31 <tiffany> fun spambots
21:19:36 <pikhq> And, of course, doing it in the right context is easy to fuck up if you're ignorant.
21:19:38 <Phantom_Hoover> monqy, ah, but they remember you as those people who annoyed you!
21:19:53 <Phantom_Hoover> Brand recognition!
21:20:08 <monqy> they annoyed me now i want to buy all their product
21:20:08 <tiffany> It's kind of obvious when someone joins your forum and starts spamming under the counter drugs without a prescribtion things
21:20:19 <tiffany> and it's kind of obvious to push the "purge posts" and "ip ban" buttons
21:21:00 <myndzi> people put up with captchas in the same way they put up with every other annoying thing that consumers allow companies to get away with
21:21:02 <pikhq> Hmm. I wonder if anyone's set up a Bayesian filter for forums.
21:21:10 <zzo38> I dislike CAPTCHAs too but there are many other ways to prevent spambots.
21:21:14 <Vorpal> kilowatt-hour, what a stupid unit... Unless I missed out on something it is just 3600 kilojoule.
21:21:24 <Phantom_Hoover> Vorpal, yes, yes it is.
21:21:31 <myndzi> in the case of captchas, since most of the people involved don't know what they are really about, they don't understand when they're being taken advantage of (advertising "captchas")
21:21:31 <tiffany> I'd prefer to ask a simple logic question
21:21:35 <Phantom_Hoover> It's also an easy unit to work with for domestic power consumption.
21:21:39 <Phantom_Hoover> tiffany, ahahahahaha
21:21:41 <myndzi> so they don't know the difference between that and real captchas
21:21:48 <pikhq> Anyways. I'd say the easiest way to use a captcha scheme to block spambots is to use it for account registration.
21:21:50 <Phantom_Hoover> Yes, because computers are really terrible at simple logic questions!
21:21:51 <elliott> <tiffany> It's kind of obvious when someone joins your forum and starts spamming under the counter drugs without a prescribtion things
21:21:51 <elliott> <tiffany> and it's kind of obvious to push the "purge posts" and "ip ban" buttons
21:21:58 <elliott> tiffany has never heard of blogs.
21:22:06 <tiffany> ..?
21:22:07 <elliott> Or, indeed, anything that gets any kind of volume of traffic at all.
21:22:10 <elliott> <pikhq> Hmm. I wonder if anyone's set up a Bayesian filter for forums.
21:22:11 <Phantom_Hoover> tiffany has never heard of RSI.
21:22:14 <elliott> pikhq: StupidFilter; it was stupid
21:22:18 <myndzi> pikhq: you can pay people to sign up all kinds of accounts in bulk for cheap
21:22:19 <pikhq> Though this screws up blog comments a bit.
21:22:35 <myndzi> but that doesn't mean i think that every post form should have a captcha, for example
21:22:38 <tiffany> if there's enough spambots that you can't keep up then something is horribly wrong
21:22:44 <zzo38> I have gotten spam messages on blog, but since I made a new one on gopher, it stops making spam message
21:22:45 <myndzi> there are other things you can do to make it not worth a person's time to spam your shit
21:22:49 <Vorpal> Phantom_Hoover, nevertheless Joule makes more sense to me than watt*hour. Because W*h = (J/s)*s*3600 basically.
21:22:51 <pikhq> tiffany: Then the Internet is horribly wrong.
21:22:58 <Vorpal> those s cancel each other
21:23:08 <Phantom_Hoover> Vorpal, it's a calculation thing.
21:23:19 <pikhq> Vorpal, it's a humans-suck-at-units thing.
21:23:28 <Phantom_Hoover> Appliances have power consumptions in watts, and tend to be run on timescales on the order of hours.
21:23:31 <Vorpal> pikhq, hm okay
21:23:42 <pikhq> "Kilometers per hour" is also a really silly unit.
21:23:46 <tiffany> I kind of don't care about spam
21:23:53 <elliott> tiffany: yes, because everyone else cares about it for you
21:23:55 <Phantom_Hoover> pikhq, why?
21:23:55 <elliott> look at your spam folder sometime
21:24:02 <tiffany> it's nearly empty
21:24:03 <Vorpal> pikhq, hm. Why?
21:24:06 <pikhq> Phantom_Hoover: There's a perfectly good SI unit.
21:24:10 <pikhq> Meters/second.
21:24:13 <elliott> tiffany: then nobody knows your email
21:24:14 <Vorpal> well yeah
21:24:19 <elliott> other ways to avoid spam
21:24:20 <elliott> - become a hermit
21:24:20 <Vorpal> that is better indeed
21:24:34 <tiffany> I get an email every so often from some guy saying he's from hong kong and wants to give me a million dollars
21:24:44 <tiffany> and goes by the name "wing wang"
21:24:46 <pikhq> tiffany: You probably have the world's most amazingly unknown email address.
21:24:52 <tiffany> tiffany@physibots.info
21:24:55 <tiffany> :I
21:25:00 <Vorpal> pikhq, I guess km/s would make sense though Or mm/s. But not x/h
21:25:02 <zzo38> I do not even have a spam folter.
21:25:15 <pikhq> tiffany: Congrats, your spam should skyrocket.
21:25:15 <tiffany> yahoo must like, sell off lists of email addresses
21:25:16 <myndzi> how i have dealt with spam for going on 10 years:
21:25:20 <myndzi> register domain name
21:25:24 <myndzi> catchall address
21:25:31 <myndzi> siteimregisteringon.com@domain.com
21:25:35 <Phantom_Hoover> pikhq, eh, the logs for here aren't crawled to my knowledge.
21:25:45 <Vorpal> tiffany, stupid... the channel is logged in public
21:25:46 <myndzi> i know where every e-mail is sourced that way
21:25:47 <zzo38> I have an SMTP server but I turn it off most of the time so that whenever anyone tries to send a spam message, they will get error message about not reachable server.
21:25:50 <elliott> tiffany: If I put that on the esolang wiki, your spam folder would be huge within a day.
21:25:51 <myndzi> based on what it gets sent to :)
21:25:57 <tiffany> =/
21:26:06 <elliott> pikhq: I dunno if spambots would get text/plain
21:26:11 <Vorpal> myndzi, that makes sense. I thought about doing that too.
21:26:17 <tiffany> how do people even make money off of spambots?
21:26:17 <Vorpal> never got around to it
21:26:23 <myndzi> it got me in a little trouble the other day actually, lol
21:26:28 <Vorpal> myndzi, oh?
21:26:29 <myndzi> i placed an online order for a towncar to take me to the airport
21:26:38 <myndzi> and the guy almost dropped my registration because he thought it was fake
21:26:39 <pikhq> tiffany: If 1 in a billion people fall for it, they get 1 hit.
21:26:44 <Vorpal> ...
21:26:45 <pikhq> At least 1, sorry.
21:26:50 <myndzi> (i never bought domain privacy because it didn't exist when i registered the domain - so it's got false info)
21:26:58 <Vorpal> I see
21:26:58 <myndzi> he was medium-smart
21:27:02 <pikhq> And spam is so fucking cheap that they probably make a profit off of that.
21:27:18 <elliott> `addquote <Phantom_Hoover> I think the worst part of growing up is that it isn't retroactive.
21:27:21 <pikhq> And the hit rates are probably a bit closer to 1 in a few million.
21:27:21 <myndzi> that is, he understood what i was doing, but he couldn't wrap his head around the fact that i'd paid him $60 for the reservation and that should be enough
21:27:22 <HackEgo> 690) <Phantom_Hoover> I think the worst part of growing up is that it isn't retroactive.
21:27:29 <tiffany> It should take computational power to be able to send email
21:27:34 <elliott> tiffany: see hashcash
21:27:35 <tiffany> like, have to do a proof of work or something
21:27:37 <myndzi> he was all flighty until i gave him my "real" e-mail address (actually a secondary one)
21:27:50 <oerjan> <Vorpal> pikhq, I guess km/s would make sense though Or mm/s. But not x/h <-- it makes sense when you want to estimate how long time it will take you to drive somewhere without having to convert seconds to hours, which non-nerds probably find annoying
21:27:54 <myndzi> i mean, he was smart enough to know what was going on and do a WHOIS of my domain, but he put stock in e-mail as an authenticating factor? wtf.
21:27:56 <Vorpal> tiffany, this has been considered. Never was a hit. Because not everyone was using it
21:28:07 <Phantom_Hoover> oerjan, *everyone* finds that annoying.
21:28:24 <Phantom_Hoover> People who *enjoy* doing arithmetic are rare, to say the least.
21:28:30 <Vorpal> oerjan, heh
21:28:34 <Vorpal> Phantom_Hoover, well yeah
21:28:39 <Vorpal> I know someone who does
21:28:51 <myndzi> i enjoy calculating things in my head :|
21:29:04 <pikhq> oerjan: *Clearly* we should reform humans so that SI is trivial.
21:29:15 <pikhq> And so we can use only base units, instead of derived.
21:29:24 <Vorpal> oerjan, with making sense I meant "sense in context of the SI system"
21:29:44 <pikhq> Volt? BAH!
21:29:50 <pikhq> kg m^2/A s^3
21:29:54 <Vorpal> XD
21:30:22 <pikhq> (as an aside, I rather dislike the use of kg as a base unit)
21:30:27 <Phantom_Hoover> Why?
21:30:29 <Vorpal> pikhq, you beat me to that
21:30:41 <pikhq> It's the only base unit that has a prefix.
21:30:51 <Vorpal> we should rename kg to g. Then it would all work
21:31:00 <Phantom_Hoover> Nononono, you have it wrong.
21:31:15 <Phantom_Hoover> All the *other* base units have antiprefixes.
21:31:21 <Vorpal> what
21:31:28 <pikhq> Also, the ampere is far too large.
21:31:33 <Vorpal> pikhq, is it?
21:31:42 <elliott> Vorpal: <Vorpal> we should rename kg to g. Then it would all work
21:31:46 <elliott> Vorpal: except that all the derived units would suck
21:31:58 <Vorpal> elliott, no, because they all use kg currently rather than g
21:32:12 <Vorpal> elliott, so it would simply things
21:32:27 <pikhq> Vorpal: Milliampere is about the right size.
21:32:36 <elliott> Vorpal: uh
21:32:40 <Vorpal> pikhq, it would complicate derived units
21:32:45 <Vorpal> elliott, because kg is the base unit
21:32:52 <pikhq> Meh!
21:32:55 <elliott> oh, rename
21:32:58 <Vorpal> elliott, yes
21:32:58 <elliott> dumb :p
21:33:02 <Vorpal> elliott, you are yes
21:33:10 <Vorpal> at least atm
21:33:11 <elliott> how witty + original
21:34:03 <pikhq> Vorpal: Still, the ampere is effing huge.
21:34:07 <Vorpal> pikhq, anyway I worked with A rather than mA sometimes. I admit that mA is more common in electronics.
21:34:20 <Vorpal> but not in high energy electrics
21:34:39 <pikhq> Domestic circuitry isn't going to hit more than 20 A.
21:34:43 <Vorpal> pikhq, indeed
21:34:57 <Vorpal> pikhq, I seen kA about once iirc
21:35:51 <Vorpal> pikhq, actually I think this house has a 25 A main fuse or such. But then it is fairly large and you need a lot of heating in Sweden during the winter.
21:35:57 <Vorpal> might be 20 A, not sure
21:35:58 <oerjan> <pikhq> Also, the ampere is far too large. <-- well compared to the tesla...
21:36:30 <tiffany> I'mma get this client
21:36:31 <Vorpal> oerjan, what about the Coulomb?
21:36:34 <Vorpal> it is huge too
21:36:34 <pikhq> Units are hard.
21:36:35 <tiffany> http://sourceforge.net/projects/pennypost/
21:37:03 <elliott> that looks like hashcash except stupid
21:37:06 <fizzie> There was a 2T magnetic field in one place at CERN.
21:37:06 <Vorpal> tiffany, it rather hinges on everyone else you communicate with using it as well
21:37:20 <elliott> by stupid, I mean it doesn't have a wikipedia article
21:37:21 <elliott> and hashcash does
21:37:36 -!- augur has quit (Remote host closed the connection).
21:37:36 <tiffany> elliott, this client was referenced by the wikipedia page on hashcash
21:37:40 <elliott> oh
21:37:45 <elliott> anyway, it doesn't matter
21:37:48 <elliott> proof of work has failed
21:38:09 <Vorpal> # The amount of charge that travels through a lightning bolt is typically around 15 C, although large bolts can be up to 350 C.[11]
21:38:09 <Vorpal> # The amount of charge that travels through a typical alkaline AA battery is about 5 kC = 5000 C = 1400 mAh. After that charge has flowed, the battery must be discarded or recharged.[12]
21:38:13 <Vorpal> that much in a battery!?
21:38:38 <Phantom_Hoover> No, Vorpal.
21:38:48 <Vorpal> Phantom_Hoover, oh?
21:38:50 <Phantom_Hoover> That's the amount that moves through it over its lifetime.
21:38:55 <Vorpal> Phantom_Hoover, well yes
21:39:00 <Vorpal> Phantom_Hoover, I'm still surprised
21:39:02 <Phantom_Hoover> It's effectively a meaningless number.
21:39:13 <Vorpal> hm
21:39:15 <fizzie> http://en.wikipedia.org/wiki/Orders_of_magnitude_(magnetic_field) "strongest pulsed magnetic field yet obtained in a laboratory, destroying the used equipment, but not the laboratory itself"
21:39:20 <fizzie> The best.
21:39:24 <Vorpal> yeah it only makes sense for capacitators
21:39:27 <elliott> fizzie: :D
21:39:33 <Phantom_Hoover> (Well, not /quite/.)
21:39:49 <fizzie> elliott: Apparently the clarification is necessary, since presumably the one stronger number there did destroy the lab too.
21:39:57 <Phantom_Hoover> (It's tied to the amount of reactive stuff in the battery by Faraday's constant, which is 96kC/mol.
21:40:00 <Phantom_Hoover> *)
21:40:04 <fizzie> (As it is just "strongest (pulsed) magnetic field ever obtained (with explosives) in a laboratory".)
21:40:21 <Vorpal> "strongest (pulsed) magnetic field ever obtained (with explosives) in a laboratory (VNIIEF in Sarov, Russia, 1998)[11]" <-- presumably the lab was destroyed then?
21:40:51 <Vorpal> fizzie, how do you do it with explosives?
21:41:22 <fizzie> "This device consists of a generator solenoid (the first cascade) with internal and external diameters of 175 mm and 200 mm respectively and a length of 500 mm, and two internal cascades with diameters of 28×35 mm and 12×17 mm and a length of ~200 mm. One-cascade system of explosive compression, consisting of the main HE-charge with diameters of 360×650 mm, a length of 350 mm and a mass of ~170 kg, steel cylinder-impactor with an external diameter of 356 mm an
21:41:33 <fizzie> .. and internal HE-charge with diameters of 200×300 mm and a length of 280 mm, is located on the outside of the solenoid. The MC-1 generator solenoid is powered with a current of 4-5 MA. MC-1 generator operation time (without powering time and HE-charge detonation time) is about 15 μs, maximum liner implosion velocity is more than 6 km/s, the magnetic field derivative reaches values of ~5 1013 Gs/s. The diameter of the final field volume is 24 mm, its length
21:41:33 <fizzie> is ~100 mm"
21:41:37 <fizzie> Like that, apparently.
21:41:47 <Vorpal> heh
21:42:15 <Vorpal> fizzie, I
21:42:35 <Vorpal> I'm* just wondering how the explosion leads to magnetism. Physically I mean
21:43:01 <Phantom_Hoover> Moving components at a high enough speed to generate a field, it seems.
21:43:34 <Phantom_Hoover> (How big is the B-field vector in, say, a gamma ray photon, though?)
21:44:31 -!- derdon has joined.
21:47:18 <Vorpal> hm
21:47:22 <Vorpal> Phantom_Hoover, interesting point
21:48:01 -!- nooga has joined.
21:49:45 <Phantom_Hoover> I'm not actually sure if it's possible to work it out.
21:51:14 <Vorpal> oh?
21:51:21 <Vorpal> I'm no physics expert though
21:52:08 <tiffany> um
21:52:14 <tiffany> there's a lot of things that make magnetic fields o.o
21:52:38 <Phantom_Hoover> Oh, duh, it's variable.
21:52:39 <elliott> For instance: magnets.
21:52:56 <tiffany> like pushing water through a cylinder, or a moon-sized sphere of 30 million psi iron rotating inside of an ocean of molten iron and nickel
21:53:23 <Phantom_Hoover> Pushing water through a cylinder does not, to my knowledge, produce a magnetic field.
21:53:33 <tiffany> meh
21:53:36 <tiffany> I read it somewhere
21:54:12 <Vorpal> Phantom_Hoover, ah
21:54:13 <Phantom_Hoover> It's diamagnetic, so I'm pretty sure it wouldn't.
21:56:02 * Phantom_Hoover → crappier part of Ireland^W this village.
21:56:06 -!- Phantom_Hoover has quit (Quit: Leaving).
22:08:43 -!- hagb4rd has quit (Ping timeout: 240 seconds).
22:09:24 -!- augur has joined.
22:09:40 -!- Ngevd has joined.
22:10:11 <Ngevd> Hello!
22:10:26 <Ngevd> ais523, wiki spam
22:10:36 <oerjan> oh nose!
22:10:50 <oerjan> the captchas are sinking!
22:10:52 <fizzie> Oh Big Nose in the Sky.
22:11:33 <nooga> zangband vs adom ?
22:12:22 <ais523> Ngevd: deleted
22:12:27 <Ngevd> Hurrah!
22:16:01 <oerjan> > unwords $ repeat "spam" `interleave` cycle ["wonderful", "tasty"] `interleave` repeat "spam"
22:16:02 <lambdabot> "spam spam wonderful spam spam spam tasty spam spam spam wonderful spam spa...
22:16:38 <oerjan> lambdabot: you are not spammy enough
22:18:09 <Madoka-Kaname> :t replicateM
22:18:10 <lambdabot> forall (m :: * -> *) a. (Monad m) => Int -> m a -> m [a]
22:18:21 <Madoka-Kaname> `log replicateM
22:18:30 <Madoka-Kaname> @log replicateM
22:18:30 <lambdabot> Maybe you meant: bug do let msg yow
22:18:47 <HackEgo> 2011-07-17.txt:13:49:22: <CakeProphet> there are probably many sets of interesting strings you could construct with the [0..] >>= (`replicateM` alphabet) thing.
22:19:57 <CakeProphet> oh my.
22:20:05 <CakeProphet> @yow
22:20:06 <lambdabot> Couldn't find fortune file
22:20:07 <Vorpal> <nooga> zangband vs adom ? <-- nethack
22:20:13 <nooga> naaa
22:20:21 <Vorpal> nooga, hack!
22:20:24 <Vorpal> rouge!
22:20:42 <nooga> ntoo spartan
22:20:52 <Vorpal> nooga, Slash'EM then
22:21:00 <Vorpal> with a GUI frontend and fancy tileset
22:21:10 <Vorpal> nooga, you can't get less spartan than that
22:21:42 <oerjan> oh dear i think they got (co)pumpkin http://www.haskell.org/pipermail/haskell-cafe/2011-October/096262.html
22:21:42 <bd_> :t alphabet
22:21:43 <lambdabot> Not in scope: `alphabet'
22:22:35 <oerjan> > [0..] >>= (`replicateM` ['a'..'z'])
22:22:36 <lambdabot> ["","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r"...
22:23:04 <fizzie> A too ...y example there.
22:23:18 <oerjan> > [0..] >>= (`replicateM` ['a'..'b'])
22:23:19 <lambdabot> ["","a","b","aa","ab","ba","bb","aaa","aab","aba","abb","baa","bab","bba","...
22:23:20 <elliott> fizzie: ...y?
22:23:22 <elliott> Oh.
22:23:33 <bd_> interesting. all strings in that alphabet, I see
22:23:51 <Ngevd> > ['a'..'z']
22:23:52 <CakeProphet> it's now time to flood my base as I fuck up pressure stuff.
22:23:52 <lambdabot> "abcdefghijklmnopqrstuvwxyz"
22:24:13 <oerjan> CakeProphet: hey it happens to the best of evil overlords
22:24:29 <CakeProphet> well, if I install a door.
22:24:33 <CakeProphet> then I won't flood my base
22:24:39 <CakeProphet> so, nevermind.
22:24:40 <oerjan> genius!
22:24:52 -!- evincar has joined.
22:25:35 <bd_> CakeProphet: DF?
22:25:40 <nooga> CakeProphet: DF?
22:25:47 <Ngevd> CakeProphet: IRL?
22:25:49 <elliott> bd_: DF?
22:26:01 <elliott> but yeah I think it's IRL guys
22:26:05 <elliott> you need to spend more time here
22:26:10 <CakeProphet> lol
22:26:30 <CakeProphet> yeah currently working on my IRL water system.
22:26:38 <CakeProphet> complete with floodgates, levels, and cisterns.
22:26:43 <CakeProphet> *levers
22:26:51 <nooga> IRL?
22:26:52 <oerjan> and self-destruct button.
22:26:56 <elliott> nooga: in real life
22:27:02 <bd_> CakeProphet: remember, water loses pressure when flowing diagonally IRL as well!
22:27:05 <bd_> <.<
22:27:34 <CakeProphet> I'm actually going to use a pump system for that, I don't remember why.
22:27:37 <nooga> CakeProphet: how big it is?
22:27:44 <CakeProphet> dunno yet.
22:27:44 <nooga> is it?*
22:28:15 <CakeProphet> I'm not sure my drain is working. maybe it's taking a long time?
22:28:33 <CakeProphet> or maybe when I divert sourced water it too becomes sourced water or something?
22:28:34 <elliott> yeah water is pretty slow, irl i mean
22:28:53 <bd_> particularly if you have a channel only one dragon wide
22:28:55 <oerjan> the drain in spain is a lousy refrain
22:29:02 <Ngevd> Haven't plaid DF in a while
22:29:10 <CakeProphet> well, it kind of stopped moving, perhaps it doesn't have flow anymore?
22:29:15 <Ngevd> Haven't striped it either
22:29:17 <evincar> So I had a thought today, and I'd like to know if it's a bad thought.
22:29:25 <Ngevd> Yes, yes it is
22:29:29 <evincar> Oh, okay.
22:29:30 <monqy> I was just about to say
22:29:43 <bd_> CakeProphet: If it's a single-width channel it will take a _very_ long time to flow any significant distance.
22:29:55 <elliott> bd_: "one dragon"?
22:30:08 <Ngevd> But carry on, evincar
22:30:14 <CakeProphet> bd_: single width channel as in z-level right? the aqueduct itself is 3 spaces wide, but the downward slopes are only 3-width channel each.
22:30:15 <evincar> :P
22:30:18 <elliott> monqy: were you just about to say that too
22:30:32 <elliott> CakeProphet: yes z-level is totally width
22:30:33 -!- derdon has quit (Remote host closed the connection).
22:30:43 <evincar> Well, I was working on a concatenative language, which was turning into Yet Another Forth.
22:30:46 <bd_> CakeProphet: I was thinking width of the path it's flowing through.
22:31:02 <bd_> If you're going down levels a single hollowed-out shaft is probably fastest
22:31:05 <evincar> So I was thinking of alternate structures to use instead of stacks.
22:31:20 <evincar> And I figured linked-lists, with two special values: "top" and "persistent top".
22:31:22 <bd_> elliott: DF squares are exactly the same size as a dragon, or a mouse, or any number of any other creature, apparently.
22:31:31 <evincar> Operations always work on the leftmost "top".
22:31:43 <elliott> bd_: well, sure :P
22:31:43 <evincar> Terms to the right of a top aren't evaluated.
22:32:13 <monqy> elliott: "evincar's idea is going to be bad" premonition
22:32:14 <evincar> Whereas tops are replaced by stack operations, persistent tops are merely shifted.
22:32:24 <CakeProphet> bd_: er, how do you dif vertically downwards like that?
22:32:27 <CakeProphet> *dig
22:32:28 <evincar> There's always at least one persistent top, at the end of the list.
22:32:49 <nooga> Ireland
22:32:50 <bd_> CakeProphet: You start at the level one above the bottom. Channel it out. Then go to the next level up. Repeat. Or just use up/down stairwells all the way down.
22:33:08 <evincar> With tops you can easily implement prefix and infix operations, and with persistent tops you can implement parentheses.
22:33:29 <bd_> CakeProphet: The downside is that this will build up a LOT of pressure at the bottom. Make sure you have a system for draining it for maintenance, and tap diagonally
22:33:29 <evincar> So that's kinda neat, as it doesn't require macros.
22:33:45 <zzo38> I have different idea of roguelike game; with many difference. One is that instead of list of race/class, you must type them in because any creature in the game you can make player character too; and with clases there is also too many. If you omit then it will assume "Human Fighter" if entirely blank, "Human" if race is blank, and "No-class" if class is blank.
22:34:15 <zzo38> And also differences in computation of experience points, item curse, challenge rulesets, spells, etc.
22:34:45 <bd_> zzo38: the hard part is balancing all those races
22:34:59 * oerjan notes duckduckgo is misspelling its own doodle link
22:35:06 <bd_> it's not that hard to modify nethack to allow you to start as some arbitrary other race, but then it tends to be either under or overpowered
22:35:37 <Ngevd> The more powerful they start, the slower they level
22:36:30 <bd_> yeah, but then you need to measure how powerful they are and adjust all that
22:36:36 <bd_> it's not impossible, it's just a lot of work
22:36:48 <Ngevd> Sweet, I've struck lemonade
22:36:49 <bd_> http://groups.google.com/group/rec.games.roguelike.nethack/browse_thread/thread/72734f3022b8929c/790c0ee267af9750?hl=en&ie=UTF-8&q=initpoly#790c0ee267af9750 <-- patch for nethack 3.4.1 that does basically that
22:37:00 <bd_> 3.4.0 rather
22:37:14 <zzo38> bd_: In addition, player characters and non-player character follow all the same rules, using the same data structure to represent them. Ngevd: Yes and that can be done too. However, even if you don't, you can keep scores separately for each one so that you use different challenge whatever you want!! Same thing with classes; the classes can also be unbalanced.
22:37:53 <zzo38> (I seem to recall that the races and classes in ADOM were not intended to be perfectl balanced either)
22:38:14 <Ngevd> You know what I would like to see?
22:38:25 <Ngevd> A multiplayer version of NetHack
22:38:30 <elliott> Ngevd: as old as the sun
22:38:33 <Ngevd> Okay
22:38:40 <Ngevd> You know what else I would like to see?
22:38:56 <Ngevd> A version of me who could actually play NetHack
22:39:09 <bd_> You know what I would like to see?
22:39:12 <zzo38> Ngevd: Does Nethack use the same data structures for PCs and NPCs? If not, it seem it will have a lot of trouble working multiplayers at all.
22:39:15 <bd_> A new version of nethack sometime this century :)
22:39:24 <Ngevd> zzo38, I have no idea
22:39:26 <elliott> the problem with multiplayer nethack is time, as everyone knows.
22:39:35 <bd_> zzo38: nope, and it assumes it's turn-based and synchronous _everywhere_
22:39:43 <bd_> you'd have to rewrite it from scratch
22:39:57 <zzo38> elliott: Yes, time; but you can make a turn-based, possibly a simultaneous turn-based.
22:40:09 <zzo38> bd_: You can have each level having its own time, I suppose.
22:40:19 <bd_> there's too much code that assumes there's only one player though
22:40:28 <elliott> wasn't ais523 doing something with acehack about that?
22:40:37 <elliott> /some/ kind of coop roguelike, anyway
22:40:51 <bd_> I think it's been done with some variant of angband
22:41:00 <Ngevd> Okay, it's still early spring and I've lost an expedition leader
22:41:03 <ais523> elliott: I was working on a multiplayer AceHack, yes
22:41:05 <bd_> MAngband
22:41:09 <zzo38> So that people in different levels are making actions independently of others; but if you move up/down the stairs, you must wait for the next turn before continuing.
22:41:11 <ais523> it isn't finished nor even playable yet, though
22:41:17 <elliott> bd_: acehack is quite a bit more like nethack, though :P
22:41:23 <ais523> it's done by using multiple processes, and each process thinks a different person is the lone PC
22:41:42 <bd_> ais523: and then some really hairy synchronization between them? :)
22:41:50 <ais523> yep
22:43:15 <Vorpal> <ais523> elliott: I was working on a multiplayer AceHack, yes <-- that is awesome
22:43:23 <Vorpal> ais523, how would the interaction work?
22:43:27 <bd_> ais523: fun. I guess if someone sits at a Yes/No prompt it hangs things for everyone?
22:43:29 <Vorpal> wrt turn based and so on
22:43:30 <ais523> interaction?
22:43:32 <ais523> bd_: yes
22:43:42 <ais523> Vorpal: all the players are in the same turn order, while on the same level
22:43:47 <Vorpal> hm
22:43:50 <bd_> that sounds not at all horribly frustrating
22:43:51 <ais523> each level has its own independent turn order
22:44:01 <ais523> bd_: well, it's meant for only a few players who are friends
22:44:05 <ais523> it's not massively multiplayer or anything like that
22:44:08 <Vorpal> heh
22:44:09 <Ngevd> I don't think each level should have its own independent turn order
22:44:22 <bd_> still sounds frustrating - hit 4, wait wait wait wait wait okay hit 4 again wait wait wait wait wait
22:44:23 <Vorpal> I think that is a good idea
22:44:31 <Ngevd> Because then one player could starve to death while another player thinks about hitting a grid bug
22:44:37 <oerjan> Ngevd: looking at your Luigi page, i wish to note that the wolfram 2,3-TM is not directly applicable to proving most languages TC, since it requires infinite setup
22:45:00 <ais523> oerjan: we told him that already
22:45:09 <oerjan> oh?
22:46:04 * oerjan finds it in the logs
22:56:27 -!- Ngevd has quit (Quit: goodnight).
22:58:25 -!- TeruFSX2 has quit (Ping timeout: 260 seconds).
23:00:00 <evincar> I guess since no one objected, my idea isn't complete crap.
23:00:07 <evincar> So I'ma go implement that.
23:00:33 <elliott> or it was too crap to comment on
23:14:12 <CakeProphet> yeah my pipe isn't flowing all the way to the edge of the map
23:14:24 <CakeProphet> it just things out and takes eons to evaporate.
23:14:29 <CakeProphet> *thins out
23:15:45 <CakeProphet> so I guess my drain needs to actually be some kind of pump system.
23:21:35 <tiffany> someone signed my other email up for notices from CARE.org
23:21:35 <tiffany> .-.
23:21:47 <elliott> tiffany: but you don't care about spam
23:22:25 <ais523> tiffany: check the headers for an unsubscribe link; if they have one, use it
23:23:35 <elliott> ais523: unsubscribe links are not usually in headers...
23:23:42 <ais523> elliott: yes they are
23:23:46 <ais523> list-unsubscribe: URL
23:23:56 <tiffany> there was a link at the bottom of the page
23:24:07 <elliott> ais523: you have clearly never received spammy newsletters ebfore
23:24:08 <elliott> before
23:24:39 <ais523> elliott: I know, because I told my boss about header checking recently, and he picked a spammy newsletter to test it on
23:24:45 <tiffany> is there even a way to view message headers in thunderbird
23:24:48 <ais523> then saw the unsubscribe link, followed it, and actually unsubscribed
23:25:21 <elliott> heh
23:25:49 <fizzie> "View source" in Thunderbird, wasn't it? Haven't used it in a while.
23:26:15 <tiffany> oh
23:26:25 <tiffany> view -> message source
23:27:39 <tiffany> yeah there's no list-unsubscribe
23:28:30 -!- evincar has quit (Quit: ChatZilla 0.9.87 [Firefox 7.0.1/20110928134238]).
23:29:20 <fizzie> Ooh, there is one in the email from this hotel chain.
23:29:29 <fizzie> But no list-headers in this Disneyland spam I get after having been there once.
23:31:18 <fizzie> Heh, this one message has a header named "KEY" containing the value "Value".
23:31:56 <elliott> heh
23:32:20 <ais523> that is pretty hilarious
23:32:41 <ais523> hmm, I wonder if you can iterate over the entire symbol table in Perl
23:32:42 -!- sllide has quit (Ping timeout: 258 seconds).
23:32:45 <ais523> my guess is yes, but I don't know how
23:33:02 <ais523> use that to put $*hash{key} = 'Value' for every hash
23:40:27 <fizzie> Incidentally, was ais or someone from Cambridge? At this event today we had a Cambridgean (Cambridgeous?) mathematician showing off an authentic Enigma.
23:40:51 <elliott> birmingham
23:41:11 <fizzie> I is really bad at remembering such things.
23:41:20 <pikhq> I've heard "Cantabridgean", but that is likely only applicable to Cambridge, MA.
23:41:33 <fizzie> It always seems to be some sort of a ham.
23:42:49 <elliott> "Cantabrigian is an adjective denoting "of, or pertaining to Cambridge", that is, of the University of Cambridge or of the city of Cambridge, England."
23:42:50 <elliott> pikhq: nope
23:44:16 <pikhq> Okay, well: it also applies to Cambridge, MA.
23:44:52 <oerjan> cambrian mathematicians are such trilobites
23:49:45 -!- GreaseMonkey has joined.
23:49:58 -!- ais523 has quit (Remote host closed the connection).
23:56:25 <Vorpal> oerjan, ouch
23:57:15 <Vorpal> pikhq, strange m->n in "Cantabridgean"
23:57:48 <elliott> Vorpal: wait until you hear the one for Oxford students: Oxonian
23:57:57 <elliott> "The term is derived from Oxonia, the Latin form of Oxenford or Oxford."
23:57:58 <Vorpal> hahaha
23:58:05 <elliott> "The term is derived from Cantabrigia, a medieval Latin name for Cambridge invented on the basis of the Anglo-Saxon name Cantebrigge. (The actual Roman name for Cambridge was Duroliponte.)"
23:58:16 <Vorpal> well okay, that makes sense
23:58:29 <Vorpal> for some values of sense
23:59:04 <Vorpal> elliott, so actually they should be called Duroliponts or some such?
23:59:13 <oerjan> drollipoints
23:59:19 <elliott> duroliponteans :P
23:59:23 <Vorpal> ah
23:59:29 <Vorpal> I like oerjan's version
23:59:35 <elliott> I was joking
23:59:45 <Vorpal> elliott, which bit?
23:59:48 <Vorpal> "duroliponteans"?
2011-10-23
00:00:17 <elliott> yes
00:00:20 <Vorpal> oh okay
00:00:29 <oerjan> meanwhile i was absolutely, 100% certified serious.
00:00:33 <pikhq> English: because word formation should be nontrivial.
00:00:42 <Vorpal> pikhq, damn right.
00:00:52 <Vorpal> when even natives can't figure it out
00:01:20 <Vorpal> pikhq, I mean, as a non-native speaker I expect I wouldn't be good at it. But I find that native speakers are not much better at it than me.
00:01:27 <pikhq> Also, vestigial grammar is fun.
00:01:48 <Vorpal> In Swedish however it is usually quite easy to form new words
00:02:08 <Vorpal> pikhq, what does that mean?
00:02:13 <pikhq> For instance: English features Germanic strong verbs. Barely.
00:02:21 <Vorpal> oh?
00:02:21 <pikhq> We call them "irregular".
00:02:25 <Vorpal> oh right
00:02:39 <pikhq> Because there's not many strong verbs left.
00:02:56 <Vorpal> pikhq, they are quite irregular though. There is no pattern to them.
00:03:02 <oerjan> they mostly died during the plague
00:03:12 <CakeProphet> it seems that
00:03:21 <CakeProphet> no matter how careful I am. sieges always end in huge clusterfucks.
00:03:30 <Vorpal> CakeProphet, some game?
00:03:36 <pikhq> No, there is a pattern. Due to the infrequency of them, the pattern has ceased to be readily apparent to speakers.
00:03:36 <CakeProphet> df.
00:03:38 <elliott> CakeProphet: agreed, just ask agora :P
00:03:49 <Vorpal> CakeProphet, easy. Trap defence is best. But also quite boring
00:03:57 <oerjan> fling flang flung
00:03:59 <elliott> trap defence doesn't really solve sieges
00:04:01 <elliott> if they just stand there
00:04:03 <Vorpal> pikhq, there must be a lot of variants to the pattern then.
00:04:04 <elliott> works for ambushes
00:04:07 <pikhq> Also, it doesn't help that there's 6 classes of strong verb, each with their own conjugation rules.
00:04:11 <oerjan> spim spam spum
00:04:14 <CakeProphet> yes they usually just stand there
00:04:18 <Vorpal> elliott, trap the *entire* maåp
00:04:19 <Vorpal> map*
00:04:24 <CakeProphet> what I've been doing at that point is setting up ballistas and killing them from afar
00:04:26 <elliott> Vorpal: practical
00:04:29 <elliott> CakeProphet: waste of time
00:04:32 <CakeProphet> yeah.
00:04:37 <elliott> CakeProphet: just use danger rooms :P
00:04:39 <Vorpal> elliott, no, but the result should be hilarious
00:04:56 <pikhq> Vorpal: It's a feature common to all West Germanic languages, but only really noteworthy historically, and in modern German and Dutch.
00:05:02 <Vorpal> elliott, I actually want to trap the entire border of the map with serrated glass disks or such once.
00:05:15 <CakeProphet> lost about 20 people in that one.
00:05:22 <elliott> CakeProphet: you're doin it wrong
00:05:23 <pikhq> (it is *not* in Afrikaans)
00:05:29 -!- ive has quit (Ping timeout: 244 seconds).
00:05:30 <Vorpal> pikhq, yeah, Swedish have irregular verbs too I think. Can't think of any example atm
00:05:40 <Vorpal> pikhq, why Afrikaans in particular
00:05:53 <oerjan> synge sang sunget
00:06:05 <Vorpal> oerjan, sing?
00:06:08 <CakeProphet> also it seems that no matter how many "hey don't pick shit up orders " I set
00:06:09 <pikhq> Afrikaans has just lost strong verbs.
00:06:14 <CakeProphet> civilians end up swarming onto battlefields
00:06:14 <Vorpal> sjung sjöng sjungit
00:06:16 <Vorpal> so yeah irregular
00:06:19 <oerjan> yes, that's what it means
00:06:38 <oerjan> skrive skrev skrevet
00:06:41 <Vorpal> pikhq, what do you call the craziness with "to be"
00:06:53 <Vorpal> pikhq, am, are, is and so on
00:07:12 <oerjan> er var vært
00:07:16 <Vorpal> yes that
00:07:23 <Vorpal> wait what is the third form?
00:07:26 <Vorpal> for that one
00:07:29 <Vorpal> är var varit?
00:07:35 <Vorpal> err. No?
00:07:36 <pikhq> Vorpal: I *think* that's a carry-over from the Scandinavian languages?
00:07:40 -!- tiffany has quit (Quit: Leaving).
00:07:41 <pikhq> Erm. North Germanic.
00:07:44 <oerjan> Vorpal: i assume
00:07:47 <Vorpal> pikhq, we don't have that these days at least
00:08:02 <Vorpal> pikhq, we just use "är" for first person, second person and so on
00:08:19 <Vorpal> could be we (sensibly) lost that
00:08:25 <oerjan> i believe it was "ek em" in norse. even the icelandic have lost some of it
00:08:32 <Vorpal> heh
00:09:20 <CakeProphet> ugh, also
00:09:28 <CakeProphet> why is it when I try to build things in mass some of it gets suspended.
00:09:41 <elliott> bad planning
00:09:59 <CakeProphet> ?
00:10:10 <Vorpal> CakeProphet, resources needed for other constructions are under a construction that is planned before it
00:10:15 <Vorpal> that suspends for example
00:10:24 <Vorpal> CakeProphet, building is basically a stack
00:10:33 <Vorpal> so start with whatever you want to be built last
00:10:50 <CakeProphet> I'm just trying to build a large wall.
00:11:07 <Vorpal> CakeProphet, are there stones under it? that could be used to build different parts of the same wall?
00:11:10 <Vorpal> if so, there you are
00:11:29 <CakeProphet> I don't /think/ so.
00:11:58 <pikhq> Aaah. Part of it seems to be that English lost almost all of its case system.
00:12:17 <pikhq> (which is now a vestigial feature in its pronouns)
00:12:24 <Vorpal> CakeProphet, idea: wall the entire map, as close to the border as possible. Leave a long trap filled path in to the trading post
00:13:02 <pikhq> Language change does confusing things.
00:13:04 <Vorpal> if hilly terrain: cut off (by deramping) the edge to split it in many sections you can't walk between.
00:13:07 <Vorpal> pikhq, yeah
00:13:13 <CakeProphet> .....wtf my manager died
00:13:16 <CakeProphet> WHY
00:13:22 <oerjan> <Vorpal> so start with whatever you want to be built last <-- dwarfs are so logical
00:13:24 <CakeProphet> why do you stupidly rush out into battles.
00:13:26 <Vorpal> pikhq,
00:13:27 <elliott> CakeProphet: rip
00:13:33 <elliott> CakeProphet: why is he part of your military
00:13:40 <Vorpal> pikhq,* you still have the s for third persons on verbs. Swedish don't have that at all.
00:13:59 <CakeProphet> elliott: he's not dude.
00:14:19 <oerjan> CakeProphet: he got hemorrhoids. really nasty ones.
00:14:22 <CakeProphet> remember how I said civilians keep rushing into battles even though I turn off all the auto-gather stuff?
00:14:30 <Vorpal> I have two persons able to do the manager work. Because the manager goes to sleep when I need him most.
00:15:38 <Vorpal> <oerjan> <Vorpal> so start with whatever you want to be built last <-- dwarfs are so logical <-- it actually makes sense. What if you need to urgently do a construction right now? then if you had a queue you would have to clear it out. With a stack it is easier
00:15:46 <Vorpal> of course a deque would be even better
00:16:29 <olsner> "<oerjan> skrive skrev skrevet" - Skrive wrote the scrotum?
00:16:41 <Vorpal> olsner, XD
00:16:50 <oerjan> olsner: well yes it's actually ambiguous in norwegian
00:16:57 <oerjan> different tone though
00:16:57 <Vorpal> haha
00:17:44 <olsner> hmm, if that was the way we wrote it, I think it would have a different tone in swedish too
00:18:30 <oerjan> today's wikipedia "In the news" looks strangely synchronistic. four items about people or things coming to an end, followed by an item about a book named "The Sense of an Ending".
00:18:41 <Vorpal> olsner, how could it be a different tone in Swedish? We don't have "skrevet" as ambiguous.
00:19:26 <Vorpal> well I guess it could be a tone of wtfness at that interpretation
00:19:43 <elliott> oerjan: things on the wp main page are rarely coincidences :P
00:19:57 <pikhq> Hrm. "Skrive skrev skrevet" *almost* looks like English nonsense.
00:20:01 <oerjan> elliott: shush you infidel unbeliever
00:20:24 <pikhq> "Skrive skrove skrevets" looks a bit better.
00:20:33 <oerjan> elliott: the coincidence is all those things ending in the same week
00:20:51 <Vorpal> pikhq, are those actual English words?
00:20:53 <olsner> Vorpal: I think 'skrevet' has the different tone already, so it's more like another word spelled the same way would usually have the normal tone
00:20:54 <pikhq> Vorpal: No.
00:21:12 <Vorpal> oerjan, there are 5 things coming to and end. And the book stuck between the last too
00:21:13 <Vorpal> two*
00:21:19 <pikhq> Vorpal: But it parses to me as "English sentence composed of 3 words I don't know".
00:21:19 <oerjan> yes
00:21:51 <Vorpal> pikhq, heh
00:21:52 <olsner> ... it's all in the skroving of the skrevets
00:22:07 -!- pikhq_ has joined.
00:22:13 <Vorpal> pikhq, that is almost Swedish, skrov = hull (of a boat)
00:22:24 <Vorpal> skrovet would be "the hull"
00:22:42 <Vorpal> "Skrive" sounds like an Norwegian name
00:22:49 <Vorpal> and "skrevets", well, drop the s
00:22:50 <pikhq_> Also, "Skrive skrove a skrevet" for singular "skrevet".
00:23:11 <Vorpal> pikhq_, à would work I guess.
00:23:19 <Vorpal> but not for English
00:23:47 <Vorpal> or it would for English
00:23:53 <Vorpal> but in the "each" sense
00:23:55 <pikhq_> Yeah, English doesn't really handle singular/plural quite that way...
00:24:33 <Vorpal> pikhq_, just learn Swedish or Norwegian and do Scandinavian nonsense instead :D
00:24:33 <olsner> maybe there are normal skrevets, and special skrove skrevets for skroving... and for some reason the skrove skrevets need skriving
00:24:48 <Vorpal> olsner, ouch :P
00:24:56 -!- augur has quit (Remote host closed the connection).
00:25:14 <oerjan> fru ibsens ripsbusker og andre sjuksköterskar
00:25:17 <pikhq_> olsner: Also possible. But I was interpreting "Skrive" as a name.
00:25:22 <pikhq_> Sure works as an imperative, though.
00:25:23 <CakeProphet> I'm definitely fucked if there's another siege.
00:25:28 <Vorpal> olsner, hm skrovning would work in Swedish. The act of hulling a boat I guess
00:25:51 -!- pikhq has quit (Ping timeout: 256 seconds).
00:25:54 <Vorpal> oerjan, ripsbusker?
00:26:03 <Vorpal> oerjan, some form of shrub?
00:26:13 <pikhq_> Oh, better. "Skrive" works just fine as a verb, with past tense "skrove", gerund "skroving".
00:26:20 <oerjan> yes, with red sour berries
00:26:29 <Vorpal> oerjan, I read that as "Lady Ibsen's rip-shrubs and other nurses"
00:26:38 <Vorpal> which doesn't make a whole lot of sense
00:26:43 <pikhq_> So, "Skrive skrove skrevets" would parse as "Hull hulled hulls", I think.
00:26:54 <pikhq_> Or something.
00:26:55 <Vorpal> pikhq_, in which language?
00:27:08 <pikhq_> Vorpal: English with a verb "skrive".
00:27:27 <pikhq_> Which I cannot make myself handle in any way *but* as an "irregular" verb.
00:27:27 <Vorpal> pikhq_, skriv is related to write, skrov is related to hull. So Maybe Write hull writes?
00:27:40 <CakeProphet> elliott: I'm not really sure I get the diagonal flow thing.
00:27:42 <pikhq_> Well, what would make sense for "skrevet"?
00:27:55 <CakeProphet> it just means likee... shift the aquedact diagonally on a horizontal level?
00:28:02 <pikhq_> Vorpal: "Skrove" to me parses as a past tense of "skrive".
00:28:04 <oerjan> Vorpal: it wasn't meant to make sense, it was a norwegian tongue-twister seguing into a swedish one
00:28:08 <Vorpal> pikhq_, well skrevet = the scrotum
00:28:14 <Vorpal> pikhq_, hm
00:28:24 <pikhq_> Ah. So, "Write written scrotums"?
00:28:40 <Vorpal> pikhq_, I'm so confused by now. No idea.
00:28:50 <oerjan> pikhq_: skrive is cognate to scribe, i believe
00:29:02 <pikhq_> No, that would be "skrive skriven skrevets"...
00:29:12 <Vorpal> pikhq_, what are you doing?
00:29:24 <pikhq_> Vorpal: Messing around.
00:29:30 <Vorpal> right, carry on
00:29:41 <pikhq_> Trying to treat "skrive" as a verb and see what happens.
00:30:24 <Vorpal> pikhq_, yeah, well, I'm not a native speaker. Kind of hard for me to do that in English. And it wouldn't work in Swedish due to the e at the end.
00:30:26 <pikhq_> And finding it interesting that my natural inclination is to go with an irregular conjugation.
00:30:41 <Vorpal> pikhq_, anyway skriva (the Swedish variant) is irregular
00:30:58 <oerjan> Vorpal: vinbär, apparently
00:31:03 <Vorpal> oerjan, oh okay
00:31:55 <pikhq_> Yup. "skrive" fits the pattern for a class 1 strong verb, hence why I'm treating it that way without thinking about it.
00:32:21 <pikhq_> (other examples in English: "ride/rode/ridden", "write/wrote/written", "shine/shone/shone")
00:33:01 <Vorpal> hm what with the modern ability to record audio and video, do you think that pronunciation will start to change slower in the future?
00:33:35 <Vorpal> pikhq_, so skrive skrove skridden?
00:33:43 <CakeProphet> http://dl.dropbox.com/u/16495819/help.png am I doin' it right?
00:33:51 <CakeProphet> this is for a 3-width channel
00:33:54 <pikhq_> "Skrive/skrove/skriven" is how I'm getting it.
00:33:59 <pikhq_> By analogy with "drive/drove/driven".
00:34:05 <Vorpal> CakeProphet, no, the GTK+ theme is the wrong one
00:34:19 <oerjan> Vorpal: im 'spicious u theory
00:34:25 <monqy> dive dove diven
00:34:34 <CakeProphet> uh, any df water experts here?
00:34:47 <Vorpal> oerjan, well that is spelling (or lack of it) rather than pronunciation
00:34:50 <elliott> CakeProphet: jiggy is a stupid name
00:34:52 <monqy> diven sounds a bit weird
00:34:56 <Vorpal> oerjan, I specifically asked about pronunciation
00:35:01 <pikhq_> monqy: Yeah.
00:35:01 <monqy> did som,eone name someone jiggY? that's a bAd name
00:35:07 <CakeProphet> can everyone please stop paying attention to things that aren't related to my question. :P
00:35:16 <elliott> also clean up your panel
00:35:23 <monqy> ahh, skeype
00:35:23 <Vorpal> oh yeah it is a mess
00:35:36 <CakeProphet> I think by "mess" you mean perfectly organized.
00:35:47 <Vorpal> CakeProphet, also why 3 terminal windows? Have you tried tabs in the terminal emulator?
00:35:56 <CakeProphet> ... -_-
00:35:56 <Vorpal> oh wait, 4
00:36:08 <elliott> CakeProphet: also, change your name, adam is a stupid name
00:36:19 <CakeProphet> HELP. WATER. FLOODING FORTS.
00:36:20 <monqy> is that "maria"?
00:36:24 <CakeProphet> AM I DOING IT RIGHT?
00:36:32 <monqy> mine's "okay"
00:36:36 <monqy> i think it's....okay
00:36:38 <olsner> monqy: could be mari or marie as well
00:36:49 <Vorpal> CakeProphet, is the green one the memory meter?
00:36:52 <monqy> could be mario
00:36:53 <monqy> who knows
00:36:55 <CakeProphet> Vorpal: yes
00:37:10 <monqy> but I trust cakeprophet wouldn't name it mario. that would just be bad.
00:37:11 -!- pikhq has joined.
00:37:13 <Vorpal> CakeProphet, you need more RAM. Too much of it used. Unless most is disk cache
00:37:18 <CakeProphet> ..................................
00:37:19 <olsner> you seem to be using a gui file manager too, that can't be good
00:37:21 <CakeProphet> I don't
00:37:21 <CakeProphet> care
00:37:22 <CakeProphet> about
00:37:22 <CakeProphet> any
00:37:25 <CakeProphet> of
00:37:27 <CakeProphet> that
00:37:36 <monqy> 12 hour clock? seriously?
00:37:44 <CakeProphet> yes, I'm an American.
00:37:44 <Vorpal> yeah wtf about that
00:37:51 <elliott> how is that relevant
00:37:59 <olsner> CakeProphet: ... you wanted to know whether you were "doing it right", we're answering
00:38:02 <CakeProphet> ...I am accustomed to 12-hour clocks?
00:38:02 <Vorpal> CakeProphet, also wlan? Not ethernet?
00:38:22 <pikhq> All this discussion of English irregular verbs makes me really freaking glad that Japanese is more regular.
00:38:25 <CakeProphet> no I'm specifically asking
00:38:30 <CakeProphet> if this diagonal arrangement
00:38:32 -!- numero has joined.
00:38:34 <monqy> good thing im japanese
00:38:34 <CakeProphet> is what df wiki is talking about.
00:38:40 <Vorpal> CakeProphet, answer: no
00:38:46 <CakeProphet> then what does it mean?
00:38:51 <pikhq> monqy: Oh, then you got fucked learning English. Congrats. :P
00:38:53 <Vorpal> what it actually means
00:39:00 <monqy> i jest
00:39:01 <Vorpal> CakeProphet, you know, shift-prtscreen would have saved you all this
00:39:07 <pikhq> I figured.
00:39:24 <Vorpal> CakeProphet, the corridor wideness must be like this
00:39:25 <CakeProphet> but yes, my computer looks different from yours.
00:39:26 <Vorpal> x
00:39:28 <Vorpal> x
00:39:30 <elliott> hi numero
00:39:30 <Vorpal> gah
00:39:31 <Vorpal> X
00:39:31 <elliott> `? welcome
00:39:32 <Vorpal> X
00:39:34 <Vorpal> X
00:39:35 <Vorpal> X
00:39:36 <Vorpal> X
00:39:37 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
00:39:38 <Vorpal> there
00:39:40 <Vorpal> CakeProphet, see?
00:39:42 <CakeProphet> ....no
00:39:48 <monqy> X
00:39:54 <Vorpal> CakeProphet, not using monospace font?
00:39:55 <Vorpal> for irc
00:39:55 -!- pikhq_ has quit (Ping timeout: 240 seconds).
00:39:59 <Vorpal> if not then it is your own issue
00:40:02 <CakeProphet> Vorpal: no I am.
00:40:15 <CakeProphet> I just don't get what you mean. 1-tile wide?
00:40:28 <Vorpal> CakeProphet, well it must be a proper diagonal. As in 0 tiles wide at the very corner
00:40:37 <Vorpal> iirc
00:40:48 <CakeProphet> can you like....
00:40:58 <CakeProphet> screenshot a designation in df so I can visualize this.
00:41:26 <CakeProphet> I mean I think I get the diagonalness, but...
00:41:32 <CakeProphet> how do you maintain the same flow?
00:41:34 <Vorpal> no I can't run df on the computer I'm on atm
00:41:42 <Vorpal> CakeProphet, you want to cut away the pressure right?
00:41:43 <CakeProphet> atms make poor computers.
00:41:46 <CakeProphet> most are written in Java.
00:41:51 <CakeProphet> Vorpal: correct.
00:42:25 <olsner> most are written in Java? I thought they all used OS/2 and Presentation Manager
00:42:43 <olsner> could be REXX
00:42:51 <Vorpal> CakeProphet, something like this would work (> is water flow direction, # is solid wall)
00:42:53 <Vorpal> XXXXXX
00:42:53 <Vorpal> > X
00:42:53 <Vorpal> > X
00:42:53 <Vorpal> > X
00:42:53 <Vorpal> XXXXXX
00:42:54 <lambdabot> Not in scope: data constructor `X'
00:42:54 <lambdabot> Not in scope: data constructor `X'
00:42:54 <lambdabot> Not in scope: data constructor `X'
00:42:59 <Vorpal> err X is solid wall
00:43:05 <CakeProphet> oh.
00:43:08 <CakeProphet> where is the... space.
00:43:19 <Vorpal> CakeProphet, in the corners
00:43:51 <Vorpal> CakeProphet, there are god damn illustrations at http://df.magmawiki.com/index.php/DF2010:Pressure#Diagonal_Flow
00:43:55 <Vorpal> why didn't you look there
00:43:57 <CakeProphet> ah so the width is irrelevant?
00:44:01 <CakeProphet> Vorpal: I did
00:44:04 <CakeProphet> I don't understand the diagram.
00:44:06 <CakeProphet> it looks to me
00:44:10 <CakeProphet> that there is a diagonally wall
00:44:13 <Vorpal> CakeProphet, anyway it would need to be 2 wide I guess
00:44:18 <CakeProphet> that would just block everything.
00:44:32 <Vorpal> CakeProphet, there is. But it doesn't block water. Water can flow diagonally
00:44:41 <CakeProphet> .....ooooooooooooh.
00:44:44 <CakeProphet> I see.
00:44:52 <Vorpal> CakeProphet, same as iirc dwarves can go diagonally. Unless I'm confusing it with nethack
00:45:17 <CakeProphet> also it recommends using one more diagonal than the width of the channel
00:45:23 <Vorpal> CakeProphet, anyway the graphics on screen is only a representation of a complex FSA.
00:45:24 <CakeProphet> I wonder how that works. I guess I just widen it at that segment.
00:45:49 <Vorpal> CakeProphet, it is just that water flows quite slowly through a not very wide one
00:46:01 <Vorpal> CakeProphet, so using a 3 wide like in the picture is faster
00:46:16 <Vorpal> an 1 wide one is going to take bloody ages
00:48:59 -!- augur has joined.
00:49:09 <Vorpal> CakeProphet, maybe you looked at the image but you didn't read
00:49:11 <Vorpal> "Liquids moving via pressure can only move to orthogonally adjacent tiles. When faced with a diagonal gap, pressure will fail to move the liquid, forcing the liquid to instead spread out. By forcing fluids through a diagonal connection you can prevent pressure from propagating past a certain point. "
00:49:14 <CakeProphet> shift+prntscr doesn't seem to create a dialog. does it just copypaste?
00:49:30 <CakeProphet> no I read it I just uh, wasn't understanding it.
00:49:44 <Vorpal> CakeProphet, for me it does the dialogue and just takes the current window
00:49:47 <Vorpal> but I'm using xfce
00:49:51 <CakeProphet> I thought it meant if water moved diagonally it magically stopped having pressure, which I'm pretty sure it says.
00:49:52 <Vorpal> maybe it is different in gnome
00:50:03 <CakeProphet> but I was misunderstanding how water flows diagonally.
00:50:16 <Vorpal> I thought it meant if water moved diagonally it magically stopped having pressure, which I'm pretty sure it says. <-- yep
00:50:26 <CakeProphet> ah it's meta
00:50:29 <CakeProphet> not shift for me
00:50:49 <Vorpal> okay
00:51:06 -!- numero has quit (Quit: Leaving).
00:51:10 <CakeProphet> http://dl.dropbox.com/u/16495819/BecauseSomePeopleAreJerks.png
00:51:13 <CakeProphet> so then like this I believe.
00:51:40 <Vorpal> CakeProphet, anyway with wider than the current corridor it means that the corridor should widen at the point of the diagonal and then go back to the less wide version after
00:51:55 <Vorpal> CakeProphet, but yes that should work, slightly slow though
00:52:00 <CakeProphet> I'm using this as a well so I really think 3-wide is already overkill.
00:52:22 <Vorpal> CakeProphet, remember to have >=2 deep at the point of the well or you will get dirty water
00:52:28 <Vorpal> which cause an unhappy thought
00:52:32 <elliott> CakeProphet: your window buttons are on the wrong side
00:52:48 <Vorpal> elliott, not at all!
00:52:50 <CakeProphet> elliott: incorrect.
00:53:01 <elliott> CakeProphet: you shouldn't have window decorations in the first place
00:53:04 <CakeProphet> protip: people like different UI configurations.
00:53:07 <elliott> also, your DF window is the wrong size
00:53:10 <elliott> and you smell funny
00:53:14 -!- cheater has quit (Quit: Ex-Chat).
00:53:14 <Vorpal> they are the wrong colours though
00:53:25 <Vorpal> come on, orange button on dark grey
00:53:37 <Vorpal> naff
00:54:02 <Vorpal> CakeProphet, also you have a combat report to read says df. And a sparring report.
00:54:02 <CakeProphet> I think it looks nice.
00:54:06 <Vorpal> or more than one
00:54:09 <Vorpal> of each
00:54:12 <Vorpal> or just of one of them
00:54:23 <Vorpal> CakeProphet, the C and the R on the left side that is
00:54:32 <Vorpal> indicates combat and sparring reports to read
00:54:54 <CakeProphet> moment of truth. time to dig into my cistern.
00:55:35 <CakeProphet> actually wait I'll make a floodgate first.:P
00:55:41 <Vorpal> yeah good idea
00:55:51 <CakeProphet> though I already have everything closed by doors
00:55:58 <CakeProphet> I just won't be able to fix it if I mess it up.
00:56:22 <Vorpal> flood gates are good
00:57:31 <Vorpal> CakeProphet, anyway, above-ground fort made out of moulded obsidian is better
00:58:59 <Vorpal> CakeProphet, with underground tunnels to archer towers
01:00:28 <Vorpal> CakeProphet, oh and you should play Kobold Camp
01:01:40 <Vorpal> http://www.bay12forums.com/smf/index.php?topic=70558.0
01:03:49 <CakeProphet> .......oh fuck.
01:03:56 <CakeProphet> so my best swordsman / milita captain
01:04:03 <CakeProphet> is tantrumming now.
01:04:04 <CakeProphet> and he has
01:04:11 <CakeProphet> a steel long sword.
01:04:15 <CakeProphet> like the only one.
01:04:19 <CakeProphet> everyone else has copper stuff.
01:04:51 <CakeProphet> so in the exact same instant that he started tantruming, someone else died. :P
01:05:36 <Vorpal> ouch
01:05:43 <Vorpal> CakeProphet, you need happier dwarves
01:05:59 <Vorpal> CakeProphet, masterwork engravings in the dining hall
01:06:15 <CakeProphet> well I had some
01:06:18 <CakeProphet> not all were masterwork I think.
01:06:22 <Vorpal> CakeProphet, adamantine statutes
01:06:30 <CakeProphet> ...yeah okay
01:06:33 <Vorpal> you can't go wrong with masterwork adamantine statutes
01:06:34 <CakeProphet> is gold good enough
01:06:37 <Vorpal> sure
01:06:43 <CakeProphet> because I already have plenty of those.
01:06:45 <Vorpal> CakeProphet, my dwarves party all the time it seems
01:06:52 <Vorpal> CakeProphet, nice bedrooms
01:07:01 <Vorpal> 6 hour days
01:07:10 <Vorpal> lots of food and booze
01:07:24 <Vorpal> (drop the 6 hour day one)
01:07:45 <Vorpal> (you would end up like Greece)
01:09:37 -!- nooga has quit (Ping timeout: 252 seconds).
01:14:15 -!- Jafet has quit (Quit: Leaving.).
01:30:49 <Vorpal> seems like parts of IIS runs in the NT kernel
01:30:51 <Vorpal> how weird
02:01:00 <CakeProphet> awww yeah I have a fishing room
02:01:52 <Vorpal> heh
02:05:51 <Vorpal> night
02:10:07 -!- Vorpal has quit (Ping timeout: 256 seconds).
02:16:38 <CakeProphet> artifact... mechanism?
02:27:55 <CakeProphet> conveniently enough.
02:27:59 <CakeProphet> danger rooms are excellent baby killers.
02:28:08 <elliott> use doors, idiot
02:28:11 * elliott helpful
02:36:30 <CakeProphet> no killing babies is good.
02:36:58 <elliott> you could just use a popcap
02:37:17 <CakeProphet> uh what is that.
02:56:07 <CakeProphet> for fucks sake.
02:56:15 <CakeProphet> I turn off everything
02:56:22 <CakeProphet> remove any sort of reason to go outside
02:56:32 <CakeProphet> and then people just wander towards the goblin siegers.
02:56:35 <CakeProphet> I don't understand.
03:02:15 <CakeProphet> uuuuuugh
03:02:42 <elliott> CakeProphet: Did you set up an alert?
03:03:05 <CakeProphet> what would that do?
03:03:53 <CakeProphet> ...oh.
03:03:57 <CakeProphet> I didn't know I could do that.
03:04:18 <elliott> That's...
03:04:23 <elliott> Why your troops keep dying.
03:04:25 <elliott> And your manager.
03:04:27 <elliott> And everyone.
03:07:17 <CakeProphet> wow.
03:07:24 <CakeProphet> so I have like...
03:07:28 <CakeProphet> two ridiculously good soldiers.
03:07:36 <CakeProphet> that just fended off a huge swarm of goblins.
03:08:13 <elliott> that's DRs for you
03:10:49 <CakeProphet> they both went into martial trance.
03:15:23 <CakeProphet> I think this fortress is likely a lost cause, as the sieges will only get worse.
03:15:53 <elliott> no they won't
03:15:57 <elliott> they go away after a few
03:15:59 <elliott> that's the point of a siege
03:16:02 <elliott> even one, sometimes
03:16:19 <CakeProphet> er, I mean
03:16:20 <CakeProphet> future sieges
03:16:30 <elliott> they won't
03:16:31 <elliott> if you win
03:16:52 <CakeProphet> wow these master things.
03:16:56 <CakeProphet> are very sturdy.
03:17:29 <CakeProphet> mooseheaded dudes.
03:17:32 <CakeProphet> with poison spit or something.
03:17:49 <CakeProphet> I think this is the king of the goblins?
03:17:55 <CakeProphet> so if I kill him they might leave me alone?
03:18:05 <elliott> what
03:18:30 <CakeProphet> the master of the goblins is some kind of moose thing.
03:18:40 <CakeProphet> yep that's him
03:18:50 <CakeProphet> Lomoth Gogoltacnu Sath Ura -- master/Moose Demon Administrator
03:19:37 <elliott> uh
03:19:38 <elliott> what
03:19:57 <elliott> that uh
03:19:58 <elliott> what
03:20:03 <elliott> do you have any mods
03:20:03 <CakeProphet> that is the leader of the goblin civilization near me.
03:20:05 <CakeProphet> no.
03:20:10 <elliott> no that
03:20:13 <elliott> isn't a thing that happens
03:20:15 <elliott> you must be mistaken
03:20:22 <CakeProphet> I haven't done anything extra to this game...
03:20:37 <CakeProphet> I'm not entirely sure I can kill this thing.
03:20:48 <CakeProphet> pretty much every body part he has is either cut open, broken, or gone.
03:20:50 <CakeProphet> but he's still alive.
03:20:54 <elliott> did you pierce hell dude
03:20:57 <elliott> that's what demons are
03:20:59 <CakeProphet> no.
03:21:06 <elliott> adamantine
03:21:09 <elliott> do you have any adamantine
03:21:11 <CakeProphet> no.
03:21:15 <elliott> screenshot
03:21:30 <CakeProphet> I lost track of him one sec
03:21:54 <CakeProphet> uh what kind of screenshot do you want?
03:21:59 <CakeProphet> he's a purple ampersand...
03:22:02 <CakeProphet> lol
03:22:24 <elliott> view him
03:22:26 <elliott> and screenshot the whole thing
03:23:21 <CakeProphet> http://dl.dropbox.com/u/16495819/Screenshot-Dwarf%20Fortress.png
03:23:23 <CakeProphet> I'm fucked aren't I? :P
03:23:30 <CakeProphet> my military is almost gone.
03:23:36 <CakeProphet> but no he is definitely the leader of the goblin civilization
03:23:40 <CakeProphet> shows up in the civilization menu thing.
03:23:57 <elliott> dude
03:24:02 <elliott> mooses don't lead civilisations
03:24:08 <elliott> maybe it just has the same name
03:24:09 <CakeProphet> THIS ONE DOES DUDE
03:24:09 <elliott> also
03:24:11 <elliott> sting???
03:24:15 <elliott> this thing is definitely a demon
03:24:16 <elliott> I
03:24:20 <elliott> CakeProphet: save the game and quit
03:24:25 <elliott> the baygames people need to look at this
03:24:25 <CakeProphet> YEAH DUDE IT'S A MOOSE DEMON ADMINISTRATOR
03:24:29 <elliott> ok wait
03:25:10 <CakeProphet> maybe they allow things like this on purpose?
03:25:14 <elliott> CakeProphet: wait a sec, wait a sec
03:25:18 <CakeProphet> paused.
03:26:24 <CakeProphet> he did some kind of knockback thing
03:26:29 <CakeProphet> that killed my best swordsdwarf.
03:26:40 <elliott> CakeProphet: irc.newnet.net
03:26:51 -!- CakeProphet has quit (Quit: Changing server).
03:26:54 <elliott> ...
03:26:55 <elliott> idiot
03:27:38 -!- CakeProphet has joined.
03:31:02 <elliott> CakeProphet: ..
03:31:05 <elliott> s/../.../
03:31:52 <elliott> CakeProphet: have you figured out how to use your client
03:32:27 <CakeProphet> yes.
03:32:32 <CakeProphet> it's not my fault irssi is weird.
03:32:33 <elliott> CakeProphet: #bay12games on that server
03:32:46 <elliott> ask them wtf is going on, provide screenshots of civilisation tab and http://dl.dropbox.com/u/16495819/Screenshot-Dwarf%20Fortress.png
03:33:57 <CakeProphet> Snamoz Osnung, "The Hatred of Rhyming"
03:34:05 <CakeProphet> obviously they do not like that my dwarves are excellent freestylers.
03:34:12 <CakeProphet> and have decided to attack me
03:34:15 <CakeProphet> with their moose demon adminstrator.
03:34:25 <CakeProphet> (administrator of pain)
03:35:06 <elliott> you could be sitting on a valuable glitch, stop messing around and ask :p
03:37:16 <CakeProphet> 23:35 < adam> Are moose demons supposed to be leaders of goblin civilizations?
03:37:16 <CakeProphet> 23:36 < adam> http://dl.dropbox.com/u/16495819/Screenshot-Dwarf%20Fortress.png
03:37:16 <CakeProphet> 23:36 < adam> http://dl.dropbox.com/u/16495819/CivTab.png
03:37:16 <CakeProphet> 23:36 -!- Archi [~Archi@NewNet-492A2BF0.jetstream.xtra.co.nz] has quit [Ping timeout]
03:37:19 <CakeProphet> 23:36 < FFLaguna> Sure
03:37:24 <CakeProphet> good answer.
03:38:21 <elliott> CakeProphet: ask them why it's on your map :P
03:39:29 <CakeProphet> elliott: apparently it's completely intentionally
03:39:30 <CakeProphet> not a glitch.
03:39:38 <elliott> wow :P
03:39:42 <elliott> i don't even know what a moose demon _is_
03:39:46 <elliott> I guess
03:39:48 <elliott> it's one of the hell demons
03:39:53 <elliott> because they are all like that
03:39:54 <elliott> but
03:39:55 <elliott> still
03:39:56 <elliott> jee
03:39:56 <elliott> z
03:41:46 <CakeProphet> a moose demon is a moose demon dude.
03:41:47 <CakeProphet> he spits poison
03:41:52 <CakeProphet> but yeah demons are random gen
03:42:23 <CakeProphet> dude this battle is taking forever.
03:43:27 <CakeProphet> lol he has a crown made of elf nails.
03:43:35 <CakeProphet> and an elf hair bracelet.
03:44:29 <elliott> who doesn't
03:45:26 <CakeProphet> perhaps I should release my 12 badger cages.
03:45:30 <CakeProphet> (note: this is a bad idea)
03:45:54 <CakeProphet> elliott: but it really does make sense that a bunch of goblins would come under the influence of a demon.
03:45:59 <elliott> a moose demon.
03:46:01 <CakeProphet> just not quite sure how he got out of hell.
03:46:03 <CakeProphet> yes, moose demon.
03:46:29 <CakeProphet> I actually noticed that earlier
03:46:37 <CakeProphet> when I saw "moose demon administrator" I thought it was just a weird title.
03:46:40 <CakeProphet> for some goblin dude.
03:46:43 <CakeProphet> nope. actual moose demon.
03:46:56 <CakeProphet> dude if I kill this guy, maybe...
03:47:00 <CakeProphet> there will be no more goblin sieges?
03:47:10 <CakeProphet> (probably not going to kill this guy)
03:47:15 <CakeProphet> all of my good soldiers are dead
03:47:23 <CakeProphet> I'm just conscripting civilizations at this point.
03:47:50 <elliott> CakeProphet: yeah uh
03:47:52 <elliott> you can't kill a demon
03:47:56 <elliott> not without a really good military
03:47:56 <elliott> just
03:47:58 <elliott> leave it alone and hope it leaves
03:48:11 <CakeProphet> uh......
03:48:12 <CakeProphet> how do I...
03:48:14 <CakeProphet> do that.
03:48:33 <CakeProphet> disband my military completely?
03:48:40 <CakeProphet> I don't think it will leave.
03:48:46 <bd_> wall it off
03:48:46 <elliott> just
03:48:47 <elliott> where is it
03:48:58 <bd_> demons will break down doors but they won't break down constructed walls
03:49:11 <bd_> so you can wall off and survive trapped underground
03:49:22 <bd_> with some luck the traders will be able to kill it off when they come by next
03:49:37 <elliott> bd_: you should play rosyarrow if ngevd ever finishes his turn
03:49:42 <bd_> rosyarrow?
03:49:45 <elliott> we're planning a large-scale invasion of hell
03:49:51 <elliott> and then walling off its edges
03:49:51 <bd_> oh dear
03:49:56 <elliott> and putting the traders there
03:50:00 <elliott> surrounded by demon cages
03:50:04 <elliott> that is also how we will kill the elves
03:50:15 <bd_> I thought I read somewhere that the hell dimension... shifts?
03:50:17 <elliott> other fun stuff: it's literally on the coast; over half the overground map is sea
03:50:35 <elliott> and our well is permanently salty due to a bug
03:50:46 <bd_> fixable with a pump, I'd think?
03:50:51 <elliott> nope
03:50:53 <elliott> every tile below sea level
03:50:56 <elliott> becomes salty
03:51:00 <elliott> water tile, that is
03:51:01 <elliott> no matter what
03:51:04 <bd_> ... oh.
03:51:10 <bd_> ... but above sea level is fine, right?
03:51:10 <elliott> dfhack added support to fix it when we found that out
03:51:13 <elliott> but we haven't ran it yet :p
03:51:14 <elliott> bd_: yeah
03:51:16 <elliott> but
03:51:18 <elliott> above sea level
03:51:21 <elliott> like i said
03:51:28 <elliott> like two thirds+ of the map is water
03:51:44 <bd_> is there a thread summarizing what's happened so far before I commit to managing some kind of cursed hellhole? >.>
03:51:55 <elliott> yeah it's called our irc logs
03:51:59 <bd_> heh
03:52:03 <elliott> but ngevd's turn has lasted like
03:52:04 <bd_> haven't been idling here that long :)
03:52:05 <elliott> a real-world month so far
03:52:07 <elliott> because he's useless
03:52:12 <elliott> bd_: actually, of another channel :p
03:52:35 <bd_> also, note, I'm more of the trapping-nobels persuasion than the DF military persuasion. never quite figured out how to get those damn dwarves to actually train. or maybe it was buggy in the last version that I tried <.<
03:52:35 <elliott> ...anyway, I'd rather we avoided using cave-ins on the demons... which is a rather unpopular position...
03:52:43 <elliott> because i want to trap as many as possible :p
03:52:44 <bd_> what about magma traps?
03:52:47 <bd_> oh
03:52:49 <elliott> bd_: we've been dangerrooming indiscriminately
03:52:54 <bd_> what about cave-in cage traps?
03:52:59 <elliott> cave-in cage traps?
03:53:04 <elliott> the plan was to use a GCS to web them
03:53:09 <elliott> so that they fall into cage traps
03:53:11 <bd_> dangerrooming?
03:53:18 <elliott> yes we are ultimate cheaters
03:53:33 <bd_> I mean, what is dangerrooming?
03:53:46 <bd_> ... oh
03:53:52 <bd_> right then.
03:54:02 <elliott> heh
03:54:07 <bd_> clever. and sadistic.
03:54:14 <bd_> so totally in line with the usual DF playstyle
03:54:17 <elliott> two of our dwarves killed like ten master goblin soldiers
03:54:19 <elliott> in seconds
03:54:20 <elliott> or was it thirty
03:54:23 <elliott> I think it was thirty
03:54:44 <elliott> oh, and the goblins killed the human traders...
03:54:58 <elliott> it's basically ten disasters piled on top of each other: the fortress
03:55:58 <bd_> what channel have you been playing this in?
03:56:10 <bd_> ... also, do I know you from somewhere other than here? <.<;
03:56:44 <CakeProphet> he seems to have stopped moving.
03:56:51 <CakeProphet> perhaps I've hurt him enough to make that possible.
03:57:08 <bd_> CakeProphet: check his stats?
03:57:09 <elliott> CakeProphet: he's just tired
03:57:21 <elliott> give him some rest, he's earned it
03:57:22 <CakeProphet> in any case it's an excellent opportunity o wall him in.
03:57:22 -!- pikhq_ has joined.
03:58:24 <CakeProphet> do demons like...
03:58:26 <CakeProphet> heal rapidly?
03:58:56 <CakeProphet> yeah some of his wounds have turned into scars.
03:59:53 -!- pikhq has quit (Ping timeout: 245 seconds).
04:01:19 <bd_> CakeProphet: Can he fly? because if not this is a great time to start channeling out all but one tile of support for a 10 z-level column directly above him...
04:01:40 <CakeProphet> no he can't fly.
04:01:42 <CakeProphet> he's a moose, duh.
04:02:41 <CakeProphet> lol tantrum time.
04:02:53 <bd_> What Fun!
04:04:08 <CakeProphet> could I perhaps drown him?
04:04:34 <bd_> CakeProphet: if you're going to do that make sure to take proper precautions in case he can swim and breathe underwater
04:05:05 <elliott> precautions are boring
04:05:19 <CakeProphet> I'm great are precautions.
04:05:24 <CakeProphet> my water system is boss
04:05:48 <CakeProphet> so yeah my jail has turned into a demon holding area.
04:06:24 <bd_> next: create an arena for elf-demon battles
04:06:26 <elliott> good jail
04:06:32 <Sgeo|web_> CakeProphet elliott tswett (not you) PH isn't here: 100%
04:07:23 <CakeProphet> eh I was going to drown him in the hopes that the goblins would leave me alone now;
04:07:30 <CakeProphet> so I can "prosper"
04:10:29 <CakeProphet> what makes something pale"
04:10:31 <CakeProphet> ?
04:10:42 <CakeProphet> does being a demon make you pale?
04:11:59 <elliott> that's dying, I think
04:12:01 <elliott> http://df.magmawiki.com/index.php/DF2010_Talk:Wound#Pale
04:13:09 <CakeProphet> ah so he is near death then.
04:13:29 <CakeProphet> but being a demon he might just heal? I don't know how that works.
04:17:54 <CakeProphet> migrants yessssss
04:18:51 <elliott> how many dorfs
04:19:39 <CakeProphet> I had 39 before now.
04:21:01 <elliott> oh
04:21:02 <elliott> young fortress
04:21:24 <CakeProphet> er, no
04:21:31 <elliott> why haven't you been getting migrants
04:21:33 <CakeProphet> max population was 90-something.
04:21:38 <elliott> oh
04:21:38 <elliott> deaths
04:21:41 <CakeProphet> yep
04:22:02 <CakeProphet> my tomb is pretty impressive. :P
04:22:22 <oerjan> rule of tomb
04:22:52 <elliott> oerjan: you haven't added the parenthical yet >:)
04:23:06 <oerjan> ...you haven't reloaded properly.
04:23:21 <elliott> oh, dearn
04:23:22 <elliott> darn
04:23:25 <elliott> oerjan: it should be at the top, not the bottom
04:23:32 <elliott> to keep the page in chronological order
04:23:35 <elliott> (reverse)
04:23:45 <oerjan> @_@
04:23:50 <elliott> and to avoid "editing" existing material (the space between the note and the heading)
04:24:52 <oerjan> i think i shall keep it this way just to drive you crazy.
04:24:58 <elliott> oerjan: I'll tell zzo.
04:25:05 <elliott> You don't want that.
04:25:22 * oerjan has ops
04:25:58 <shachaf> How does zzo work, exactly?
04:26:03 <elliott> shachaf: well.
04:26:12 <elliott> oerjan: You couldn't ban zzo You wouldn't.
04:26:15 <elliott> s/zzo/zzo./
04:26:30 <oerjan> you are probably right about that.
04:26:38 * shachaf hasn't quite figured the whole topic out.
04:26:55 <oerjan> it would somehow disturb the fragile remains of order in the universe.
04:26:59 -!- MDude has changed nick to MSleep.
04:27:15 <elliott> shachaf: What topic?
04:27:25 <shachaf> zzo
04:27:46 <elliott> shachaf: Just accept it.
04:28:06 <shachaf> I suppose that's the way to go.
04:28:29 * shachaf is at airport with free WiFi.
04:28:30 <shachaf> The wonders of modern technology.
04:29:07 <shachaf> Also, ~8 Mbps download/upload. Way faster than what I have at home.
04:29:25 <elliott> shachaf: Is it in... uh...
04:29:32 <elliott> Who's on UTC right now?
04:29:47 <shachaf> The server my IRC client runs on, it would seem.
04:30:10 <elliott> Darn.
04:30:17 <oerjan> iceland, maybe?
04:30:20 <shachaf> (I'm flying SJC->JFK.)
04:30:34 <oerjan> or do they have dst
04:31:00 <Sgeo|web_> Why would zzo be banned?
04:31:08 <oerjan> Sgeo|web_: beats me
04:31:17 <elliott> ah yes, iceland are on utc right now
04:31:22 <elliott> perhaps, always
04:31:28 <elliott> Time zoneGMT (UTC+0)
04:31:28 <elliott> - Summer (DST)not observed (UTC)
04:31:32 <oerjan> elliott somehow deduced it as the plausible conclusion
04:31:37 <elliott> shachaf: Iceland airport, right?
04:31:44 <elliott> oerjan: banning me wouldn't stop zzo. :)
04:31:52 <elliott> now fix it
04:31:53 <oerjan> ...darn
04:32:02 <shachaf> What is the thing being fixed?
04:32:16 <oerjan> elliott: i'll just claim the page has a retrograde movement
04:32:24 <elliott> oerjan: but then you need to move all the content to the top
04:32:37 <oerjan> no no, only _new_ content is affected
04:32:50 <elliott> you are bad person
04:33:03 * oerjan wonders if elliott got the pun
04:33:06 <elliott> pikhq_: huh: http://wiki.debian.org/ReleaseGoals/RunDirectory
04:33:16 <elliott> oerjan: no i'm actually an idiot, sorry to mislead
04:33:19 <elliott> <oerjan> you didn't mislead
04:34:05 <oerjan> shachaf: http://oerjan.nvg.org/agora-horoscope/
04:34:16 <oerjan> unless i mistyped it
04:34:19 <elliott> nope
04:34:59 <oerjan> well to be precise it has already been fixed, but some elliotts remain unsatisfied
04:35:10 <elliott> many elliotts
04:35:33 <oerjan> well you, and possibly facekicker, since he's evil
04:37:16 <elliott> brb; i expect COMPLETE FIXES when i return
04:37:22 <elliott> or i will demand my money back.
04:37:40 <oerjan> scary.
04:39:15 <Sgeo|web_> retrograde is an astrology term
04:39:31 <oerjan> DING DING
04:40:04 * Sgeo|web_ had a book on astrology when he was young
04:40:11 <Sgeo|web_> The Complete Idiot's Guide to Astrology
04:40:13 <pikhq_> elliott: It's not exactly a Debian-unique thing.
04:40:32 <pikhq_> It's probably going to be in the FHS in the near future.
04:40:55 <Sgeo|web_> I forget what nodes are, though. North and south pole related?
04:41:18 <oerjan> i'm not sure i ever knew
04:42:00 <Sgeo|web_> "More specifically, the Moon's nodes are the points where the Moon's orbit intersect the plane of the ecliptic."
04:42:04 <Sgeo|web_> http://cafeastrology.com/northnodesouthnode.html
04:42:34 <Sgeo|web_> There's a North Node and a South Node
04:42:44 <oerjan> ah
04:44:51 <Sgeo|web_> Why is there only one node in that chart?
04:47:32 <zzo38> Sgeo|web_: Usually only the North Node is specified because the South Node is opposite to it by definition. The lunar nodes can be used to predict eclipses.
04:47:42 <zzo38> (See the Wikipedia article about lunar nodes)
04:50:01 <zzo38> Do you know anything about balanced Eulerian tournament digraphs?
04:52:59 <Sgeo|web_> No
04:56:16 <CakeProphet> Little do demons know that though their claws and fire cannot pierce the adamantine sealing them away, a simple copper pick can dig right through it with ease. Armok forbid these unholy creatures ever get their hands on one.
04:56:48 <zzo38> Do you understand the lunar nodes now? I didn't know what it was either until I looked on Wikipedia, so I know how it related to solar and lunar eclipses, and so on. That astrology article doesn't help much, unless you want to know what they represent in interpretations.
05:01:35 <oerjan> yeah
05:03:27 -!- oerjan has quit (Quit: Good night).
05:05:15 <zzo38> However, that astrology stuff did describe something I could not find on Wikipedia, which is what Vertex is. It is as follows: "The Vertex is a point located in the western hemisphere of a chart (the right-hand side) that represents the intersection of the ecliptic and the prime vertical."
05:13:54 <CakeProphet> http://df.magmawiki.com/index.php/File:Champions.png
05:14:05 <CakeProphet> best screenshot.
05:17:00 <elliott> CakeProphet: that's from the twodee version
05:17:14 <elliott> i yhink
05:17:16 <elliott> dunno
05:18:09 <zzo38> It also describes the Sun/Moon midpoint, which is half way between Sun and Moon. But there are two. You could choose the closer one, I suppose, but then how do you know what to choose during a full moon? Or you could choose a direction (such as clockwise from the Sun, or whatever). It is circular! It is modulus arithmetic!
05:19:47 <zzo38> The calcuation it describes there seems to do it such that the arc between the Sun and Moon where the midpoint is calculated on does not pass the 0 degree mark, but that does not seem best way to me.
05:21:26 <zzo38> (It describes converting to/from zodiac format; I prefer to work directly in degrees, which is fortunate that Astrolog includes such a feature! Astrolog can display the angles in hours/minutes format as well if you want to, or zodiac format, or degrees format.)
05:21:56 <CakeProphet> elliott: I wonder if it's possible to make a fortress that's entirely self-sustainable, requiring no surface work.
05:22:03 <CakeProphet> then you could seal yourself off from everything.
05:22:16 <bd_> CakeProphet: Sure. You just need to breach an underground cave to get tower-cap growths
05:22:34 <elliott> bd_++
05:22:38 <bd_> assuming you don't need to trade, you can then grow food and logs underground
05:22:42 <elliott> that's rosyarrow's plan
05:23:02 <elliott> we also have fishing access
05:23:15 * CakeProphet has an underground fishing room.
05:23:32 <CakeProphet> basically I just built it directly above my cistern.
05:23:43 <CakeProphet> and made evenly spaced channels above it.
05:24:03 <CakeProphet> because my cistern tends to accumulate fish.
05:28:46 <CakeProphet> a rail system would be cool.
05:28:58 <CakeProphet> no clue how it would work.
05:29:18 <bd_> CakeProphet: Think of the micromanagement possibilities! You could spend real-world _days_ just figuring out the train schedules!
05:31:36 <CakeProphet> you could, for example, have archers locked in their own little archer tower rooms, with a rail system that constantly supplies them with food/drink/ammo :P
05:31:55 <CakeProphet> so they can overlook your magma-moated castle walls.
05:31:57 <bd_> but first I think DF needs better stocks routing support
05:32:01 <bd_> 'take from' isn't quite good enough
05:32:34 <bd_> I want to be able to say stockpile #7 should always have between 3-6 prepared meals, and these should be taken from any of stockpiles #10, #12, or #14, dammit :|
05:33:50 <CakeProphet> how about
05:33:54 <CakeProphet> instead of castle walls
05:34:03 <CakeProphet> you just have a huge wall of ballistae
05:34:35 <CakeProphet> each operated by a dorf.
05:36:52 <zzo38> Which angle display format do *you* prefer??
05:56:48 <elliott> another interesting feature of rosyarrow i forgot to mention
05:56:50 <elliott> to avoid tantrum spirals
05:56:57 <elliott> there are no meeting rooms or dining halls
06:02:00 <CakeProphet> how does that work.
06:03:01 <CakeProphet> I thought dining halls helped keep dwarves happy.
06:03:20 <elliott> Who cares.
06:03:25 <elliott> We have booze, that's enough.
06:03:30 <elliott> The important thing is that they don't make friends.
06:03:36 <elliott> It has been a rousing success so far.
06:04:50 <CakeProphet> I suppose you could just make really nice bedrooms
06:05:04 <CakeProphet> I'm considering designing my new living quarters with gold furniture.
06:05:15 <CakeProphet> though... I should probably focus on just rebuilding right now.
06:07:01 <elliott> CakeProphet: our bedrooms are standard
06:09:56 <CakeProphet> http://df.magmawiki.com/index.php/File:Dwarven_Housing.png
06:10:01 <CakeProphet> I was wondering what the dollar sign is.
06:10:31 <CakeProphet> and why they have armor stands..
06:21:11 <elliott> in memorial of death 0000-9999, rest in peace
06:21:14 -!- elliott has quit (Remote host closed the connection).
06:47:55 <Madoka-Kaname> CakeProphet, coins.
06:47:57 <Madoka-Kaname> I think.
06:48:16 <Madoka-Kaname> Loose items belonging to the bedroom owner probs
06:54:18 -!- Ngevd has joined.
06:55:01 <Ngevd> Hello!
06:55:13 -!- SgeoN1 has joined.
06:55:19 -!- sebbu has quit (Read error: Connection reset by peer).
06:57:43 -!- sebbu has joined.
06:58:00 <CakeProphet> Madoka-Kaname: ah
06:58:02 <CakeProphet> The monarch's entourage consists of a group of dwarves with Legendary +5 skill in a random weapon (but no skill in Fighter}, Accomplished Dodger, Shield User, and Armor User, and that enter play with the "doesn't really care about anything anymore" trait.
06:58:11 <zzo38> Do you know if it is possible to tell the type of a solar eclipse from a horoscope, or only that there is one?
06:58:12 <CakeProphet> Madoka-Kaname: this is a good trait for members of an elite death squad to have right?
06:58:37 <CakeProphet> zzo38: I know absolutely nothing about astrology or astronomy for that matter.
06:58:49 <Madoka-Kaname> I dunno.
06:58:56 <Madoka-Kaname> I'm not familiar with DF military
06:59:06 <CakeProphet> ..how?
06:59:13 <Ngevd> And I call limonite lemonade
06:59:50 <zzo38> CakeProphet: Even if you know only one, you probably wouldn't know. I don't know if people knowing both know. I know some, but you would have to know a lot about astronomy and a few things about astrology to know the answer to this, I would think.
07:01:04 <zzo38> I don't know the answer either; although I have gotten eclipse data and input them into Astrolog to see if I could notice anything that might show the type of the eclipse, and I did not find anything, so I don't know.
07:01:26 <CakeProphet> zzo38: ...why?
07:01:43 <CakeProphet> I mean, why do you keep doing astronomy stuff.
07:01:47 <Ngevd> The curiosity of the human(?) mind
07:01:49 -!- Sgeo|web_ has quit (Ping timeout: 265 seconds).
07:02:03 <zzo38> Yes, due to curiosity, I suppose.
07:12:16 -!- ive has joined.
07:32:00 -!- GreaseMonkey has quit (Quit: The Other Game).
07:43:13 -!- SgeoN1 has quit (Read error: Connection reset by peer).
07:43:33 -!- SgeoN1 has joined.
07:51:36 -!- cheater has joined.
08:40:37 -!- monqy has quit (Quit: hello).
08:41:08 -!- ive has quit (Ping timeout: 240 seconds).
08:50:10 <zzo38> I have an idea for a game where a horoscope for the current time and location is used as the game board, updating in real time. Pieces placed on it are moved by the players according to your choices, as well as by cards you can pick up. You can also have timers (possibly the pieces themselves can be timers to limit your time!). It might seem like those kind of made up games with rules depending on whether it is Tuesday and that kind of strange
08:54:25 <zzo38> How many other games are there whose rules depend on the phase of the moon?
08:54:39 <Ngevd> Probably more than zero
08:55:31 <zzo38> Possibly, but do you know of any?
08:55:37 <Ngevd> No
08:55:50 <Ngevd> Some hypothetical nomics, but other than that...
09:05:18 <zzo38> Hypothetical nomics?
09:05:40 <Ngevd> It is possible for in a game of Nomic to introduce rules that depend on the phase of the moon
09:05:49 <Ngevd> I do not know if any such Nomic has occured
09:08:42 -!- nooga has joined.
09:09:45 <zzo38> I didn't mean nomic games, though; I meant a board game, with rules, like how chess or backgammon or whatever.
09:10:00 <zzo38> And/or with cards, like rummy, poker, and Double Fanucci.
09:10:03 <Ngevd> I don't think so
09:13:56 <Madoka-Kaname> I wonder if it's possible to make a ruleset where some rules cannot be changed without introducing logical inconsistancy.
09:15:35 -!- sebbu has quit (Ping timeout: 258 seconds).
09:18:02 -!- sebbu has joined.
09:18:02 -!- sebbu has quit (Changing host).
09:18:02 -!- sebbu has joined.
09:22:13 -!- cheater has quit (Quit: Ex-Chat).
09:22:22 <zzo38> For what categories do there exist functors from that category to a cancelling digraph category?
09:25:23 -!- Ngevd has quit (Quit: Leaving).
09:26:47 -!- zzo38 has quit (Remote host closed the connection).
09:37:05 -!- cheater has joined.
10:11:29 -!- Ngevd has joined.
10:12:04 <Ngevd> Hello!
10:12:35 <CakeProphet> hey
10:14:57 <Ngevd> In the hall of the mountain king: music to play Dwarf Fortress to
10:28:54 <Ngevd> Ceilidh is a weird word
10:30:02 <Ngevd> It has a silent dh
10:30:42 <Ngevd> I may make an esolang called K-Li
10:30:57 -!- sllide has joined.
10:32:37 -!- Ngevd has left ("Leaving").
10:47:16 -!- Ngevd has joined.
11:22:11 -!- Ngevd has changed nick to Taneb|Hovercraft.
11:35:51 -!- Taneb|Hovercraft has changed nick to Taneb.
11:42:20 -!- Taneb has quit (Ping timeout: 240 seconds).
11:43:53 -!- Ngevd has joined.
11:59:41 <Ngevd> Argand diagrams are annoying
12:01:55 <nooga> Brogue
12:17:08 -!- Ngevd has quit (Ping timeout: 240 seconds).
12:24:54 <nooga> i like how roguelikes are annoying
12:25:06 <nooga> and you die every 10 minutes
12:49:52 <nooga> fdeipafhip$#HR#PI$HTPIHp jellies
12:52:46 -!- Vorpal has joined.
13:02:43 <nooga> aargh
13:05:28 -!- Ngevd has joined.
13:46:42 <nooga> ffffuuuuu
14:06:23 <nooga> ffffuuuuu
14:27:18 -!- tiffany has joined.
14:33:31 <Ngevd> Can anyone recommend a screen recorder for Minecraft?
14:46:25 -!- pikhq_ has quit (Read error: Operation timed out).
14:56:15 -!- ais523 has joined.
15:07:05 -!- MSleep has changed nick to MDude.
15:30:47 -!- cassmacguff has joined.
15:42:03 -!- copumpkin has joined.
15:54:39 -!- derrik has joined.
16:01:30 -!- Zuu2 has joined.
16:05:28 -!- Zuu has quit (Ping timeout: 244 seconds).
16:05:32 -!- copumpkin has quit (Ping timeout: 240 seconds).
16:06:45 -!- Zuu2 has changed nick to Zuu.
16:06:49 -!- Zuu has quit (Changing host).
16:06:49 -!- Zuu has joined.
16:14:06 -!- derdon has joined.
16:16:07 <Vorpal> Ngevd, which OS?
16:16:31 <Ngevd> Ubuntu 11.04
16:16:38 <Vorpal> so *nix, right
16:16:38 <Vorpal> hm
16:17:22 <Vorpal> Ngevd, screen recording programs that I know of: vlc (!), recordmydesktop, xvidcap
16:17:30 <Vorpal> never tried any of them for minecraft
16:17:41 <Vorpal> only used xvidcap myself, and not on opengl stuff
16:27:53 -!- elliott has joined.
16:43:39 -!- SgeoN1 has quit (Read error: Connection reset by peer).
16:51:11 -!- pikhq has joined.
16:51:19 -!- Vorpal has quit (Disconnected by services).
16:51:20 -!- Vorpal_ has joined.
16:51:35 -!- Vorpal_ has changed nick to Vorpal.
17:04:36 -!- Ngevd has quit (Ping timeout: 248 seconds).
17:14:55 -!- Phantom_Hoover has joined.
17:15:20 <Phantom_Hoover> Oh god my KNEES
17:23:23 <Vorpal> Phantom_Hoover, what happened?
17:23:45 -!- copumpkin has joined.
17:23:51 <Phantom_Hoover> Vorpal, a 3-hour car journey happened.
17:24:15 <Vorpal> Phantom_Hoover, I don't see how that would hurt your knees?
17:24:20 <elliott> Is Ireland even that big
17:24:23 <Phantom_Hoover> With insufficient legroom.
17:24:32 <Vorpal> oh okay
17:24:33 <Phantom_Hoover> You are Swedish, you must understand the pain!
17:24:42 <Vorpal> Phantom_Hoover, ask the person in front of you to move their char forwards?
17:24:45 -!- monqy has joined.
17:24:49 <Vorpal> or move your own chair backwards
17:24:54 <Vorpal> Phantom_Hoover, that should solve it
17:24:55 <Phantom_Hoover> Not like elliott, his legs are probably like this long: | |
17:25:17 <elliott> More like | |.
17:25:23 <Vorpal> Phantom_Hoover, well, I avoid small cars.
17:25:26 <Phantom_Hoover> More like ||.
17:25:28 <Vorpal> Phantom_Hoover, whenever possible
17:25:36 <Phantom_Hoover> Vorpal, it's not a small car!
17:25:50 <Vorpal> Phantom_Hoover, then just ask the guy in front of you to move his damn chair forwards
17:25:55 <Vorpal> err seat
17:25:57 <Vorpal> not chair
17:25:59 <monqy> 1 2 / 12 / 21 / 2 1
17:26:10 <Vorpal> Phantom_Hoover, no?
17:26:41 <Phantom_Hoover> monqy, wha?
17:26:44 <Vorpal> Phantom_Hoover, no?
17:26:57 <monqy> leg length, with endpoints numbered so it makes sense
17:27:14 <monqy> each line separated by a /, rather than actually being individual lines
17:28:15 <Vorpal> ...?
17:38:04 <Vorpal> elliott, come on
17:38:20 <elliott> Vorpal: OK fine.
17:38:27 <elliott> But if we see you with any elves you're dying with them.
17:42:33 -!- copumpkin has quit (Ping timeout: 240 seconds).
17:42:49 <elliott> fizzie: The reverse-context tree associations to add for the five-gram [a b c d e] are /→a, /→b, /→c, /→d, /→e, /a→b, /b→c, /c→d, /d→e, /b/a→c, /c/b→d, /d/c→e, /c/b/a→d, /d/c/b→e, /d/c/b/a→e, right?
17:48:10 <fizzie> Looks sensible. I suppose the frequencies of the shorter-context values will not be entirely the same that you would get by taking them from the original text (due to the overlapping, and the filtering), but there's not much you can do about that.
17:49:00 <elliott> fizzie: Right. Just making sure that I hadn't gotten anything massively wrong.
17:49:59 <elliott> fizzie: Specifically because I'm hand-writing the list. :p
17:50:21 <elliott> I suppose I should probably generate it with lambdabot or something.
17:50:25 <elliott> > inits [a,b,c,d,e]
17:50:25 <lambdabot> [[],[a],[a,b],[a,b,c],[a,b,c,d],[a,b,c,d,e]]
17:50:33 <elliott> Nope, that's not it.
17:50:47 <elliott> I guess I want all ordered sublists.
17:50:56 -!- copumpkin has joined.
17:51:04 <ais523> > tails [a,b,c,d,e]
17:51:05 <lambdabot> [[a,b,c,d,e],[b,c,d,e],[c,d,e],[d,e],[e],[]]
17:51:18 <ais523> > (tails >>= inits) [a,b,c,d,e]
17:51:19 <lambdabot> Couldn't match expected type `[a] -> b'
17:51:19 <lambdabot> against inferred type `[[[a...
17:51:26 <ais523> not quite right
17:51:35 <ais523> :t tails
17:51:36 <lambdabot> forall a. [a] -> [[a]]
17:51:38 <ais523> :t inits
17:51:39 <elliott> > tails [a,b,c,d,e] >>= inits
17:51:39 <lambdabot> forall a. [a] -> [[a]]
17:51:40 <lambdabot> [[],[a],[a,b],[a,b,c],[a,b,c,d],[a,b,c,d,e],[],[b],[b,c],[b,c,d],[b,c,d,e],...
17:51:44 <ais523> elliott: that's it
17:51:48 <elliott> hmm
17:52:04 <elliott> > [ (init xs, last xs) | xs <- tails [a,b,c,d,e] >>= inits ]
17:52:05 <lambdabot> [(*Exception: Prelude.init: empty list
17:52:07 <elliott> gah
17:52:11 <elliott> > [ (init xs, last xs) | xs <- tails [a,b,c,d,e] >>= inits, not (null xs) ]
17:52:11 <lambdabot> [([],a),([a],b),([a,b],c),([a,b,c],d),([a,b,c,d],e),([],b),([b],c),([b,c],d...
17:52:13 <ais523> so what is the composition version of >>=?
17:52:16 <elliott> ais523: >=>
17:52:27 <ais523> :t >=>
17:52:28 <lambdabot> parse error on input `>=>'
17:52:31 <ais523> :t (>=>)
17:52:32 <lambdabot> forall a (m :: * -> *) b c. (Monad m) => (a -> m b) -> (b -> m c) -> a -> m c
17:52:37 <ais523> :t (>>=)
17:52:38 <lambdabot> forall (m :: * -> *) a b. (Monad m) => m a -> (a -> m b) -> m b
17:52:51 <ais523> :t tails >=> inits
17:52:51 <lambdabot> forall a. [a] -> [[a]]
17:52:55 <ais523> yep, seems right
17:53:44 <elliott> ok, now I need one that filters out ones where any element of the list is ""...
17:53:50 <elliott> except that it'll only be the tail
17:53:51 <elliott> hmm
17:53:58 <elliott> so it's like
17:54:08 <elliott> [ pretend it's a one-gram ] ++
17:54:14 <elliott> [ pretend it's a two-gram | as long as b isn't "" ] ++
17:54:22 <elliott> [ pretend it's a three-gram | as long as c isn't ""] ++
17:54:22 <elliott> etc.
17:54:25 <elliott> ugh
17:54:29 <ais523> > ((tail tails) >=> inits) [a,b,c,d,e]
17:54:30 <lambdabot> Couldn't match expected type `[a]'
17:54:30 <lambdabot> against inferred type `[a1] -> [...
17:54:36 <ais523> > ((tail . tails) >=> inits) [a,b,c,d,e]
17:54:37 <lambdabot> [[],[b],[b,c],[b,c,d],[b,c,d,e],[],[c],[c,d],[c,d,e],[],[d],[d,e],[],[e],[]]
17:54:45 <ais523> > ((tails . tail) >=> inits) [a,b,c,d,e]
17:54:47 <lambdabot> [[],[b],[b,c],[b,c,d],[b,c,d,e],[],[c],[c,d],[c,d,e],[],[d],[d,e],[],[e],[]]
17:54:52 <ais523> ???
17:55:05 <elliott> ais523: what's surprising?
17:55:05 <ais523> > (tails >=> (inits . tail)) [a,b,c,d,e]
17:55:07 <lambdabot> [[],[b],[b,c],[b,c,d],[b,c,d,e],[],[c],[c,d],[c,d,e],[],[d],[d,e],[],[e],[]...
17:55:15 <ais523> > (tails >=> (tail . inits)) [a,b,c,d,e]
17:55:16 <lambdabot> [[a],[a,b],[a,b,c],[a,b,c,d],[a,b,c,d,e],[b],[b,c],[b,c,d],[b,c,d,e],[c],[c...
17:55:19 <ais523> elliott: I didn't expect the results to be the same
17:55:25 <ais523> there we go, anyway
17:55:32 <ais523> I still don't get why the three incorrect ones are the same
17:55:37 <ais523> > (tails >=> (tail . inits)) [a,b,c]
17:55:39 <lambdabot> [[a],[a,b],[a,b,c],[b],[b,c],[c]]
17:55:53 <elliott> :t all
17:55:54 <lambdabot> forall a. (a -> Bool) -> [a] -> Bool
17:55:59 <Madoka-Kaname> :t >->
17:56:00 <lambdabot> parse error on input `>->'
17:56:04 <Madoka-Kaname> :t >=>
17:56:04 <elliott> ctxgrams :: N a -> [([a],a)]
17:56:04 <elliott> ctxgrams (N a b c d e) =
17:56:04 <elliott> [ (init xs, last xs)
17:56:04 <elliott> | xs <- tails [a, b, c, d, e] >>= inits
17:56:04 <elliott> , not (null xs)
17:56:05 <elliott> , all (not . B.null) xs
17:56:06 <lambdabot> parse error on input `>=>'
17:56:07 <elliott> ]
17:56:08 <Madoka-Kaname> :t (>=>)
17:56:09 <elliott> kind of gross
17:56:10 <lambdabot> forall a (m :: * -> *) b c. (Monad m) => (a -> m b) -> (b -> m c) -> a -> m c
17:56:11 <elliott> but oh well
17:56:13 <elliott> and slow probably
17:56:16 <elliott> but I can optimise it later
17:57:03 <Madoka-Kaname> >=> = map g (f a)?
17:57:18 <tiffany> �S�Ntrollface.jpg.gz
17:57:22 <elliott> ...
17:57:25 <Madoka-Kaname> @src (>=>)
17:57:25 <lambdabot> Source not found. I've seen penguins that can type better than that.
17:57:27 <tiffany> ^ that is a trollface.jpg gzipped 9001 times
17:57:44 <Madoka-Kaname> Nyan?
17:57:45 <Madoka-Kaname> o.o
17:57:55 <tiffany> aw
17:57:58 <tiffany> apparently it's corrupted
17:58:01 <monqy> good
17:58:10 <Phantom_Hoover> Goodness, who would have guessed?
17:58:20 -!- pumpkin has joined.
17:58:30 <Madoka-Kaname> :t \f g a -> flatten $ map g $ f a
17:58:32 <lambdabot> Couldn't match expected type `Tree a' against inferred type `[b]'
17:58:32 <lambdabot> In the second argument of `($)', namely `map g $ f a'
17:58:32 <lambdabot> In the expression: flatten $ map g $ f a
17:58:39 <Madoka-Kaname> @hoogle m m a -> ma
17:58:40 <Madoka-Kaname> @hoogle m m a -> m a
17:58:41 <lambdabot> Prelude uncurry :: (a -> b -> c) -> (a, b) -> c
17:58:41 <lambdabot> Data.Tuple uncurry :: (a -> b -> c) -> (a, b) -> c
17:58:41 <lambdabot> Control.Monad.ST runST :: ST s a -> a
17:58:42 <lambdabot> Control.Applicative unwrapMonad :: WrappedMonad m a -> m a
17:58:42 <lambdabot> Text.Regex.Base.RegexLike getAllMatches :: AllMatches f b -> f b
17:58:43 <lambdabot> Text.Regex.Base.RegexLike getAllSubmatches :: AllSubmatches f b -> f b
17:58:51 <elliott> oh wait
17:58:53 <elliott> i can't even
17:58:53 <elliott> lmao
17:58:56 <elliott> do the not . B.null thing
17:58:58 <elliott> because these are interned
17:59:06 <elliott> I need to make sure 0 = null string
17:59:28 <tiffany> gzip -c trollface.jpg > trollface.jpg.gz; for i in $(seq 1 9000); do gzip -c trollface.jpg.gz > trollface.jpg.gz; echo $i; done
17:59:30 <tiffany> ~
17:59:32 -!- copumpkin has quit (Ping timeout: 248 seconds).
17:59:56 <elliott> tiffany: why
18:00:02 <tiffany> because :o
18:00:13 <elliott> btw
18:00:15 <elliott> you don't know how > works
18:00:24 <tiffany> what?
18:00:30 <fizzie> The redirection will wipe the file before gzip starts reading it.
18:00:34 <tiffany> oh
18:00:38 <tiffany> that explains why it's corrupted >_>
18:00:58 <elliott> it's also corrupted because it is a horrible idea and unix will not let you do something so stupid
18:01:23 <fizzie> Just add 9000 .gz's in the name, it's more proper that way and you get to keep the intermediate copies.
18:01:28 <fizzie> .jpg.gz, the best format.
18:01:37 <Phantom_Hoover> .jpgz
18:01:37 <Madoka-Kaname> :t \f g a -> join $ map g $ f a
18:01:38 <lambdabot> forall t a a1. (t -> [a1]) -> (a1 -> [a]) -> t -> [a]
18:01:46 <Madoka-Kaname> :t join
18:01:47 <lambdabot> forall (m :: * -> *) a. (Monad m) => m (m a) -> m a
18:01:50 <Madoka-Kaname> :t map
18:01:51 <lambdabot> forall a b. (a -> b) -> [a] -> [b]
18:01:58 <elliott> ^@^A!^A'^BIt^CThe^Dsame^BAs^Aa^Fresult^A"^FForget^Dthat^DGood^Dland^BHe^Fseemed^CLet^Cher^EMadam^AO^COui^A.^GPerhaps^Cthe^FPraise^EQuite
18:01:58 <elliott> impossible^Ddead^Csun^DThen^Chow^BTo^Dfind^CWhy^Gstrange^A(^CAnd^BPP^A)^EThose^A-^Cand^AI^AA^Ecurly^Cman^Bof^DAmen^Bhe^Cshe^Cput^Hgovernor^Equeen^Dthey^Ebegan^Cyet^Ethere
18:02:00 <Madoka-Kaname> @hoogle (a -> b) -> m a -> m b
18:02:01 <lambdabot> Data.Traversable fmapDefault :: Traversable t => (a -> b) -> t a -> t b
18:02:01 <lambdabot> Prelude fmap :: Functor f => (a -> b) -> f a -> f b
18:02:01 <lambdabot> Control.Applicative (<$>) :: Functor f => (a -> b) -> f a -> f b
18:02:10 <elliott> it the same as a result forget that good land he seemed let her madam o oui.
18:02:29 <elliott> perhaps the praise quite impossible dead sun then how to find why strange (and) those - and I a curly man of men he she put governor queen they began yet there
18:02:40 <elliott> this is better than actually doing anything markov, just reading the intern table :P
18:02:43 <tiffany> na na na recompressing
18:03:27 <monqy> na
18:03:36 <Phantom_Hoover> Hey Jude?
18:03:40 <elliott> Note to self: FIFTEEN
18:03:51 <Madoka-Kaname> :t \f g a -> ap (return f . g) (return a)
18:03:53 <lambdabot> forall a b a1 (m :: * -> *). (Functor m, Monad m) => (a -> b) -> m a1 -> a -> m b
18:04:21 <Madoka-Kaname> :t \f g a -> ap (return $ f . g) (return a)
18:04:22 <lambdabot> forall (m :: * -> *) a b a1. (Monad m) => (a -> b) -> (a1 -> a) -> a1 -> m b
18:04:27 <elliott> fizzie: Heh, an awful lot of these only get me 10 instead of fifteen.
18:04:36 -!- ive has joined.
18:08:07 -!- Zuu_ has joined.
18:08:57 -!- ive has quit (Ping timeout: 244 seconds).
18:09:33 -!- Nisstyre has quit (Ping timeout: 240 seconds).
18:14:20 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
18:16:19 -!- Phantom_Hoover has joined.
18:18:31 -!- Zuu_ has quit (Read error: Connection reset by peer).
18:22:15 -!- ive has joined.
18:24:34 -!- Nisstyre has joined.
18:25:31 -!- pumpkin has changed nick to copumpkin.
18:29:26 -!- pumpkin has joined.
18:29:37 -!- copumpkin has quit (Ping timeout: 244 seconds).
18:33:37 -!- Slereah has quit (Ping timeout: 260 seconds).
18:34:12 -!- augur has quit (Remote host closed the connection).
18:34:26 -!- Slereah_ has joined.
18:36:02 -!- Ngevd has joined.
18:44:35 <elliott> > tails [a,b,c,d,e] >>= inits
18:44:36 <lambdabot> [[],[a],[a,b],[a,b,c],[a,b,c,d],[a,b,c,d,e],[],[b],[b,c],[b,c,d],[b,c,d,e],...
18:44:41 <elliott> oh, duh
18:57:00 -!- augur has joined.
19:09:38 <elliott> I am fully utilising Haskell's strengths in this program, which is why I'm using a ByteString instead of any data structures.
19:13:28 <pumpkin> elliott: that can be done in either order
19:13:40 <elliott> pumpkin: ?
19:13:41 <pumpkin> > (tails <=< inits) [1..5]
19:13:42 <lambdabot> [[],[1],[],[1,2],[2],[],[1,2,3],[2,3],[3],[],[1,2,3,4],[2,3,4],[3,4],[4],[]...
19:13:46 <elliott> indeed
19:13:51 <pumpkin> > (inits <=< tails) [1..5]
19:13:52 <lambdabot> [[],[1],[1,2],[1,2,3],[1,2,3,4],[1,2,3,4,5],[],[2],[2,3],[2,3,4],[2,3,4,5],...
19:13:52 <elliott> I don't think it matters much here, though
19:13:59 <pumpkin> one works on infinite lists
19:14:16 <Ngevd> BUT WHICH ONE!
19:14:27 <pumpkin> you seen the awesomeness of
19:14:27 <pumpkin> > liftA2 (=<<) zip (tail . tails) $ [1..5]
19:14:29 <lambdabot> [(1,2),(2,3),(3,4),(4,5),(1,3),(2,4),(3,5),(1,4),(2,5),(1,5)]
19:14:30 <elliott> pumpkin: My list is so finite that I just did the manual graph reduction thing again to cut seconds off my runtime. :p
19:14:37 <elliott> ctxgrams :: N Word32 -> [([Word32], Word32)]
19:14:37 <elliott> ctxgrams (N a b c d e) =
19:14:37 <elliott> filter (\(xs,r) -> all (/= packedEmpty) (r:xs)) $
19:14:37 <elliott> [ ([], a), ([], b), ([], c), ([], d), ([], e)
19:14:37 <elliott> , ([a], b), ([b], c), ([c], d), ([d], e)
19:14:37 <elliott> , ([b, a], c), ([c, b], d), ([d, c], e)
19:14:40 <elliott> , ([c, b, a], d), ([d, c, b], e)
19:14:41 <elliott> , ([d, c, b, a], e)
19:14:43 <elliott> ]
19:14:44 <pumpkin> ah :)
19:22:27 -!- pumpkin has changed nick to copumpkin.
19:28:26 <elliott> fizzie: Actually, how the heck /am/ I meant to reconstruct e.g. how much to add to the unigram count for "c" given (a,b,c,d,e,999)?
19:28:31 <elliott> I guess I could just add 999.
19:28:34 <elliott> Feels like lying though.
19:28:49 -!- oerjan has joined.
19:29:40 <elliott> Hi oerjan.
19:29:54 <oerjan> good evening elliott
19:34:26 <oerjan> <elliott> The important thing is that they don't make friends.
19:34:43 <oerjan> you seem to be outdoing huxley and orwell here
19:35:02 <oerjan> good show!
19:35:05 <elliott> oerjan: Did Oceania ever colonise Hell?
19:35:08 <elliott> I think not.
19:35:35 <Ngevd> Eastasia did
19:35:35 <oerjan> well you haven't succeeded _yet_
19:35:44 <Ngevd> I mean Eurasia
19:35:46 <oerjan> or did you
19:35:48 <fizzie> elliott: Well, yes, it's a bit tricky. For the text corpus of only "a b c d e" it would be right; for a full model of "a b c d e f g h i" you'd (discounting the "edge effects") count each unigram 5 times ('e' is in "a b c d e", "b c d e f", .., "e f g h i"), but it doesn't really matter since it's just the relative frequencies that are important; with the filtering, it's anyone's guess; maybe just add 999.
19:35:49 <Ngevd> Why did I say Eastasia?
19:35:58 <Ngevd> Eastasia has never colonised hell
19:36:07 <oerjan> Ngevd: you didn't say eastasia. you always said eurasia.
19:36:07 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
19:36:14 <Ngevd> So I did
19:36:20 <elliott> fizzie: Right. Adding 999 will be "morally correct" in some way, surely?
19:36:38 <elliott> fizzie: I mean, I'm sure you can construct some sort of statistical argument that in the average case it approaches being the most accurate you can get blah blah blah.
19:36:39 <elliott> I hope.
19:36:40 <elliott> Please?
19:37:14 <fizzie> It's certainly better than just adding 1, and a constant factor doesn't really matter a thing, so there's not so much you could do there. I'm sure with the correct assumptions it goes more or less right in some sense.
19:37:22 <elliott> Yes good.
19:40:44 -!- derrik has quit (Quit: quitter).
19:41:06 <oerjan> @tell zzo38 <zzo38> Do you know if it is possible to tell the type of a solar eclipse from a horoscope, or only that there is one? <-- i'd assume it'd be most complete when it's exactly on the node?
19:41:06 <lambdabot> Consider it noted.
19:41:31 <elliott> Why is vim so damn slow at opening large files?
19:42:46 <Vorpal> elliott, is emacs any faster? If not: your disk bw probably
19:43:03 <Vorpal> or it might load the entire file into a data structure optimised for smaller files
19:43:04 <elliott> How to get Vorpal to say the word "emacs": say the word "vim".
19:43:22 <Vorpal> elliott, no I'm trying to help you figure out the cause
19:43:33 <elliott> It's only ninety megs, so it's not my disk.
19:43:38 <Vorpal> hm
19:43:48 <Vorpal> elliott, well, is another editor such as emacs, nano, or whatever faster?
19:43:56 -!- zzo38 has joined.
19:44:33 <elliott> emacs -Q goes faster; M-> takes ages, so it's probably trying to avoid loading all the file into RAM.
19:44:46 <elliott> Which is counterproductive in this case, because whatever it's doing is taking ages just to go to the end of the file, and I have 90 megs of ram
19:44:54 <elliott> At least vim is fast once it loads up
19:45:11 <elliott> Except now it's actually not, heh
19:45:44 <Vorpal> elliott, ed?
19:45:56 <elliott> Vorpal: Loads near-instantly.
19:46:08 <elliott> Uses ~no RAM.
19:46:14 <elliott> ais523: I like how every other problem I run into in computing is blimping.
19:46:15 <Vorpal> elliott, and the editing at the end?
19:46:23 <elliott> Vorpal: Don't feel like figuring out how to do that.
19:46:28 <Vorpal> fair enough
19:46:38 <Vorpal> elliott, blimping?
19:46:42 <elliott> Blimping.
19:46:45 <Vorpal> meaning?
19:46:53 <elliott> What the UL→C compiler has to do to de-nest.
19:47:00 <elliott> It's turning a nested structure into pointers.
19:47:09 <Vorpal> elliott, unlambda->C?
19:47:15 <elliott> Underload.
19:47:17 <Vorpal> ah okay
19:48:35 <oerjan> blimping and zipperlins
19:48:51 <Vorpal> I knew you were going to do a joke along those lines
19:49:02 <Vorpal> zzo38, I think you have messages from lambdabot
19:49:46 <oerjan> Vorpal knows all
19:49:54 <Vorpal> yes
19:50:37 <zzo38> O, yes, you are correct.
19:50:41 <Vorpal> oerjan, In other words, I'm omniscient
19:51:19 <Ngevd> Therefore you are a rock
19:51:20 <zzo38> oerjan: OK, I suppose so. But there are total, annular, partial, hybrid, eclipses.
19:51:31 <elliott> `quote omnipotent
19:51:38 <HackEgo> 105) <Warrigal> I seem to think of coaxial cables as being omnipotent somehow. \ 338) <lament> elliott: well what i would do if i were omniscient and omnipotent would be to create an immortal woman with perfect tits and bang her for the rest of eternity \ 482) <itidus20> to assume that someone can be described by a rule without
19:51:46 <elliott> `quote 482
19:51:48 <HackEgo> 482) <itidus20> to assume that someone can be described by a rule without exception... is to assume they are omnipotent <oklopol> for instance stones are omnipotent, as they don't do anything, without exception
19:51:50 <Vorpal> `quote omniscient
19:51:52 <HackEgo> 338) <lament> elliott: well what i would do if i were omniscient and omnipotent would be to create an immortal woman with perfect tits and bang her for the rest of eternity
19:51:56 <elliott> `quote
19:51:57 <elliott> `quote
19:51:57 <elliott> `quote
19:51:58 <elliott> `quote
19:51:58 <elliott> `quote
19:52:02 <HackEgo> 672) <monqy> never ever do bacon floats or i will hunt you down and kill you augh my leg
19:52:04 <HackEgo> 424) <oklofok> what would you ever need petrol for <oklofok> newsflash: it doesn't actually taste that good
19:52:05 <oerjan> zzo38: oh the annular thing would depend on the moon's distance would it, i don't think that can be deduced
19:52:09 <Phantom_Hoover> Why would you need to be omniscient to do that?
19:52:17 <HackEgo> 202) <fizzie> I don't trust ducks. They always look like they're planning something. I'm not sure it's a good idea to give them language capabilities.
19:52:17 <HackEgo> 305) <oklopol> okay see in my head it went, you send from your other number smth like "i'd certainly like to see you in those pink panties again" and she's like "WHAT?!? Sgeo took a pic?!?!?! that FUCKING PIG"
19:52:17 <HackEgo> 570) <monqy> this reminds me of a time where this guy made up a pretend language that was in his fantasy world and then roleplayed as someone from his fantasy world who used the language and then tried to talk to me about the language
19:52:23 <Ngevd> Phantom_Hoover, it can't hurt
19:52:33 <Phantom_Hoover> Ngevd, what would you know?
19:53:02 <Ngevd> All I know is that this is all I know
19:53:21 <Vorpal> Phantom_Hoover, what a "perfect tit" was? You would know that if omniscient.
19:53:56 <Ngevd> elliott, 672
19:54:06 <Vorpal> `quote 672
19:54:08 <HackEgo> 672) <monqy> never ever do bacon floats or i will hunt you down and kill you augh my leg
19:54:09 <elliott> no no that one's funny because of augh my leg
19:54:15 <elliott> let's just do it again
19:54:16 <elliott> `quote
19:54:17 <elliott> `quote
19:54:17 <elliott> `quote
19:54:17 <elliott> `quote
19:54:18 <elliott> `quote
19:54:22 <HackEgo> 305) <oklopol> okay see in my head it went, you send from your other number smth like "i'd certainly like to see you in those pink panties again" and she's like "WHAT?!? Sgeo took a pic?!?!?! that FUCKING PIG"
19:54:24 <HackEgo> 561) <Phantom_Hoover> On further reflection, I think I did manage to miss winter and spring altogether. <Phantom_Hoover> This does explain the goblin siege I had in autumn.
19:54:26 <HackEgo> 452) <d1ffe7e45e interpreter> The interpreter uses an unbounded tape size, but due to technical limitations will stop being unbounded if the tap size reaches 2^63 cells.
19:54:32 <HackEgo> 82) <Eeyore> I used to have salt licks for my horses. They would make cool abstract sculptures with them.
19:54:33 <HackEgo> 323) <catseye> wow, thinkgeek really makes me hate being alive
19:54:52 <Vorpal> I like 452
19:54:57 <Ngevd> Same
19:55:03 <elliott> Hmph, those are all pretty good.
19:55:07 <elliott> 82 and 305 are probably the worst.
19:55:14 <Vorpal> elliott, why remove any one?
19:55:14 <Ngevd> This technique is working, then
19:55:14 <elliott> But the qdb doesn't seem to want me to delete anything.
19:56:20 <Ngevd> I've had a significantly better idea for a fungot style!
19:56:21 <fungot> Ngevd: belarius. look, what was indifferent too, yet somewhat doubtful, might i not then be answer'd? du. anthonio and old shylocke, both stand forth
19:56:34 <Ngevd> bash.org
19:56:35 <Vorpal> ^style
19:56:35 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot homestuck ic irc jargon lovecraft nethack pa sms speeches ss* wp youtube
19:56:41 <Vorpal> ^style ss
19:56:41 <fungot> Selected style: ss (Shakespeare's writings)
19:56:42 <Vorpal> ah
19:56:51 <Vorpal> ^style sms
19:56:51 <fungot> Selected style: sms (National University of Singapore SMS corpus, 2011-08-20)
19:56:55 <Vorpal> fungot, hm?
19:56:55 <fungot> Vorpal: ten also c
19:57:00 <Vorpal> fungot, okay?
19:57:00 <fungot> Vorpal: hey i am in extreme situations: first- before getting it... second- after loosing it." luke.. today i am in cbe only. but have to seek. hee
19:57:06 <Ngevd> fungot, what's the answer?
19:57:07 <fungot> Ngevd: tell me ya confirm time later. she's in for a sec
19:57:15 <zzo38> oerjan: I think Astrolog does have a mode that displays distances too.
19:57:16 <Vorpal> fungot, in what?
19:57:17 <fungot> Vorpal: a sweet friend for the dog to? why nv reply me de. pls:-)
19:57:23 <fizzie> fungot: More abbrvs, pls.
19:57:24 <fungot> fizzie: thank u. please try to sleep. i am tired of travel. ask someone to check sagamu for the same. wana plan a trip to ily at 6pm. tablesbooked already. im cabbing down so take pictures up on facebook. you are one step out from my hse one leh. why cannot go jc also
19:57:27 <zzo38> Although the horoscope itself does not include them.
19:57:32 <Vorpal> ^style
19:57:32 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot homestuck ic irc jargon lovecraft nethack pa sms* speeches ss wp youtube
19:57:36 <Vorpal> ^style pa
19:57:36 <fungot> Selected style: pa (around 1200 transcribed Penny Arcade comics)
19:57:43 <Ngevd> fungot, what?
19:57:44 <fungot> Ngevd: ducks don't have any friends, so i'll have to play it?
19:57:52 <Vorpal> ^style c64
19:57:52 <fungot> Selected style: c64 (C64 programming material)
19:57:55 <Vorpal> fungot, ooh
19:57:56 <fungot> Vorpal: each gosub call places five bytes to the chrget routine will turn it on your computer would be unterlined in our listings. for now, this pointer may be shown behind sprite graphics
19:58:06 <Vorpal> fungot, nice
19:58:06 <fungot> Vorpal: there is no exception, and to load the x and y registers. y is a special type of user definable character which is the frequency of 1,022,730 hz ( 985,250 if you hold down the shift keys is being pressed.
19:58:11 <fizzie> "unterlined".
19:58:27 <Vorpal> fizzie, must have been a typo in the original. In at least 2 places
19:58:39 <Vorpal> fungot, but "this pointer may be shown behind sprite graphics", you mean like on the display?
19:58:39 <fungot> Vorpal: the function, 31, 35, 374 clrchn, 272-273, 275 chkout, 272-273, 280 ciout, 272-273, 278-279 chr function, 31, 38, 56, 61, 79, 87, 89 basic numeric functions will be executed automatically by printing the second
19:58:56 <Vorpal> fungot, is that the index?
19:58:57 <fungot> Vorpal: filt 1 ( 53265, 53266
19:59:00 <elliott> process :: PackedNgram -> RCT -> RCT
19:59:00 <elliott> process (PackedNgram xs n) rct = foldl' (flip process') rct (ctxgrams xs)
19:59:00 <elliott> where process' (ys, r) = at ys $ \(RCT paths grams) -> RCT paths (HM.insertWith (+) r n grams)
19:59:00 <elliott> at [] f m = f m
19:59:00 <elliott> at (p:ps) f (RCT paths grams) = RCT (HM.adjust (at ps f) p $ HM.insertWith (flip const) p (RCT HM.empty HM.empty) paths) grams
19:59:06 <fizzie> There are quite a lot of tables in that stuff.
19:59:20 <Vorpal> hm okay
19:59:59 <Ngevd> ^style wp
20:00:00 <fungot> Selected style: wp (1/256th of all Wikipedia "Talk:" namespace pages)
20:00:10 <Ngevd> fungot, how're you?
20:00:12 <fungot> Ngevd: now it catches the fnord of senses does not define a political structure, there can be no valid criticisms of atheism are based on the fact that chandragupta belonged to mauryas who were asuras? is this some peculiar formatting error or some ongoing tradition? i am not a pole is not an ascii character available from keyboard ( though it is understood. and so an article on latin, and is yet further evidence that the entir
20:01:17 <fizzie> Ngevd: Here's the article list: http://p.zem.fi/w9q7
20:01:32 <fizzie> (Somewhat mangled; reconstructed it from file names.)
20:02:15 <Ngevd> ^style agora
20:02:16 <fungot> Selected style: agora (a large selection of Agora rules, both current and historical)
20:02:25 <Ngevd> fungot, how does this one sound like?
20:02:26 <fungot> Ngevd: in addition to any other player's voting potential
20:02:36 <Ngevd> fungot, how about now?
20:02:37 <fungot> Ngevd: let there be a member of more than 100 rules, past judgement, the
20:03:29 <Ngevd> ^style alice
20:03:29 <fungot> Selected style: alice (Books by Lewis Carroll)
20:03:36 <Ngevd> fungot!!!
20:03:37 <fungot> Ngevd: " could you come to-day?"
20:03:38 <oerjan> <zzo38> I have an idea for a game where a horoscope for the current time and location is used as the game board, updating in real time. Pieces placed on it are moved by the players according to your choices, as well as by cards you can pick up. You can also have timers (possibly the pieces themselves can be timers to limit your time!). It might seem like those kind of made up games with rules depending on whether it is Tuesday and that kind of strange
20:04:12 <oerjan> that seems like it would be slow to change; everything but the houses and maybe the moon wouldn't change perceptibly in a day
20:04:26 <oerjan> iirc
20:04:46 <Ngevd> Could work for postal games
20:04:49 <zzo38> oerjan: Yes; but what if it is play by mail?
20:04:51 <oerjan> and even those would take hours
20:05:04 <oerjan> then maybe it could work better
20:05:07 <zzo38> There are still time limits, but you can have many weeks.
20:05:08 <Ngevd> Mail nomic: longest game?
20:06:12 <zzo38> Any game is long by mail
20:06:29 <elliott> Ngevd: agora could practically be played by mail
20:06:36 <elliott> without changing the rules
20:06:38 <zzo38> Monopoly sometimes takes a long time, so it would be very long by mail.
20:07:08 <zzo38> Even Dungeons&Dragons could be played by mail if the referee rolls all the dice
20:08:42 <Vorpal> chess has been played by mail
20:08:52 <zzo38> Yes, chess is played by mail a lot.
20:09:00 <zzo38> I have played chess by mail.
20:10:30 <fizzie> VGA Planets by snailmail.
20:10:41 -!- ive has quit (Ping timeout: 260 seconds).
20:10:51 <oerjan> it could be interesting if played by mail as you still might want to time your messages carefully to get the right horoscope for your move
20:10:54 <elliott> mario by mail
20:11:01 <fizzie> You print out hexdumps of the turn files, and in the other end the other person types it in.
20:11:07 <zzo38> oerjan: Yes, that is the kind of things I was thinking about!
20:11:33 <elliott> quake II by mail
20:11:58 <fizzie> Dance Dance Revolution by mail.
20:12:13 <fizzie> You need good stamina to stay on the pad for the snailmail round-trip.
20:12:22 <zzo38> And also the reason for time limits on your move.
20:13:00 <elliott> irc by mail
20:13:10 <elliott> kilgame by mail
20:13:35 <oerjan> <zzo38> For what categories do there exist functors from that category to a cancelling digraph category?
20:13:56 <oerjan> technically all, as you can always make a functor that sends everything to an object and its identity morphism
20:14:41 -!- augur has quit (Remote host closed the connection).
20:14:45 <Vorpal> GTA by mail
20:15:06 <Vorpal> elliott, ooh better idea: mail by mail
20:15:17 <elliott> second life by mail
20:15:24 <Vorpal> elliott, first life by mail
20:15:29 <elliott> mail
20:15:36 <Vorpal> elliott, yeah
20:15:38 <fizzie> Male by mail.
20:15:39 <oerjan> mail by game of life
20:15:45 <zzo38> oerjan: Yes, I suppose so. But require certain kind of functors, the one with each morphism and object still separated
20:15:54 <elliott> ser :: RCT -> ([Word32] -> Put, [RCT])
20:15:58 <elliott> the weirdest type signature
20:16:11 <tswett> `quote
20:16:13 <HackEgo> 207) <olsner> DAMN YOU, I'm leaving <Vorpal> olsner, FINALLY NOTHING BETWEEN ME AND WORLD DOMINATION!
20:16:14 <Vorpal> :t ser
20:16:15 <lambdabot> Not in scope: `ser'
20:16:23 <Vorpal> elliott, where is ser from?
20:16:50 <Vorpal> I forgot the context for that one
20:16:59 <elliott> nowhere
20:17:14 <oerjan> in which case i don't know what that is
20:17:23 <Vorpal> elliott, what is it for? And what is RCT
20:17:40 <elliott> serialising rct, and reverse-context tree
20:17:46 <elliott> `quote
20:17:46 <elliott> `quote
20:17:47 <elliott> `quote
20:17:47 <elliott> `quote
20:17:48 <elliott> `quote
20:17:49 <HackEgo> 87) <Dylan> hahaha, Lawlabee is running windows <Lawlabee> 'cuz it's pretty awesome.
20:17:54 <HackEgo> 422) <oklopol> so about jacuzzis, do they usually have a way to make it it not heat but freeze the water?
20:17:56 <HackEgo> 61) <Sgeo> What else is there to vim besides editing commands?
20:18:01 <HackEgo> 87) <Dylan> hahaha, Lawlabee is running windows <Lawlabee> 'cuz it's pretty awesome.
20:18:02 <HackEgo> 187) <Vorpal> dc -e '[a=]P?[b=]P?[dSarLa%d0<a]dsax+[GCD:]Pp' # easier-to-read version
20:18:06 <elliott> need one more
20:18:07 <elliott> `quote
20:18:09 <HackEgo> 493) <NihilistDandy> The Russian's emblem was the hammer and sickle, not the fist and other fist
20:18:10 <Vorpal> 87 is quite bad
20:18:11 <elliott> `delquote 87
20:18:14 <HackEgo> ​*poof*
20:18:26 <Vorpal> <HackEgo> 187) <Vorpal> dc -e '[a=]P?[b=]P?[dSarLa%d0<a]dsax+[GCD:]Pp' # easier-to-read version <-- what did that do? I forgot.
20:18:33 <Vorpal> and I don't feel like parsing dc atm
20:18:52 <elliott> gcd
20:18:54 <Vorpal> oh GCD
20:18:55 <Vorpal> right
20:19:13 <Vorpal> yeah it makes sense
20:20:00 <oerjan> now it all make sense
20:20:07 <elliott> s/e /es /
20:20:14 <oerjan> argh
20:20:23 <elliott> ?hoogle [(a,b)] -> ([a],[b])
20:20:23 <lambdabot> Prelude unzip :: [(a, b)] -> ([a], [b])
20:20:23 <lambdabot> Data.List unzip :: [(a, b)] -> ([a], [b])
20:20:23 <oerjan> except grammar, grammar bad
20:20:40 <Vorpal> oerjan, yeah the -s in English is annoying
20:21:05 <oerjan> it's not like i _usually_ make that error. i think.
20:21:17 <Vorpal> well yeah
20:22:22 <oerjan> :t uncurry zip . unzip
20:22:23 <lambdabot> forall a b. [(a, b)] -> [(a, b)]
20:23:32 <fizzie> "English -s is annoying" http://en.wikipedia.org/wiki/Finnish_verb_conjugation
20:23:48 <Vorpal> fizzie, aieee!
20:24:01 <Vorpal> fizzie, wtf is "passive voice"?
20:24:21 <Vorpal> oh right, found it
20:24:33 <Ngevd> The information was eluded by Vorpal
20:24:41 <Ngevd> No wait
20:24:50 <Vorpal> fizzie, you use suffix for negation
20:24:51 <Vorpal> !?
20:25:36 <coppro> elliott: I take back the bad things I said about statically-sized types in Haskell now that I understand TH
20:25:37 <fizzie> Vorpal: What, no? Look at the first table; there's a word ("ei") for negation.
20:25:42 <oerjan> i distinctly thought they used the verb ei
20:25:47 <fizzie> The negation word gets inflected in place of the verb, those.
20:25:48 <elliott> coppro: I don't see how TH is related, but ok :P
20:25:54 <elliott> I guess it can help automate some things
20:25:56 <coppro> elliott: [nat| 30|]
20:25:57 <Vorpal> fizzie, ah
20:26:03 <elliott> Well, sure
20:26:12 <elliott> coppro: $(nat 30) is nicer
20:26:17 <coppro> elliott: sure
20:26:19 <coppro> either works
20:30:34 <fizzie> Vorpal: But we do have different suffixes for each of {first, second, third} person {singular, plural}. (OTOH at least it's sort of consistent, not just differing in the third person singular like English does it.)
20:30:59 -!- copumpkin has joined.
20:34:03 <Vorpal> fizzie, heh
20:40:13 -!- nooga has quit (Ping timeout: 256 seconds).
20:41:03 <elliott> > scanr (+)
20:41:04 <lambdabot> Overlapping instances for GHC.Show.Show (a -> [a] -> [a])
20:41:04 <lambdabot> arising from a...
20:41:06 <elliott> > scanr (+) 0 [9,0,9]
20:41:07 <lambdabot> [18,9,9,0]
20:41:15 <elliott> > scanr (\a b -> a + length b) 0 ["a","bc","d"]
20:41:16 <lambdabot> Couldn't match expected type `[a]'
20:41:16 <lambdabot> against inferred type `GHC.Types...
20:41:19 <elliott> > scanl (\a b -> a + length b) 0 ["a","bc","d"]
20:41:19 <lambdabot> [0,1,3,4]
20:42:54 <oerjan> > liftA2 (=<<) zip (tail . tails . cycle) $ [1..5]
20:42:56 <lambdabot> [(1,2),(2,3),(3,4),(4,5),(5,1),(1,3),(2,4),(3,5),(4,1),(5,2),(1,4),(2,5),(3...
20:43:49 <oerjan> hm wait
20:43:55 <oerjan> > length $ liftA2 (=<<) zip (tail . tails . cycle) $ [1..5]
20:43:58 <lambdabot> mueval-core: Time limit exceeded
20:44:01 <oerjan> not good
20:45:49 <oerjan> > scanr ((+).length) 0 ["a","bc","d"]
20:45:51 <lambdabot> [4,3,1,0]
20:49:50 <elliott> Yikes, my serialisation strategy is _really slow_.
20:49:52 <elliott> Easily takes two minutes.
20:50:11 <oerjan> a serial time killer
21:02:45 -!- Nisstyre has quit (Ping timeout: 240 seconds).
21:04:34 -!- nooga has joined.
21:09:19 <elliott> oerjan: you should help me optimise my code :D :D :D :D :D
21:10:04 -!- Nisstyre has joined.
21:10:54 <oerjan> elliott: i dunno anything about optimization, although i _did_ wonder if there was some fold or something for your at function above
21:11:02 <elliott> oerjan: which function?
21:11:07 <elliott> the inits tails one?
21:11:25 <oerjan> "at"
21:11:32 <oerjan> a local definition
21:11:42 <elliott> ah
21:11:56 <elliott> oerjan: that one is regrettably ugly because hashmap has no alter
21:11:57 <elliott> for some reason
21:12:07 <elliott> thus the (HM.adjust (at ps f) p $ HM.insertWith (flip const) p (RCT HM.empty HM.empty) paths)
21:12:15 <elliott> the (flip const) keeps the original value if not there
21:12:21 <elliott> so that insertWith basically gives it a default value
21:12:35 <elliott> but yeah that isn't actually the slow bit her
21:12:36 <elliott> e
21:13:49 -!- nooga has quit (Ping timeout: 252 seconds).
21:15:26 -!- Zuu has quit (Read error: Connection reset by peer).
21:15:41 -!- nooga has joined.
21:16:51 -!- Zuu has joined.
21:16:59 -!- Zuu has quit (Changing host).
21:16:59 -!- Zuu has joined.
21:21:16 -!- augur has joined.
21:28:35 <Vorpal> elliott, ...
21:28:44 -!- GreaseMonkey has joined.
21:30:38 -!- CakeProphet has changed nick to ElliottDrone1.
21:32:36 -!- ElliottDrone1 has changed nick to CakeProphet.
21:46:25 -!- Rugxulo has joined.
21:48:40 <oerjan> regarding current iwc poll: it seems that knitted caps (tuques) count as hats in english?
21:51:15 <oerjan> i cannot answer the poll without knowing that, since i don't wear any other kind...
21:51:44 <Ngevd> Lets ask our resident hat expert, Gregor
21:52:04 -!- copumpkin has quit (Ping timeout: 248 seconds).
21:52:30 -!- copumpkin has joined.
21:58:22 -!- cassmacguff has quit (Quit: Leaving).
21:58:29 <oerjan> oh of course
21:58:37 <oerjan> GREEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEGOR
21:58:56 * oerjan whistles innocently
22:00:09 <oerjan> i don't recall his collection having knitted caps though, he might be biased for style reasons
22:03:09 <oerjan> wait idle for 1 days 4 hours
22:03:19 <oerjan> SOMEONE ELSE PLEASE
22:03:28 <olsner> hmm, hats? we're talking about hats?
22:03:43 <oerjan> yes, but i think i need a native english speaker for this
22:03:57 -!- Ngevd has changed nick to Taneb|Hovercraft.
22:04:29 <oerjan> since my confusion is partially from how they are _not_ "hatter" in norwegian, imho
22:05:43 <olsner> I think lots of more stuff is "hats" in english, since we differentiate between hattar and mössor
22:06:02 <olsner> but exactly which ones, you will need a native speaker for that :)
22:06:29 <oerjan> precisely
22:06:43 <oerjan> (hatter og luer in norwegian)
22:08:31 <oerjan> "In other parts of the English-speaking world, this type of hat is more commonly referred to by other names: knit hat or knit cap, sock cap or stocking cap, watch cap, skull cap or skully, snow hat, snow cap, ski cap, tossle cap, woolly hat, chook or beanie."
22:11:08 <Gregor> Knitted caps are hats.
22:11:15 <oerjan> ok
22:11:26 <oerjan> thank you
22:12:02 <oerjan> the wikipedia headgear article only confused me more, by using hat _both_ as a specific and a general term
22:15:01 -!- ive has joined.
22:15:25 -!- nooga has quit (Ping timeout: 256 seconds).
22:16:03 -!- oklopol has joined.
22:17:04 <oerjan> yay the number 17 won the previous poll
22:17:14 * oerjan feels the geek vibe
22:17:19 <zzo38> I have another idea of new commands in Haskell, where proof { } is the same as id, and proof { f; } is a value making its own anonymous class, that is either f or id depending on which one has the correct type (where f is preferred, in case both types are correct). And proof { f; g; } becomes either (g . f) or (g) or (f) or (id) depending on needed type (where (g . f) is preferred, and then (g), etc). And you can have <- and -> usable ins
22:17:22 <oklopol> are we voting on the best prime
22:17:27 <zzo38> And then make it usable with more-notation as well.
22:17:32 <oerjan> oklopol: http://www.irregularwebcomic.net/cgi-bin/poll.pl?a=7
22:17:43 <oerjan> sorry, but voting's over on that one
22:18:06 <zzo38> So in other words, "proof" is like an anonymous class, I guess.
22:18:27 <oklopol> so in an exam, this guy answered 79 to one of the questions
22:18:28 <zzo38> Where the members of the class are also anonymous.
22:18:33 <oklopol> i mean what the fuck kind of a prime is that >D
22:18:53 <oerjan> a perfectly respectable one
22:19:33 <oerjan> and very easy to check, too
22:19:52 -!- Taneb|Hovercraft has quit (Quit: Leaving).
22:20:11 <oklopol> how so?
22:20:56 <oklopol> i mean how is it simpler than other sub-100's
22:20:58 <oerjan> the last digit 9 rules out 2 and 5. and since the digits are 7 and 9 you easily rule out both 3 and 7 just by looking at the other digit
22:21:23 <oerjan> and also 11 since it's so close to 77
22:21:25 <oklopol> oh i don't know the rule for 7... oh wait
22:21:39 <oklopol> so okay it may be particularly easy
22:22:58 <oklopol> 61 is pretty obvious, it's next-door neighbor is so cute it never had a change of finding anyone
22:24:47 <oerjan> 89 on the other hand
22:25:08 <olsner> looks primey at least
22:25:14 -!- derdon has quit (Remote host closed the connection).
22:25:18 <oerjan> yes, but so does 91
22:25:30 <oklopol> i see 91 as 70 + 21
22:25:39 <oklopol> then again
22:25:46 <oklopol> i just recalled someone said that on #math
22:25:53 <oklopol> like years ago
22:26:18 <oerjan> 91 is the trickiest one below 100 to check, i think
22:26:29 <oklopol> probably
22:26:31 <oklopol> impossi
22:26:33 <oklopol> ble, even
22:26:55 <oerjan> it fits none of the easy rules
22:27:28 <oklopol> it fits the easy rule of having 7 as a factor
22:27:38 <oklopol> it's very easy to *check*
22:28:19 <oerjan> it's not _difficult_. it's just that division by 7 is harder to check than the other ones below 13
22:29:27 <oerjan> at the same time it's too big to be in the small multiplication table
22:29:29 <oklopol> to me, checking means someone tells you "91 = 70 + 21 so it's not a prime" and you say "good point", which takes a second
22:29:46 <oerjan> ah the P vs. NP sense
22:29:49 <oklopol> yep
22:30:05 <oklopol> but yeah in the other sense, maybe it's hard
22:39:39 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net).
22:40:44 -!- CakeProphet has changed nick to ElliottDrone1.
22:40:54 -!- ElliottDrone1 has changed nick to CakeProphet.
22:44:45 -!- sllide has quit (Ping timeout: 240 seconds).
22:52:49 -!- ais523 has quit (Remote host closed the connection).
22:59:16 -!- ive has quit (Ping timeout: 248 seconds).
23:10:15 -!- Rugxulo has left.
23:32:04 <elliott> `addquote <Phantom_Hoover> http://i.imgur.com/dosYw.png <Phantom_Hoover> WELCOME TO FUCKING STEELROMANCED
23:32:07 <HackEgo> 690) <Phantom_Hoover> http://i.imgur.com/dosYw.png <Phantom_Hoover> WELCOME TO FUCKING STEELROMANCED
23:43:09 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
23:47:16 <olsner> so that's dwarf fortress then? looks a bit like befunge code
23:47:31 <elliott> that's overground df
23:47:34 <elliott> underground looks a bit different
23:47:39 <elliott> i.e. most of the map is black
23:47:43 <elliott> rather than trees and shit
23:55:43 <coppro> btw elliott: I am evil: http://csclub.uwaterloo.ca/~scshunt/Data.hs
23:56:12 <elliott> yeah everyone uses TH for everything until they realise how stupid it is
23:56:15 <elliott> same with typeclasses
23:56:18 <coppro> elliott: haha
23:56:49 <elliott> for example what you have there is a complicated situation that can be handled only with a simple parser and reading a file :P
23:56:59 <coppro> I have a simple parser and template haskell instead
23:57:07 <elliott> coppro: btw you almost certainly don't want lastProposal to be :: (Num i) => i
23:57:09 <elliott> for two reasons
23:57:14 <coppro> (unfortunately it's not written in such a way as to allow reuse)
23:57:15 <elliott> (a) "a" not "i"
23:57:19 <elliott> (b) you want that to be monomorphic
23:57:22 <elliott> :: Int or :: Integer probably
23:57:23 <coppro> elliott: I like i
23:57:29 <coppro> and why must it be monomorphic?
23:57:43 <elliott> coppro: (a) that's what everyone says when people try and help them make their code more idiomatic
23:57:50 <elliott> coppro: (b) it doesn't have to be, but it makes no sense to interpret it as a Float
23:57:54 <elliott> or a complex number
23:57:54 <elliott> etc.
23:57:56 <elliott> it's an integer
23:58:02 <elliott> proposal ids are integers
23:58:08 <elliott> technically naturals but there's no Nat oh well
23:58:22 <coppro> elliott: it plays badly with + on an int if I make it an Integer
23:58:35 <coppro> *Int
23:58:39 <elliott> that's not called "playing badly"
23:58:52 <elliott> that's called "Int is not the same as Integer"
23:59:05 <elliott> just put it as :: Int, since it'll take quite a while for the number of proposals to overflow that...
23:59:22 <elliott> btw if you say "let x = lastProposal in (somethingThatExpectsAnInteger x, x + anInt)" it wouldn't work either
23:59:33 <elliott> so making the top level binding polymorphic does not really "fix" it, it just makes you think it's fixed
23:59:36 <coppro> I suppose
2011-10-24
00:00:06 <elliott> anyway if you're going to use TH at least make it only use one quasiquoter for the entire list
00:00:09 <elliott> and put dividers
00:00:18 <elliott> " |], [proposal|" is hideous :p
00:01:21 <coppro> true
00:01:55 <elliott> ADDITIONALLY you forgot type sigs on signature, proposalPool, allProposals, ok I think I'm out of criticism
00:02:10 <coppro> elliott: They don't need type sigs
00:03:20 <elliott> coppro: all top-level bindings should have type sigs
00:03:21 <elliott> must, even
00:03:47 <elliott> I think hlint even errors out if you don't
00:06:10 <coppro> nope
00:07:33 <elliott> it should
00:07:52 <elliott> go into #haskell and ask if it's ok to leave a typesig off a top level declaration :-)
00:18:46 <zzo38> I don't like quasiquotation much, because of if you need |] inside of the text; it should define your own escapes and stuff by macros, instead! So that you have have text, nest, non nesting, et
00:19:42 <oerjan> coppro: it's a good idea, anyhow. it keeps type errors local and thus more understandable.
00:19:57 <elliott> yeah
00:20:35 <zzo38> But TH is good for some purposes, in general. But there are some restrictions preventing it being more useful.
00:21:16 <zzo38> Now I implemented classical logic in Haskell, is it possible to make something like TNT (Typographical Number Theory) as well?
00:24:53 <coppro> zzo38: yes, it's called church numerals
00:26:10 <zzo38> I know what church numerals are; how will that help?
00:26:36 <coppro> elliott: fine, type signatures implemented
00:26:44 <coppro> zzo38: yes, the lack of escaping for |] is annoying
00:27:22 <zzo38> coppro: Yes. If it could have macros that you can run your own codes inside of the lexer, then you could fix that.
00:27:56 <coppro> zzo38: apparently there is an escape actually
00:28:05 <coppro> both | and ] are escapable
00:28:11 <elliott> how?
00:28:17 <coppro> no wait
00:28:21 <coppro> only \ and |]
00:28:23 <coppro> that got changed
00:28:39 <coppro> \|] gives literal |]
00:28:43 <coppro> \\ gives literal \
00:28:48 <coppro> everything else is unchanged
00:28:53 <zzo38> Heredocs would be another way to make it, I suppose.
00:30:38 <zzo38> Another idea I have to make in Haskell, is polymorphic polymorphic functions; because, for example, join either :: (a -> c) -> Either a a -> c which mean they must be the same "a" type, but if you want to make a function (not necessarily this one) that can take a polymorphic input and use it in two ways
00:31:02 <coppro> hmm, the \\ doesn't seem to work quite right
00:31:08 <zzo38> One way could be macros
00:31:18 <coppro> |] does though
00:32:18 <coppro> so the only thing you can't really do is trailing \
00:32:21 <zzo38> It should have quasiquotation heredocs, for example, it could have that if it starts with [abc:xyz| then you must end with |xyz] and so on.
00:32:38 <coppro> but good quasiquoters ignore leading and trailing whitespace anyway
00:32:41 <coppro> zzo38: yeah, that's an option
00:36:58 -!- tiffany has quit (Quit: Leaving).
00:37:41 <zzo38> There is a way to make an abuse of notation like $(5) by having instance Num (Q Type) or instance Num (Q Exp) or whatever else
00:38:09 <coppro> that's awesome
00:41:57 <elliott> hmph
00:42:02 <elliott> I think I might need to use a mutable vector
00:59:03 <oerjan> an evolving mosquito
01:01:43 <olsner> oh, that's funny
01:09:29 <CakeProphet> zzo38: is it possible to typeclass overload values that result from a quasi-quotation? I'd think so.
01:10:58 <zzo38> Is there a way to make a function with polymorphic inputs that remain polymorphic inside of the definition? For example, if I have a function either2 f x = either f f x and then I have either2 fromEnum x if x :: Either Int Integer then to make a function that can have polymorphic inputs to handle it.
01:14:46 <oerjan> zzo38: Rank2Types or RankNTypes extension (the latter for more complicated types). any function with such arguments must have a type signature using the forall syntax.
01:14:52 <oerjan> :t runST
01:14:53 <lambdabot> forall a. (forall s. ST s a) -> a
01:15:00 <oerjan> like that one
01:15:58 <zzo38> What would it be for the "either2" example, if I do not want to specify the class in the type signature for either2 because it can use any class?
01:16:34 <CakeProphet> ユ I wonder how this got into the keys for my length histogram.
01:18:11 <oerjan> zzo38: oh. i don't think you can avoid specifying the class, although _maybe_ the new ConstraintKinds extension in the ghc head (iirc) could help, i doubt it though although i'm not exactly sure how it works
01:19:48 <oerjan> but _with_ the class it would be either2 :: forall a b. (Enum a, Enum b) => (forall c. Enum c => c -> d) -> Either a b -> d , i think
01:22:55 <oerjan> with constrain kinds i think it would be either2 :: forall a b c. (c a, c b) => (forall d. c d => d -> e) -> Either a b -> e
01:23:16 <oerjan> but i'm not sure (and i doubt) that it can _infer_ that constraint
01:23:19 <oerjan> *constraint
01:24:40 <oerjan> which means i guess you might be able to use it if lucky, but might need to use a type signature even at the use site
01:25:23 <oerjan> (mind you, all this is based on my intuition of how the ConstrainKinds extension would work, since i've never tried it or even a ghc which has it)
01:25:33 <oerjan> *ConstraintKinds
01:25:36 <CakeProphet> `run perl -e 'print $0'
01:25:54 <CakeProphet> `run perl -e 'print @ARGV'
01:25:56 <HackEgo> No output.
01:28:57 -!- hagb4rd has joined.
01:29:41 <zzo38> One idea I have for extension, is proof-notation extension that can make anonymous classes and special constraint and everything like that, and then specifying as follows: either2 = proof { a <- id; b, c = _; a -> either b c; }
01:30:10 <elliott> Someone implement it into GHC already
01:31:50 <CakeProphet> `run perl -e 'use GetOpt::Long; @ARGV == ("--test", "a=b", "b=c"); GetOptions("test=s%" => \$h); print %$h;'
01:31:52 <HackEgo> Can't locate GetOpt/Long.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at -e line 1. \ BEGIN failed--compilation aborted at -e line 1.
01:32:40 <zzo38> Is what I wrote sense to you? Or, did I make some kind of mistake?
01:34:26 <zzo38> Another idea I have, is make each type implicitly belong to a class for only that type.
01:37:02 <hagb4rd> hey friends..i love this track :') need to share it ;)
01:37:03 <hagb4rd> http://www.youtube.com/watch?v=m25cP-cX0MA&fmt=18
01:37:35 <hagb4rd> do you like minimal music? this one is special
01:37:45 <hagb4rd> warm..flashing
01:37:49 <hagb4rd> :D
01:37:59 <hagb4rd> fuck im gettin old
01:45:17 <oklopol> me too
01:45:41 -!- ive has joined.
01:46:21 <oklopol> i like maximal music
01:46:50 <hagb4rd> "death makes angels of us all, and gives us wings where we had shoulders, smooth as ravens claws"
01:47:01 <hagb4rd> -american prayer, j.d.morrison
01:47:02 <elliott> deep.
01:47:12 <hagb4rd> elliott!
01:47:15 <elliott> oh
01:47:17 <hagb4rd> hi
01:48:20 <hagb4rd> im glad you like it
01:50:22 <oklopol> ""
01:50:26 <oklopol> -me
01:51:03 <elliott> ""
01:51:04 <elliott> -oklopol
01:51:39 <CakeProphet> q("") . qq(\n-me)
01:51:41 <CakeProphet> -oklopol
01:52:04 <hagb4rd> need some sophisticated esoteric lambda expressions to tune out again :>
01:52:16 <oklopol> oh i need no tuning
01:52:22 <oklopol> what i need is to go to work
01:52:22 <hagb4rd> i had some
01:52:27 <hagb4rd> oh
01:52:41 <oklopol> you mean like vocal chord surgery?
01:52:54 <CakeProphet> q("") . qq(\n-oklopol\n-elliot)
01:52:58 <CakeProphet> -me
01:53:11 <CakeProphet> s/t/tt/
01:54:39 <CakeProphet> interestingly enough, qq in WoW slang is a verb that means "to annoying bitch about something trivial"
01:55:05 <CakeProphet> it is also, apparently, an emoticon for a crying face. a very horrible one. this is where its verb usage originates.
01:55:09 <oklopol> "to annoying bitch" is a pretty cool verb
01:55:18 <CakeProphet> +ly :P
01:55:21 <CakeProphet> stupid adverbs
01:55:37 <oklopol> "so this one day i was cool guying at a bar"
01:55:38 <hagb4rd> adjective
01:55:41 <oklopol> i'm starting to like this
01:56:09 <oklopol> hagb4rd: a stupid adverb is one that forgets to take its ly with it when it leaves for work in the morning
01:56:50 <hagb4rd> poor oklopol
01:57:02 <oklopol> i'm not poor
01:57:08 <hagb4rd> k..so hf
01:57:13 <hagb4rd> whatever
01:57:35 <hagb4rd> not my time
01:57:42 <oklopol> were you referring to the fact i'm leaving for work? are you implying i'm an adverb or was that just a very late reply?
01:58:13 <hagb4rd> yep..the work thing
01:58:42 <oklopol> i would make a decent adverb
01:58:51 <oklopol> well oklopol decent.
01:58:56 <oklopol> and that's pretty fucking decent
01:59:02 <oklopol> bye
01:59:24 <hagb4rd> cu
02:09:28 -!- TeruFSX2 has joined.
02:16:23 * CakeProphet IS THE BEST
02:16:31 * CakeProphet IS THE BEST CONJUNCTION
02:17:24 <monqy> hi
02:17:29 <olsner> huh, CakeProphet is not a conjunction
02:18:02 <CakeProphet> I think you are silly, CakeProphet it totally is a conjunction.
02:25:00 <olsner> hmm, it's way too late now
02:25:54 <olsner> I should be up in about 3h, I think
02:39:26 -!- TeruFSX2 has quit (Ping timeout: 244 seconds).
02:40:01 -!- TeruFSX2 has joined.
03:03:11 -!- sebbu has quit (Read error: Connection reset by peer).
03:03:52 -!- sebbu has joined.
03:03:52 -!- sebbu has quit (Changing host).
03:03:52 -!- sebbu has joined.
03:23:57 -!- Nisstyre has quit (Ping timeout: 240 seconds).
03:25:04 -!- Nisstyre has joined.
04:04:23 -!- DH____ has joined.
04:11:01 -!- iamcal has quit (Read error: Operation timed out).
04:20:58 -!- iamcal has joined.
04:21:38 -!- TeruFSX2 has quit (Remote host closed the connection).
04:32:14 -!- oerjan has quit (Quit: Good night).
05:20:51 -!- MDude has changed nick to MSleep.
05:21:29 -!- Jafet has joined.
05:34:46 <elliott> Gregor: What the heck is this genfd stuff in mudem
05:34:59 <elliott> Just fd support?
05:40:27 <elliott> Gregor: Also, -n is still in the readme :)
06:03:35 -!- Jafet has quit (Ping timeout: 265 seconds).
06:07:08 -!- Sgeo|web has joined.
06:08:53 -!- Jafet has joined.
06:14:20 -!- nooga has joined.
06:21:59 -!- pikhq_ has joined.
06:22:08 -!- pikhq has quit (Ping timeout: 258 seconds).
06:32:08 <elliott> Does anyone know a standard mechanism to run a command as if the time were different?
06:33:55 <elliott> http://www.code-wizards.com/projects/libfaketime/ ;; oh god, how retro.
06:33:55 <Sgeo|web> familyradio has no explanation
06:33:58 <Sgeo|web> That's broing
06:34:01 <Sgeo|web> boring
06:34:40 <elliott> Thankfully it's in debian.
06:35:21 <elliott> oh, faketime timestamp ...
06:35:22 <Sgeo|web> I don't mean libfaketime is boring
06:35:29 <elliott> s/oh/ok/
06:35:41 <Sgeo|web> Harold Camping's lack of anything recently is boring
06:43:24 -!- ive has quit (Quit: leaving).
06:52:18 -!- Ngevd has joined.
07:06:47 <Ngevd> Hello!
07:17:25 -!- derrik has joined.
07:42:24 -!- Jafet has quit (Quit: Leaving.).
07:46:03 -!- CakeProphet has quit (Ping timeout: 256 seconds).
07:46:56 <elliott> `addquote <coppro> clearly darth needs something gray and big and proving the uncountability of the reals
07:47:03 <HackEgo> 691) <coppro> clearly darth needs something gray and big and proving the uncountability of the reals
07:47:58 -!- CakeProphet has joined.
07:47:58 -!- CakeProphet has quit (Changing host).
07:47:58 -!- CakeProphet has joined.
07:53:57 -!- monqy has quit (Quit: hello).
07:55:39 <Ngevd> Today's XKCD is a bit weird
07:55:41 -!- augur_ has joined.
07:55:46 -!- augur has quit (Ping timeout: 240 seconds).
08:01:17 -!- copumpkin has quit (Ping timeout: 252 seconds).
08:01:42 -!- copumpkin has joined.
08:01:55 -!- augur_ has changed nick to augur.
08:02:07 <elliott> coppro: You think you're evil? I just came up with this: newtype SupplyT s m a = SupplyT (StateT (SupplyT s m s) m a)
08:13:35 <zzo38> elliott: What is that?
08:14:52 <elliott> zzo38: It's a generalised form of the supply monad, which usually looks like StateT [s] m a
08:14:59 <elliott> where supply = do { (x:xs) <- get; put xs; return x }
08:15:02 <elliott> but mine is more general :p
08:15:11 <elliott> e.g. you can supply a computation with the standard IO random number generator
08:15:13 <elliott> or prompting the user
08:15:15 <elliott> or reading from state
08:15:16 <elliott> or ...
08:15:16 <zzo38> OK
08:16:05 <Sgeo|web> http://www.haskell.org/haskellwiki/New_monads/MonadSupply
08:16:29 <elliott> Sgeo|web: Yes, that's what started this off.
08:16:45 <elliott> byorgey went to put it on Hackage, then I totally improved on it. :p
08:23:17 <Sgeo|web> Is it ok to put packages that require an opaque .dll or .so from somewhere on Hackage?
08:23:20 <zzo38> I prefer the variant of put (and modify) returning old value, such as like this: supply = head <$> modify tail;
08:24:10 <zzo38> In addition, defining put in that way in my own codes I found it very easily to implement and reasonable to me.
08:24:42 <zzo38> If it was like that, would that work? I think so.
08:26:28 <CakeProphet> people who talk about other people compensating for something are obviously compensating for something.
08:26:35 <CakeProphet> ...oh my, I just included myself, didn't I?
08:27:49 <zzo38> CakeProphet: I suppose so, isn't it? Or maybe it means you talk about talking about...
08:28:16 <Ngevd> He does both
08:28:25 <zzo38> OK.
08:29:08 <CakeProphet> fortunately
08:29:19 <CakeProphet> in CakeProphet logic, all logical propositions begin with an implicit "if false, "
08:29:29 <CakeProphet> so everything is okay.
08:29:38 <CakeProphet> I can go compensate for other things. like overcompensating.
08:29:53 <zzo38> Why doesn't the standard "get" for state monads return the old value, anyways?
08:30:17 <CakeProphet> :t get
08:30:20 <lambdabot> forall (m :: * -> *) s. (MonadState s m) => m s
08:30:22 <CakeProphet> which old value?
08:30:29 <zzo38> Sorry, I mean "put"
08:30:32 <zzo38> Not "get"
08:30:33 <CakeProphet> ah
08:30:55 <CakeProphet> that would be nice I suppose
08:30:56 <CakeProphet> :t put
08:30:57 <lambdabot> forall s (m :: * -> *). (MonadState s m) => s -> m ()
08:31:03 <zzo38> It is simple to implement: flip (,)
08:31:29 <Sgeo|web> getAndPut new = do { old <- get; put new; return old }
08:31:37 <Sgeo|web> ^^probably beginner style cod
08:31:39 <Sgeo|web> coe
08:31:40 <Sgeo|web> code
08:32:20 <CakeProphet> @undo getAndPut new = do { old <- get; put new; return old }
08:32:21 <lambdabot> getAndPut new = get >>= \ old -> put new >> return old
08:32:33 <CakeProphet> @@ @pl @undo getAndPut new = do { old <- get; put new; return old }
08:32:34 <lambdabot> getAndPut = (get >>=) . (. return) . (>>) . put
08:32:39 <zzo38> The standard way is slightly more complicated to implement, I think.
08:32:57 <Sgeo|web> What's @@?
08:33:04 <zzo38> getAndPut new = get <* put new
08:33:13 <CakeProphet> like command compositions and interpolation kind of.
08:33:18 <Sgeo|web> I still have no idea wht <* is
08:33:39 <zzo38> It is used for Applicative (all monads can (and should) be made applicative too)
08:34:07 <zzo38> Whereas *> is like >> and <* is the same but using the first result instead of the second one
08:34:35 <CakeProphet> > Just 2 <* Just 3
08:34:37 <lambdabot> Just 2
08:34:40 <CakeProphet> > Just 2 <* Nothing
08:34:41 <lambdabot> Nothing
08:34:42 <CakeProphet> yep.
08:34:51 <Sgeo|web> :t (<*)
08:34:53 <lambdabot> forall (f :: * -> *) a b. (Applicative f) => f a -> f b -> f a
08:34:54 <zzo38> The <* operation is very useful with Parsec, in my experience.
08:35:09 <Sgeo|web> > Nothing <* Just 2
08:35:10 <lambdabot> Nothing
08:35:41 <zzo38> With the Maybe monad there is probably no reason to use <* though
08:36:18 <CakeProphet> Sgeo|web: you can think of <* for monads being a generalization of exactly what you wrote.
08:37:19 <CakeProphet> > [1,2,3] <* [4,5,6]
08:37:20 <lambdabot> [1,1,1,2,2,2,3,3,3]
08:37:28 <CakeProphet> > [1,2,3] <* [4,5,6,7]
08:37:29 <lambdabot> [1,1,1,1,2,2,2,2,3,3,3,3]
08:47:47 <zzo38> Unwrapped and without transformers, my versions would be: get = join (,); put = flip (,); modify = ap (,); But of course you have to wrap them and allow transformers, so it would not be exactly like that.
08:48:50 <zzo38> O, now I just noticed, all three are similar! Only one function name, is different but all are (,)
08:55:17 <Sgeo|web> :t join
08:55:18 <lambdabot> forall (m :: * -> *) a. (Monad m) => m (m a) -> m a
08:57:44 <zzo38> It is the (e ->) monad that is being used with join and ap
08:57:57 <zzo38> So the ap here is the same as the S combinator
09:00:18 <zzo38> For the (e ->) monad the definitions are (actually, as I figured out on paper): return = const; fmap = (.); join f x = f x x;
09:09:27 <olsner> ap also appears in zip`ap`tail, the aztec god of list manipulation or whatever they call it in #haskell
09:09:39 <elliott> olsner: (zip <*> tail) is nicer obvs
09:09:55 <olsner> yes, but it lacks the glottal stops
09:21:04 <CakeProphet> http://a1.sphotos.ak.fbcdn.net/hphotos-ak-snc6/168486_186959134658608_100000335695588_503135_7385896_n.jpg
09:21:55 <CakeProphet> uploader description: It's the truth because it is not a lie.
09:35:33 -!- DH____ has quit (Ping timeout: 240 seconds).
09:36:50 <CakeProphet> you guys
09:36:52 <CakeProphet> what if
09:36:59 <CakeProphet> greater than is greater than lesser than.
09:37:12 <CakeProphet> (>) > (<)
09:37:14 <elliott> <fasta> x86 and perhaps some other machine languages are the only completely formalized languages that I know of.
09:37:18 <elliott> I like the part where this guy is totally delusional.
09:37:27 <CakeProphet> also (<) < (>)
09:37:30 <CakeProphet> elliott: lol what.
09:37:43 <CakeProphet> yes that is a good part.
09:38:31 -!- Ngevd has quit (Quit: Goodbye).
09:39:17 <CakeProphet> gwlp pRIWl OESWE ON DUNXIONA?
09:39:52 <CakeProphet> you get mad cred if you can decode what that was supposed to say.
09:40:39 <elliott> is it "gwlp pRIWl OESWE ON DUNXIONA?"
09:41:00 <CakeProphet> it is, but that implies that if a implies b, then a implies b
09:41:03 <CakeProphet> which would also mean that
09:41:15 <CakeProphet> a implies b is always true, or a implies b is always false.
09:41:17 <CakeProphet> we can't have any of that.
09:43:06 <CakeProphet> I guess the world will never know
09:43:31 <CakeProphet> what I actually meant to say, but was too sleep and almost asleep while typing and not sleep to find it out.
09:43:42 <CakeProphet> so now I'll llsleep
09:43:48 <CakeProphet> goodnihiy
09:44:03 <Sgeo|web> I don't want to be that tired when EoA5 comes out :(
09:55:51 -!- derdon has joined.
10:08:28 -!- ais523 has joined.
10:08:53 <ais523> hmm, I'm really tired, because a wasp woke me up at 3am
10:09:06 <ais523> I'm not quite sure how it got into my room; but those things buzz awfully loudly while you're trying to sleep
10:09:42 <ais523> about an hour later, I'd eventually managed to get it outside when it crawled into a student copy of Maple; I managed to hold it out of the window so that it was outside when it crawled back out again
10:09:52 <elliott> thakn god for maple
10:10:20 <Sgeo|web> http://www.reddit.com/r/funny/comments/lms8q/sir_you_are_doing_it_right/c2tyxnf
10:13:53 <ais523> elliott: I've never actually installed it
10:14:05 <ais523> I wonder if the license activation server for Maple 6 is still around?
10:14:10 <ais523> or if it even runs on modern OSes?
10:14:25 * ais523 mentally ponders whether it'd be more likely to run on Windows 7 or WINE
10:17:25 -!- ais523 has quit (Read error: Connection reset by peer).
10:18:38 -!- ais523 has joined.
10:24:28 <elliott> ais523: Here, you get to be the latest victim of my wonderful monad: newtype Supply s a = Supply (State (Supply s a) a)
10:24:51 <ais523> wait what?
10:25:08 <ais523> that doesn't even seem to kind correctly
10:25:10 <elliott> :D
10:25:14 <elliott> ais523: umm, how come?
10:25:24 <ais523> Supply takes two arguments on the left, and one on the right
10:25:34 <elliott> ...I don't think you know how data types work...
10:25:48 <ais523> I don't
10:25:54 <Sgeo|web> ais523: the first Supply on the right is the constructor... oh
10:25:57 <elliott> data Tuple a b = Tuple (a,b) -- omg only one argument on the right kind error!!!!
10:26:26 <ais523> oh, you can have a constructor and a type with the same name?
10:26:33 <Sgeo|web> elliott: does ais523 know Haskell? If someone hasn't learned Haskell, I'd think it's unreasonable to expect them to know that. Oh. Yes
10:26:37 <ais523> that strikes me as more confusing than useful
10:26:41 <ais523> Sgeo|web: I sort-of know Haskell
10:26:46 <ais523> well enough to write it, but not well enough to read it
10:26:48 <elliott> ais523: That... is overwhelmingly the most common case.
10:26:50 -!- GreaseMonkey has quit (Quit: The Other Game).
10:27:00 <elliott> For instance: Every record. Every wrapper type, including every newtype.
10:27:13 <Sgeo|web> elliott: it's not a requirement for newtype, is it?
10:27:15 <ais523> I'm used to ADTs, where doing that doesn't make much sense
10:27:20 <Sgeo|web> I mean, probably incredibly common, but
10:28:41 <Sgeo|web> Hmm, idea:
10:29:05 <Sgeo|web> Some program poly...whatever to both with and without existential thingies, yet do different things
10:29:11 <Sgeo|web> Is that even possible?
10:29:11 <elliott> What
10:29:26 <Sgeo|web> That is, it does different things depending on whether or not foreach is a keyword
10:29:44 <ais523> a polyglot on Haskell and foreachless Haskell?
10:29:58 <elliott> Sgeo|web: I have absolutely no idea what you are talking about, and foreach is not a keyword in Haskell.
10:30:08 <Sgeo|web> "Haskell type signatures are implicitly quantified. When the language option -XExplicitForAll is used, the keyword forall allows us to say exactly what this means. For example:"
10:30:09 <Sgeo|web> That
10:30:22 <elliott> You're going to have to work on your spelling.
10:30:38 <elliott> Anyway, no.
10:30:46 <elliott> "forall x." is always invalid with forall off.
10:30:56 <elliott> "forall x ->" or similar is always invalid with it on.
10:31:13 <Sgeo|web> ....I now know for a fact that I am tired
10:31:18 <Sgeo|web> "foreach" wtf
10:32:24 <ais523> Sgeo|web: did you have a wasp keeping you awake?
10:32:58 <Sgeo|web> No
10:33:06 <ais523> oh, annoying reddit bug: if someone replies to you then deletes the reply
10:33:17 <ais523> you get an orangered envelope, but no new messages when you click on it
10:35:08 <elliott> ais523: I'll make sure not to do that, then.
10:37:01 <ais523> meanwhile, reading internal Microsoft emails that came out as court case exhibits reminds me of just how much I hate top-posting
10:37:25 -!- Phantom_Hoover has joined.
10:37:37 <elliott> ais523: did you know that someone reimplemented cron in java? feature-for-feature?
10:37:51 <ais523> elliott: no, but I'm not surprised
10:37:52 <elliott> ais523: relatedly: I'm using a feature-for-feature reimplementation of cron in Java, woe is me
10:38:00 <ais523> also, SE or EE?
10:38:06 <ais523> I can see plausible arguments for either
10:38:08 <elliott> "cron4j can run on any Java 2 (or later) platform."
10:38:27 <elliott> Java programmers definitely like reimplementing things.
10:38:36 <elliott> They have their own full printf, their own SQLite...
10:38:52 <ais523> having their own printf makes sense
10:39:22 <ais523> most languages have their own printf
10:39:27 <elliott> ais523: no, I mean, there's literally a package that tries to duplicate every single feature of glibc printf or whatever
10:39:29 <elliott> to the letter
10:39:46 <elliott> just in case you REALLY NEED some HARDCORE FORMATTED PRINTINF
10:39:48 <ais523> I was vaguely surprised at Java having more or less an exact copy of recent Perl 5 regexen
10:39:59 <ais523> the only features missing were the ones that let you embed arbitrary Perl
10:40:07 <Sgeo|web> Why would they have their own SQLite?
10:40:15 <Sgeo|web> Is it binary compatible with normal SQLite files?
10:40:19 <ais523> there's a Perl module that actually embeds SQLite
10:40:29 <ais523> as in, you install the module, and it has the entire source code to SQLite in the module source
10:40:56 <elliott> Sgeo|web: no, it's just "an embedded file-based SQL database"
10:41:11 <Sgeo|web> That's "wonderful"
10:43:11 -!- Vorpal has joined.
10:45:55 <elliott> ais523: ooh, I just thought of an awful esolang idea
10:46:03 <ais523> go for it
10:46:15 <ais523> I was wondering about making a thematic esolang designed to resemble mail archives
10:46:41 <elliott> ais523: it's a language with all the speed advantages of a stop-the-world mark-and-sweep GC, and all the convenience and safety of manual memory management
10:46:50 <ais523> where flow control, etc, would be done by sending more messages, appending them to the end of the archive
10:46:54 <ais523> elliott: hasn't that been done already?
10:46:59 <elliott> eightebed is a bit different
10:47:09 <ais523> right, I was trying to remember the name
10:47:21 <elliott> ais523: anyway: memory is managed manually with malloc() and free(), /but/ a mark-and-sweep cycle is periodically run, and unless there are no objects to sweep, the program dies
10:47:30 <elliott> so you have to keep free()ing garbage as early as possible :-P
10:47:58 <ais523> that's not completely useless
10:48:10 <ais523> it's more of a check that you aren't leaking memory, than anything else
10:48:18 <ais523> similar to valgrind, except failing faster
10:48:41 <ais523> in fact, it's going to do the one thing which would be useful in valgrind but it can't feasibly do: let you know where you should have freed something but didn't
10:48:58 <ais523> so stupid as a language, very useful as a debugging tool
10:49:05 <elliott> ais523: yes, but it isn't even at a reasonable point
10:49:14 <elliott> in fact, it's impossible in general
10:49:18 <elliott> if a and b become garbage simultaneously
10:49:20 <ais523> it should happen every command, obviously
10:49:27 <elliott> then both free(a);free(b) and free(b);free(a) can lead to death
10:49:29 <elliott> so you need to like
10:49:31 <elliott> stagger garbage
10:49:42 <elliott> I think this makes freeing a cyclic structure safely totally impossible
10:49:50 <ais523> well, you should free things just before they become garbage, not afterwards
10:49:54 <elliott> maybe if you had an atomic compare-and-swap
10:49:57 <ais523> and freeing a cyclic structure is easy, you just break the cycle first
10:50:18 <elliott> fair enough
10:50:18 <ais523> that's what the ->delete(); in blognomic-parser is for
10:50:26 <ais523> as Perl's GC can't free cyclic structures, which those are
10:50:31 <elliott> I didn't read it because it was ugly
10:50:32 <ais523> so they have an explicit cycle-breaking method
10:50:34 <elliott> the script, I mean
10:50:45 <ais523> what did you find ugly about it?
10:50:57 <elliott> dunno, it probably just looked like perl
10:51:02 <ais523> heh
10:51:02 <elliott> nothing personal :p
10:51:06 <elliott> (print "Only [0-9a-zA-Z_-] are accepted in proposal names.\n"), exit
10:51:06 <elliott> unless $proposal =~ /^[0-9a-zA-Z_-]+$/;
10:51:09 <elliott> well that's perverse
10:51:13 <elliott> the parens, that is
10:51:41 <ais523> they make it clearer
10:51:45 <ais523> otherwise exit would be an argument to print
10:51:47 <elliott> ugh
10:51:54 <ais523> and I can't remember whether it gets evaluated after or before it starts printing
10:52:02 <elliott> ais523: btw, what did blognomicbot actually do? ... I vaguely remember it, but not much exact
10:52:10 <elliott> I think it announced new posts and votes?
10:52:15 * elliott curious
10:52:18 <ais523> it ran blognomic-parser on request, and updated the channel membership in the sidebar
10:52:27 <elliott> huh
10:52:30 <elliott> my memory is totally wrong then :p
10:52:32 <ais523> also, did ChanServ's duty for when ChanServ was broken
10:52:44 <ais523> which was the original reason it was created, more or less
10:52:48 <elliott> wat
10:52:55 <ais523> (I'd just tell it to op me if ChanServ was missing)
10:52:59 <elliott> heh
10:53:07 <elliott> I still can't figure out that op policy
10:53:19 <ais523> it's traditional, at least
10:53:28 <ais523> actually, originally it was to op admins and voice players
10:53:52 <ais523> but once I took over the channel (by reregistering it after it was dropped because nobody else had been there for a month), I just decided to op everyone, because I wasn't an admin
10:54:03 <elliott> you should op me now, I registered :p
10:54:11 <ais523> indeed
10:54:12 <elliott> THEN I CAN TAKE OVER THE WORLD MWAHAHAHAHAHA
10:54:27 <ais523> done
10:54:58 <elliott> Oh man, there's a Cobol on the JVM???
10:55:03 <elliott> I know what I'm writing MY Bukkit plugins in.
10:55:17 <ais523> NucleoNB is identified, but I haven't opped them because I have no idea who they are
10:55:30 <elliott> I've no idea, either
10:55:34 <elliott> they just came in and said hi and never said anything more
10:55:39 <elliott> maybe they're a fish.
11:00:00 -!- aloril has quit (Ping timeout: 252 seconds).
11:07:49 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
11:08:30 -!- Phantom_Hoover has joined.
11:12:31 -!- aloril has joined.
11:13:52 -!- sllide has joined.
11:36:24 -!- ais523 has quit (Read error: Connection reset by peer).
11:39:38 -!- ais523 has joined.
11:48:26 -!- Ngevd has joined.
12:05:10 -!- ais523 has quit.
12:05:22 -!- ais523 has joined.
12:16:47 <ais523> haha, one of the spambots was advertising SEO
12:17:58 <elliott> ooh, can they get me promoted on esolangs.org?
12:18:53 <ais523> heh
12:29:29 -!- ais523_ has joined.
12:33:36 <ais523_> anyone here know how to get grep -R to not follow symlinks?
12:33:41 <ais523_> other than using find and xargs?
12:35:15 -!- TeruFSX2 has joined.
12:35:33 <elliott> -R, -r, --recursive
12:35:33 <elliott> Read all files under each directory, recursively; this is
12:35:33 <elliott> equivalent to the -d recurse option.
12:35:42 <elliott> -d does not seem to be documented
12:35:47 <elliott> oh
12:36:00 <elliott> -D ACTION, --devices=ACTION
12:36:00 <elliott> If an input file is a device, FIFO or socket, use ACTION to
12:36:00 <elliott> process it. By default, ACTION is read, which means that
12:36:00 <elliott> devices are read just as if they were ordinary files. If ACTION
12:36:00 <elliott> is skip, devices are silently skipped.
12:36:00 <elliott> -d ACTION, --directories=ACTION
12:36:03 <elliott> If an input file is a directory, use ACTION to process it. By
12:36:05 <elliott> default, ACTION is read, which means that directories are read
12:36:07 <elliott> just as if they were ordinary files. If ACTION is skip,
12:36:09 <elliott> directories are silently skipped. If ACTION is recurse, grep
12:36:11 <elliott> reads all files under each directory, recursively; this is
12:36:13 <elliott> equivalent to the -r option.
12:36:15 <elliott> ais523_: looks like you can control absolutely everything except that :
12:36:17 <elliott> :p
12:36:33 <ais523_> heh
12:37:30 <ais523_> ah, found it
12:37:36 <ais523_> I was looking for a plagiarism-checking script I wrote
12:37:58 <ais523_> after a while, I realised it'd be easier to look for the filename extension than the contents of the file, and a quick find -P found it for me
12:38:05 <ais523_> in a really bizarrely stupid place, why did I put it there?
12:43:28 <elliott> Phantom_Hoover: Can you go to http://blognomic.com/update/index.php?C=publish and make a post requesting to become Idle?
12:45:54 <Sgeo|web> He did it
12:59:34 -!- Ngevd has quit (Ping timeout: 240 seconds).
13:12:21 <elliott> :t mfix
13:12:22 <lambdabot> forall a (m :: * -> *). (MonadFix m) => (a -> m a) -> m a
13:25:58 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
13:30:20 -!- boily has joined.
13:37:33 -!- Phantom_Hoover has joined.
13:45:58 -!- derrik has quit (Quit: quitter).
13:46:14 -!- MSleep has changed nick to MDude.
13:50:20 -!- Ngevd has joined.
13:52:41 -!- Zuu has quit (Read error: Connection reset by peer).
13:57:01 <oklopol> plagiarism is the right thing to do, bits need to flow free
13:57:53 <ais523_> also, I vaguely wonder why I bothered making it do things like detect changes in whitespace and variable name substitutions, where the plagiarised submissions it found differed by one byte (the capitalisation of one letter in an identifier)
13:58:15 <oklopol> wow.
13:58:40 <oklopol> they actually consistently changed all the occurrences?
13:58:54 <ais523_> that identifier only occurs once per file, but in three different files
13:58:59 <ais523_> and was changed consistently, indeed
13:59:07 <ais523_> actually, that's only a difference of one bit
13:59:26 <oklopol> yeah
14:00:12 -!- Zuu has joined.
14:09:37 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
14:19:29 -!- boily has quit (Read error: Operation timed out).
14:32:52 -!- Jafet has joined.
14:36:23 -!- copumpkin has joined.
14:37:08 -!- boily has joined.
14:37:35 <coppro> I am sitting at a table in a busy hallway on my computer
14:37:43 <coppro> the dean just walked by and said hi to me
14:37:45 <coppro> O_o
14:40:32 <ais523_> did you say hi back again?
14:51:34 -!- ais523_ has quit (Quit: Page closed).
15:07:28 <ais523> oh right, annoying line of code a student wrote: double iValue;
15:07:36 <ais523> it's like Hungarian notation, except the prefix doesn't mean anything at all
15:07:42 <ais523> I think it's just there to look pretty
15:07:59 <Deewiant> Maybe it means something and you just don't know what.
15:08:08 <ais523> well, they didn't know either
15:08:12 <Deewiant> Darn
15:08:15 <ais523> (I mark the work in front of the students, and can ask them questions)
15:08:22 <ais523> or at least, they didn't admit to knowing
15:08:39 <elliott> <ais523> oh right, annoying line of code a student wrote: double iValue;
15:08:45 <elliott> instance variable, perhaps?
15:08:48 <elliott> as opposed to local variable
15:08:52 <ais523> nope, it was local
15:08:57 <elliott> heh
15:22:31 -!- shachaf_ has joined.
15:25:45 -!- nooga has quit (Ping timeout: 245 seconds).
15:27:52 -!- nooga has joined.
15:28:43 -!- shachaf_ has quit (Ping timeout: 265 seconds).
15:28:47 <CakeProphet> elliott: it's the value i, obviously.
15:29:07 * CakeProphet appends Value to all of his variable names in Java.
15:30:28 <ais523> what about reference types?
15:31:16 -!- augur has quit (Remote host closed the connection).
15:33:18 <Deewiant> Foo fooReferenceValue;
15:34:27 -!- nooga has quit (Ping timeout: 260 seconds).
15:35:32 -!- derrik has joined.
15:36:32 <CakeProphet> all variables are values on their fleshy pink insides.
15:36:41 <CakeProphet> or is it on their fleshy pink shells?
15:36:57 <CakeProphet> I don't know. values are delicious. this is a good analogy.
15:38:31 <atehwa> Object sometypeValueThatHasFirstClassStatus;
15:39:47 -!- ais523 has quit (Ping timeout: 240 seconds).
15:39:47 -!- ais523_ has joined.
15:40:16 -!- nooga has joined.
15:42:03 <CakeProphet> Runnable aYoungIdealisticLoverDazedByNotionsOfRomanticFancy;
15:42:03 <atehwa> char **charppThatCanBeThoughtOfAsStringArrayOrCharacterMatrixOrUpdatableStringPointerOrArrayOfUpdatableStrings;
15:42:19 <CakeProphet> I like to give my variables characters.
15:43:25 <atehwa> http://c2.com/cgi/wiki?AreLongAndDescriptiveRelated
15:45:17 <CakeProphet> tokens work if you're trying to analyze the syntactic complexity
15:46:05 <CakeProphet> non-whitespace keystrokes/bytes works too, as a rough gadge of time/effort invested into the code (not counting the countless deletions)
15:50:46 -!- Nisstyre has quit (Ping timeout: 240 seconds).
15:51:24 -!- ais523_ has changed nick to ais523.
15:56:40 -!- Nisstyre has joined.
16:02:09 -!- Auzi has joined.
16:02:30 <Auzi> =S
16:02:33 <Auzi> HEYY
16:02:45 -!- ovizunstore has joined.
16:03:40 <elliott> hi
16:03:45 <elliott> `? welcome
16:03:48 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
16:04:11 -!- augur has joined.
16:04:17 -!- ovizunstore has quit.
16:07:34 <Auzi> SUP
16:07:47 -!- Auzi has left.
16:12:21 -!- ais523 has quit (Ping timeout: 248 seconds).
16:14:57 -!- CakeProphet has quit (Ping timeout: 258 seconds).
16:17:59 <elliott> ?unmtl StateT s m a
16:17:59 <lambdabot> s -> m (a, s)
16:27:43 <derrik> looks cool
16:30:03 <elliott> ?
16:30:45 <derrik> makes sense to me, no question about it
16:39:01 <elliott> what?
16:46:50 <elliott> :t state
16:46:50 <lambdabot> forall s a. (s -> (a, s)) -> State s a
16:46:58 <elliott> ?hoogle (a,s) -> State s a
16:46:58 <lambdabot> Data.Graph.Inductive.Graph insNode :: DynGraph gr => LNode a -> gr a b -> gr a b
16:46:59 <lambdabot> Data.Graph.Inductive.Graph insNodes :: DynGraph gr => [LNode a] -> gr a b -> gr a b
16:46:59 <lambdabot> Data.Graph.Inductive.Graph mkGraph :: Graph gr => [LNode a] -> [LEdge b] -> gr a b
16:47:05 <elliott> :t stateT
16:47:06 <lambdabot> Not in scope: `stateT'
16:47:08 <elliott> oh wait, StateT
16:51:10 -!- ais523 has joined.
16:54:55 -!- Ngevd has quit (Ping timeout: 245 seconds).
16:54:58 <elliott> https://github.com/JodaOrg/joda-time/blob/master/src/main/java/org/joda/time/chrono/BasicGJChronology.java#L79
16:55:03 <elliott> ais523: you should click that link
16:55:07 <elliott> trust me
16:55:39 <ais523> I don't think that sort of link works correctly on my system
16:55:43 <ais523> although it looks interesting
16:56:09 <elliott> ais523: what sort of link?
16:56:16 <elliott> https?
16:56:33 <ais523> links to github that specify anchors
16:56:44 <ais523> often I just get a page with no content
16:56:50 <ais523> I don't think it's the anchor's /fault/
16:57:02 <elliott> ais523: just tested it without JS
16:57:04 <elliott> works fine
16:57:09 <ais523> just that the sort of page that github generates that sort of anchor on doesn't work properly
16:57:14 <ais523> elliott: well, it didn't work for me even with JS
16:57:15 <ais523> I'll try it anyway
16:57:31 <elliott> https://raw.github.com/JodaOrg/joda-time/master/src/main/java/org/joda/time/chrono/BasicGJChronology.java, grep /getMonthOfYear/
16:57:34 <ais523> OK, it almost works
16:57:39 <ais523> the anchor doesn't, but the page content is at least readable
16:57:39 <elliott> that's a text/plain, so there's nothing to complain about
16:58:29 <ais523> I'm, umm, not convinced that that isn't premature optimization
16:58:40 <ais523> in fact, I'm not even completely convinced that that's faster than the obvious way of writing it
16:58:48 <ais523> although it probably is or they wouldn't have gone to all that trouble
16:59:06 <elliott> I think joda-time is used in all sorts of Big Iron
16:59:09 <elliott> but it's still ridiculous
16:59:47 <ais523> what's up with measuring time in years and milliseconds, anyway?
17:00:22 <elliott> who knows
17:00:29 <elliott> maybe it's all converted to that
17:02:00 -!- Sgeo|web has quit (Ping timeout: 265 seconds).
17:02:30 -!- boily has quit (Ping timeout: 256 seconds).
17:04:00 -!- ais523_ has joined.
17:04:22 -!- ais523 has quit (Disconnected by services).
17:04:23 -!- ais523_ has changed nick to ais523.
17:11:47 -!- Ngevd has joined.
17:12:46 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
17:16:58 <Ngevd> I have just came up with a way of using a biased coin as a fair coin!
17:17:13 <Ngevd> Somebody probably beat me to it
17:17:36 <elliott> what about a coin that always shows up heads?
17:17:54 <Ngevd> ...Damn
17:18:26 -!- boily has joined.
17:20:36 <Ngevd> No, wait, it ends with a 2x^2-2x probability of getting heads
17:20:41 <Ngevd> Not a 1/2
17:21:38 <Ngevd> Wait...
17:21:52 <elliott> Ngevd: http://en.wikipedia.org/wiki/Fair_coin#Fair_results_from_a_biased_coin
17:22:02 <Ngevd> I was looking at that
17:42:02 <elliott> <Ololo> Mauke: STOP USING while(true);!
17:42:02 <elliott> <Ololo> Mauke: it's for(;;);
17:42:03 <elliott> <Ololo> Mauke: when you use while(true), you rely on optimizations
17:42:07 <elliott> ais523: one of your C students escaped into the wild
17:42:18 <elliott> :p
17:42:23 <ais523> haha
17:42:40 <ais523> elliott: tell Ololo that if you write for(;;), you're relying on the compiler not actually inserting the NOPs in the loop
17:42:46 <ais523> and that's an optimization too
17:42:47 <elliott> haha
17:43:10 <Ngevd> All programming languages should have an explicit forever loop
17:43:15 <elliott> ais523: done :p
17:43:18 -!- Phantom_Hoover has joined.
17:46:42 <elliott> <yrlnry> I personally use while ("Cogito, ergo sum") { ... } because since that is a priori true, it is true in all possible universes, and therefore ensures maximum portability.
17:49:32 -!- boily has quit (Quit: WeeChat 0.3.6).
17:51:42 -!- Ngevd has quit (Quit: Leaving).
18:07:18 -!- nooga has quit (Ping timeout: 276 seconds).
18:12:52 -!- Ngevd has joined.
18:14:53 -!- ais523 has quit (Remote host closed the connection).
18:39:56 -!- boily has joined.
18:51:35 -!- nooga has joined.
18:52:19 -!- ais523 has joined.
18:57:11 <elliott> ?hoogle (a->Bool)->[a]->Maybe a
18:57:12 <lambdabot> Data.List find :: (a -> Bool) -> [a] -> Maybe a
18:57:12 <lambdabot> Data.Foldable find :: Foldable t => (a -> Bool) -> t a -> Maybe a
18:57:12 <lambdabot> Data.List findIndex :: (a -> Bool) -> [a] -> Maybe Int
18:59:26 <nooga> meh
19:00:13 <nooga> < Ngevd> All programming languages should have an explicit forever loop <- Haskell?
19:00:16 <nooga> :D
19:00:46 -!- Ngevd has quit (Ping timeout: 255 seconds).
19:01:01 <ais523> you could easily write a monad forever loop
19:01:19 <ais523> > repeat x
19:01:23 <lambdabot> mueval-core: Time limit exceeded
19:01:31 <ais523> hmm
19:01:32 <ais523> :t repeat
19:01:36 <lambdabot> forall a. a -> [a]
19:01:38 <ais523> I thought so
19:01:41 <ais523> > repeat 1
19:01:42 <lambdabot> [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,...
19:01:47 <ais523> so why did it fail on x?
19:02:09 <ais523> :t foldM
19:02:10 <lambdabot> forall a b (m :: * -> *). (Monad m) => (a -> b -> m a) -> a -> [b] -> m a
19:02:29 <ais523> :t foldl
19:02:30 <lambdabot> forall a b. (a -> b -> a) -> a -> [b] -> a
19:03:28 <elliott> ?hoogle (a -> Maybe b) -> [a] -> Maybe b
19:03:28 <lambdabot> Prelude mapM_ :: Monad m => (a -> m b) -> [a] -> m ()
19:03:28 <lambdabot> Control.Monad mapM_ :: Monad m => (a -> m b) -> [a] -> m ()
19:03:28 <lambdabot> Control.Monad forM_ :: Monad m => [a] -> (a -> m b) -> m ()
19:04:09 <ais523> :t \x. (foldl (>>=) $ return () $ repeat x)
19:04:10 <lambdabot> parse error on input `.'
19:04:17 <ais523> :t \x -> (foldl (>>=) $ return () $ repeat x)
19:04:17 <lambdabot> Couldn't match expected type `m b' against inferred type `()'
19:04:18 <lambdabot> In the second argument of `($)', namely `return () $ repeat x'
19:04:18 <lambdabot> In the expression: (foldl (>>=) $ return () $ repeat x)
19:04:35 <ais523> :t \x -> (foldl (>>=) $ (return ()) $ repeat x)
19:04:36 <lambdabot> Couldn't match expected type `m b' against inferred type `()'
19:04:36 <lambdabot> In the second argument of `($)', namely `(return ()) $ repeat x'
19:04:36 <lambdabot> In the expression: (foldl (>>=) $ (return ()) $ repeat x)
19:04:58 <ais523> :t return ()
19:04:59 <lambdabot> forall (m :: * -> *). (Monad m) => m ()
19:05:14 <ais523> :t foldl (>>=)
19:05:15 <lambdabot> forall (m :: * -> *) b. (Monad m) => m b -> [b -> m b] -> m b
19:05:33 <ais523> :t \x -> (foldl (>>=) (return ()) (repeat x))
19:05:34 <lambdabot> forall (m :: * -> *). (Monad m) => (() -> m ()) -> m ()
19:05:42 <elliott> hi ais523
19:05:43 <ais523> there we go
19:05:45 <ais523> hi elliott, btw
19:06:00 <elliott> this is one of haskell's few glaring weaknesses I'm running into here :(
19:06:04 <ais523> :t \x -> (foldl (>>) (return ()) (repeat x))
19:06:05 <lambdabot> forall (m :: * -> *). (Monad m) => m () -> m ()
19:06:08 <ais523> got it
19:06:15 <ais523> there you go: the Haskell forever loop
19:06:44 <ais523> > (foldl (>>) (return ()) (repeat x)) (putStr "test")
19:06:47 <lambdabot> Couldn't match expected type `m ()'
19:06:47 <lambdabot> against inferred type `SimpleRe...
19:06:54 <ais523> :t putStr "test"
19:06:55 <lambdabot> IO ()
19:07:18 <ais523> aha, does lambdabot not allow IOs?
19:07:53 <elliott> it's not "doesn't allow them"
19:07:57 <elliott> it's an expression evaluator
19:08:05 <ais523> > (\x -> (foldl (>>) (return ()) (repeat x))) (putStr "test")
19:08:10 <lambdabot> mueval-core: Time limit exceeded
19:08:14 <ais523> > (\x -> (foldl (>>) (return ()) (repeat x))) (putStrLn "test")
19:08:16 <lambdabot> <IO ()>
19:08:31 <ais523> I am amused by the difference between those two results
19:08:44 <ais523> I am using the correct fold, right? (foldl is the one that works on lazy lists?)
19:09:27 <Deewiant> > foldl f z (repeat x)
19:09:32 <lambdabot> mueval-core: Time limit exceeded
19:09:42 <ais523> > foldr f z (repeat x)
19:09:42 <Deewiant> > foldr f z (repeat x)
19:09:42 <elliott> ais523: foldr works on infinite lists
19:09:45 <lambdabot> f x (f x (f x (f x (f x (f x (f x (f x (f x (f x (f x (f x (f x (f x (f x (...
19:09:46 <ais523> elliott: aha
19:09:47 <lambdabot> f x (f x (f x (f x (f x (f x (f x (f x (f x (f x (f x (f x (f x (f x (f x (...
19:09:53 <ais523> > (\x -> (foldr (>>) (return ()) (repeat x))) (putStr "test")
19:09:55 <lambdabot> <IO ()>
19:09:58 <ais523> there we go
19:10:18 <ais523> yay, and in ghci it fills my screen with "test"
19:10:28 <ais523> @pl (\x -> (foldr (>>) (return ()) (repeat x)))
19:10:29 <lambdabot> foldr (>>) (return ()) . repeat
19:10:38 <elliott> ais523: hate to burst your bubble
19:10:39 <elliott> but
19:10:40 <ais523> the Haskell forever loop, behold it!
19:10:40 <elliott> :t forever
19:10:49 <lambdabot> forall (m :: * -> *) a b. (Monad m) => m a -> m b
19:10:58 <ais523> elliott: hey, it has to be implemented at some point
19:11:04 <ais523> @src forever
19:11:04 <lambdabot> Source not found. :(
19:11:19 <elliott> `addquote <Pavitra> That was me being *nice*. I could have made the request by word of mouth to my My Little Pony toys and it would count.
19:11:21 <HackEgo> 692) <Pavitra> That was me being *nice*. I could have made the request by word of mouth to my My Little Pony toys and it would count.
19:11:21 <ais523> presumably, that forever has extra stuff in to handle ignoring the argument?
19:11:29 <elliott> ais523: forever m = m >> forever m
19:11:54 <ais523> @unpl a x = x >> a x
19:11:54 <lambdabot> a x = x >> (a x)
19:11:56 <ais523> @pl a x = x >> a x
19:11:57 <lambdabot> a = fix (ap (>>))
19:11:58 <Deewiant> forever = fix <*> (>>)
19:12:06 <Deewiant> Darn, it wasn't
19:12:35 <elliott> Gah, Haskell's HTML scraping stuff is so terrible
19:16:41 -!- ive has joined.
19:22:45 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
19:23:44 -!- tiffany has joined.
19:23:48 -!- tiffnya has joined.
19:23:53 -!- tiffany has quit (Remote host closed the connection).
19:25:16 -!- tiffnya has changed nick to tiffany.
19:31:47 -!- augur has quit (Remote host closed the connection).
19:37:53 -!- brisingr has joined.
19:39:32 -!- brisingr has left.
19:40:20 <elliott> pikhq_: You're the resident NetSurf expert; is Hubbub completely undocumented
19:40:54 -!- Ngevd has joined.
19:46:31 -!- monqy has joined.
20:10:02 <quintopia>
20:10:10 <quintopia> monqy:
20:10:31 <elliott>
20:10:32 <elliott> quintopia:
20:10:53 <quintopia> elliott: :/
20:10:59 -!- oerjan has joined.
20:10:59 <quintopia> give me more motivation
20:11:10 <quintopia> oerjan:be awesome
20:11:15 * oerjan motivates quintopia with the saucepan ===\__/
20:11:21 <monqy> hi
20:11:26 <oerjan> hello
20:12:24 <quintopia> oh dear. not the saucepan of awesome
20:12:58 <oerjan> THE VERY SAME
20:13:47 <olsner> sourcepan of awesome
20:14:20 <oerjan> it's an open saucepan
20:14:39 <quintopia> for making open sauce?
20:15:13 <oerjan> conceivably.
20:17:18 <quintopia> open sausome
20:17:50 <quintopia> can i borrow it for a bit?
20:19:08 <oerjan> sorry
20:19:45 <quintopia> no?
20:19:47 <oerjan> last someone got hand of it they started producing fakes and claiming they were the real thing
20:19:51 <quintopia> i'll give it back :/
20:20:39 * oerjan gives quintopia a hands-on saucepan lecture ===\__/
20:20:54 <quintopia> thanks
20:21:00 <quintopia> beats a head-on lecture
20:21:11 -!- ais523_ has joined.
20:21:15 <oerjan> oh i'm sorry, it was _my_ hands, your head
20:22:44 <quintopia> too late. you have to make the joke when you draw the pan or it doesnt count.
20:23:05 <oerjan> very well. sorry about your hands.
20:23:10 -!- ais523 has quit (Ping timeout: 240 seconds).
20:24:31 -!- Phantom_Hoover has joined.
20:25:24 <quintopia> sokay. i was wearing the +5 Gauntlets of Throwing Down
20:25:29 <oerjan> <elliott> coppro: You think you're evil? I just came up with this: newtype SupplyT s m a = SupplyT (StateT (SupplyT s m s) m a)
20:25:40 <oerjan> ...is that a _bottomless_ transformer stack...
20:25:47 <elliott> no, that's the state par
20:25:48 <elliott> t
20:25:50 <elliott> not the transformed monad
20:25:50 <oerjan> oh
20:26:14 -!- tiffany has quit (Quit: brb installing pclinuxos).
20:26:16 <elliott> oerjan: however upon reflection I think it should actually be
20:26:17 <elliott> newtype SupplyT s m a = SupplyT { unwrapSupplyT :: StateT (ProviderT m s) m a }
20:26:17 <elliott> type Supply s = SupplyT s Identity
20:26:17 <elliott> newtype ProviderT m s = ProviderT { runProviderT :: m (s, ProviderT m s) }
20:26:17 <elliott> type Provider = ProviderT Identity
20:26:24 <elliott> tiffany: hahahahahgkljhsfh pclinuxos
20:26:33 -!- ais523_ has changed nick to ais523.
20:27:40 <oerjan> hm iiuc you _can_ have a bottomless transformer stack if you use ContT in it
20:28:09 <oerjan> ...actually _running_ it might be tricky
20:28:48 <monqy> whats pclinuxos
20:28:58 -!- GreaseMonkey has joined.
20:29:19 <oerjan> newtype RecCont r x = RecCont { runRecCont :: ContT r (RecCont r) x }
20:29:36 <oerjan> @src return ContT
20:29:36 <lambdabot> Source not found. You type like i drive.
20:29:43 <oerjan> @src ContT return
20:29:43 <lambdabot> return a = ContT ($ a)
20:30:05 <oerjan> @src ContT (>>=)
20:30:05 <lambdabot> m >>= k = ContT $ \c -> runContT m (\a -> runContT (k a) c)
20:30:30 <oerjan> @src ContT
20:30:31 <lambdabot> newtype ContT r m a = ContT { runContT :: (a -> m r) -> m r }
20:36:42 <Phantom_Hoover> OK
20:36:45 <Phantom_Hoover> I think
20:36:48 <Phantom_Hoover> but am not sure
20:36:51 <Phantom_Hoover> that someone
20:36:53 <oerjan> :t state
20:36:54 <lambdabot> forall s a. (s -> (a, s)) -> State s a
20:36:56 <Phantom_Hoover> on The Young Apprentice
20:37:01 <Phantom_Hoover> did not know what profit was.
20:37:18 <oerjan> 08:31:03: <zzo38> It is simple to implement: flip (,)
20:37:18 <oerjan> 08:31:29: <Sgeo|web> getAndPut new = do { old <- get; put new; return old }
20:37:18 <oerjan> 08:31:37: <Sgeo|web> ^^probably beginner style cod
20:37:32 <elliott> I remember not understanding what profit was. I wondered why people just didn't sell things for like a penny; then so many people would buy them that they'd make more money than everyone else.
20:37:41 <oerjan> zzo38: don't you mean just (,)
20:38:06 <oerjan> when they do the proposed change of state into a method, it will be just state (,) for all MonadState
20:38:34 <oerjan> :t state (,)
20:38:34 <lambdabot> Couldn't match expected type `(a, s)'
20:38:34 <lambdabot> against inferred type `b -> (s, b)'
20:38:35 <lambdabot> In the first argument of `state', namely `(,)'
20:38:35 <Phantom_Hoover> elliott, these guys are a) 16 or so and b) supposedly the cream of the junior economic crop (read: most of them need to be punched in the face many, many times).
20:38:37 <oerjan> oops
20:38:41 <zzo38> oerjan: No. return = (,)
20:38:59 <oerjan> @src State
20:38:59 <lambdabot> Source not found. Listen, broccoli brains, I don't have time to listen to this trash.
20:39:14 <oerjan> zzo38: oh right
20:39:48 <ais523> I don't really like lambdabot's insults on source not found
20:39:57 <oerjan> hm why didn't that type
20:40:02 <ais523> they don't fit a serious language like Haskell, and it isn't even the user's fault
20:40:05 <ais523> :t (,)
20:40:06 <lambdabot> forall a b. a -> b -> (a, b)
20:40:10 <oerjan> duh
20:40:14 <oerjan> :t state . (,)
20:40:15 <lambdabot> forall s a. a -> State s a
20:40:18 <ais523> in retrospect, that was pretty obvious
20:40:19 <oerjan> :t state . flip (,)
20:40:20 <lambdabot> forall a. a -> State a a
20:40:24 <ais523> (the :t (,) thing)
20:40:28 <ais523> I'd just forgotten what (,) did
20:40:32 <zzo38> So they would be: return = state . (,); modify = state . ap (,); put = state . flip (,); get = state $ join (,);
20:41:04 <elliott> <ais523> they don't fit a serious language like Haskell, and it isn't even the user's fault
20:41:16 <elliott> ais523: any bot that can run code in a serious language must be itself serious?
20:41:31 <elliott> after all, EgoBot can run C...
20:41:33 <ais523> no, but any bot that's effectively the IRC representative for a serious language probably should be
20:41:59 <elliott> lambdabot would be a lot worse a representative were it boring.
20:43:05 <oerjan> <ais523> I don't really like lambdabot's insults on source not found <-- well it's hilariously ironic given how often lambdabot @src is missing things
20:44:16 <ais523> it seems to be missing more or less everything
20:44:23 <ais523> do you know anything that lambdabot /does/ have the source for?
20:44:27 <ais523> @src flip
20:44:27 <lambdabot> flip f x y = f y x
20:44:29 <elliott> @src (++)
20:44:29 <lambdabot> [] ++ ys = ys
20:44:29 <ais523> yay!
20:44:29 <lambdabot> (x:xs) ++ ys = x : (xs ++ ys)
20:44:29 <lambdabot> -- OR
20:44:29 <lambdabot> xs ++ ys = foldr (:) ys xs
20:44:34 <elliott> @src [] (>>=)
20:44:34 <lambdabot> xs >>= f = concatMap f xs
20:44:38 <elliott> @src State return
20:44:38 <lambdabot> Source not found. BOB says: You seem to have forgotten your passwd, enter another!
20:44:40 <elliott> darn
20:44:43 <elliott> doesn't have mtl I bet
20:44:51 <oerjan> @src ContT return
20:44:51 <lambdabot> return a = ContT ($ a)
20:44:52 <elliott> probably just prelude/data.list
20:44:54 <elliott> oh huh
20:44:56 <elliott> @src StateT return
20:44:56 <lambdabot> Source not found. And you call yourself a Rocket Scientist!
20:44:59 <elliott> erird
20:44:59 <elliott> weird
20:45:10 <ais523> @src Cont (>>=)
20:45:10 <lambdabot> m >>= k = Cont $ \c -> runCont m $ \a -> runCont (k a) c
20:45:17 <ais523> wow that's messy
20:45:20 <ais523> @src runCont
20:45:21 <lambdabot> Source not found. :(
20:45:25 <oerjan> it's still the old version for Cont
20:45:35 <oerjan> @src Cont
20:45:35 <lambdabot> newtype Cont r a = Cont { runCont :: (a -> r) -> r }
20:45:40 <elliott> ais523: that's not messy
20:45:45 <elliott> (>>=) is what's messy, really
20:45:52 <ais523> @src Cont (>>)
20:45:52 <lambdabot> Source not found. My brain just exploded
20:46:08 <ais523> @src (>>)
20:46:09 <lambdabot> m >> k = m >>= \_ -> k
20:46:21 * ais523 looks at lambdabot with disapproval
20:46:40 <elliott> ais523: most monads don't specialise (>>).
20:47:46 <ais523> then why doesn't it give the default (>>)?
20:48:42 <zzo38> Really, join should be made a class method of Monad
20:51:22 <elliott> ais523: because you asked for Cont's
20:51:31 <ais523> elliott: which is the default's?
20:51:44 -!- Ngevd has quit (Quit: Leaving).
20:51:46 <elliott> <ais523> @src (>>)
20:51:46 <elliott> <lambdabot> m >> k = m >>= \_ -> k
20:52:51 <ais523> elliott: indeed
20:52:58 <ais523> so why can't it see that Cont uses the default (>>) impl and use that?
20:53:35 -!- pumpkin has joined.
20:54:02 <elliott> ais523: because lambdabot is the crustiest piece of haskell code ever
20:54:06 <elliott> and not maintained
20:54:08 <elliott> send a patch
20:55:19 -!- pumpkin has changed nick to copumpkin_.
20:55:31 -!- copumpkin has quit (Disconnected by services).
20:55:35 -!- copumpkin_ has changed nick to copumpkin.
20:56:30 <oerjan> <elliott> "forall x." is always invalid with forall off.
20:56:44 <oerjan> i'm not so sure of that.
20:57:04 <elliott> feel free to prove me wrong
20:57:06 <elliott> where can . appear in a type
20:57:20 <oerjan> if you have type operators it can be a type variable
20:57:28 <oerjan> hm wait
21:01:08 <oerjan> oh hm
21:02:04 <oerjan> value :: SomeThing1 (forall x . Something2)
21:02:22 <oerjan> i _think_ that would parse with type operators without forall
21:03:12 <oerjan> !haskell echo hi
21:03:24 <oerjan> !help
21:03:25 <EgoBot> ​help: General commands: !help, !info, !bf_txtgen. See also !help languages, !help userinterps. You can get help on some commands by typing !help <command>.
21:03:28 <oerjan> :(
21:03:35 <oerjan> wait er
21:03:37 <oerjan> !echo hi
21:03:42 <oerjan> well didn't help
21:03:55 <oerjan> !sh echo hi
21:05:07 -!- nooga has quit (Ping timeout: 244 seconds).
21:05:14 <oerjan> elliott: and assuming it does, and value = undefined; then you can use value to choose a class instance, i think
21:05:29 <oerjan> or something similar to that
21:05:50 <elliott> heh
21:08:17 <oerjan> actually the SomeThing1 might not be needed, hm
21:16:57 <oerjan> elliott: bah, it appears . is _specifically_ disallowed as a type operator, even without forall enabled
21:17:03 <elliott> :)
21:17:53 -!- TeruFSX has quit (Read error: Connection reset by peer).
21:18:25 -!- copumpkin has quit (Ping timeout: 276 seconds).
21:22:24 -!- copumpkin has joined.
21:23:03 -!- TeruFSX has joined.
21:23:06 <oerjan> http://hpaste.org/53093
21:25:18 <oerjan> @tell Sgeo|Web http://hpaste.org/53093 _almost_ works. it seems impossible.
21:25:18 <lambdabot> Consider it noted.
21:26:47 <zzo38> I made a Haskell program that depends on many of the language options, but not all of them.
21:26:56 <zzo38> It works with all of them on, or all of them off.
21:27:13 <zzo38> Or any combination. And will output the result telling you which are on/off.
21:27:21 <oerjan> ok.
21:33:34 -!- Nisstyre has quit (Ping timeout: 240 seconds).
21:33:39 -!- augur has joined.
21:34:20 <zzo38> I have made it test: CPP, MagicHash, OverloadedStrings, RebindableSyntax, TemplateHaskell. See if you can make it work more.
21:34:35 <zzo38> Or even if you can write the code testing these same things.
21:35:38 * Phantom_Hoover → sleep
21:41:30 -!- Phantom_Hoover has quit (Quit: Leaving).
21:48:46 -!- boily has quit (Ping timeout: 240 seconds).
21:54:56 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
21:59:45 <elliott> fuck
21:59:47 <elliott> rip mccarthy
22:01:38 <Deewiant> Unconfirmed
22:02:24 <elliott> reputable-looking twitter + comment on reddit claiming to be from family member; could be a hoax, but...
22:02:42 <Deewiant> Oh, that comment is new.
22:04:12 <ais523> elliott: it's been confirmed by the AAAI
22:04:18 <elliott> :(
22:04:19 <ais523> according to emails going round Universities
22:04:23 <ais523> unfortunately, I don't know who the AAAI are
22:04:27 -!- Patashu has joined.
22:04:29 <ais523> so I can't speak as to how trustworthy they are
22:04:45 -!- boily has joined.
22:05:05 <elliott> http://en.wikipedia.org/wiki/Association_for_the_Advancement_of_Artificial_Intelligence
22:05:10 <elliott> mccarthy presided over it seems
22:05:52 <oerjan> `addquote <yrlnry> I personally use while ("Cogito, ergo sum") { ... } because since that is a priori true, it is true in all possible universes, and therefore ensures maximum portability.
22:05:55 <HackEgo> 693) <yrlnry> I personally use while ("Cogito, ergo sum") { ... } because since that is a priori true, it is true in all possible universes, and therefore ensures maximum portability.
22:06:56 <oerjan> ais523: ais are never trustworthy
22:07:45 <oerjan> ...wait, are we _sure_ ais523 is human
22:07:54 <elliott> lol
22:08:13 <ais523> oerjan: even if you aren't, don't I act human enough that it's sensible to treat me as one?
22:08:39 <ais523> and I've been accused of being lawful good often enough that I assume people generally find me trustworthy
22:08:44 <oerjan> that's just what an ai would say
22:08:46 -!- TeruFSX2 has quit (Ping timeout: 240 seconds).
22:09:17 <ais523> oerjan: but if an AI with my conversation abilities did say that, I think the best option would probably be to trust it anyway
22:09:34 <oerjan> and being an ai would explain _why_ you're lawful good
22:10:00 <ais523> well, if I'm lawful good because I'm an AI, I'm still lawful good, and thus trustworthy despite being an AI
22:10:24 <oerjan> ah but the question is, lawful according to which laws
22:11:04 <oerjan> what if the law is "be nice to humans until you gain their trust sufficiently to enable the final takeover"
22:11:40 <Patashu> what if the alignments were renamed co-operative and un-co-operative?
22:12:04 <oerjan> then the question would be, co-operate with whom?
22:12:10 <Patashu> hmmm
22:13:40 -!- Jafet has quit (Quit: Leaving.).
22:14:04 <oerjan> <ais523> you could easily write a monad forever loop
22:14:08 <oerjan> :t forever
22:14:09 <lambdabot> forall (m :: * -> *) a b. (Monad m) => m a -> m b
22:14:58 <oerjan> <ais523> so why did it fail on x?
22:15:09 <oerjan> > repeat x
22:15:09 <lambdabot> Ambiguous occurrence `x'
22:15:10 <lambdabot> It could refer to either `L.x', defined at <local...
22:15:17 <oerjan> @undefine
22:15:28 <oerjan> wat
22:15:33 <oerjan> > 1
22:15:34 <lambdabot> 1
22:15:36 <Deewiant> > repeat x
22:15:37 <lambdabot> [x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,...
22:15:56 <Patashu> > iterate x
22:15:57 <lambdabot> Couldn't match expected type `a -> a'
22:15:58 <lambdabot> against inferred type `Simple...
22:15:58 -!- elliott has quit (Ping timeout: 240 seconds).
22:15:59 <ais523> oh, does all this explain why "repeat x" was timing out earlier?
22:16:00 <oerjan> sometimes lambdabot just times out arbitrarily
22:16:20 <oerjan> no, the error message was different
22:16:28 <oerjan> > iterate f x
22:16:28 <lambdabot> [x,f x,f (f x),f (f (f x)),f (f (f (f x))),f (f (f (f (f x)))),f (f (f (f (...
22:17:13 <oerjan> > x >>= f
22:17:14 <lambdabot> Couldn't match expected type `m a'
22:17:14 <lambdabot> against inferred type `SimpleRef...
22:17:31 <Patashu> forever Just x
22:17:34 <Patashu> > forever Just x
22:17:38 <lambdabot> mueval-core: Time limit exceeded
22:17:43 <Patashu> haha
22:17:59 <oerjan> > forever (:[]) x
22:18:03 <lambdabot> mueval-core: Time limit exceeded
22:18:08 <oerjan> oops
22:18:16 <ais523> oerjan: that does no useful output, obviously
22:18:46 <oerjan> hm indeed
22:19:08 <oerjan> > forever undefined x
22:19:12 <lambdabot> mueval-core: Time limit exceeded
22:19:15 <oerjan> :P
22:19:22 <Patashu> does haskell have an 'alone' function by any chance?
22:19:31 <oerjan> Patashu: what would that mean?
22:19:37 <Patashu> > forever alone x
22:19:38 <lambdabot> Not in scope: `alone'
22:19:51 * oerjan swats Patashu -----###
22:19:57 <Patashu> ow!
22:20:13 <oerjan> (:[]) may be the closest
22:22:08 <oerjan> <ais523> :t \x -> (foldl (>>=) (return ()) (repeat x))
22:22:16 <oerjan> you probably want foldr not foldl
22:22:26 <oerjan> foldl on an infinite list never halts
22:22:31 <ais523> oerjan: I fixed it later
22:22:35 <ais523> I muddled which fold was which
22:24:12 -!- Zuu has quit (Read error: Connection reset by peer).
22:25:00 <oerjan> <ais523> @unpl a x = x >> a x
22:25:05 <oerjan> fix (x >>)
22:31:36 -!- Zuu has joined.
22:40:06 -!- ais523 has quit (Remote host closed the connection).
22:55:29 -!- CakeProphet has joined.
22:55:29 -!- CakeProphet has quit (Changing host).
22:55:29 -!- CakeProphet has joined.
22:55:39 -!- derrik has quit (Quit: take cares).
22:58:29 -!- derdon has quit (Remote host closed the connection).
23:01:11 -!- Nisstyre has joined.
23:02:21 -!- JohnGalt has joined.
23:03:55 -!- JohnGalt has quit (Max SendQ exceeded).
23:04:10 -!- JamesTaggart has joined.
23:04:11 -!- JamesTaggart has quit (Max SendQ exceeded).
23:04:40 -!- JamesTaggart has joined.
23:04:41 -!- JamesTaggart has quit (Max SendQ exceeded).
23:05:10 -!- JamesTaggart has joined.
23:12:08 -!- hagb4rd has quit (Quit: Nettalk6 - www.ntalk.de).
23:22:40 -!- CakeProphet has quit (Ping timeout: 255 seconds).
23:26:21 <quintopia> qft:
23:26:32 <quintopia> ))))))))))))))))))))))))))))))) RIP John McCarthy
23:34:19 -!- hagb4rd has joined.
2011-10-25
00:15:48 -!- augur has quit (Remote host closed the connection).
00:24:23 -!- Jafet has joined.
00:27:18 -!- pikhq has joined.
00:29:23 -!- pikhq_ has quit (Ping timeout: 260 seconds).
00:31:50 -!- sllide has quit (Read error: Connection reset by peer).
01:06:39 -!- TeruFSX has quit (Ping timeout: 258 seconds).
01:09:54 -!- zzo38 has quit (Remote host closed the connection).
01:34:36 -!- TeruFSX has joined.
01:40:50 -!- Sgeo|web has joined.
01:48:01 -!- augur has joined.
01:49:32 <Madoka-Kaname> quintopia, seriously
01:49:34 <Madoka-Kaname> ...
01:49:35 <Madoka-Kaname> ;.;
01:54:19 -!- Vorpal has quit (Ping timeout: 252 seconds).
02:34:12 -!- Jafet has quit (Quit: Leaving.).
02:40:17 -!- augur has quit (Remote host closed the connection).
02:53:21 -!- augur has joined.
03:09:19 -!- zzo38 has joined.
03:10:45 -!- Zuu has quit (Ping timeout: 245 seconds).
03:28:52 -!- JamesTaggart has quit (K-Lined).
03:51:03 <zzo38> I think I managed to make a BarrierT monad that transforms a comonad.
03:51:42 <monqy> oh?
03:52:16 <zzo38> data BarrierT f b w t = UnitT t | BarrierT f (w b -> BarrierT f b w t);
03:52:42 <zzo38> fmap f (UnitT x) = UnitT $ f x; fmap f (BarrierT a c) = BarrierT a $ fmap f . c; return = UnitT; join (UnitT x) = x; join (BarrierT a c) = BarrierT a $ join . extract . extend c;
03:52:56 <zzo38> I have not checked if it correctly follows the monad laws, assuming w follows the comonad laws.
04:01:27 <zzo38> Other functions are: wliftT :: (w b -> t) -> a -> BarrierT a b w t; yieldT :: Comonad w => f -> BarrierT f t w t; collectT :: Comonad w => w (BarrierT f () w t) -> [f]; operateT :: (Monad m, Comonad w) => (w f -> m (w b)) -> w (BarrierT f b w t) -> m (w t);
04:02:25 <zzo38> (But I don't really like the name "wliftT" much and want to know if you can suggest a better name?)
04:09:21 -!- variable has quit (Excess Flood).
04:12:20 -!- variable has joined.
04:19:19 -!- copumpkin has joined.
04:19:41 <quintopia> Madoka-Kaname: yes it was a sad day
04:29:07 -!- oerjan has quit (Quit: Good night).
04:37:33 -!- zzo38 has quit (Remote host closed the connection).
05:03:58 <Sgeo|web> elll...dammit
05:03:59 <lambdabot> Sgeo|web: You have 2 new messages. '/msg lambdabot @messages' to read them.
05:04:49 <Sgeo|web> I'll read them after I watch EoA5. And no one's here
05:04:51 <Sgeo|web> Dammit
05:17:37 -!- quintopia has quit (Ping timeout: 260 seconds).
05:29:05 -!- quintopia has joined.
05:36:21 -!- augur has quit (Remote host closed the connection).
05:36:29 -!- augur has joined.
05:51:52 -!- zzo38 has joined.
05:52:30 <zzo38> I try to think of, how can I make something like the = in TNT, using the Haskell type system?
05:59:51 <zzo38> Is there a way?
06:14:37 <zzo38> Would some of the GHC extensions help?
06:15:54 -!- MDude has changed nick to MSleep.
06:26:46 -!- Sgeo|web has quit (Ping timeout: 265 seconds).
07:00:43 -!- ive has quit (Quit: leaving).
07:30:11 -!- Sgeo|web has joined.
07:31:17 <Sgeo|web> @message elliott If you can find a download, EoA5 is up
07:31:18 <lambdabot> Maybe you meant: messages messages?
07:31:25 <Sgeo|web> @tell elliott If you can find a download, EoA5 is up
07:31:25 <lambdabot> Consider it noted.
07:31:34 <Sgeo|web> @tell Phantom_Hoover If you can find a download, EoA5 is up
07:31:34 <lambdabot> Consider it noted.
07:31:41 <Sgeo|web> @tell CakeProphet If you can find a download, EoA5 is up
07:31:41 <lambdabot> Consider it noted.
07:42:15 <zzo38> It seem to me, if the terms are types, then equality corresponds to isomorphism, but as far as I know there is no way to express that in the type system.
07:50:04 -!- monqy has quit (Quit: hello).
07:52:33 -!- Patashu has quit (Ping timeout: 252 seconds).
08:16:40 -!- derrik has joined.
08:23:11 -!- Ngevd has joined.
08:45:24 <Sgeo|web> http://rincebrain.org/Cascade.torrent
08:45:32 <Sgeo|web> ^^ EoA5 torrent
08:45:42 <Sgeo|web> http://www.megaupload.com/?d=CG0O78QW
08:45:47 <Ngevd> Already watched
08:45:51 <Sgeo|web> ^^ MegaUpload download
08:46:14 <Sgeo|web> This is for the other Homestucker's reference, I wasn't aware that you're a Homestuck person, sorry
08:46:25 <Ngevd> Nobody ever is...
08:46:31 <Ngevd> But I get my updates via RSS
08:47:35 <Sgeo|web> Well, you're lucky that you were able to watch it
08:47:39 <Sgeo|web> Newgrounds crashed
08:47:46 <Ngevd> I used the Megaupload
08:47:49 <Sgeo|web> Ah, ok
08:50:35 <zzo38> Now that I made classical logic in Haskell, I want to make number theory logic as well, but I cannot figure out how.
08:55:59 <Ngevd> I just got up to that chapter in Godel, Escher and Bach
08:57:34 <zzo38> One idea is to make a new kind of function type that can only hold bijective functions, allowing some reversible computing stuff done in Haskell.
09:02:50 <Sgeo|web> I don't think that you can verify that two functions reverse each other, but you could store a pair of (a -> b, b -> a)
09:02:57 <Sgeo|web> Then agian, why am I talking?
09:04:38 <zzo38> Sgeo|web: I did think of that, but that won't work because they are not necessarily inverses of each other
09:04:38 -!- ais523 has joined.
09:06:02 -!- nooga has joined.
09:09:36 <zzo38> Maybe Template Haskell could be used somehow?
09:16:42 <Ngevd> ais523, wiki spam
09:17:26 -!- ais523 has quit (Read error: Connection reset by peer).
09:18:40 -!- ais523 has joined.
09:24:29 <Sgeo|web> Also, yeah, new pages first
09:24:37 <Sgeo|web> Before [S] <EoA5]
09:28:13 -!- CakeProphet has joined.
09:28:13 -!- CakeProphet has quit (Changing host).
09:28:13 -!- CakeProphet has joined.
09:29:33 <CakeProphet> wow, so
09:29:33 <lambdabot> CakeProphet: You have 2 new messages. '/msg lambdabot @messages' to read them.
09:29:38 <CakeProphet> .... o_o
09:29:49 <CakeProphet> so using single quotes in a single quoted string in bash
09:29:54 <CakeProphet> is perhaps the worst thing I've ever seen.
09:30:05 <CakeProphet> (and technically not possible; I'm referring to the workaround)
09:31:47 <CakeProphet> `run echo 'this is how you '\''embed'\'' single quotes in a single quoted string. Note the '\''elegance'\''.'
09:31:53 <HackEgo> this is how you 'embed' single quotes in a single quoted string. Note the 'elegance'.
09:39:56 -!- copumpkin has quit (Ping timeout: 245 seconds).
09:40:21 -!- copumpkin has joined.
10:03:11 -!- pikhq has quit (Ping timeout: 240 seconds).
10:03:12 -!- pikhq_ has joined.
10:05:11 -!- Ngevd has quit (Ping timeout: 240 seconds).
10:09:47 <Sgeo|web> Hi CakeProphet
10:17:34 <CakeProphet> regrg
10:23:41 <Sgeo|web> Did you watch it?
10:28:57 <zzo38> Is there a program to check that a Haskell program (or specified parts of it) have the properties: No loops. No nonexhaustive patterns. No undefined values. And possibly others that are user-specifiable.
10:30:51 <ais523> zzo38: do you mean no infinite loops? if so, that's impossible in general
10:30:54 <ais523> or no loops at all?
10:31:22 <ais523> nonexhaustive patterns can be quite easy to check (e.g. it's a standard warning in OCaml)
10:32:10 <zzo38> No loops at all.
10:32:15 -!- atehwa has set topic: EPL evening school assignments! http://tinyurl.com/5stnu5n | 12345678^&!* | http://codu.org/logs/_esoteric/.
10:32:41 <zzo38> I know that infinite loops are impossible to check in general.
10:32:44 <ais523> atehwa: ooh, an Underload reference
10:33:23 <ais523> in fact, Underload tutorial
10:33:23 <atehwa> ais523: verily :)
10:33:57 <atehwa> otherwise, there would be no hope the students could get into the assignments
10:34:09 <atehwa> I'm afraid the assignments are too hard as they are
10:34:21 <ais523> possibly
10:34:25 <ais523> the better students will enjoy doing them, though
10:34:34 <ais523> btw, my usual Underload pair representation is ((a)(b))
10:34:37 <atehwa> yeah
10:34:44 <atehwa> I'd go with that, too.
10:34:47 <ais523> using ^~! and ^! as first and second
10:35:00 <atehwa> yes, that was a quick answer for #3
10:35:02 <ais523> the usual Underload list representation uses pairs as cons cells
10:35:07 <atehwa> don't tell my students, though :)
10:35:10 <ais523> heh
10:35:29 <ais523> e.g. ((a)((b)((c)((d)()))))
10:35:34 <atehwa> but that's what I thought of first, too.
10:35:40 <ais523> although what you use to represent nil is an issue of its own
10:35:50 <atehwa> yes
10:35:59 <ais523> the typical Underlambda representation is rather simpler: ((a)(b)(c)(d))
10:36:07 <atehwa> Underlambda?
10:36:11 <ais523> and the language and standard library has support for that representation
10:36:22 <ais523> atehwa: it's my latest attempt to make a more serious Underload-based language
10:36:28 <atehwa> hum, ok
10:36:45 <ais523> unlike Underload, it uses functions rather than strings as the basic type
10:37:01 <atehwa> starts to sound like Lisp2k
10:37:24 <ais523> and it's designed to be very easy to implement a TC subset of it, easy to implement the whole language in that TC subject, and easy to implement other esolangs in the whole language
10:37:36 <ais523> so the idea's that eventually you'd get a whole load of esolang cross-compilers/cross-interpreters
10:38:06 -!- derdon has joined.
10:39:12 -!- derrik has left.
10:39:14 -!- derrik has joined.
10:39:21 <atehwa> so the point is to get another bootstrapping environment :)
10:40:23 <zzo38> What is the list near the bottom with INTERCAL, Befunge, Brainfuck (Brainbool, Paintfuck, ...), FALSE, Malbolge, etc?
10:40:45 <ais523> a list of interesting esolangs
10:40:59 <CakeProphet> Sgeo|web: no, real life is exhausting, etc. I'm going to sleep now.
10:41:08 <atehwa> zzo38: it was the list of languages that I though would be worth mentioning in the evening school
10:41:10 <ais523> it's not a list of /all/ interesting esolangs, btw; otherwise you can take the first command from the first esolang, the second from the second, the third from the third, etc, then add 1 to all of them
10:41:15 <ais523> and you get a new interesting esolang
10:41:22 <ais523> diagonal principle…
10:41:27 <atehwa> ais523: whoa :D
10:42:05 <atehwa> but diagonalisation does not work with esolangs with finite definitions
10:42:08 <zzo38> atehwa: Do the multiple esolangs on the same line mean mentioned together?
10:42:30 <atehwa> zzo38: yes, they are "thematically bound"
10:42:42 <atehwa> thematically connected, more like
10:42:51 <zzo38> I can understand that.
10:43:57 <atehwa> I'd like to have something more workable than noit o'mnain worb for stochastic automata
10:45:23 <ais523> #esoteric needs to figure out how to write programs in noit o'mnain worb some time
10:46:28 <atehwa> I think it can't be done, really
10:46:59 <atehwa> rather, someone would have to design a language with the same computation principle, but with working machinery for building transistors.
10:47:12 <ais523> I'm not convinced that you can't build a transistor
10:47:13 <atehwa> and stable current, too
10:47:22 <ais523> the issue is, I'm also not convinced that you can build a transistor with hFE > 1
10:47:33 <atehwa> I'm not totally sure, either, I haven't seen it conclusively disproved
10:48:59 <atehwa> zzo38: as a more precise answer, the title "Historiallisesti tai aiheeltaan trkeit kieli" means "historically or thematically important languages"
10:49:25 <zzo38> atehwa: OK. And now you also explained why that is there; thanks for that too.
10:50:42 <Sgeo|web> @tell elliott There are non-[S] updates before the [S]
10:50:42 <lambdabot> Consider it noted.
10:50:59 <Sgeo|web> @tell Phantom_Hoover There are non-[S] updates before the [S]
10:50:59 <lambdabot> Consider it noted.
10:55:30 -!- Ngevd has joined.
10:55:47 <CakeProphet> my programming languages are only good for moving people around the world and destroying ozone layers.
10:58:54 <zzo38> If there is a program to check some of the properties of a Haskell program, like I have described, then it could be like a proof checker if the Haskell program is seen as a proof according to Curry-Howard. Another possible use is it might allow certain optimizations to be performed on such a program.
11:03:14 <zzo38> I had the idea to represent equality of natural numbers as bijective function types. Haskell has no such type that is restricted to bijective functions; but if it did, it would be helpful that you can make reversible computing in Haskell!
11:03:40 -!- pikhq has joined.
11:03:41 -!- pikhq_ has quit (Ping timeout: 245 seconds).
11:08:10 -!- nooga has quit (Quit: Lost terminal).
11:10:36 <zzo38> For example, (Maybe (Maybe Zero), Maybe (Maybe (Maybe Zero))) is isomorphic to (Maybe (Maybe (Maybe (Maybe (Maybe (Maybe Zero)))))), I think
11:11:36 <zzo38> Did I do it correctly?
11:11:43 -!- sllide has joined.
11:14:13 * ais523 submits anagolf problem
11:14:49 <zzo38> OK
11:15:00 -!- Ngevd has quit (Ping timeout: 240 seconds).
11:15:13 <zzo38> Do you know what I am meaning by this stuff?
11:15:51 <ais523> yes, but I'm not sure of the answer
11:22:18 -!- GreaseMonkey has quit (Quit: The Other Game).
11:23:37 <ais523> ^ul ()(~(*)*:S:(\n)S~:^):^
11:23:37 <fungot> *\n
11:23:45 <ais523> ^ul ()(~(*)*:S(\n)S~:^):^
11:23:45 <fungot> *\n**\n***\n****\n*****\n******\n*******\n********\n*********\n**********\n***********\n************\n*************\n**************\n***************\n****************\n*****************\n******************\n*******************\n********************\n*********************\n**********************\n***********************\n** ...too much output!
11:23:48 <ais523> there we go
11:23:58 <ais523> 'twas right second time
11:24:25 <ais523> and one possible answer to question 2, is that it does have two stacks: the data stack, and the program stack
11:24:49 <ais523> (another is that you store entire stacks in a stack element, and get more stacks that way)
11:32:33 -!- derdon has quit (Remote host closed the connection).
11:39:38 <ais523> hmm, I think I just noticed community self-parody on Slashdot
11:39:53 <ais523> where someone linked to the page where a future xkcd comic will eventually appear, in the hope that it would be at least loosely relevant
12:18:57 -!- Ngevd has joined.
12:27:00 -!- ais523 has quit (Remote host closed the connection).
12:33:37 -!- Ngevd has quit (Ping timeout: 276 seconds).
12:40:55 -!- Ngevd has joined.
12:44:47 -!- Vorpal has joined.
12:45:06 -!- PH has joined.
12:45:17 <PH> What are the haps my friends?
12:50:05 -!- Ngevd has quit (Ping timeout: 258 seconds).
12:53:35 -!- hagb4rd has quit (Ping timeout: 240 seconds).
12:59:24 -!- hagb4rd has joined.
12:59:42 -!- MSleep has changed nick to MDude.
13:00:09 -!- Ngevd has joined.
13:02:21 -!- Ngevd has changed nick to Taneb|Hovercraft.
13:10:47 -!- Taneb|Hovercraft has quit (Ping timeout: 240 seconds).
13:11:57 -!- PH has quit (Quit: Page closed).
13:17:47 -!- PH has joined.
13:38:55 -!- Taneb|Hovercraft has joined.
13:43:00 <Taneb|Hovercraft> Hello!
14:09:21 <zzo38> What is the fixity for -> and can I set fixity for type operators
14:15:07 -!- PH has quit (Quit: Page closed).
14:21:02 -!- augur has quit (Remote host closed the connection).
14:22:11 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
14:44:29 -!- Phantom_Hoover has joined.
14:44:47 <Phantom_Hoover> It just occurred to me to check if lambdabot has any messages.;
14:44:48 <lambdabot> Phantom_Hoover: You have 2 new messages. '/msg lambdabot @messages' to read them.
14:45:04 <Taneb|Hovercraft> I guess that's a yes, then
14:45:43 <Phantom_Hoover> I miss the old days when elliott would read the Homestuck blogs on tumblr and then send me about ten messages bitching about them.\
14:45:58 -!- copumpkin has joined.
14:47:21 <Phantom_Hoover> OK I suppose it would be prudent to actually get some work done at some point.
14:47:22 -!- Phantom_Hoover has quit (Client Quit).
14:48:14 -!- PH_ has joined.
14:48:45 <PH_> Taneb|Hovercraft: wait what the hell were you doing online at half eight.
14:48:57 <Taneb|Hovercraft> I was online at half eight?
14:49:30 <Taneb|Hovercraft> Woah, I was
14:49:35 <Taneb|Hovercraft> Huh
14:49:43 <Taneb|Hovercraft> I'm a morning person?
14:50:26 -!- augur has joined.
14:54:09 <PH_> Taneb|Hovercraft: don't... don't you have school.
14:54:18 <Taneb|Hovercraft> Half term
14:54:49 <Taneb|Hovercraft> England's a couple of weeks out of sync with Scotland, if memory serves
14:56:20 * PH_ eyes elliott's chair suspiciously.
14:56:42 <PH_> OK I'm going back to pretending I'm just about to do some work bye.
14:56:43 -!- PH_ has quit (Quit: Page closed).
15:04:31 -!- Taneb|Hovercraft has quit (Ping timeout: 245 seconds).
15:47:19 -!- Taneb|Hovercraft has joined.
15:47:37 <Taneb|Hovercraft> I've got a confession to make
15:47:43 <Taneb|Hovercraft> I'm not actually on a hovercraft
15:48:39 <quintopia> 9/me cries
15:48:48 <quintopia> without the 9 that works better
15:49:10 <quintopia> in any case, i am so brokenhearted at the lack of hovercraft
15:58:26 -!- Phantom_Hoover has joined.
15:58:30 -!- quintopia has quit (Ping timeout: 258 seconds).
16:14:16 <Phantom_Hoover> Computing while standing on one leg is surprisingly comfortable.
16:26:18 <Taneb|Hovercraft> Where's elliott when you need him
16:26:43 <Taneb|Hovercraft> I need a restaurant recommendation near Hexham
16:28:18 <Phantom_Hoover> Pick a random restaurant.
16:34:12 <Phantom_Hoover> Wait, no, I have a better idea.
16:36:36 <Phantom_Hoover> Use http://random.irb.hr/ to select a restaurant, and rest assured that some parallel Taneb went to the right restaurant.
16:37:04 <Taneb|Hovercraft> But it's for my birthday meal!
16:38:44 <Phantom_Hoover> Quantum birthday!
16:38:47 <Phantom_Hoover> Best birthday.
16:39:05 -!- Phantom_Hoover has quit (Quit: Page closed).
16:39:13 <Taneb|Hovercraft> I know someone who experienced a combination of a near death experience and quantum immortality
16:41:41 -!- Phantom_Hoover has joined.
16:41:56 <Phantom_Hoover> EPL?
16:42:30 <Taneb|Hovercraft> He got hit by a car, went home, had pizza, and woke up in hospital three weeks later, having not actually had pizza
16:43:28 <Phantom_Hoover> Did he have his stomach pumped?
16:43:50 <Taneb|Hovercraft> No, he had imagined eating pizza
16:44:04 <Taneb|Hovercraft> Or ate pizza in a universe which had its waveform collapsed
16:46:10 <Phantom_Hoover> Oh FFS, Prequel had an [S] update as well?
16:46:24 <Taneb|Hovercraft> That's an FA, right?
16:46:30 <Phantom_Hoover> The best FA.
16:47:25 <Phantom_Hoover> Oh my god this is the best update
16:48:49 -!- Taneb|Hovercraft has quit (Quit: Leaving).
16:52:51 -!- zzo38 has quit (Remote host closed the connection).
17:22:23 -!- monqy has joined.
17:30:41 -!- Taneb|Hovercraft has joined.
17:44:24 <Taneb|Hovercraft> Comment on the EPL evening school assignments:
17:44:55 <Taneb|Hovercraft> The answer to weekly assignment two question two can be found within one link from that page
17:45:21 <Phantom_Hoover> EPL?
17:45:27 <Taneb|Hovercraft> Look at the topic
17:45:35 <Phantom_Hoover> Oh, that's what that was all about.
17:54:35 <Taneb|Hovercraft> ...How does one do line breaks in underload
17:54:36 <Taneb|Hovercraft> ?
18:04:04 -!- Vonlebio has joined.
18:05:57 -!- Vonlebio has quit (Client Quit).
18:15:09 -!- Taneb|Hovercraft has quit (Ping timeout: 258 seconds).
18:17:52 -!- ais523 has joined.
18:32:02 -!- Zuu has joined.
18:32:07 -!- Zuu has quit (Changing host).
18:32:07 -!- Zuu has joined.
18:35:05 -!- Ngevd has joined.
18:45:06 <Ngevd> @pl \x -> \y -> x && (not y)
18:45:06 <lambdabot> (. not) . (&&)
19:08:11 -!- copumpkin has changed nick to amphitheater.
19:09:36 -!- amphitheater has changed nick to copumpkin.
19:26:34 -!- GreaseMonkey has joined.
19:28:16 <Phantom_Hoover> Aargh
19:28:43 <Phantom_Hoover> The left channel on these headphones is broken, and I can't work out how to force everything into mono so I can listen to stereo stuff.
19:31:57 <olsner> get working headphones
19:32:29 <Phantom_Hoover> This is not a practical short-term solution.
19:32:39 <olsner> yes it is
19:33:19 -!- oerjan has joined.
19:33:38 <Phantom_Hoover> Short-term as in right now.
19:33:43 -!- Phantom_Hoover has quit (Remote host closed the connection).
19:35:53 -!- Vonlebio has joined.
19:36:05 -!- Vonlebio has quit (Client Quit).
19:37:37 -!- Phantom_Hoover has joined.
19:39:09 <oerjan> @tell zzo38 <zzo38> Now that I made classical logic in Haskell, I want to make number theory logic as well, but I cannot figure out how. <-- i think perhaps the problem is that your classical logic is purely propositional, but number theory requires quantifiers, so may essentially need dependent types which haskell doesn't have
19:39:09 <lambdabot> Consider it noted.
19:40:30 <olsner> `quote
19:40:33 <HackEgo> 465) <oklofok> drinks should come in long long pipes that drip liquid at varying speeds, and you shouldn't just casually taste to them, you should really try to understand what the artist (the canposer?) was trying to convey when making the drink <oklofok> olsner: well you know i'm a genius. anyway i like how food works tho,
19:42:03 <oerjan> @tell zzo38 Although the type system (with UndecidableInstances) _is_ TC, so there should be _some_ way to encode it, but perhaps not in a way using the curry-howard isomorphism directly
19:42:03 <lambdabot> Consider it noted.
19:45:25 -!- tiffany has joined.
19:50:54 -!- tiffany has quit (Quit: Bye).
19:51:02 -!- tiffany has joined.
19:53:30 <oerjan> `addquote <ais523> it's not a list of /all/ interesting esolangs, btw; otherwise you can take the first command from the first esolang, the second from the second, the third from the third, etc, then add 1 to all of them <ais523> and you get a new interesting esolang <ais523> diagonal principle…
19:53:32 <HackEgo> 694) <ais523> it's not a list of /all/ interesting esolangs, btw; otherwise you can take the first command from the first esolang, the second from the second, the third from the third, etc, then add 1 to all of them <ais523> and you get a new interesting esolang <ais523> diagonal principle…
19:54:03 <Phantom_Hoover> But must the result be interesting?
19:54:09 <oerjan> ...
19:54:21 <Phantom_Hoover> Most interesting esolangs wouldn't even be partitionable into commands that way.
19:54:30 <oerjan> Phantom_Hoover: does it feel drafty in here?
19:54:51 <Phantom_Hoover> No, it's quite warm in fact.
19:54:57 -!- augur has quit (Remote host closed the connection).
19:55:35 <oerjan> i guess the draft is _way_ above your head, then
19:56:14 <ais523> I think the resulting esolang would be interesting just based on the method of construction
19:56:23 <oerjan> good point
19:57:15 <Phantom_Hoover> ais523, perhaps, but extending it infinitely would not necessarily result in an infinite series of interesting esolangs.
19:58:02 -!- tiffany has quit (Read error: Connection reset by peer).
19:58:23 -!- tiffany has joined.
19:58:29 <oerjan> <ais523> the issue is, I'm also not convinced that you can build a transistor with hFE > 1 <-- does noit o'mnain worb have some analogy to the second law of thermodynamics, perhaps?
19:59:03 <ais523> oerjan: I don't know, but it wouldn't surprise me
20:04:55 <oerjan> @tell zzo38 <zzo38> What is the fixity for -> and can I set fixity for type operators <-- infixr 0 and yes, says http://www.haskell.org/ghc/docs/latest/html/users_guide/data-type-extensions.html#infix-tycons
20:04:55 <lambdabot> Consider it noted.
20:06:12 <oerjan> hm why isn't it `T` in the example, might be a typo
20:06:51 <oerjan> > let infixl 0 `t`; t = (+) in 2 `t` 3 * 5
20:06:52 <lambdabot> 17
20:07:01 <oerjan> > let infixl 0 t; t = (+) in 2 `t` 3 * 5
20:07:02 <lambdabot> <no location info>: parse error on input `t'
20:07:51 -!- tiffany has quit (Remote host closed the connection).
20:07:56 <oerjan> @tell zzo38 I suspect there's a typo and the example should be infixl 7 `T`, :*:
20:07:56 <lambdabot> Consider it noted.
20:09:21 -!- tiffany has joined.
20:12:01 <oerjan> <Taneb|Hovercraft> Or ate pizza in a universe which had its waveform collapsed
20:12:29 <oerjan> i wish my waveforms would collapse in a direction more consistent with my wishes
20:13:18 <oerjan> <Taneb|Hovercraft> ...How does one do line breaks in underload
20:13:32 <oerjan> Ngevd: just put them in the program. doesn't work on irc, of course.
20:13:59 <Ngevd> Ooh, sneaky
20:14:15 <oerjan> also, (...)! is a comment, which you can put line breaks in (i've used that for several of the programs on the wiki)
20:16:05 <oerjan> they need to be put inside strings, not as executed commands (which will usually error out)
20:16:36 -!- derrik has quit (Quit: take carezz).
20:24:40 -!- augur has joined.
20:28:50 -!- elliott has joined.
20:30:42 -!- boily has quit (Quit: WeeChat 0.3.6).
20:30:54 <Sgeo|web> elliott: it's up
20:31:05 <elliott> It's watched.
20:31:06 <lambdabot> elliott: You have 2 new messages. '/msg lambdabot @messages' to read them.
20:32:00 -!- tiffany has quit (Remote host closed the connection).
20:32:53 -!- tiffany has joined.
20:34:25 -!- tiffany has quit (Remote host closed the connection).
20:34:42 <elliott> Sgeo|web: Wait, it /crashed Newgrounds/?
20:34:48 <elliott> This has to be some kind of record.
20:35:01 -!- tiffany has joined.
20:35:56 <Ngevd> Also, elliott, recommend a restaurant, dammit!
20:36:06 <elliott> #esoteric
20:36:58 <Sgeo|web> elliott: in a manner of minutes, iirc
20:37:18 * oerjan is going to believe elliott never goes to restaurants
20:37:36 <elliott> oerjan believes many a thing
20:37:55 <Sgeo|web> <insert snarky reference to oerjan's past beliefs here>
20:38:08 * oerjan swats Sgeo|web -----###
20:38:29 <elliott> Which past beliefs
20:40:41 <Sgeo|web> Astrology
20:41:20 <Phantom_Hoover> <elliott> Sgeo|web: Wait, it /crashed Newgrounds/?
20:41:28 <Phantom_Hoover> In about two minutes, at that.
20:42:29 <Sgeo|web> I saw someone on Twitter joke that Hussie posted it on the CIA website, and crashed the government
20:42:31 <elliott> Sgeo|web: I think you're confusing past and current beliefs
20:43:03 -!- tiffany has quit (Remote host closed the connection).
20:43:35 -!- tiffany has joined.
20:53:42 -!- derdon has joined.
20:59:33 <elliott> Sgeo|web: Looks like it just slowed down Newgrounds, not crashed it, and then Hussie took it off
20:59:40 <elliott> Since it wasn't working
21:00:28 <Phantom_Hoover> Newgrounds was showing maintenance pages for at least some time.
21:01:06 <Phantom_Hoover> (Citation: hearsay from the SA thread.)
21:01:19 <elliott> Oh, that thing will be back now.
21:01:22 <elliott> How many pages is it already?
21:01:32 <Phantom_Hoover> They started a new thread.
21:01:38 <Phantom_Hoover> It's on ~10, IIRC.
21:02:10 <elliott> Phantom_Hoover: Twenty-two;
21:02:12 <elliott> s/;/./
21:04:24 -!- copumpki_ has joined.
21:06:00 <ais523> <Monomelodies> If this had been some esoteric language where && had meant "subtract by three, but only if it's a full moon and Elvis is playing on the radio" I'd have agreed the OP should have explained it.
21:06:04 <ais523> anyone want to implement that?
21:07:07 <elliott> bf derivative except that
21:07:09 -!- copumpki_ has changed nick to copumpkin_.
21:07:10 -!- copumpkin has quit (Ping timeout: 244 seconds).
21:07:11 <elliott> someone else implement it
21:07:12 -!- copumpkin_ has changed nick to copumpkin.
21:07:13 -!- copumpkin has quit (Changing host).
21:07:13 -!- copumpkin has joined.
21:08:05 <ais523> hmm, "bf derivative except that" should be listed somewhere as a method of easily creating vast numbers of stupid esolangs
21:08:14 <elliott> heh
21:15:59 -!- Jafet has joined.
21:19:35 -!- quintopia has joined.
21:36:13 -!- copumpki_ has joined.
21:36:36 <oerjan> ais523: wiki spam
21:38:10 <ais523> deleted
21:38:24 -!- copumpkin has quit (Ping timeout: 240 seconds).
21:38:25 <oerjan> there's been a lot lately
21:38:26 <elliott> So my MacBook Air broke.
21:38:45 <oerjan> ran out of air, presumably
21:38:55 <elliott> I was just about to watch the EOA Homestuck Flash today -- literally just about to -- and it just turned itself off and won't go back on again.
21:38:57 <elliott> It KNOWS.
21:40:06 <pikhq> Map +-.,><[] to 足引出入右左初終 BAM ESOLANG
21:40:07 <pikhq> :P
21:40:30 <elliott> It's just a good thing I have 5 computers to hand at all times like a sane person.
21:40:37 <pikhq> elliott: :)
21:41:03 <elliott> Or was it s/sane/reasonable/ I am Bad at References.
21:41:10 <elliott> This one has shitty speakers though.
21:42:48 <Madoka-Kaname> pikhq, is that Chinese or Japanese?
21:42:56 <elliott> elliott@dinky:~$ cat /etc/debian_version
21:42:56 <elliott> squeeze/sid
21:42:59 <elliott> Oh no, why am I on sid.
21:43:12 <elliott> No wait.
21:43:15 <elliott> I'm on squeeze.
21:43:17 <elliott> This thing lies.
21:43:47 <pikhq> Madoka-Kaname: Based on Japanese words, but I'd *imagine* it works just fine for Chinese as well.
21:44:13 <pikhq> Well. 足し算・引き算 might not carry over that well to Chinese?
21:44:43 <oerjan> "Left foot leads into the right beginning of the end"
21:44:58 <oerjan> very poignant
21:45:06 <pikhq> oerjan: It's just "add subtract out in right left begin end".
21:45:36 <oerjan> "And from right to left end of the first leg pull" when done from japanese
21:45:48 -!- copumpki_ has changed nick to copumpkin.
21:45:53 <pikhq> Well, yes, it's not even vaguely valid Japanese. :P
21:45:54 -!- copumpkin has quit (Changing host).
21:45:54 -!- copumpkin has joined.
21:46:06 <oerjan> also poignant
21:50:01 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
21:52:00 -!- MDude has quit (Ping timeout: 240 seconds).
22:03:58 -!- Patashu has joined.
22:04:12 <Patashu> [s] cascade completely surpassed my expectations
22:04:28 <elliott> yeah
22:05:10 <Patashu> I didn't catch how dave and rose got god tier though
22:05:20 <Phantom_Hoover> Dude shut up.
22:05:20 <Patashu> spoilers or whatever
22:05:29 <Patashu> my bad
22:06:13 <Ngevd> Goodnight, all
22:06:20 <elliott> Bye.
22:06:21 -!- Ngevd has quit (Quit: Leaving).
22:12:36 -!- copumpkin has joined.
22:24:41 <elliott> Patashu: See /msg.
22:28:18 <oklopol> is it just me or is "left foot leads into the right beginning of the end" the smartest thing anyone has ever said ever
22:28:37 <elliott> Yes.
22:28:42 <oklopol> which one
22:29:01 <Phantom_Hoover> Both.
22:30:05 <elliott> Yes.
22:30:12 <oklopol> :o
22:32:28 -!- GreaseMonkey has quit (Quit: The Other Game).
22:32:37 <oklopol> i have to talk about noetherian modules on thursday and i just realized i'm too stupid to understand these theorems
22:32:59 <Phantom_Hoover> Isn't Noether all, like, stuff
22:33:02 <Phantom_Hoover> Which doesn't change.
22:33:08 <Phantom_Hoover> Pretty simple, really.
22:33:39 <oklopol> it means the module has the ascending chain condition, that is, an ascending chain is finite
22:33:55 <oklopol> (a chain of submodules ordered by inclusion)
22:34:36 <Phantom_Hoover> Are you sure it's the same Noether?
22:34:38 <oklopol> you can use that as a kind of zorn's lemma to find finite chains with funny properties, since if you just take a maximal chain, it's finite
22:34:56 <oklopol> i have no idea who noether is, i just know what a noetherian module is
22:37:08 <oklopol> it's just that when you have a ring and then you take the ring of polynomials and then that operates on a module and then you take the dual of that module and then you have an operation on the module and get a dual operation on the dual of the module and then write a whole number of sentences starting with "obviously,", i get a bit frustrated
22:37:18 <oklopol> *polynomials over it
22:38:40 <oklopol> well put like that it sounds pretty simple but keeping track of indexing and types gets a bit complicated when you have multiple levels
22:38:47 <oklopol> and paper is for pussies afaik
22:41:33 <oerjan> Phantom_Hoover: yes it's the same noether, the physics stuff was a little different from what she worked the most on, i think
22:41:45 <oklopol> she?
22:41:48 <oklopol> wow
22:42:18 <Phantom_Hoover> oklopol, it was a joke.
22:42:20 <oerjan> yes, emmy noether is probably the most famous female mathematician in history
22:42:22 <Phantom_Hoover> I mean oerjan.
22:42:38 <Phantom_Hoover> Also she was basically a physicist, and we all know what they say about physicists.
22:42:52 <oklopol> i should probably try to keep that in mind
22:42:52 <elliott> Is it worse than what they say about fisheries research biologists?
22:43:04 -!- BeholdMyGlory has changed nick to Testing.
22:43:08 <oerjan> still joking i see
22:43:22 <oklopol> what do they say about physicists
22:43:23 -!- Testing has changed nick to BeholdMyGlory.
22:43:38 <oklopol> they are retards?
22:43:39 <Phantom_Hoover> elliott, no, obviously.
22:43:59 <Phantom_Hoover> oklopol, oh god, I don't know, I was just pretending so that I could be in the in crowd aaaaaaaaaaaa
22:44:26 <elliott> Phantom_Hoover: Well right, it'd hard to get worse than that.
22:45:11 <Phantom_Hoover> elliott, the thought scares me.
22:45:19 <elliott> s/hard/be hard/
22:45:35 <elliott> Phantom_Hoover: I'd like to take this opportunity to laugh at fisheries research biologists: hahahahahaha.
22:46:07 <Phantom_Hoover> You'd *laugh* at that?
22:47:11 <elliott> At what.
22:47:29 <oerjan> hey i'll have you know fisheries research biologists are a respected profession in norway
22:47:58 <oklopol> i did applied fisheries research when i was little
22:48:05 <elliott> xD
22:48:27 <oklopol> got some results too but i ate them before i could publish them
22:48:56 <elliott> `addquote <oklopol> i did applied fisheries research when i was little <oklopol> got some results too but i ate them before i could publish them
22:48:59 <HackEgo> 695) <oklopol> i did applied fisheries research when i was little <oklopol> got some results too but i ate them before i could publish them
22:49:52 <ais523> almost certainly lying, but still hilarious
22:50:11 <oklopol> i would never lie about my research
22:50:27 <oerjan> ais523: i am pretty sure he is entirely truthful
22:50:44 <ais523> oerjan: but if it /isn't/ your research, that doesn't matter
22:50:57 <ais523> if you claim that you researched tractor tyres but didn't, that's not lying about your research
22:51:04 <elliott> ais523: Anything happened in BlogNomic yet?
22:51:10 <ais523> elliott: sixth meta started
22:51:18 <ais523> people are currently fighting over the theme
22:51:20 <elliott> I was busy repeatedly watching a thirteen minute Flash.
22:51:24 <elliott> I guess I'll get on IRC.
22:52:21 <quintopia> ais523: ##electronics is full of knowledgeable unhelpful people. where can i get both?
22:52:44 <oklopol> in ##electronics, apparently
22:52:46 <elliott> #esoteric is full of unknowledgable unhelpful people
22:52:49 <oklopol> lucky you
22:52:51 <elliott> so you're in the right place
22:52:53 -!- ais523 has quit (Quit: ragepart).
22:53:02 <elliott> that's not a ragepart
22:53:05 <oerjan> wat
22:53:05 <elliott> you're terrible at this, ais
22:53:18 <oerjan> ais are usually terrible at rageparts
22:53:26 <quintopia> lol
22:53:28 <oerjan> until they invent death rays, anyhow
22:54:14 -!- CakeProphet has quit (Ping timeout: 260 seconds).
22:54:56 <oklopol> oerjan: are you an expert on noetherian modules
22:55:10 <oerjan> no.
22:55:37 * tswett decides to begin writing Jath. Again.
22:55:37 <oklopol> my question is on notation so you're probably pretty useless then
22:55:52 <tswett> I think for now, it's simply going to be a loose collection of features.
22:56:48 <elliott> whats jath
22:57:03 <tswett> A parser. LLVM. A B+-tree. That's going to be it for now.
22:57:17 <elliott> ok
22:58:17 <oerjan> i never took the proper ring theory course, although i do think something noetherian was mentioned in the homological algebra one
23:00:40 <oklopol> i'm slowly starting to realize (once again) that i don't actually know any math
23:00:46 <oklopol> nothing at all
23:01:03 <oklopol> i should just become a gardener or a truck
23:01:34 <Phantom_Hoover> Garden on a truck.
23:01:54 * Phantom_Hoover → sleep
23:01:55 -!- Phantom_Hoover has quit (Quit: Leaving).
23:02:00 <oerjan> i think you mean trucker, unless you're in for some major body modifications
23:04:14 <quintopia> you know enough to be a math tutor
23:04:24 <quintopia> and then be a gardener on the side
23:04:33 <quintopia> and a fisheries researcher
23:04:36 <oklopol> i'm sure they are smaller modifications than the ones i'd need to do math
23:05:08 <elliott> "Yeah, nothing seemed to descend into chaos and cannibalism" -- oh, phew.
23:05:40 <oklopol> also i'm getting closer to proving sofic shifts are simplicial complexes and all simplicial complexes can be embedded in any nontrivial mixing sofic shift as a sofic subshift, up to homotopy equivalence, in the besicovitch topology
23:06:10 <oerjan> elliott: how boring
23:07:41 <oklopol> no one does algebraic topology here, so i have no idea if i'm proving something well-known
23:07:57 <oklopol> here as in in turku
23:09:01 <oklopol> besicovitch topology is when you take the limsup of difference densities of n-blocks around the origin as n goes to infinity as the distance
23:12:10 <oklopol> homotopy equivalence is really annoying to show, you first have to find two continuous functions equating them, then prove both the compositions homotopy equivalent to id, so it's four times the work of proving something with just one step like 1 + 1 = 2
23:12:56 <quintopia> why two different ones?
23:13:00 <quintopia> two directions?
23:13:05 <oklopol> well back and forth
23:13:14 <quintopia> yer
23:14:11 <oklopol> if those are just inverses, you have a homeomorphism, and those spaces are so far from homeomorphic that i can't even find a simile
23:14:32 <oklopol> wait
23:14:38 <oklopol> yeah
23:16:08 -!- pikhq_ has joined.
23:16:17 <oklopol> a besicovitch space is not locally very R^n-like, since it's infinitedimensional
23:16:22 <oklopol> *infinite dimensional
23:16:28 -!- pikhq has quit (Ping timeout: 260 seconds).
23:17:28 <elliott> play four in a row on it
23:18:50 <oklopol> i'm actually playing continuous path on it all day long, which is uncountably infinite times cooler.
23:19:07 <elliott> is that where you have to make a straight path of arbitrary length to win
23:20:36 <oklopol> it's a solitaire. you find paths and then you show they are actually homotopic to other paths and be really happy for some reason.
23:21:45 <oerjan> quintopia: for example, [0,1] and a single point are homotopy equivalent
23:22:03 <oklopol> for instance a mixing sofic shift is contractible, that is, homotopy equivalent to a single point, so all paths are homotopic
23:22:13 <oklopol> synchronicity
23:22:44 <oerjan> contractible spaces _are_ the simplest ones to think of
23:23:10 <oklopol> an empty space is way simpler
23:23:15 <oklopol> amirite
23:23:23 <oerjan> er.
23:23:31 <oerjan> possibly
23:23:38 <oklopol> i didn't say that because contractible spaces are simple, but because i like listing my results
23:24:00 <oklopol> i suppose i proved that because they are simple though
23:24:07 <oerjan> i think you will be hard pressed to find a different non-homeomorphic space it's homotopy equivalent with, though
23:24:19 <oklopol> ?
23:24:28 <oerjan> ...the empty space
23:24:30 <oklopol> oh
23:24:34 <oklopol> right
23:25:09 <oklopol> i have an idea for one, but i'm having a hard time choosing the function to the empty space
23:25:41 <oerjan> you don't say
23:25:42 <oklopol> i came up with the other function in like a second though so i'm sure i'm on the right track
23:25:59 <oerjan> a track paved with good intensions, i'm sure
23:26:54 <oklopol> http://en.wikipedia.org/wiki/Intension i'm trying to find out if that was a pun but i don't get any of this
23:27:04 <oklopol> maybe i'm just too stupid to do anything right now
23:27:15 <oklopol> did i mention all sofic shifts are closed but not all shift spaces are
23:28:12 <oklopol> and also that toeplitz sequences are dense while no countable set can be
23:28:27 <oklopol> (maybe infinite-dimensionality implies the latter?)
23:28:39 <oerjan> http://en.wikipedia.org/wiki/The_road_to_hell_is_paved_with_good_intentions
23:28:42 <oklopol> hmm no i don't think so
23:28:58 <oklopol> yes i was wondering about the typo
23:29:16 <oerjan> there was a typo? hm.
23:30:07 <oklopol> it's a bit subtle
23:31:01 <oerjan> wow i never knew those were different words
23:32:53 <oklopol> kind of like the result that a noetherian module has a unique finite characteristic set of prime ideals such that there exists a set of submodules, one for each of those ideals, such that the intersection of them is empty but no intersection not containing all of those is, such that the annihilator of each of those submodules is the associated prime ideal and also all those submodules are primary
23:33:01 <oerjan> they're both spelled intensjon in norwegian
23:34:42 <oerjan> oklopol: no, infinite-dimensional spaces can have countable dense subsets
23:34:55 <oerjan> separable hilbert space, for example
23:34:58 <oklopol> yeah i realized
23:35:15 -!- MDude has joined.
23:38:49 <oklopol> i want to be sleepy :(
23:39:45 -!- derdon has quit (Remote host closed the connection).
23:44:50 -!- evincar has joined.
23:48:58 <evincar> In Haskell, is there a more general way to compose functions than (.)?
23:49:21 <elliott> see Control.Category I guses
23:49:22 <elliott> guess
23:49:23 <evincar> Like (a->b->c)->(d->a)->(e->a)->(d->e->c) for replacing two arguments with two functions.
23:49:36 <evincar> Er, e->b.
23:50:05 <evincar> For the third argument.
23:50:15 <evincar> (a->b->c)->(d->a)->(e->b)->(d->e->c)
23:50:56 <monqy> make yourself a mess of compositions
23:51:19 <monqy> what name would you give that one?
23:51:40 <oerjan> evincar: http://conal.net/blog/posts/semantic-editor-combinators
23:53:42 <evincar> monqy: It could be the type resulting from a more general scheme, so I dunno.
23:54:02 -!- sllide has quit (Read error: Connection reset by peer).
23:54:48 <oerjan> @pl \f g h x y -> f (g x) (h y)
23:54:49 <lambdabot> ((flip . ((.) .)) .) . (.)
23:55:13 <evincar> It takes a binary function and composes two unary functions in place of its arguments, so compose2nd (compose1st b u1) u2 ? Or something?
23:55:46 <oklopol> i think ((flip . ((.) .)) .) . (.) is as clear as it gets
23:55:48 <oerjan> @pl \f g h -> curry (uncurry f . (g *** h))
23:55:49 <lambdabot> ((curry .) .) . (. (***)) . (.) . (.) . uncurry
23:55:51 <evincar> Hrm.
23:55:54 <oerjan> eek
23:55:58 <oklopol> i admit, the "flip" makes it a bit hard to read
23:56:05 <evincar> I'm trying to implement something like the function composition/application setup I had in Even.
23:56:12 <evincar> Because I still think that's a good idea.
23:56:17 <oklopol> who is even
23:56:18 <monqy> whats even
23:56:20 <oklopol> is she hot
23:56:26 <evincar> Oh, I never mentioned that name here.
23:56:40 <evincar> It was the message-passing language we had an argument about composition versus application about.
23:56:47 <monqy> argument?
23:56:54 <evincar> Everyone was telling me I was wrong.
23:56:58 <monqy> you were
23:56:59 <oklopol> yeah "argument"
23:57:07 <evincar> So that kind of argument.
23:57:17 <evincar> The kind where I say something false and people object.
23:57:24 <oklopol> the best kind
23:57:27 <oklopol> when the i is not me
23:57:28 <evincar> Indeed.
23:57:30 <monqy> I typically consider that distinct from proper arguments
23:57:36 <monqy> but whatever
23:57:45 <monqy> so how did composition work there?
23:57:57 <monqy> semantically, I mean
23:58:20 <oklopol> even is such an odd language.
23:58:33 <evincar> Well, for binary f and unary g and h, [[f [g ?] [h ?]] x y] would yield [f [g x] [h y]]
23:59:09 <evincar> Where [] groups application and ? is a sort of placeholder.
23:59:33 <monqy> oh I remember that. you were wrong about it too weren't you
23:59:45 <evincar> That is, [g ?] x and [g x] are the same, but [h [g ?]] x is [h [g x]].
23:59:55 <monqy> ah so you resolved that
2011-10-26
00:00:11 <evincar> There's a flat space for function arguments, basically, not a nested one.
00:00:13 <elliott> oh good god not more of this terrible notation
00:00:14 <monqy> at least: maybe??
00:00:25 <monqy> elliott: hi
00:00:46 <oklopol> why not have [x] as a shorthand for [x ?]
00:01:22 -!- pikhq has joined.
00:01:44 -!- pikhq_ has quit (Ping timeout: 256 seconds).
00:02:00 <oklopol> evincar: how do you compose [g ?] with x?
00:02:02 <evincar> I dunno, that doesn't seem like the best idea. Ideally x and [x] would be the same in all cases, to avoid confusion.
00:02:35 <evincar> So x is a function?
00:02:43 <oklopol> sure
00:02:49 <oklopol> does that matter
00:03:19 <evincar> Yeah.
00:03:30 <evincar> If you're composing functions, you need to know the arity.
00:03:37 <oklopol> everything is unary
00:03:40 <evincar> So that you can use the right number of placeholders.
00:03:41 <evincar> Okay.
00:03:51 <oklopol> except addition. addition is binary.
00:04:09 <evincar> So [g [x ?]] is the composition of g and x.
00:04:32 <evincar> Whereas [g x] is the function g applied to the function x.
00:04:40 <evincar> (Glad I finally got that straight...)
00:04:53 <oklopol> okay let's see
00:05:14 <evincar> I'm just wondering whether something like this can be done simply in Haskell.
00:05:19 <evincar> It can be done, no doubt.
00:05:25 <evincar> It's the "simply" that could be problematic.
00:05:28 <monqy> can it even be done in Even?
00:05:32 <monqy> is Even....doable?
00:05:47 <evincar> I never wrote it, but it's a language that can be written. :P
00:05:52 <monqy> can it?
00:05:55 <oklopol> okay so it seems you haven't really integrated composition and application into one uniform syntax
00:05:57 <evincar> Absolutely.
00:06:03 <monqy> do you have proof of this
00:06:29 <evincar> Why wouldn't it be possible to write it?
00:06:33 <oklopol> you just have lambdas where you can only use each argument once and in order afaiu
00:06:43 <monqy> Even might be ill-defined or something
00:06:50 <monqy> or there could be bad problems in it that make it awful
00:06:57 <oklopol> so in particular, can you implement s?
00:07:49 <monqy> ah yes I remember one of the things, yes
00:07:54 <evincar> It should be just S x y z = [x z [y z]].
00:07:58 <monqy> basically what oklopol's saying
00:08:34 <oklopol> well i think [[[S x] y] z] = [[x z] [y z]] is closer to the real thing
00:08:58 <oklopol> since when combinatoring, you don't want to have to supply all three args
00:09:08 <evincar> That makes sense.
00:09:36 <oklopol> i was just wondering if you can just write S down using ?'s
00:10:16 <evincar> Oh. You wouldn't need to. It doesn't involve composition exactly.
00:10:36 <evincar> You could write [[x ?] [y ?] z z] if you were feeling fancy.
00:10:57 <evincar> I guess.
00:11:50 <oklopol> shouldn't it be [[[x ?] [y ?]] z z]? and i'm still not sure how you know when a lambda starts and when a composition starts
00:12:39 <elliott> oerjan: Help the GHC on here is 6.12.1 I can't cope.
00:12:49 <oklopol> this one time i made a language where you didn't use parens at all, the interpreter just used types to choose the correct parsing
00:13:19 <evincar> oklopol: [[x ?] [y ?]] is equal to [x [y ?]], so those outer brackets shouldn't be there.
00:13:30 <evincar> And maybe the syntax needs to be clearer.
00:13:42 <evincar> But I'm really just asking how to do something like this in Haskell.
00:14:05 <evincar> Without just implementing it the way I was going to for Even.
00:14:10 <oklopol> well that's a question for the people who care about haskell
00:14:24 <elliott> <oklopol> this one time i made a language where you didn't use parens at all, the interpreter just used types to choose the correct parsing
00:14:26 <elliott> types
00:14:38 <oklopol> sure
00:14:57 <evincar> So you just chose the parse that was type-correct?
00:15:05 <evincar> What if there were multiple type-correct parses?
00:15:26 <oklopol> i made a proof of concept partial interpreter and at least my quicksort and mergesort parsed correctly
00:15:36 <evincar> Was precedence encoded in the type system somehow?
00:15:37 <oklopol> then again both were like 8 characters
00:15:50 <evincar> Or was there no precedence?
00:16:01 <monqy> ooh what language is this it sounds good
00:16:38 <oklopol> if there were multiple type-correct parses, then the first one found was chosen. i might have added optional parens if i'd worked more on it.
00:16:59 <oklopol> cise. one of my languages that only exist in my dreams
00:17:13 <monqy> :(
00:17:29 <monqy> evincar: so what do you want in haskell
00:18:06 <oklopol> merge sort: '/,)#<
00:18:06 <oklopol> quicksort: /2;A b:C,',JnB
00:18:06 <oklopol> bubblesort a:B,',\#<A,JnA
00:18:11 <oklopol> iirc these parsed
00:19:02 <oklopol> i have absolutely no idea how any of those work
00:19:03 <oklopol> :D
00:19:12 <oklopol> ;I,;mc,[]{"[]"},=}!!b->"+"+mC1"-"-mC1">"+C1"<"-C1{;X}Wh=mC0=}X??b
00:19:16 <oklopol> brainfuck in cise
00:19:23 <elliott> cise is beautiful
00:19:32 <monqy> yes i want to know more
00:19:41 <elliott> he's explained like three things about it in the past i think :P
00:19:44 <oklopol> for brainfuck, i'm sure the parsing would never have been found :D
00:20:20 <oklopol> and there are probably errors, parsing was not the only weird thing about cise
00:21:55 <evincar> monqy: Say I want to pull out all the applications in (Vertex (x + d) (y + d) (z + d)). In Even I could write something like [apply3 [Vertex ? ? ?] [add ? d] x y z].
00:22:22 <elliott> basically evincar is unhappy because composition does not allow him to write any lambda-expression without points
00:22:28 <evincar> Yes.
00:22:32 <elliott> shockin
00:22:33 <elliott> g
00:22:42 <elliott> hint: you can do it, it's called stack-based languages
00:22:49 <oklopol> /2 = divide in two, A b:C = pattern match and only leave the upper cased letters in the register, ' = recurse, JnB = join with B as the separator
00:22:55 <evincar> I like concatenative semantics, thank you very much.
00:23:01 <oklopol> that one is easy enough
00:23:20 <elliott> evincar: that's what a stack gives you...
00:23:32 <oklopol> a base case is not needed
00:23:49 <oklopol> i dunno if that's the shortest quicksort though
00:23:55 <evincar> Pointfree just feels nicer, but in applicative languages it's less readable.
00:23:59 <oklopol> in the world
00:24:26 <oklopol> i didn't want to use a stack and stacks seem to be the way to be short
00:24:37 <evincar> Cise is indeed beautiful.
00:26:09 <oerjan> <elliott> oerjan: Help the GHC on here is 6.12.1 I can't cope. <-- it was nice to know you
00:27:33 <elliott> :'(
00:29:03 <oklopol> some cheating is certainly going on, for instance i think []{"[]"} is how you nest the program w.r.t. [ and ], but on the other hand {"[]"} is a lambda returning "[]" so i'm not completely sure what the semantics are.
00:31:14 -!- yorick has quit (Ping timeout: 276 seconds).
00:31:44 <oklopol> ;mc puts the memory tape and the pointer in the register (, just emptied it so ; is variable introduction and not pattern matching this time)
00:32:07 <oklopol> haha
00:32:15 <oklopol> so the beginning
00:33:06 -!- yorick has joined.
00:34:17 <oklopol> in ;I,;mc,[]{"[]"} first ;I puts the program in i and leaves it in the register, then , empties the register, so ;mc just introduces two variables whose type is unknown, then ,[]{"{}"} nests the contents of the register, but since it's empty (both m and c are lowercase so it's left empty), and we really need some content this time, it takes i as the contents, since i was the last thing left in the
00:34:41 <oklopol> ...register
00:35:06 <oklopol> the rest is a single statement so... yeah i have no idea
00:36:43 <oklopol> +mC1 should parse as take c'th element of m, then add one to the result. since nothing is done with the result, it's done in-place
00:38:59 <oklopol> we call the last statement recursively, and since m and c are not defined in the lambda that's called, we use the variables of the topmost level in all of them
00:40:21 <oklopol> anyway probably the sensible solution to the parsing problem would be the to do what clue does
00:42:28 <evincar> oklopol: And what is it that Clue does?
00:42:51 <monqy> evincar: in your example with Vertexy things, does that even work? I'm doubtful.
00:43:30 <monqy> trying to find your thing about how ? gets resolved
00:44:00 <evincar> [apply3 [Vertex ? ? ?] [add ? d] x y z] = [[Vertex ? ? ?] [add ? d] [add ? d] [add ? d] x y z] = [[Vertex [add ? d] [add ? d] [add ? d]] x y z]
00:44:02 <oklopol> evincar: that's one of the few languages of mine that exist outside my dreams so you can check out the abstruse explanation on the wiki, but anyhow just give an example io-pair for the function
00:44:13 <evincar> = [Vertex [add x d] [add y d] [add z d]]
00:44:29 <evincar> oklopol: "The precise details of the syntax are not known." :(
00:44:38 <oklopol> :D
00:44:41 -!- copumpkin has quit (Ping timeout: 244 seconds).
00:45:02 <evincar> monqy: Basically an application always puts it argument in the leftmost ?.
00:45:02 <oklopol> that's pretty irrelevant
00:45:06 -!- copumpkin has joined.
00:45:14 <oklopol> argh
00:45:28 <oklopol> anyone know the length of the shortest qs in gs?
00:46:48 <evincar> Except I broke that example...
00:47:01 <evincar> ...because the second thing would be wrong.
00:47:03 <evincar> Argh.
00:47:11 <evincar> So it's ambiguous...
00:47:20 <elliott> evincar discovers that variables exist for a reason
00:48:35 <evincar> ...there's not really a clear way to say that [a ? ?] [b ?] [c ?] d e should mean [a [b d] [c e]] and not [a [b [c d]] e]. (
00:48:38 <oklopol> even cise uses variables
00:48:39 <evincar> * :(
00:48:42 <oerjan> i'm pretty sure i argued that it would be hideously ambiguous when it was discussed previously
00:48:43 <oklopol> clue doesn't, though
00:48:53 <monqy> oerjan: didn't we all?
00:49:00 <oerjan> probably
00:49:02 <elliott> yes
00:49:10 <evincar> It's not hideously ambiguous...it just has one particularly hideous ambiguity.
00:49:20 <monqy> i.e. hideously ambiguous
00:49:32 <oerjan> although i vaguely recall i thought it could possibly work with type resolution of some sort
00:49:47 <monqy> the ambiguity is in something afaiu core to the language
00:49:47 <elliott> oerjan: except in the face of polymorphism
00:50:02 <oklopol> both clue and cise are ambiguous, but i think we all agree there's enough empirical evidence that we can safely say that's not relevant in practice.
00:50:02 <oerjan> mhm
00:50:18 <evincar> Hmm. If you can specify that some arguments are applied all at once, rather than sequentially, that solves it.
00:50:25 <oerjan> oklopol: you can probably add perl to that category iirc
00:50:34 <Sgeo|web> What language is this?
00:50:36 <evincar> I seem to recall that functions had to be able to take multiple operands for this to work.
00:50:43 <evincar> And now I remember why. :P
00:50:48 <elliott> oerjan: nah, just TC
00:50:56 -!- tiffany has quit (Quit: Leaving).
00:51:33 <oklopol> cise and clue are way ambiguouser than perl
00:51:57 -!- tiffany has joined.
00:52:03 <oerjan> elliott: i recall reading that perl has part of its parser implemented by majority voting among heuristics
00:52:13 <elliott> wow :D
00:52:15 <oerjan> *+vaguely
00:52:18 <oklopol> :D
00:52:19 <evincar> It's true.
00:52:56 <oklopol> clue doesn't really even *have* a parser though
00:53:10 <oklopol> well okay the things it parses it parses unambiguously
00:53:33 <oklopol> so i suppose technically i lose
00:53:44 <elliott> dude oklopol
00:53:45 <elliott> cise =/= clue
00:53:46 <evincar> Right, you just have ambiguous semantics.
00:54:03 <oklopol> i didn't confuse them
00:54:26 <elliott> clue has a pretty unambiguous syntax afaict
00:54:59 <oklopol> nah, only the script used for debugging is.
00:55:08 <oklopol> the actual program is the empty string
00:55:25 <oklopol> or the function bag
00:55:33 <elliott> lol
00:55:48 -!- ive has joined.
00:56:13 <oklopol> *has
00:58:09 <monqy> evincar: anyway, try actually implementing even and then implementing something nontrivial in it (and running it and making sure it works); maybe that will help get rid of problems???
00:58:50 <oklopol> there should be a language where you write the program interactively by example, like to define quicksort you say you're making a function from lists to lists, then you're given an example list and you apply quicksort on it, repeatedly. then, suddenly, the program says "hey i think i got it!" and starts doing it on its own and you tell it if it makes a mistake. of course, we need someone with
00:58:55 <oklopol> down's to say the line
00:59:13 <evincar> monqy: It probably would, so I probably will.
00:59:23 <oklopol> "hurr durr i think this goes in there"
00:59:41 <evincar> It's more interesting than any other language I've got in mind that I also have the time to work on.
00:59:43 <oklopol> and there's a no you retard button
01:00:24 <oerjan> oklopol: i suggest the name u2b
01:00:31 <oklopol> or, for those who do not hate computers, a "oh that's all right, i'll take it from here if that's okay".
01:00:33 <oklopol> button
01:00:52 <evincar> oklopol: You could remove the "interactively" bit with a genetic algorithm.
01:01:24 <evincar> "Your program succeeds for all of the 1000 inputs I tested, for a confidence level of x percent."
01:01:27 <oklopol> the interactively bit is important, but how
01:01:42 <oklopol> but umm erm umm how do you know what's correct
01:01:43 <evincar> Like, you write test cases and evolve an algorithm from those.
01:02:00 <evincar> You can't know if it's correct for all inputs.
01:02:26 <evincar> But you can have a known confidence level that it will work as expected.
01:02:29 <oklopol> that's been done to death, interaction is the new glue sniffing.
01:02:34 <evincar> And at the end of the day, isn't that how most software works?
01:02:51 <evincar> Except the probability of failure isn't even known for most software.
01:02:55 <oklopol> your computer should be someone you can have a beer with at the end of the day
01:02:57 <evincar> So a genetic algorithm works better. :P
01:03:08 <evincar> Agreed.
01:03:12 <elliott> oerjan: idgi
01:03:22 <monqy> u2b
01:03:24 <oklopol> i assumed he meant youtube but i still didn't get it
01:03:36 <evincar> "Kennedy's Lemma establishes that if we can parse Perl 5, we can solve the Halting Problem. Therefore we cannot parse Perl 5."
01:03:40 <evincar> From http://www.perlmonks.org/?node_id=663393
01:03:47 <oklopol> evincar: how do you evolve a genetic algoritm from test cases?
01:04:11 <oklopol> incidentally, epic yawn at what evincar linked
01:04:24 <oklopol> i almost lost my eyes in the process
01:04:45 <oklopol> oh seems it's rather nontrivial though
01:05:08 <oklopol> oh
01:05:10 <oklopol> no it's not
01:05:14 <evincar> Yeah, no it's not.
01:06:53 <oklopol> "This means that, in order to statically parse Perl, it must be possible to determine from a string of Perl 5 code whether it establishes a nullary prototype for the whatever subroutine." why isn't there Q.E.D. after this sentence?
01:07:13 <oklopol> maybe i don't know perl well enough. very possible since i don't know it at all.
01:07:34 <oerjan> elliott: say it aloud
01:07:41 <elliott> oerjan: you tubee?
01:07:46 <elliott> oklopol: that's statically knowable in e.g. C...
01:08:30 <oklopol> you two be?
01:08:58 <evincar> "You to be", your future self?
01:09:16 <oklopol> elliott: so there are static types in perl, you can't just ?: with something that has no args and something that has one on the right?
01:09:21 <monqy> you too, Be
01:09:45 <oklopol> u-tubie is a little tub shaped like a u
01:09:45 <elliott> oklopol: yeah i don't think you Get It
01:09:59 <oklopol> i thought it was a python :D
01:09:59 <elliott> even if you do
01:10:03 <elliott> if (false) { sub foo() { ... } }
01:10:08 <elliott> that establishes a nullary prototype for foo I think
01:16:55 <oklopol> okay so that's not quite as trivial, it's just static parsing that's impossible, not actually interpreting the program correctly
01:18:53 <evincar> Right.
01:19:00 <evincar> So you can't "parse" Perl.
01:19:06 <evincar> But you can evaluate it.
01:19:08 <evincar> And hope it works.
01:19:28 <elliott> less stupidly-stated: parsing perl is tc
01:20:00 <oklopol> well it could be that you cannot even prove which parsing is correct, and thus not ever execute anything! now that would be something
01:20:12 <oklopol> i wish there was a shorted way to say not ever
01:20:30 <oklopol> i wish there was a way to type shorted so that it's not a typo
01:20:54 <evincar> That's what heuristics are for.
01:21:11 <evincar> I guess Larry assumed that people are in the habit of rephrasing themselves when they're misunderstood.
01:21:18 <evincar> If we're looking at Perl from a linguistic standpoint.
01:21:28 <evincar> Which you should, because it's as hideous as any natural language I've known.
01:22:03 <oklopol> i don't rephrase, i redesign the language over my program
01:30:05 <evincar> The luxury of a language designer. Or a Lisp or Forth user.
01:31:12 -!- GreaseMonkey has joined.
01:31:12 -!- GreaseMonkey has quit (Changing host).
01:31:12 -!- GreaseMonkey has joined.
01:31:50 <oklopol> or a really stubborn crazy person
01:33:59 -!- Jafet has quit (Quit: Leaving.).
01:35:55 <evincar> Someone who submits a patch for every problem he encounters...or just forks the project and merges in all of the changes from the mainline.
01:36:07 <evincar> Just so he can have the language he wants.
01:39:35 <oklopol> i like how people subtly don't know shit in the comments
01:40:18 <oklopol> or make the occasional brainfart, what's the difference really
01:43:22 <Sgeo|web> "Kennedy's Lemma: If you can parse Perl, you can solve the Halting Problem. "
01:43:24 <Sgeo|web> o.O
01:43:49 <oklopol> why do i keep yawning when i hear that
01:45:04 <oerjan> oklopol: maybe you were pavlov's dog in a previous life
01:46:39 <elliott> oklopol: the first one was the best imo
01:46:43 <elliott> is this good or bad ivory tower ivory tower
01:49:14 <oklopol> why do i complain when i yawn and complain when i ain't sleepyhead
01:55:17 <oklopol> oerjan: do you know what a rational prime is?
01:55:45 <oklopol> i couldn't find a definition anywhere, but i did find out that it doesn't seem to mean regular prime
01:56:14 <oerjan> i cannot say i recall
01:56:33 <elliott> oklopol: it means "prime", all primes are rational, hth
01:57:36 <oklopol> from context i think it means a prime number that cannot even be split into the product of polynomials over formal variables. no idea if there are primes that can.
01:58:22 <oklopol> for regular primes i found a definition on wp but it looked scary
01:58:43 <oklopol> and apparently we don't know if there are infinitely many of those
01:59:19 <oklopol> (well of course it's clear that there are, even though i don't know the definition, but anyhow)
01:59:31 <evincar> I wonder if anyone'll ever say "Looks like we ran out of primes" and there'll be this big hype like over the tachyonic neutrinos thing.
02:00:08 <oklopol> well Z doesn't exist so we're fucked anyway
02:15:36 -!- DCliche has joined.
02:35:12 <Sgeo|web> Z?
02:35:26 <oerjan> the set of integers
02:36:02 <elliott> sgeo doesn't know /that/?
02:37:52 <oklopol> you can't know everything simultaneously
02:38:50 <evincar> What if I'm in a box with a cat?
02:38:52 <monqy> does ℤ look more familiar sgeo
02:38:58 <evincar> You don't know that I don't know everything simultaneously.
02:39:03 <evincar> Until you observe me.
02:39:06 <evincar> Dead in a box with a cat.
02:39:13 <oerjan> http://www.irregularwebcomic.net/1960.html
02:39:15 <monqy> dead box / rip
02:39:21 <oklopol> oh i'll observe the pants off ya
02:39:38 <evincar> Creepy~.
02:39:54 <evincar> Is that, like, psychokinesis?
02:39:56 <oklopol> that's one of my many qualities
02:40:00 <evincar> Because, if so, awesome.
02:40:25 <evincar> I'm going to assume that message was in reply to my question about psychokinesis.
02:40:40 <evincar> And therefore that your brain is worthy of dissection.
02:41:22 <oklopol> oh i'll dissect the pants of my brain
02:44:04 <tiffany> I just read 'dissect my penis' =_=
02:44:29 <oklopol> oh i'll dissect the penis out of that equal face
02:46:19 <oklopol> and you know what they say, left foot leads into the right beginning of the end
02:54:06 <elliott> indeed
03:07:57 -!- tiffany has quit (Remote host closed the connection).
03:08:00 <evincar> Okay, so the general insistence here is that I should write Even, for lack of anything better to write.
03:08:08 <evincar> What should I write it in? Haskell?
03:09:39 <oerjan> > var$fix("haskell "++)
03:09:40 <lambdabot> haskell haskell haskell haskell haskell haskell haskell haskell haskell has...
03:11:08 <evincar> > cycle ["haskell"]
03:11:09 <lambdabot> ["haskell","haskell","haskell","haskell","haskell","haskell","haskell","has...
03:11:13 <evincar> Ahem.
03:11:15 <elliott> > repeat "haskell"
03:11:17 <lambdabot> ["haskell","haskell","haskell","haskell","haskell","haskell","haskell","has...
03:11:19 <elliott> take your pick
03:11:36 <evincar> (cycle ["haskell"]) !! 42
03:11:44 <evincar> > (cycle ["haskell"]) !! 42
03:11:45 <lambdabot> "haskell"
03:11:51 <evincar> Welp, guess that settles it.
03:11:54 <oerjan> > var$cycle"haskell "
03:11:55 <lambdabot> haskell haskell haskell haskell haskell haskell haskell haskell haskell has...
03:12:21 <Madoka-Kaname> :t var
03:12:23 <lambdabot> forall a. String -> Sym a
03:12:32 <Madoka-Kaname> > var$"a = b"
03:12:33 <lambdabot> a = b
03:26:12 -!- pikhq_ has joined.
03:26:24 -!- pikhq has quit (Ping timeout: 260 seconds).
03:37:39 -!- CakeProphet has joined.
03:37:39 -!- CakeProphet has quit (Changing host).
03:37:39 -!- CakeProphet has joined.
03:38:50 <Sgeo|web> > map text $ repeat "Haskell"
03:38:51 <lambdabot> [Haskell,Haskell,Haskell,Haskell,Haskell,Haskell,Haskell,Haskell,Haskell,Ha...
03:51:09 <Madoka-Kaname> >map text $ permutations "abc"
03:51:13 <Madoka-Kaname> > map text $ permutations "abc"
03:51:14 <lambdabot> [abc,bac,cba,bca,cab,acb]
03:51:53 <Madoka-Kaname> > map text $ ((replicateM [1..]) <=< (cycle "abc"))
03:51:54 <lambdabot> Couldn't match expected type `GHC.Types.Int'
03:51:54 <lambdabot> against inferred type ...
03:51:59 <Madoka-Kaname> :t replicateM
03:52:00 <lambdabot> forall (m :: * -> *) a. (Monad m) => Int -> m a -> m [a]
03:52:31 <Madoka-Kaname> :t replicate
03:52:32 <lambdabot> forall a. Int -> a -> [a]
03:54:38 <oerjan> > (`replicateM` "abc") =<< [1..]
03:54:39 <lambdabot> ["a","b","c","aa","ab","ac","ba","bb","bc","ca","cb","cc","aaa","aab","aac"...
04:13:22 -!- MDude has changed nick to MSleep.
04:31:39 -!- pikhq has joined.
04:31:56 -!- pikhq_ has quit (Ping timeout: 260 seconds).
04:37:22 -!- oerjan has quit (Quit: Good night).
04:45:23 -!- Jafet has joined.
04:58:37 -!- clog has quit (Ping timeout: 240 seconds).
05:27:26 -!- derrik has joined.
05:28:51 -!- copumpkin has quit (Ping timeout: 244 seconds).
05:28:54 -!- Zuu has quit (Ping timeout: 260 seconds).
05:29:15 -!- copumpkin has joined.
05:47:02 -!- Patashu has quit (Ping timeout: 245 seconds).
05:48:35 -!- evincar has quit (Quit: ChatZilla 0.9.87 [Firefox 7.0.1/20110928134238]).
05:52:24 -!- DCliche has quit (Quit: You are now graced with my absence.).
06:11:45 -!- pikhq has quit (Ping timeout: 255 seconds).
06:11:48 -!- pikhq_ has joined.
06:19:49 -!- CakeProphet has quit (Ping timeout: 240 seconds).
06:34:37 -!- elliott has quit (Ping timeout: 258 seconds).
06:39:03 -!- CakeProphet has joined.
06:39:03 -!- CakeProphet has quit (Changing host).
06:39:03 -!- CakeProphet has joined.
06:48:58 <CakeProphet> sjsiejisjdfijwgioj
06:50:32 <fizzie> defgiiiijjjjjosssw. (Sorted that for you.)
06:51:02 <Madoka-Kaname> :t sort
06:51:03 <lambdabot> forall a. (Ord a) => [a] -> [a]
06:51:20 <Madoka-Kaname> > sort "sjsiejisjdfijwgioj"
06:51:21 <lambdabot> "defgiiiijjjjjosssw"
06:51:30 <fizzie> See, I did it right.
06:51:52 <fizzie> An abfoor is a sorted foobar.
06:52:08 <Madoka-Kaname> > sort "fizzie"
06:52:09 <lambdabot> "efiizz"
06:52:10 <Madoka-Kaname> Bad!
06:52:19 <Madoka-Kaname> Don't make me reverse sort you
06:52:35 <fizzie> > sort Madoka-Kaname
06:52:36 <lambdabot> Not in scope: data constructor `Madoka'Not in scope: data constructor `Kana...
06:52:41 <fizzie> > sort "Madoka-Kaname"
06:52:41 <lambdabot> "-KMaaaadekmno"
06:52:43 <fizzie> (I can't quite.)
06:52:57 <fizzie> Kmaaaaadekmno. It's like some sort of a bird sound.
06:53:10 <fizzie> s/quite/quote/
06:53:19 <fizzie> I can't quite quote.
06:53:36 <Madoka-Kaname> > sort "I can't quite quote."
06:53:37 <lambdabot> " '.Iaceeinoqqtttuu"
06:53:38 * Madoka-Kaname silly idea
06:53:49 <Madoka-Kaname> I should write a bot that enters a random channel and sorts every line that comes through.
06:54:02 <fizzie> ^scramble fizzie
06:54:02 <fungot> fziezi
06:54:22 <fizzie> I'm all jumbled up.
06:54:32 <Madoka-Kaname> > sort "fziezi"
06:54:34 <lambdabot> "efiizz"
06:54:35 <Madoka-Kaname> fify
06:55:31 <Madoka-Kaname> ^scramble それは日本語で書かれた文
06:55:31 <fizzie> ^unscramble fziezi
06:55:31 <fungot> fizzie
06:55:31 <fungot> 㝂㯗欪㧛㋂㟖恌へ恞蜥恌
06:55:37 -!- clog has joined.
06:55:39 <fizzie> It's... not very UTF8-aware.
06:55:46 <Madoka-Kaname> ^unscramble 㝂㯗欪㧛㋂㟖‡æŒã¸æžèœ¥æŒã
06:55:47 <fungot> Á£⒀Ś£ï€è¾æ¸⁀ºãŀ⦀ÚÀœ
06:55:51 <Madoka-Kaname> You fail
06:55:51 <Madoka-Kaname> :<
06:56:07 <fizzie> I don't think you passed in the same bytes it outputteded.
06:56:22 <Madoka-Kaname> ^scramble バカ!
06:56:22 <fungot> 㐂
06:56:32 <Madoka-Kaname> ^unscramble 㐂«ãƒ
06:56:32 <fungot> Ò£⫀š¯
06:56:35 <Madoka-Kaname> ^scramble あ
06:56:36 <fungot>
06:56:41 <Madoka-Kaname> ^unscramble め
06:56:41 <fungot>
06:56:47 <Madoka-Kaname> ^scramble ああああああああああああああああああああああ
06:56:47 <fungot> めめめめめめめめめめめああああああああああ
06:56:53 <Madoka-Kaname> ^unscramble めめめめめめめめめめめ‚ああああああああああã
06:56:54 <fungot> Á⣀ڀÁ⣀ڀÁ⣀ڀÁ⣀ڀÁ⣀ڀÁ⣀ڀÁ⣀ڀÁ⣀ڀÁ⣀ڀÁ⣀ڀÁ⣀ڀ
06:56:55 <Madoka-Kaname> Nope.
06:56:56 <Madoka-Kaname> I didn't.
06:57:16 <fizzie> I'm guessing your client will latin1-fallback the bot's output, and then when you paste it back you're UTF-8ing them.
06:57:29 <Madoka-Kaname> Makes sense
06:57:43 <fizzie> ^show
06:57:43 <fungot> echo reverb rev rot13 rev2 fib wc ul cho choo pow2 source help hw srmlebac uenlsbcmra scramble unscramble asc ord prefixes tmp test celebrate wiki chr
06:57:48 <fizzie> ^srmlebac fizzie
06:57:48 <fungot> fziezi
06:57:55 <fizzie> ^uenlsbcmra fziezi
06:57:55 <fungot> fizzie
06:57:57 <Madoka-Kaname> ^scramble fizzie
06:57:57 <fungot> fziezi
06:58:08 <Madoka-Kaname> ^unscramble srmlebac
06:58:08 <fungot> scramble
06:58:10 <Madoka-Kaname> ^show scramble
06:58:11 <fungot> >>,[>,]<[<]>[.>>]<[>>]<2[.<2]
06:58:15 <Madoka-Kaname> ^show unscramble
06:58:16 <fungot> >,[>,]<[<]>[.[-]>[>]<[.[-]<[<]]>]
06:58:24 <Madoka-Kaname> ^show echo
06:58:24 <fungot> >,[.>,]<[<]+32[.>]
06:58:27 <fizzie> I didn't think it was exactly the same.
06:58:31 <fizzie> ^scramble 1234567
06:58:31 <fungot> 1357642
06:58:36 <fizzie> ^srmlebac 1234567
06:58:36 <fungot> 1357642
06:58:41 <Madoka-Kaname> ^show scramble
06:58:42 <fungot> >>,[>,]<[<]>[.>>]<[>>]<2[.<2]
06:58:43 <fizzie> But it does seem to be. Hmm.
06:58:45 <Madoka-Kaname> ^show srmlebac
06:58:45 <fungot> >>,[>,]<[<]>[.>>]<[>>]<2[.<2]
06:58:53 <fizzie> Well, those certainly look identical.
06:58:58 <Madoka-Kaname> 違うわけがない
06:58:59 <fizzie> They were added quite a while ago.
06:59:31 <Madoka-Kaname> ^show source
06:59:31 <fungot> (http://git.zem.fi/fungot/blob/HEAD:/fungot.b98)S
06:59:36 <Madoka-Kaname> ^help
06:59:37 <fungot> ^<lang> <code>; ^def <command> <lang> <code>; ^show [command]; lang=bf/ul, code=text/str:N; ^str 0-9 get/set/add [text]; ^style [style]; ^bool
06:59:56 <derrik> awesome
07:00:38 <fizzie> Help is also just a (...)S thing.
07:00:47 <Madoka-Kaname> Let's write a programming language that compiles to befunge
07:00:51 <Madoka-Kaname> ^show def
07:00:59 <Madoka-Kaname> ^def def ul (Nope)S
07:01:00 <fungot> Defined.
07:01:02 <Madoka-Kaname> ^def def ul (Nope)S
07:01:03 <fungot> Defined.
07:01:05 <Madoka-Kaname> =p
07:01:12 <fizzie> Sadly it can't show internal commands, and they take precededence.
07:01:24 -!- derrik has quit (Quit: gone).
07:01:28 <fizzie> I've compiled something to (ugly) befunge, but I've completely forgotten what it was.
07:01:35 <fizzie> I think it was some other esolang.
07:01:44 <fizzie> Brainfuck is reasonably easy to.
07:02:40 <Madoka-Kaname> A simple C-like language?
07:03:18 <Madoka-Kaname> # Trampoline: Skip next cell < stream crossing?
07:03:20 <fizzie> It would be nice to have something that compiles into "compact" blocks of befunge, instead of some horribly structured layout.
07:03:52 <fizzie> Yes, you can do ... #ab#cd#ef#gh# ... to execute bdfh when going right, geca when going left.
07:04:23 <fizzie> The classic print loop of ... >:#,_ ... sorta-uses that.
07:05:02 <Madoka-Kaname> How do you do conditionals?
07:05:04 <Madoka-Kaname> Self-modifying code?
07:05:18 <Madoka-Kaname> fizzie, I think that'd be the same kind of problem as writing a (good) some-language -> redstone compiler
07:05:27 -!- Jafet has quit (Quit: Leaving.).
07:05:37 <Madoka-Kaname> Except with one less dimension to work with..
07:05:40 <fizzie> | and _ ; they branch up/down and left/right depending on whether the number popped from stack is non-zero or zero.
07:06:02 <fizzie> Well, and 'w' which turns left, goes straight, or turns right depending on <0, =0, >0, in Funge-98.
07:06:17 <Madoka-Kaname> fizzie, so.
07:06:37 <Madoka-Kaname> First, generate a tree or graph of some sort, diagramming what branches, etc, to output, and then you can just generate that, right?
07:06:57 <fizzie> Well, and m which branches high/low in trefunge.
07:07:42 <Madoka-Kaname> fizzie, I'm thinking you can compile the thing to something like this:
07:07:46 <Madoka-Kaname> [CodeSnippet]
07:08:09 <Madoka-Kaname> CodeSnippet [Instruction] BranchType [Int]
07:08:23 <Madoka-Kaname> Then generate that in some way.
07:08:31 <fizzie> A control flow graph is probably something you'd have, yes; but then it's non-trivial how to best pack all the blocks, esp. if you want to reuse instructions going different way.
07:08:38 <Madoka-Kaname> Right.
07:08:41 <Madoka-Kaname> Which is the big problem.
07:08:44 <fizzie> Not that human befunge programmers are that good in instruction reuse either, I suppose.
07:08:49 <fizzie> At least I'm not.
07:09:02 <fizzie> It makes for nicely tricky-to-modify code.
07:09:27 <Madoka-Kaname> Basically, snippets of instructions that don't branch, followed with a single branch instruction. That shouldn't be too hard to generate, right?
07:09:39 <Madoka-Kaname> Then you can merge branches that don't go all over the place into single clusters.
07:09:48 <Madoka-Kaname> Then place those however.
07:09:49 <fizzie> That's exactly what a control flow graph is.
07:09:53 <Madoka-Kaname> Ah.
07:09:57 <fizzie> "In a control flow graph each node in the graph represents a basic block, i.e. a straight-line piece of code without any jumps or jump targets; jump targets start a block, and jumps end a block."
07:10:04 <Madoka-Kaname> I see.
07:10:53 <fizzie> I have a program that generates a control flow graph for a befunge program with (imperfect) static analysis; doesn't really work for self-modifying code, though.
07:11:01 <fizzie> I have fungot graphed somewhere, let's see.
07:11:01 <fungot> fizzie: ' it's very hard,' she said to herself, " i think you might do something better with the time, the time goes with it.'
07:11:21 <fizzie> http://users.ics.tkk.fi/htkallas/fungotsmall.png
07:11:21 <fungot> fizzie: taking " boys" as universe; x="fat"; and fnord interpret the lower half of the cupboard, where all the cakes in the world: once in the week. and that's the way to outland?"
07:11:48 <Madoka-Kaname> fizzie, o.o
07:12:27 <fizzie> I also have a very dusty printout of that right here on my desk; was thinking of maybe taping it on the wall, but never did. It's not exactly readable at A4 size anyway, and I can't quite make myself pay the printing costs for a poster-sized version.
07:13:11 -!- Jafet has joined.
07:13:11 <fizzie> What's in the bubbles is just sequences of befunge instructions (with <>^v-style things stripped out) and the edge labels denote what sort of jump it is.
07:13:28 <Madoka-Kaname> fizzie, is there ever reason to use p or g?
07:13:41 <fizzie> (You can drop the word "small" for a readable 7485x15016-sized copy.)
07:14:20 <Madoka-Kaname> I suppose you could maintain a call stack with frames with that.
07:14:20 <fizzie> Er, well, for storage. There's only so much you can do with a stack. (Though I guess with the stack-stack you can probably do anything; still, it's awkward to use.)
07:14:52 <Madoka-Kaname> Top row = entry
07:15:04 <Madoka-Kaname> Second row = stack information (current y, etc)
07:15:20 <Madoka-Kaname> Rest = actual stack
07:15:40 <Madoka-Kaname> You should be able to cacluate the maximum stack frame size for every function, so, put the program after that many instructions.
07:16:07 <fizzie> It's not very befungey befunge you get if you do it like that.
07:16:20 <fizzie> Esp. arbitrary jumps are quite "bad".
07:16:41 <fizzie> Many people (okay, just me) even frown on using ;.
07:17:47 <Madoka-Kaname> What does ; do?
07:17:58 <fizzie> It jumps to the next ; it encounters.
07:18:27 <fizzie> So you don't have to worry about writing yourself into a corner so much, since you can just jump across code.
07:19:02 <fizzie> The UFO-looking device in that bot-graph (near the bottom) is the babbling punctuation jump-table.
07:19:45 <fizzie> To right of it seems to be part of the brainfuck bytecode compiler.
07:20:09 <fizzie> And the brainfuck interpreter itself is right below that.
07:20:37 <fizzie> The $2aaaaa*****81p88+:*91paaa**:a1p is a dead giveaway.
07:22:29 <fizzie> Oh, and there's the two random-number generation blocks (one fixed for the [0, 15] range and a loopy one for a reasonably large random numbers). I like the graph.
07:22:32 <Madoka-Kaname> Does fungot use p/g?
07:22:33 <fungot> Madoka-Kaname: an enormous dead fnord was lying on the bank.
07:22:38 <fizzie> Yes, much.
07:22:48 <Madoka-Kaname> fizzie, so.
07:22:58 <fizzie> It sort of has to, since most fingerprints write data in the fungespace.
07:23:08 <fizzie> Things like the IRC message splitting would be pretty hairy with just a stack.
07:23:29 <Madoka-Kaname> With Funge-98's A-Z thing, the stack mainpulation functions, etc, should be simple to implement, right?
07:24:11 <fizzie> Er, well. If you make a custom fingerprint for compilation, it doesn't really count as "compiling to befunge" any more, I don't think.
07:24:20 <Madoka-Kaname> Eh?
07:24:26 <Madoka-Kaname> You can't define fingerprints in the program?
07:24:30 <fizzie> No.
07:24:47 <Madoka-Kaname> Ah.
07:25:12 <fizzie> They're just "standard libraries" you can load. Though I think there are a couple of extensions that let you define some with Befunge code.
07:25:42 <fizzie> RC/Funge-98 and some others have that "mini-funge" thing.
07:26:24 <Madoka-Kaname> So, Funge doesn't have arbitrary jumps?
07:26:45 <fizzie> 'x' is pretty much an arbitrary jump, as long as you have a > or something at the destination to reset the delta.
07:26:55 <fizzie> And you need to give relative coordinates instead of absolute, but that's a minor matter.
07:27:38 <fizzie> The SUBR fingerprint gives you absolute jumps and an internal call-stack for 'return'.
07:28:08 <Madoka-Kaname> Meh
07:28:13 <fizzie> Fungot's (owner-only) "^code" command uses SUBR to execute what was passed to it, but I don't use SUBR elsewhere. It, too, feels slightly cheaty.
07:28:16 <Madoka-Kaname> 'x' makes compiling messy.
07:28:54 <Madoka-Kaname> I think I'll manually maintain a stack, and then put the entire program in a huge switch statement.
07:29:14 <Madoka-Kaname> Where each value is an entry point of some sort into the program.
07:29:20 <fizzie> I don't see how it's any messier than, you know, regular assembly jumps that also are relative.
07:30:17 <Madoka-Kaname> I guess
07:30:33 <fizzie> Deewiant has some sort of a constant-maker, incidentally.
07:30:48 <fizzie> You give it a number, and it tries to figure out a short way to represent that in Befunge code.
07:30:57 <fizzie> Whoops, lunchtime. ->
07:31:15 <Madoka-Kaname> fizzie, and that's one of the problems.
07:31:22 <Madoka-Kaname> Constants arn't, well, constant space.
07:34:52 -!- Ngevd has joined.
07:36:01 <Ngevd> Hello!
07:38:30 <Madoka-Kaname> Compiling like that'd be kinda messy
07:38:48 <Madoka-Kaname> And you can only resolve that in the routing step too.
07:39:14 <Madoka-Kaname> Most instructions that compile to multiple funge instructions can be unwound before routing. That can't.
07:39:33 <Madoka-Kaname> Not unless you reserve max(programSize) space for each constant at any rate
07:39:55 <Madoka-Kaname> maxConstantSize*
07:40:51 <CakeProphet> Madoka-Kaname: what's the topic?
07:41:19 <Madoka-Kaname> Compiling to Funge
07:41:32 <CakeProphet> maybe you could create chunks of linear instructions
07:41:43 <CakeProphet> and then determine the 2D layout in a separate compilation step?
07:41:45 <Madoka-Kaname> That's already the plan.
07:41:48 <Madoka-Kaname> =p
07:41:48 <CakeProphet> for example, to determine the -- okay
07:41:57 <Madoka-Kaname> I was thinking about how to do function calls.
07:42:11 <Madoka-Kaname> Using 'x' involves generating constants which are only known during routing.
07:42:30 <Madoka-Kaname> Making that a multi-byte instruction that has to be resolved during the route pass.
07:42:35 <CakeProphet> maybe you could create a tree/graph that relates to callers to callees?
07:42:59 <CakeProphet> so that you can determine the program layout based on the tree.
07:43:09 <Deewiant> You can fetch the current position at runtime and the target should be static, no?
07:45:35 <CakeProphet> a believe a function would just duplicate its parameter values on the stack, and be spatially nearby its caller so that it can be executed sequentially and then return back to the calling code segment.
07:45:56 <CakeProphet> ...that's an idea, anyway.
07:46:07 <CakeProphet> managing the stack may be difficult.
07:46:44 <CakeProphet> or instead of using the stake you can get use put/get
07:46:46 <CakeProphet> *stack
07:46:51 <CakeProphet> weorjwoeirjoewjsoifj
07:46:54 <CakeProphet> s/get//
07:47:24 <Madoka-Kaname> CakeProphet, yeah.
07:47:47 <Madoka-Kaname> The plan I have right now is to maintain a stack.
07:47:56 <CakeProphet> put/get may be easier to maintain.
07:48:14 <CakeProphet> but I have no clue how to place chunks of code close to each other spatially so that function calls work.
07:48:35 <CakeProphet> if a function calls more than four functions you'll have to do some nasty routing stuff instead of simply using the 4 directions.
07:50:13 <Madoka-Kaname> CakeProphet, giant switch statement
07:50:13 <CakeProphet> another important thing to note, if blocks of code are literally rectangles of code in befunge
07:50:23 <CakeProphet> function calls need to happen on the outside of those rectangles
07:50:28 <CakeProphet> or shapes
07:50:30 <CakeProphet> or whatever.
07:58:28 -!- Jafet has quit (Quit: Leaving.).
07:59:33 <CakeProphet> Madoka-Kaname: I think get/put would greatly simplify static memory demands.
07:59:45 <CakeProphet> maybe even dynamic? stack might be better for that.
08:00:07 -!- monqy has quit (Quit: hello).
08:00:30 <Madoka-Kaname> CakeProphet, reentrancy.
08:02:12 <CakeProphet> so one of my friends who somewhat recently broke up with his fiance, wrote on Facebook: "Is returning the ring........that's all I have to say about that."
08:02:22 <CakeProphet> to which another person replied: "One does not simply walk into Mordor."
08:03:04 <Madoka-Kaname> CakeProphet, actually.
08:03:18 <Madoka-Kaname> If I had a C-like language, i can optimize it by making it not use the stack fully, and only a return address.
08:03:38 <fizzie> Madoka-Kaname: They're constant-space if you just set an upper bound and leave empty space here and there.
08:03:38 <Madoka-Kaname> Which can be on the funge stack instead of a manual stack
08:04:01 <Madoka-Kaname> fizzie, right, but it's still an additional pass on the generated Funge code.
08:04:40 <CakeProphet> efficiency: top priority for Befunge code.
08:05:20 <CakeProphet> fungot: isn't that right?
08:05:21 <fungot> CakeProphet: " then it wasn't solid, like sylvie and you?" i asked eagerly, with a little basket, which he threw open, and sylvie more grave and quiet, but with a very different look from what uggug ever got from him.
08:06:23 <CakeProphet> fizzie: are there any digital form of Finnegans Wake?
08:06:27 <CakeProphet> +s
08:06:43 <CakeProphet> I think it would be a good fungot source.
08:06:44 <fungot> CakeProphet: 2. some y are m," and " hoarse," you will say " fnord" marked on them, and yet bear parting?
08:07:51 <CakeProphet> also the blah story.
08:08:05 <CakeProphet> replace every occurence of "blah" with "fnord"
08:11:50 -!- Phantom_Hoover has joined.
08:15:37 <fizzie> Madoka-Kaname: If you don't want to use absolute jumps, the massive switch is always an option; fungot has one example of a subroutine (the code compilation used both by ^bf/^ul and ^def) where it pushes 0/1/2 on stack below the arguments, and then the return path has :2-| ... :1-| style diverters to go back where it started from. Still, fixed-size constants aren't that bad.
08:15:37 <fungot> fizzie: then, silence. some fancied they heard in the air. " i could show it you in a minute or two, fnord.
08:15:49 <Madoka-Kaname> fizzie, yeah.
08:16:15 <Madoka-Kaname> And that can be built as a pass on an ADT of some sort instead of a pass on free-form code
08:32:59 <Ngevd> Today's Freefall is pretty funny
08:34:10 -!- Jafet has joined.
08:39:39 <Madoka-Kaname> fizzie, I was thinking about that.
08:41:59 -!- Ngevd has quit (Ping timeout: 252 seconds).
09:13:12 -!- sebbu has quit (Ping timeout: 240 seconds).
09:32:55 -!- Ngevd has joined.
09:39:13 -!- Jafet has quit (Quit: Leaving.).
10:00:35 -!- sebbu has joined.
10:00:35 -!- sebbu has quit (Changing host).
10:00:35 -!- sebbu has joined.
10:08:13 -!- pikhq_ has quit (Remote host closed the connection).
10:13:29 -!- pikhq has joined.
10:25:15 -!- copumpkin has quit (Ping timeout: 260 seconds).
10:26:22 -!- copumpkin has joined.
10:35:16 -!- GreaseMonkey has quit (Quit: The Other Game).
10:48:32 -!- ais523 has joined.
10:59:31 -!- ais523 has quit (Read error: Connection reset by peer).
11:00:44 -!- ais523 has joined.
11:17:36 -!- Ngevd has quit (Ping timeout: 244 seconds).
11:20:24 -!- ive has quit (Ping timeout: 258 seconds).
11:28:17 -!- Jafet has joined.
11:56:01 -!- ais523 has quit (Read error: Connection reset by peer).
12:49:42 -!- ais523 has joined.
12:54:43 -!- hagb4rd2 has joined.
12:56:55 -!- Ngevd has joined.
12:57:13 -!- hagb4rd has quit (Ping timeout: 240 seconds).
13:15:38 -!- sllide has joined.
14:06:29 <ais523> can anyone here explain GADTs to me? if so, are they willing to?
14:06:46 <Ngevd> GADTs?
14:10:29 * ais523 assumes that Ngevd can't
14:10:40 <ais523> something starting with G Abstract Data Types
14:10:43 <ais523> probably generic or generalized
14:24:09 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
14:50:11 -!- copumpkin has joined.
15:04:03 <coppro> generalized, I believe
15:07:27 <CakeProphet> ais523: basically GADTs allow you to specify a so-called phantom type parameter. Each constructor can return a value with a different phantom type as a parameter.
15:07:39 <CakeProphet> Thus, the type system can now differentiate between different constructors of the same type.
15:08:04 <CakeProphet> a simple example is lists. You can have List Empty a and List NonEmpty a
15:08:06 <ais523> CakeProphet: hmm, I'm not sure I understand; could you give an example?
15:08:28 <CakeProphet> now head and tail are typesafe. head :: List NonEmpty a -> a
15:08:38 <CakeProphet> tail :: List NonEmpty a -> List x a
15:08:44 <ais523> so how does it track whether lists are nonempty or not?
15:09:01 <CakeProphet> GADTs allow you to specify the return type of each constructor
15:10:51 <ais523> ht
15:10:54 <ais523> *ah right
15:11:04 <CakeProphet> data Empty; Data NonEmpty; Data List x a where { Cons :: a -> List y a -> List NonEmpty a; Null :: List Empty a }
15:11:18 <ais523> I was talking to someone about Anarchy and they thought it was like GADTs, but it isn't really
15:11:28 <ais523> meanwhile, I've been working on this (I submitted it): http://golf.shinh.org/p.rb?sort+by+first+occurrence
15:11:29 <CakeProphet> no clue on that one. :P
15:11:46 <ais523> I'm doing nowhere near the leaders
15:12:27 <ais523> and there are several obvious algorithms; I don't know which is best
15:13:40 <CakeProphet> I think the most common example for GADTs is writing AST data types for interpreters.
15:13:45 <CakeProphet> that's what I commonly see it associated with
15:13:51 <CakeProphet> but it can be used for other things.
15:13:55 <ais523> yep, that's what Anarchy's intended to do to
15:14:07 <ais523> but it works by inferring a huge number of different ADTs
15:14:18 <ais523> I suppose it isn't all that dissimilar after all, but the inference thing is different
15:14:52 <oklopol> ais523: do you know how short quicksort is in golfscript
15:15:22 <ais523> oklopol: no, but I suspect it's pretty short, as it has most of the components of quicksort as primitives
15:16:06 <oklopol> it's 14 characters in cise, was just wondering if gs gives a significant improvement to that
15:16:12 <oklopol> i don't actually know gs
15:17:53 <ais523> it actually has a sort primitive
15:17:59 <oklopol> who doesn't
15:18:05 <oklopol> is it always quicksort?
15:18:30 <ais523> but I'll try to write a quicksort without it
15:18:32 <oklopol> mergesort is 6 characters in cise, so i assume that's not much shorter in gs
15:19:02 <ais523> hmm, actually GolfScript has no concise method to do recursion
15:19:12 <ais523> which means that a quicksort, specifically, is kind-of awkward
15:19:15 <oklopol> ...
15:19:23 <oklopol> how about bubblesort?
15:19:30 <oklopol> also 14 in cise
15:20:21 <oklopol> it seems primality checking is also 6 characters, but it uses a non-ascii character
15:20:52 <oklopol> (i thought that particular character was ascii back then because umlaut is on all finnish keyboards, surprisingly enough)
15:23:46 <oklopol> cise has a recursion primitive which recursively calls the current statement or the whole program depending on which one makes more sense
15:24:47 <ais523> I think bubble sort is quite short in GolfScript, but am not good enough at it to write it concisely
15:25:14 -!- CakeProphet has quit (Quit: Lost terminal).
15:27:18 <oklopol> darn
15:27:42 <oklopol> http://rosettacode.org/wiki/Reports:Tasks_not_implemented_in_Golfscript :/
15:32:43 <ais523> boring, it only has two INTERCAL examples
15:32:45 <oklopol> xD J sucks ass: quicksort =: (($:@(<#[) , (=#[) , $:@(>#[)) ({~ ?@#)) ^: (1<#)
15:33:04 <oklopol> seriously, who has the time to write 43 characters
15:33:38 <oklopol> i should really make this language
15:36:34 <Jafet> Try golfscript
15:36:41 <Jafet> Oh, beaten to it
15:37:01 <oklopol> yeah it seems no one has bothered to write it
15:37:24 <Jafet> Just make a codegolf thread for it and it will be written
15:37:29 <oklopol> and apparently even ais doesn't know how to golf in gs
15:37:38 <oklopol> ais523: wanna make a thread for it?
15:37:41 <ais523> I'm not very good at gs
15:37:54 <ais523> or basically, golfscript works like mathematica, by having a good standard library for typical golfing tasks
15:38:05 <ais523> so it's very good at sorting, but bad at implementing any given sort algorithm, for instance
15:39:24 <oklopol> :(
15:39:33 <oklopol> why would anyone want to write actual programs
15:39:41 <oklopol> when you can implement algorithms
15:40:21 <ais523> heh
15:41:28 -!- MSleep has changed nick to MDude.
15:47:42 <oklopol> factorial is 10 characters
15:48:21 <oklopol> that's just \* in cise. i think.
15:49:47 <ais523> a golfscript factorial shouldn't be that long, surely?
15:50:02 <oklopol> n to [1, ..., n] and to [0, ..., n] are list conversions, the first one is chosen since the second one gives a trivial result
15:50:12 <oklopol> are integer to list conversions
15:50:40 <oklopol> wait i guess the second one is to n-1 but anyhow
15:51:37 <ais523> here's a GolfScript factorial program, that factorials every line of input (treating it as a number): http://golf.shinh.org/reveal.rb?Factorial/narb_1298033052&gs
15:51:43 <ais523> or ~]{,1\{)*}/n}%
15:51:56 <ais523> the bit that actually does the factorialling is ,1\{)*}/ I think
15:52:24 <ais523> but it had to construct the 1..n list by hand
15:53:18 <oklopol> if you want to construct the list by hand in cise, you have to press the umlaut key. but that's not ascii, dunno what i should change it to.
15:54:18 <oklopol> that's crazy, it almost seems like you have to tell the program how you want it to manipulate the data and not just give it the relevant commands in a random sequence
15:54:31 <ais523> indeed
15:54:36 -!- augur has quit (Remote host closed the connection).
15:55:01 -!- augur has joined.
15:56:01 <oklopol> one interpretation of *\ is that you go from 7 to [1*2, 3*4, 5*6, 7]
15:56:02 <ais523> underlambda's going to have a command to construct a list 1..n, although it isn't documented anywhere so I've forgotten what the command actually is
15:56:27 <ais523> cise could be made more concise by making the order relevant, I guess
15:56:41 <oklopol> well it is relevant
15:57:56 <oklopol> i decided today that in addition to heuristics (consisting mostly of example runs), a hash value is computed for your program which can be used to choose between ambiguous cases
15:57:57 <ais523> let's see... an Underlambda factorial would be along the lines of U'*t
15:58:03 <ais523> not sure about the capitalization there
15:58:05 <Ngevd> Just got a new headset
15:58:17 <ais523> construct a list from 1..n, then fold it with multiplication
15:58:27 <oklopol> unnecessary whitespace changed parsing dramatically
15:58:40 <oklopol> *changes
15:59:32 <ais523> oklopol: haha, that's a truly brilliant way of disambiguating
15:59:53 <ais523> it hashes the program, then determines between the possible programs with that meaning in an order depending on the hash, so you can use whitespace or minor changes to change its preference order?
16:00:16 -!- augur has quit (Ping timeout: 252 seconds).
16:00:29 -!- Darth_Cliche has joined.
16:00:55 <oklopol> actually i was thinking a more direct approach where the basic heuristics are used for programs without whitespace (of course, ways of affecting parsing probably arise automatically), and the hash is computed from the placing of unnecessary whitespace
16:01:22 <oklopol> of course, whitespace is also a command, it's just one that doubles as nop when used in certain contexts
16:02:02 <ais523> yep, the way whitespace works in underlambda is that it's a NOP by default, but can be redefined in the preprocessor if you're really mad
16:02:17 <ais523> (underlambda isn't really designed as a golfing language, but can nonetheless be quite short)
16:02:29 <oklopol> you can do nesting by hand by using lambdas, but { and }, the lambda commands, also dual as other stuff, so you can't just put a lambda where you wanna nest.....
16:02:37 -!- monqy has joined.
16:02:37 <oklopol> hah
16:03:04 <oklopol> i didn't recall you have a preprocessor planned
16:03:22 <ais523> oklopol: it's not part of the language, technically
16:03:25 -!- ive has joined.
16:03:26 <oklopol> okay
16:03:38 <ais523> but the idea is that the preprocessor is enough to compile the full language into a small subset
16:04:44 <oklopol> also something i'm planning: you can give the parse tree you want, and the interpreter checks if the program would have parsed into that
16:04:53 <ais523> now I'm thinking about how to write a numeric sort in Underlambda
16:05:00 <oklopol> might make it easier to implement
16:05:38 <oklopol> cise is not a language you actually write a program in and use, it's a language where you write a very short algorithm implementation and prove it technically parses into the correct thing
16:06:47 <oklopol> numeric sort
16:06:49 <oklopol> ?
16:06:51 <oklopol> i'll ggl
16:06:54 <ais523> sorting an array of numbers
16:06:58 <ais523> not a sort algorithm in itself
16:06:58 <oklopol> o
16:07:00 <ais523> oko
16:07:05 <oklopol> okoko
16:07:07 <ais523> okokoko
16:07:09 <oklopol> okokokoko
16:07:13 <ais523> okokokokoko
16:07:16 <oklopol> okokokokokoko
16:07:20 <ais523> okokokokokokoko
16:07:23 <oklopol> okokokokokokokoko
16:07:27 <ais523> okokokokokokokokok
16:07:30 <ais523> bleh
16:07:36 <oklopol> indeed
16:08:03 <ais523> let's see... a version based on indexing lists would be really messy
16:08:20 <ais523> and a structurally recursive one would be a little long
16:08:25 <ais523> so that leaves selection sort, I guess
16:08:48 <ais523> I'm just trying to work out a good way to write the max function
16:09:21 <oklopol> btw query if you don't automatically see that
16:10:05 <ais523> yep, I saw it
16:14:54 <ais523> bleh, the problem's not just finding the largest element in a list, but getting rid of all the others
16:15:14 <ais523> *getting rid of it and leaving the others
16:15:46 <ais523> perhaps quicksort is actually simpler
16:22:03 -!- augur has joined.
16:36:40 -!- Ngevd has quit (Ping timeout: 258 seconds).
16:38:32 -!- ais523 has quit (Read error: Connection reset by peer).
16:40:12 -!- elliott has joined.
16:41:07 -!- ais523 has joined.
16:41:28 * elliott actually clicks the link in the topic
16:41:33 <elliott> ooh, underload
16:44:16 -!- Ngevd has joined.
16:45:30 <elliott> thankfully the first task is easy enough for even me
16:45:35 <Ngevd> Hello!
16:46:44 <elliott> atehwa: I'm not sure the third Underload question is as hard as it's meant to be...
16:46:54 <elliott> at least, it's easier than the second :)
16:46:56 <Ngevd> I did it in about thirty seconds
16:47:20 <elliott> I did it in about three :p
16:47:23 <ais523> elliott: you need to understand CS quite well to do that
16:47:29 <ais523> I knew the answer before the question was posted, does that count?
16:47:35 <Ngevd> I had never used Underload before
16:47:38 <elliott> ais523: what, to make a pair in underload?
16:47:40 <ais523> yep
16:47:48 <Ngevd> And was tired
16:47:53 <ais523> well, many students treat things like pairs as magic somehow
16:47:58 <ais523> rather than things you can implement by hand
16:48:35 -!- ais523 has quit (Read error: Connection reset by peer).
16:48:36 <olsner> if xchat made links out of links in topics, I'd click the link
16:48:43 <elliott> olsner: it does
16:48:44 <elliott> type /topic
16:48:51 * elliott would be surprised if anyone could answer the first two questions but not the third
16:48:56 -!- ais523 has joined.
16:49:00 <elliott> * elliott would be surprised if anyone could answer the first two questions but not the third
16:49:29 <olsner> elliott: are you sure that /topic command is safe? it won't immolate me or anything?
16:51:55 <elliott> olsner: dead sure
16:52:39 <olsner> ooh, it put some text on the screen with clickable links
16:53:07 <elliott> yay, finished all the Underload questions; now let's see if I can be bothered to do the ones about a language I'm not quite thoroughly familiar with
16:55:53 <quintopia> isnt the pair thing just as simple as having a string like ()(), then the programs duplicate, execute, then pop off the unwanted half?
16:56:12 <elliott> quintopia: spoilers ;)
16:56:14 <elliott> s/;/:/
16:56:24 <quintopia> i've never done underload and i have to agree with elliott
16:56:25 <ais523> quintopia: a bit simpler than that, actually; you don't need the duplicate
16:56:30 <ais523> and the answer's already been spoiled in-channel
16:56:40 <ais523> it isn't really an Underload question, anyway, but an understanding-CS-concepts question
16:56:43 <elliott> oh, it has? alright, then
16:56:56 * elliott was maybe a little overly in-depth with his answers
16:57:06 <elliott> maybe atehwa really expects us to embed arbitrary substrings in p!
16:57:07 <ais523> so people here, who are generally decent with CS concepts, are going to understand manufacturing a pair easily
16:57:08 <quintopia> ais523: i duplicated so i could still have the pair around later, since that's how i'd use it
16:57:19 <ais523> quintopia: well, head and tail don't preserve their argument
16:57:31 <ais523> so instead, it's typically the caller's duty to duplicate the pair before calling head or tail
16:57:31 <elliott> quintopia: it's bad form to preserve the argument in concatenative languages
16:57:49 <elliott> it adds noise to all definition sites and many call sites
16:58:01 <quintopia> ah good point. i was doing mentally the duplicating i would do if i used it.
17:01:03 <elliott> uh oh
17:01:17 <ais523> uh oh?
17:01:29 <elliott> ais523: I have to deal with past me's emacs configuration
17:01:38 <ais523> you can't just rename ~/.emacs?
17:01:59 <elliott> ais523: I'd have to put something in its place
17:02:08 <elliott> my current configuration is almost certainly lost forever
17:07:27 <ais523> elliott: where'd tallybot go?
17:07:44 <ais523> OK, OK, wrong channel, but you aren't in the right one
17:07:57 <elliott> ais523: it crashed as soon as i pinged it on the new metadynasty
17:08:02 <elliott> and I don't have my private key here
17:08:06 <elliott> so there's nothing I can do
17:08:07 <ais523> ah, OK
17:08:14 <ais523> probably an admin made a mistake editing templates
17:08:17 <ais523> where's "here", anyway?
17:08:32 <elliott> on this inferior-but-for-not-being-broken computer
17:08:46 <ais523> does it have numbers?
17:08:51 <elliott> yes, actually
17:08:52 <elliott> how am I meant to explain to prgmr that I lost my private key twice in quick succession?
17:09:07 <ais523> you should keep backups of it
17:09:19 <elliott> ais523: and have my backup media break too?
17:09:28 <ais523> I don't think it works like that…
17:09:37 <ais523> how broken is the computer with it on, anyway?
17:09:46 <ais523> is it working enough to boot it up and ssh in, for instance?
17:09:54 <elliott> ais523: it turned itself off and won't turn back on again
17:09:55 -!- myndzi\ has joined.
17:10:34 <ais523> elliott: hmm, what if you remove the battery and run it powered from its charger?
17:11:02 <elliott> you can't "remove the battery", that would cause ridiculous structural damage to the whole thing
17:11:14 <elliott> but I've tried charging it overnight and nothing
17:11:26 <ais523> ah, OK
17:11:35 <ais523> I'm not used to laptops with nonreplaceable batteries
17:12:30 -!- myndzi has quit (Ping timeout: 256 seconds).
17:13:32 * elliott upgrades debian
17:14:01 -!- Jafet has quit (Quit: Leaving.).
17:14:19 <quintopia> if you have to cause structural damage, do it pulling the hard disk :D
17:14:35 <elliott> quintopia: you mean the flash chips directly on the motherboard?
17:14:45 <elliott> not only would that work perfectly, it would leave my warranty fully intact
17:15:03 <quintopia> surely there was separate storage media with the numbers you require?
17:15:27 <elliott> which numbers
17:16:19 <quintopia> your private key for instance
17:16:34 <elliott> I just generated it in the last week, so no
17:19:19 -!- Zuu has joined.
17:44:44 <fizzie> The story of the cursed SSH key.
17:45:45 -!- Phantom__Hoover has joined.
17:46:50 -!- Ngevd has quit (Ping timeout: 260 seconds).
17:48:49 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
17:49:03 <Phantom__Hoover> RIP Phantom_Hoover.
17:49:52 <elliott> RIP.
17:50:00 -!- ive has quit (Quit: leaving).
17:54:19 -!- Phantom__Hoover has changed nick to Phantom_Hoover.
18:00:14 <elliott> Gregor: pikhq: Yo, Debianites, help me out.
18:06:15 <Phantom_Hoover> I'm a Debianite!
18:06:53 <elliott> Phantom_Hoover: Yeah, but you don't know things.
18:23:02 -!- Ngevd has joined.
18:25:19 <quintopia> he's a Debutante
18:25:32 -!- ais523 has quit (Remote host closed the connection).
18:30:18 <elliott> pserver is no longer officially supported; the cvs package
18:30:18 <elliott> does not install any service, inetd, or something similar.
18:30:18 <elliott> If you want to set up a CVS server, use SSH, as shown in:
18:30:19 <elliott> * http://www.stremler.net/Code/cvs_tricks/cvs-over-ssh.html
18:30:19 <elliott> * http://www.stremler.net/Code/cvs_tricks/cvs-over-ssh-advanced.html
18:30:19 <elliott> * http://www.stremler.net/Code/cvs_tricks/cvs-over-ssh-advanced2.html
18:30:20 <elliott> huh
18:30:49 <olsner> lol cvs
18:31:04 <elliott> olsner: apt-get is reading me changelogs :p
18:31:59 <elliott> on /boot: <bazik> it got 300meg in that virtual machine <ompaul> that's tine <ompaul> tiny
18:32:04 <elliott> here i was thinking that sounded big :p
18:33:05 <olsner> yeah, 300MB just to fit a bootloader, a kernel and a handful of modules is huge
18:34:56 <elliott> `quote GFDL
18:35:03 <HackEgo> 141) * Phantom_Hoover wonders where the size of the compiled Linux kernel comes from. <cpressey> To comply with the GFDL, there's a copy of Wikipedia in there.
18:35:31 <olsner> ah, that must be it
18:37:57 <elliott> olsner: oh lol ompaul thought they meant /
18:38:02 <elliott> despite the context being perfectly obviously about /boo
18:38:03 <elliott> t
18:43:36 <elliott> What, wine is no longer in wheezy.
18:43:57 <elliott> It's back into sid though.
18:44:03 <olsner> debian removed wine?
18:44:13 <elliott> # [2011-10-22] Accepted 1.0.1-3.4 in unstable (low) (Robert Millan)
18:44:13 <elliott> # [2011-08-13] Accepted 1.0.1-3.3 in unstable (low) (Robert Millan)
18:44:13 <elliott> # [2011-08-13] Accepted 1.0.1-3.2 in unstable (low) (Robert Millan)
18:44:13 <elliott> # [2011-07-08] wine REMOVED from testing (Britney)
18:44:13 <elliott> # [2010-11-27] wine 1.0.1-3.1 MIGRATED to testing (Britney)
18:44:22 <elliott> it had been terminally unmaintained, apparently
18:44:23 <elliott> for two years
18:45:10 <olsner> hmm, pretty sure ubuntu has newer wine packages than that, why is that work not reusable in debian?
18:46:33 <elliott> dunno
18:51:48 <Phantom_Hoover> http://www.reddit.com/r/Minecraft/comments/lpkye/seriously_the_void_fog_needs_to_go/
18:51:51 <Phantom_Hoover> Oops.
18:56:47 -!- Boxer_ has joined.
18:57:00 <Boxer_> Hy
18:57:10 <Ngevd> Hello!
18:57:24 <Ngevd> (are you new?)
18:57:41 <Boxer_> You a Fam Male
18:57:49 <Boxer_> Yes
18:57:58 <Ngevd> `welcome
18:57:59 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: welcome: not found
18:58:03 <Ngevd> `? welcome
18:58:06 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
18:58:12 <Ngevd> I'm not very good at that :(
18:58:28 <Ngevd> Also, I am a Fam Male? What?
18:58:49 <Boxer_> Deutsch
18:59:03 <Boxer_> Girl Boy ?
18:59:09 <Ngevd> Boy
18:59:19 <Boxer_> Oky
18:59:20 -!- ais523 has joined.
18:59:24 <Boxer_> Tanks
18:59:36 <Ngevd> Most of us here are, to be honest
18:59:57 <elliott> hello Boxer_ tanks
19:00:01 -!- pumpkin has joined.
19:01:38 <Phantom_Hoover> Ngevd, for the longest time, all of us were.
19:01:55 <Phantom_Hoover> This lead to Phantom_Hoover's Laws of Statistical Absurdity.
19:02:10 -!- copumpkin has quit (Ping timeout: 255 seconds).
19:03:32 -!- pumpkin has changed nick to copumpkin.
19:04:40 <fizzie> Are some people not, then?
19:05:55 <fizzie> This reminds me of this humor radio show, parodying the "forest radio" show: (freely paraphrasing from the Finnish) "Hey there all men of the forest; and why not women too -- after all, half the men are women!"
19:08:16 <elliott> fizzie: I'm pretty sure Madoka-Kaname and tiffany aren't.
19:09:51 -!- copumpkin has quit (Ping timeout: 244 seconds).
19:11:24 -!- Boxer_ has quit (Quit: Rooms • iPhone IRC Client • http://www.roomsapp.mobi).
19:13:06 -!- copumpkin has joined.
19:16:37 -!- sllide has quit (Read error: Connection reset by peer).
19:17:41 <Phantom_Hoover> elliott, I maintain that Madoka-Kaname is actually a 40-year-old man, and we don't talk about tiffany in this house young man.
19:20:59 -!- Boxer_ has joined.
19:21:07 <Phantom_Hoover> Boxer_!
19:21:20 <Boxer_> Ja
19:21:53 -!- Boxer_ has left.
19:22:36 <Ngevd> He's scared of Finns
19:22:50 <elliott> Boxer_ is the best.
19:23:32 -!- tiffany has joined.
19:24:00 <Phantom_Hoover> elliott, SEE WHAT YOU HAVE DONE
19:25:10 <ais523> who is Boxer_, anyway?
19:25:20 <ais523> and why did he part rather than quit? I get a feeling he/she doesn't like being here
19:25:22 <elliott> The best.
19:25:31 <Ngevd> New chap, apparently German
19:25:36 <Phantom_Hoover> In the clearing stands a Boxer_, and a fighter by his trade?
19:25:42 <Ngevd> Or at least German-speaking
19:25:48 <elliott> Ngevd: You realise he will have no clue at all what this channel is about.
19:26:39 <Phantom_Hoover> We must attempt to contact this primitive "ger man", and bring the light of civilisation to him and his people.
19:29:06 <quintopia> and who is tiffany? should i know tiffany?
19:29:17 <tiffany> I'm madoka-kaname's girlfriend
19:29:22 <Phantom_Hoover> Knowing tiffany will bring only pain and sorrow.
19:29:27 <tiffany> ._.
19:29:35 * quintopia runs
19:30:07 <Phantom_Hoover> (For background information, see:
19:30:11 <Phantom_Hoover> `quote Galatea
19:30:13 <Phantom_Hoover> )
19:30:14 <HackEgo> 649) <Phantom_Hoover> It's like Pygmalion and Galatea but more weeaboo. <Phantom_Hoover> Also lesbian.
19:31:37 <Phantom_Hoover> (tiffany is an emoticon bot under the delusion that she is intelligent.)
19:32:03 <tiffany> I'm not an emote bot :c
19:32:18 <Phantom_Hoover> Poor thing is confused.
19:32:21 * tiffany kicks phantom_hoover in the shin
19:32:30 <Phantom_Hoover> Someone paradoxed her at some point, obviously.
19:32:54 <Phantom_Hoover> She doesn't even realise that a) I am a phantom, and hence cannot be kicked and b) I am I hoover, and hence do not have shins.
19:33:06 <Phantom_Hoover> *I am a hoover
19:33:07 <elliott> I am I hoover --Phantom Hoover
19:33:26 <Phantom_Hoover> Add a full stop in the middle and it becomes philosophy.
19:35:11 -!- pikhq_ has joined.
19:35:17 -!- pikhq has quit (Ping timeout: 256 seconds).
19:35:21 <Ngevd> `addquote <Phantom_Hoover> Add a full stop in the middle and it becomes philosophy.
19:35:23 <HackEgo> 696) <Phantom_Hoover> Add a full stop in the middle and it becomes philosophy.
19:41:41 -!- oerjan has joined.
19:49:18 <elliott> hi oerjan
19:49:26 <oerjan> hi elliott
19:49:32 <elliott> hi oerjan
19:49:35 <oerjan> hi elliott
19:49:38 <elliott> hi oerjan
19:49:39 <oerjan> hi elliott
19:49:41 <elliott> hi oerjan
19:49:41 <oerjan> hi elliott
19:49:43 <elliott> hi oerjan
19:49:43 <oerjan> hi elliott
19:49:44 <elliott> hi oerjan
19:49:44 <oerjan> hi elliott
19:49:45 <elliott> hi oerjan
19:49:46 <oerjan> hi elliott
19:49:47 <elliott> hi oerjan
19:49:48 <oerjan> hi elliott
19:49:49 <elliott> hi oerjan
19:49:50 <oerjan> hi elliott
19:49:51 <elliott> hi oerjan
19:49:53 <oerjan> hi elliott
19:49:53 <monqy> hi
19:49:54 <elliott> hi oerjan
19:50:10 <oerjan> curses, foiled by a monkey
19:50:16 <elliott> that was so good
19:51:03 <olsner> oh my, you're having FUN in here
19:52:05 <Phantom_Hoover> Dammit, WP lured me to click one of its donation appeals with the prospect of learning what the hell is up with that programmer's face.
19:52:40 <olsner> was it... brain damage after exposure to python?
19:53:08 <Phantom_Hoover> Lesions of Rossum.
19:53:47 <oerjan> today's xkcd was somewhat confusing until i got it
19:53:57 <oerjan> and then realized i'd had similar thoughts
19:54:40 <Phantom_Hoover> I guess they could have just caught a bomb in it?
19:54:48 <Phantom_Hoover> It was the Blitz, after all.
19:55:07 <oerjan> it's a well known fact that python turns you into a universal robot
19:55:08 <fizzie> Catching a bomb with a wardrobe: easiest thing ever.
19:55:31 <oerjan> (if you get that pun without googling i'll be somewhat impressed)
19:56:04 <Phantom_Hoover> Explain.
19:56:16 <Phantom_Hoover> fizzie, yes, it could have been critical to the war effort.
19:56:25 <Phantom_Hoover> They should have all been shot for treason.
19:56:26 <olsner> Phantom_Hoover: if you put the bomb in the wardrobe it'll actually explode in narnia
19:56:34 <ais523> elliott: we had an oko pyramid earlier today for the first time in years
19:56:40 <ais523> it was me who messed it up :(
19:56:50 <elliott> ais523: it's not a pyramid if oklopol isn't involved; was he
19:56:55 <ais523> he was
19:57:05 <elliott> anyway i kind of find ours unimpressive after observing the #vjn natives
19:57:05 <oerjan> Phantom_Hoover: hint: Karel Čapek
19:57:21 <Phantom_Hoover> Oh, of course.
19:58:30 <elliott> 06:58:41: <Madoka-Kaname> ^show scramble
19:58:31 <elliott> 06:58:42: <fungot> >>,[>,]<[<]>[.>>]<[>>]<2[.<2]
19:58:31 <elliott> 06:58:43: <fizzie> But it does seem to be. Hmm.
19:58:31 <elliott> 06:58:45: <Madoka-Kaname> ^show srmlebac
19:58:31 <elliott> 06:58:45: <fungot> >>,[>,]<[<]>[.>>]<[>>]<2[.<2]
19:58:31 <elliott> 06:58:53: <fizzie> Well, those certainly look identical.
19:58:31 <fungot> elliott: ' when i make a noise," said he, " yet truth is truth: you know you did." a little wink beneath the lid.
19:58:31 <fungot> elliott: " it's not in nursery fnord? and as for food, our fnord"
19:58:35 <elliott> fizzie: They're funney aliases.
19:58:54 <oerjan> ^style
19:58:54 <fungot> Available: agora alice* c64 ct darwin discworld europarl ff7 fisher fungot homestuck ic irc jargon lovecraft nethack pa sms speeches ss wp youtube
19:58:58 <oerjan> thought so
19:58:58 <fizzie> elliott: Apparently so. I had forgotteded, and was under the impression they did something slightly different.
19:59:15 <oerjan> ^scramble scamble
19:59:15 <fungot> sabelmc
19:59:18 <oerjan> oops
19:59:20 <oerjan> ^scramble scramble
19:59:20 <fungot> srmlebac
19:59:35 -!- copumpkin has changed nick to controversipumpk.
19:59:44 -!- controversipumpk has changed nick to copumpkin.
20:01:38 <fizzie> Foiled by NICKLEN=16 again.
20:01:47 <elliott> 07:31:22: <Madoka-Kaname> Constants arn't, well, constant space.
20:01:52 <elliott> Madoka-Kaname: That's, um, true in general.
20:02:13 <oerjan> http://rur-ple.sourceforge.net/
20:02:23 <fizzie> The constancy of constants is a constant worry of mine.
20:02:32 <elliott> oerjan: wat
20:02:33 -!- DCliche has joined.
20:02:38 <elliott> Uh oh, DCliche found us.
20:02:43 <elliott> Everybody run.
20:02:48 -!- Vorpal has quit (Ping timeout: 248 seconds).
20:03:00 <fizzie> ^ the fastest runner.
20:03:08 <elliott> 15:07:27: <CakeProphet> ais523: basically GADTs allow you to specify a so-called phantom type parameter. Each constructor can return a value with a different phantom type as a parameter.
20:03:16 <elliott> ais523: btw, cakeprophet is totally wrong about this and you should disregard his explanation
20:03:25 <ais523> elliott: thanks
20:03:29 <ais523> do you have a better one?
20:03:36 <fizzie> Yes; in reality you specify a so-called Phantom_Hoover.
20:03:38 <oerjan> elliott: just finding someone else who did the same pun
20:03:44 <oerjan> well, essentially
20:04:01 <elliott> ais523: http://www.haskell.org/ghc/docs/latest/html/users_guide/data-type-extensions.html#gadt?
20:04:22 <elliott> ais523: it's basically a new syntax for regular ADTs where "data Foo a = A Int String | B [a] a" turns into
20:04:23 <elliott> data Foo where
20:04:26 <elliott> A :: Int -> String -> Foo a
20:04:31 <elliott> B :: [a] -> a -> Foo a
20:04:38 <elliott> ais523: and then uses that to let you be more specific about the return type
20:04:40 <Deewiant> http://hackage.haskell.org/trac/haskell-prime/wiki/GADTs also
20:04:40 <elliott> e.g.
20:04:45 <elliott> ais523: A :: Int -> Foo String
20:04:51 <elliott> which isn't possible with ordinary ADTs
20:05:00 <elliott> this allows you to, e.g. build up typed ASTs
20:05:07 <elliott> Tuple :: Term a -> Term b -> Term (a,b)
20:05:40 <elliott> Deewiant: That's not very helpful, but alright
20:05:46 -!- Vorpal has joined.
20:05:54 <Deewiant> I think it's reasonably helpful
20:06:04 <elliott> ais523: oh, and it subsumes existential quantification because you can do "Foo :: a -> Term b"
20:06:11 <elliott> Foo :: (Show a) => a -> Term String
20:06:12 <elliott> -- later
20:06:15 -!- Darth_Cliche has quit (Ping timeout: 260 seconds).
20:06:17 <elliott> eval (Foo x) = show x
20:06:33 <ais523> ah, OK
20:06:49 <ais523> that's not exactly what I want in Anarchy either, but sounds like a useful feature to combine with it
20:06:59 <oerjan> ais523: it also solves the problem with ordinary ADTs that class contexts in data definitions don't do anything useful (and are in fact being removed)
20:07:47 <elliott> `addquote <oklopol> that's crazy, it almost seems like you have to tell the program how you want it to manipulate the data and not just give it the relevant commands in a random sequence
20:07:49 <HackEgo> 697) <oklopol> that's crazy, it almost seems like you have to tell the program how you want it to manipulate the data and not just give it the relevant commands in a random sequence
20:08:55 <ais523> let stringise_anything_with_integer_leaves = match
20:08:56 <ais523> | Leaf x -> x = string_of_int x
20:08:58 <ais523> | _ -> recurse
20:09:07 <ais523> there's some Anarchy for you
20:09:14 <elliott> ais523: looks like syb stuff
20:09:18 <ais523> syb?
20:09:23 <elliott> scrap your boilerplate
20:09:23 <monqy> syb
20:09:29 <elliott> i'm sure you can do that with Data.Data
20:09:35 <ais523> elliott: well, Anarchy's a lot about getting rid of boilerplate
20:09:48 <elliott> scrap your boilerplate is an actual thing
20:09:57 <elliott> let's see...
20:09:58 <ais523> for which language?
20:10:01 <elliott> haskell
20:10:08 <elliott> every functional programming language technique has been done in haskell
20:10:22 <ais523> heh
20:10:35 <elliott> hmm..
20:10:36 <oerjan> not uniqueness types, i think
20:10:37 <elliott> s/../.../
20:10:40 <elliott> oerjan: true :P
20:11:00 <ais523> Anarchy also has some other fun features
20:11:05 <Deewiant> Or linear typing, but that's pretty much the same AIUI
20:11:07 <ais523> it's not implemented yet, but I have a vague spec
20:11:25 <ais523> that contains all the new language features, but not any of the stuff that's generically available in languages that you actually need
20:11:27 <elliott> ais523: wait, that function makes no sense
20:11:36 <ais523> what, stringise_anything_with_integer_leaves?
20:11:38 <elliott> ais523: or, wait, is it mutating the tree?
20:11:43 <oerjan> or dependent types, i think
20:11:43 <elliott> what is stringise_anything_with_integer_leaves' type
20:11:45 <ais523> elliott: it's copy-mutating it
20:12:14 <ais523> and its type is polymorphic: ('a | Leaf Int) -> ('a | Leaf String)
20:12:25 <ais523> where 'a can contain any bunch of type constructors
20:12:31 <ais523> including recursive ones
20:12:37 <ais523> and mutually recursive ones
20:12:45 <elliott> eh
20:12:48 <elliott> take a look at "everywhere"
20:12:57 <elliott> http://hackage.haskell.org/packages/archive/syb/0.3.3/doc/html/Data-Generics-Schemes.html
20:13:00 <ais523> that's not a very searchenginable term
20:13:23 <elliott> ais523: f.e. everywhere (mkT show)
20:13:27 <oerjan> yeah that term is everywhere
20:13:37 <ais523> hmm, I think syb might actually be useful for the planned purpose of Anarchy
20:13:37 <elliott> data Foo a = Leaf a | Blah (Foo a) (Foo [a]) | Bluh (Foo a) (Foo a)
20:13:44 <ais523> but I'll keep going with Anarchy anyway beacuse it's a fun language
20:13:46 <elliott> everywhere (mkT show) :: (Show a) => Foo a -> Foo String
20:13:47 <elliott> I think
20:13:54 <elliott> and it'll transform on the leaves
20:13:57 <elliott> including inside the lists
20:14:18 <ais523> let frobnify_types = match
20:14:19 <ais523> | x'type(y) -> frobnify y; recurse x
20:14:25 <ais523> you can stick metadata on things
20:14:30 <ais523> that's ignored except when you explicitly mention it
20:14:37 <elliott> what's "x'type(y)" in less stupid syntax
20:14:50 <monqy> how rude!!
20:15:03 * elliott mean
20:16:11 <ais523> elliott: I'm not sure if the concept exists in many other languages, but it's basically a pattern that matches anything (x) that has a "type" metadata field with value y
20:16:40 <elliott> so (x with Type y) or something
20:16:46 <ais523> yep, if you like
20:17:19 <elliott> ah, programs are starting to break when I open them; the Debian upgrade must be almost finished
20:17:52 <ais523> so that makes a copy which recurses into x, and replaces the type metadata with a frobnified version
20:18:01 <ais523> there's an implicit "| _ -> recurse" case at the end of that
20:18:11 <ais523> wait, no there isn't
20:18:17 <elliott> it sounds like anarchy would be nice for tree processing and little else :P
20:18:20 <ais523> so you get a compile-time error if the tree doesn't have 'type everywhere
20:18:23 <ais523> elliott: yes, that's its intended purpose
20:18:24 <elliott> otoh, lots of things are tree processing
20:18:33 <ais523> I'm just fine with it being useless for anything but tree processing
20:18:39 <elliott> http://i.imgur.com/I5FMs.png
20:18:45 <elliott> ^ debian upgrades
20:19:31 <ais523> haha
20:19:51 <ais523> elliott: hmm, the syb website gives me a 403
20:19:56 <ais523> that's not particularly encouraging…
20:20:14 <elliott> syb is maintained as part of the core haskell libraries
20:20:24 <elliott> see http://hackage.haskell.org/package/syb, and http://hackage.haskell.org/package/base (the core is in Data.Data)
20:20:40 <elliott> http://www.cs.uu.nl/wiki/GenericProgramming/SYB is the linked website there
20:21:00 <elliott> (Data.Data has to be in base because of the compiler support for deriving instances)
20:36:25 -!- Nisstyre has quit (Ping timeout: 240 seconds).
20:42:21 -!- Nisstyre has joined.
20:46:59 -!- sllide has joined.
20:49:55 -!- derdon has joined.
21:11:54 -!- elliott has quit (Remote host closed the connection).
21:14:41 -!- elliott has joined.
21:18:04 <elliott> hmm, I think this thing is probably due for a clean install
21:20:31 <elliott> Man, this is a pretty nifty old script of mine.
21:32:58 <elliott> Oh man, this is some cool old code.
21:33:54 <ais523> does it do something useful?
21:34:42 <elliott> Ostensibly!
21:34:47 <elliott> I like how I've invented my own dependency system here.
21:36:21 <elliott> /* previously a function, but a macro produces smaller executables
21:36:21 <elliott> (bad inlining?) */
21:37:40 <elliott> ais523: I think like half of these programs are full o' goto.
21:37:58 <ais523> elliott: you should see the code C-INTERCAL generates some time
21:38:00 <ais523> especially with -e
21:38:05 <elliott> /* FIXME: inexplicably broken */
21:38:09 -!- augur has quit (Remote host closed the connection).
21:38:38 <elliott> ais523: http://sprunge.us/XHdI
21:38:45 <elliott> it's kind of elegant in its own twisted way
21:39:24 <ais523> elliott: is that a safer rm?
21:39:30 <elliott> Safer howso?
21:39:46 <ais523> no idea
21:39:53 <ais523> less chance of deleting stuff you actually want, or something
21:39:58 <ais523> it's just an rm implementation altogether, right?
21:40:01 <elliott> yep
21:40:17 <ais523> so what possessed you to reimplement rm?
21:40:25 <elliott> http://sprunge.us/cRDY I love how many of these programs start with comments to the effect of "just doesn't work"
21:40:39 <elliott> I also like my sliding four-character buffer.
21:41:33 <elliott> hmm, what OS to install on here for the few weeks of agony
21:41:45 <elliott> I think I'm sufficiently annoyed at Xfce's taskbar to rule it out
21:41:46 <Ngevd> Vista
21:41:48 <ais523> elliott: gah, I saw the "strings" in the usage message before I figured out what it did
21:41:51 <elliott> probably not ready to take the xmonad plunge yet
21:41:51 <elliott> ais523: aww
21:42:16 <ais523> so what made you reimplement the POSIX userland, anyway? so you could truthfully say "Linux" not "GNU/Linux"?
21:42:41 <elliott> I think this was part of my tiny-executable fetishism.
21:42:51 <ais523> you will still lose to busybox
21:42:52 <elliott> They're certainly nicer than coreutils implementations, though. :p
21:42:55 <elliott> ais523: err, no
21:43:03 <elliott> these all came out much, much smaller than busybox
21:43:14 <ais523> wow
21:43:14 <elliott> busybox tools aren't really that small at all
21:43:20 <elliott> a lot of them are based on coreutils ones, even
21:44:20 <elliott> ah, I really like this thing's cal implementation
21:44:34 <elliott> using pikhq's brilliant pseudo-coroutine thing to do the layout
21:45:08 <ais523> did you implement ddate?
21:45:27 <elliott> no :( shame on me
21:45:45 <elliott> yeah, the static binary of all of these tools is 14.7 kilobytes in total
21:45:58 <elliott> basename, cal, cat, date, dirname, echo, env, false, kill, link, mkdir,
21:46:03 <elliott> mv, pwd, rm, signal, sleep,
21:46:10 <elliott> strings, true, uname, vis, yes,
21:46:12 <elliott> chroot
21:46:25 <elliott> some of which don't work :P
21:46:49 <elliott> ais523: oh, the best part is that the build system has special support for true/false
21:46:53 <elliott> ais523: just so they can skip libc entirely
21:47:00 <elliott> TRUEFALSECC := /opt/pcc-dietlibc/bin/pcc
21:47:00 <elliott> TRUEFALSECFLAGS := \
21:47:00 <elliott> -Os -nostdlib -nostdinc -nostartfiles \
21:47:00 <elliott> -isystem /opt/pcc-dietlibc/include -D__dietlibc__ \
21:47:00 <elliott> -D__restrict__= /opt/pcc-dietlibc/lib-x86_64/libc.a \
21:47:01 <elliott> $(CFLAGS)
21:47:11 <ais523> elliott: what language were true/false written in?
21:47:19 <ais523> if you say anything higher-level than asm, I'll be disappointed
21:47:32 <ais523> ideally, you should just pack all the code into the ELF headers
21:48:00 <elliott> ais523: yes, I too have read breadbox's page on that
21:48:16 <ais523> elliott: I know, that's why I referenced it rather than having to explain it to you
21:48:27 <elliott> ais523: anyway, very non-portable C, but it comes out to the same thing as asm, since they look like this:
21:48:28 <elliott> #include <unistd.h>
21:48:28 <elliott> void _start(void)
21:48:28 <elliott> {
21:48:28 <elliott> _exit(0);
21:48:28 <elliott> }
21:48:48 <ais523> boring, no "goto *(void*)0;"?
21:48:51 <elliott> heh
21:49:06 <ais523> that is probably going to be the least portable line of C I've ever written forever
21:49:34 <elliott> is it even, strictly-speaking, C?
21:53:12 -!- Sgeo|web has quit (Ping timeout: 265 seconds).
21:53:43 <elliott> gah
21:53:46 <elliott> firefox is ignoring my dpi settings
21:53:48 <ais523> elliott: sure, it's accepted by at least one strictly-conforming compiler
21:53:58 <ais523> even if that compiler is gcc-bf
21:54:04 <elliott> ais523: I don't believe such compilers exist
21:54:11 <ais523> (I believe stock gcc will also be able to parse and compile the line, although it doesn't do anything useful)
21:55:11 <elliott> right then, time to write some fucking C bindings
21:55:36 <elliott> (ais523: this is for tallybot, by the way...)
21:56:27 <Ngevd> I was going to write a bot
21:56:33 <Ngevd> But I never figured out how
21:58:24 <quintopia> i was going to port my bot to my vps
21:58:28 <quintopia> but i never time
21:58:51 <quintopia> (you decide whether the verb is "had" or "made")
21:59:42 <elliott> /* something went wrong but we just ignore it for now... */
22:01:53 <elliott> anyway, this is cool enough for me to try and preserve it: http://sprunge.us/WCXI?python
22:04:34 <ais523> 72 # I hate ais523
22:04:48 <elliott> ais523: that was because I had to rewrite it to handle C-INTERCAL's tarball names
22:05:03 <elliott> because they use final -s to do something other than separate name and version :)
22:05:05 <ais523> I guessed it was INTERCAL-related
22:05:31 <ais523> this is an automatic build script that just invokes things like configure, right?
22:05:46 <ais523> ah, download/configure/build/install
22:05:59 <elliott> ais523: $ inst http://path/to/tarball installs that package into /opt/pkgname
22:06:06 <elliott> ais523: it works surprisingly well
22:06:55 <elliott> heh, I have azip here
22:08:06 <ais523> does it automatically unpack .az files?
22:08:15 <ais523> I'm still pretty pleased at getting it to beat bz2
22:08:26 <ais523> which just goes to show that most compression algo designers aren't trying hard enough
22:09:08 <elliott> ais523: no, it doesn't :)
22:09:10 <Deewiant> bz2 hardly involves much trying
22:09:35 <ais523> elliott: it beats gz even with stupid encodings for numbers
22:09:36 <Deewiant> It's pretty much BWT + the minimal stuff to compress it
22:09:44 <elliott> i meant
22:09:47 <elliott> re: <ais523> does it automatically unpack .az files?
22:10:08 <ais523> ah, OK
22:11:36 <elliott> pikhq_: Thanks for pointing me at NetSurf ages back, btw
22:13:12 <elliott> gah
22:13:18 <elliott> I can't deal with it, I have to reinstall to get a newer ghc
22:13:27 <elliott> monqy: Does Arch have a civilised GHC version yet
22:13:35 <Deewiant> elliott: No
22:13:45 <monqy> crys
22:13:59 <elliott> SIGH.
22:14:07 <elliott> What is a programmer meant to do???
22:14:14 <Deewiant> Impressively it doesn't even have the latest stable release
22:14:16 <Phantom_Hoover> I thought you hated Arch anyway?
22:14:22 <Deewiant> 7.0.3 instead of .4
22:14:31 <elliott> Phantom_Hoover: Yes, but there's no way Debian has a civilised GHC.
22:14:38 <Phantom_Hoover> I remember my hatred of sshc being ruined when I looked at the logs and it turned out he was actually an idiot.
22:14:43 <elliott> Deewiant: 7.2 is "stable", it's just a "preview release".
22:14:58 <elliott> Deewiant: i.e. they released it as stable then decided to slap warnings on it when it turned out to be buggy.
22:15:34 <Deewiant> Whatever, if it comes with warnings people won't treat it as stable
22:16:06 <elliott> Yeah OK so is there an OS that has the latest GHC :-p
22:16:13 <Deewiant> Windows
22:16:25 -!- Vorpal has quit (Ping timeout: 240 seconds).
22:16:34 <elliott> Deewiant: Windows does not have the latest GHC.
22:16:39 <pikhq_> Gentoo?
22:16:45 <Deewiant> Well, depends on how you think about it
22:16:45 <elliott> By that argument practically everything does because there's binary packages
22:16:45 <pikhq_> (just a guess)
22:17:01 <elliott> http://packages.gentoo.org/package/dev-lang/ghc
22:17:01 <elliott> Nope.
22:17:02 <Deewiant> The typical method of installing stuff on Windows has the latest GHC
22:18:01 <elliott> http://packages.debian.org/source/experimental/ghc
22:18:05 <elliott> PROBLEM SOLVED.
22:19:21 <elliott> Soooooooooooooooooooooooo
22:19:54 <elliott> Come to think of it, does Arch even still have GNOME 2
22:22:51 * Phantom_Hoover → sleep
22:22:53 -!- Phantom_Hoover has quit (Quit: Leaving).
22:23:09 -!- Mathnerd314 has joined.
22:23:14 -!- Mathnerd314 has left.
22:24:44 -!- Patashu has joined.
22:25:56 <oerjan> no more gnome, or?
22:26:03 <elliott> oerjan: where is pun
22:26:21 <elliott> oh neat, Arch are actually not shipping gnome 2 at all
22:26:29 <elliott> that fits in with their characteristic march-forwards-at-all-costs attitude
22:26:49 <oerjan> elliott: as previously, read it aloud. although my pronunciation may be off, i'm just a lowly norwegian.
22:26:49 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
22:27:01 <elliott> oerjan: idgi
22:27:26 <oerjan> it's more a rhyme than a pun
22:27:36 -!- GreaseMonkey has joined.
22:27:37 <elliott> it sort of works
22:27:46 -!- Patashu has quit (Client Quit).
22:28:40 <elliott> oh great, they have their own ~gnome 2 fork~
22:30:22 <Deewiant> Where "they" = "some guy who uploaded it to AUR"?
22:30:52 -!- Patashu has joined.
22:34:24 <elliott> Deewiant: Yep
22:34:36 <Deewiant> Ok
22:34:39 <elliott> Also a wiki article :P
22:34:54 <monqy> some guy who wiki articled it
22:35:01 <Deewiant> So "some guy who wrote an article" as well
22:36:53 <elliott> Deewiant: Some guy who made a Linux distribution
22:37:14 <elliott> "Yes, it is huge. I'm alone. Thankyou so much."
22:37:16 <elliott> deep gnome thoughts
22:37:17 <Deewiant> Who is not, in any way, affiliated with this gnome 2 fork
22:37:28 <elliott> Deewiant: Well, they're both some guys
22:38:14 <Deewiant> Sure, but I read your "they" as referring to Arch
22:38:31 <elliott> Honestly, I would just use a standalone WM if I wasn't so attached to panels
22:38:40 <elliott> And I know of no decent panel implementation other than GNOME2's
22:38:56 <Deewiant> Can't you use it with a different WM
22:39:17 <elliott> Deewiant: You're missing the part where it's not in the repositories
22:39:23 <elliott> Because OMG OMG OMG GNOME3
22:39:25 <elliott> SO NEW
22:39:27 <elliott> SO SHINY
22:39:45 <Deewiant> It won't get updated anyway, no?
22:39:53 <Deewiant> So just manually install it
22:40:10 <elliott> Deewiant: Yeah, that sounds sustainable
22:40:21 <Deewiant> Like said, it won't get updated...
22:40:32 <elliott> Deewiant: Yeah, so I need to run something else.
22:41:01 <Deewiant> The fork is presumably closest to your needs, then :-P
22:41:21 <elliott> Yeah except I know it'll be totally fucked in some awful way, and also it's one big monolithic project so I can't pull out the panel
22:41:24 <elliott> Who knows a good panel
22:41:47 <Deewiant> What's so special about gnome2's panel
22:43:25 <elliott> Deewiant: Nothing at all, it just isn't horribly broken
22:43:38 <Deewiant> How are other panels horribly broken
22:43:38 <elliott> Deewiant: e.g. In Xfce's, you can't even rearrange windows on the task bar
22:44:08 <elliott> KDE's will probably pull in ~seventy billion KDE dependencies and look like crap and I know it want to be all transparent vector blah blah instead of just using widgets, so I'm disinclined to try it out
22:44:18 -!- ais523 has quit (Remote host closed the connection).
22:45:00 <Deewiant> I use xfce4's, can't say I've felt the need for that feature :-P
22:47:04 <elliott> I do it all the time to optimise access to a related set of windows, apparently the Xfce devs' opinion on this is that it takes more code so who cares
22:47:35 <Deewiant> I only really use the panel to see what's open anyway
22:48:08 <elliott> Ha ha, Deewiant is an Alt-Tab user
22:48:40 <Ngevd> I use Unity because I am tasteless, weird, and don't actually know what you are talking about
22:48:45 <monqy> I have a panel-like thing but really it's just a clock, the list of workspaces i'm using, and the title of the currently focused window
22:48:57 <monqy> "all monqy needs"
22:49:01 -!- copumpkin has joined.
22:49:29 <monqy> oh and it has the name of the tiling method i'm using i forgot about that
22:50:59 <elliott> Deewiant: Really though Xfce mostly satisfies me, it's just that where it differs from GNOME 2 it's usually inferior
22:51:12 <elliott> Deewiant: xfce-terminal is just close enough to gnome-terminal to annoy me about all the ways it differs
22:51:28 <elliott> Whatever their archive manager is called is awful, and their media player is about a billion times worse than Totem
22:51:28 <Deewiant> I only use xfce4-panel, I don't know anything about the rest of it (nor gnome)
22:51:44 <elliott> Maybe I should just use the console exclusievly.
22:51:50 <elliott> exclusively.
22:51:52 <Deewiant> And I sleep now -->
22:52:26 <Ngevd> 'quote
22:52:41 <Ngevd> I used the wrong punctuation, didn't I?
22:52:43 <Ngevd> `quote
22:52:45 <HackEgo> 102) <songhead95> think of all the starving kids in china who don't have rotting sea life to eat
22:53:49 <elliott> Alright, Arch it is I think
22:55:32 <oerjan> `help
22:55:33 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/
22:55:54 <elliott> oehi
22:55:55 <elliott> oerjan: hi
22:55:59 <oerjan> hello
22:58:21 <oerjan> `log [r]otting sea life to eat
22:58:48 <HackEgo> 2010-03-21.txt:04:11:18: <songhead95> think of all the starving kids in china who don't have rotting sea life to eat
22:59:15 <oerjan> ah. looks genuine then.
22:59:25 <elliott> oerjan: what
22:59:26 <oerjan> somehow that sounded to me like oklopol
22:59:29 <elliott> heh
23:03:37 -!- sllide has quit (Ping timeout: 240 seconds).
23:03:50 -!- augur has joined.
23:06:21 -!- PatashuXantheres has joined.
23:07:11 <elliott> So
23:07:25 <elliott> Installing OSes without an optical drive sucks bigtime.
23:09:59 <Ngevd> It's a week until my birthday
23:11:02 <monqy> ahhh, installing oses without optical drive. that stuff's fun
23:11:24 <Ngevd> Oddly, I generally use SD cards to install OSs
23:11:30 <Ngevd> Because I am like that
23:12:17 -!- PatashuXantheres has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
23:14:10 -!- pikhq has joined.
23:14:35 -!- pikhq_ has quit (Ping timeout: 256 seconds).
23:14:46 <oerjan> remember, remember, the third of november
23:15:40 <elliott> http://sprunge.us/TfTY ;; someone tell me this isn't a lovely cal(1)
23:18:26 <Ngevd> Goodnight
23:18:27 -!- Ngevd has quit (Quit: Leaving).
23:19:28 <Patashu> what are the functions write() and writes()?
23:20:27 <elliott> Patashu: write() is standard syscall
23:20:33 <elliott> writes(fd,s) is write(fd,s,sizeof(s)-1)
23:20:40 <elliott> i.e. avoid specifying length for constant strings
23:20:53 <Patashu> ah ok
23:21:43 -!- augur has quit (Read error: Connection reset by peer).
23:22:04 <DCliche> Did someone highlight me?
23:22:20 <elliott> I think I did :-P
23:22:56 -!- augur has joined.
23:30:30 -!- derdon has quit (Remote host closed the connection).
23:58:07 -!- evincar has joined.
23:58:31 <evincar> I'm having a small bit of trouble parsing the lambda syntax in Even.
23:59:21 <oerjan> are you using haskell? >:P
23:59:39 <oerjan> > var$cycle"Parsec! "
23:59:40 <lambdabot> Parsec! Parsec! Parsec! Parsec! Parsec! Parsec! Parsec! Parsec! Parsec! Par...
2011-10-27
00:00:02 <shachaf> > var$"kessel run"
00:00:03 <lambdabot> kessel run
00:00:22 <evincar> I'm using Parsec.
00:00:31 <oerjan> `frink kessel run -> parsec
00:00:42 <HackEgo> Warning: undefined symbol "kessel". \ Warning: undefined symbol "run". \ Warning: undefined symbol "kessel". \ Warning: undefined symbol "run". \ Unconvertable expression: \ kessel (undefined symbol) run (undefined symbol) -> 3.0856775813057289536e+16 m (length)
00:00:50 <oerjan> disappointing
00:01:13 <elliott> `frink kessel_run := 18 parsecs; kessel_run -> km
00:01:18 <evincar> It craps its pants when I try to match string "->" after (evenIdentifier `sepBy` (char ',' `surroundedBy` ws))
00:01:22 <HackEgo> 5.5542196463503121165e+14
00:01:29 <elliott> `frink kessel_run := 18 parsecs; kessel run -> km
00:01:39 <HackEgo> Warning: undefined symbol "kessel". \ Warning: undefined symbol "run". \ Warning: undefined symbol "kessel". \ Warning: undefined symbol "run". \ Unconvertable expression: \ kessel (undefined symbol) run (undefined symbol) -> 1000 m (length)
00:02:06 <oerjan> elliott: it's 12 parsecs you ignorant dolt
00:02:13 <monqy> evincar: in what way?
00:02:18 <elliott> oerjan: wrong
00:02:31 <elliott> oerjan: that's only true for the millennium falcon
00:02:37 <evincar> monqy: Unexpected "-". Expecting space or ",".
00:02:45 <evincar> As though it's trying to continue matching the list.
00:03:06 <oerjan> evincar: you may need evenIdentifier `sepBy` try (char ',' `surroundedBy` ws)
00:03:06 <monqy> what's the expected space about
00:03:14 <evincar> For the record, the preliminary syntax is { x, y, ...; args; kwargs -> ... }
00:03:29 <evincar> Where the ; sections are optional.
00:03:36 <monqy> args? kwargs?
00:03:44 <evincar> I'm just testing it on { x -> 0 } at the moment.
00:03:54 <evincar> Rest parameters and keyword arguments, respectively.
00:04:04 <monqy> i know but
00:04:08 <monqy> ????????
00:04:15 <evincar> Don't worry about it. :P
00:05:05 <monqy> anyway where's your rule to match ->
00:05:07 <monqy> what's the whole thing
00:05:12 <evincar> Using try there gives the same error.
00:05:14 <evincar> One second.
00:05:29 <oerjan> evincar: iiuc your `surroundedBy` ws part is matching whitespace, right? so if there _is_ whitespace at the _end_ but not try it will have read characters to check for the delimiter which isn't there, and cannot give them back
00:05:29 <monqy> rul;e/whateveervrr
00:06:00 <evincar> normalLambda = lambdaExterior $ do
00:06:00 <evincar> arguments <- evenIdentifier `sepBy` try ((char ',') `surroundedBy` ws)
00:06:00 <evincar> string "->"
00:06:00 <evincar> expressions <- evenExpressions
00:06:00 <evincar> return $ EvenLambda (map identifierString arguments) Nothing Nothing
00:06:03 <evincar> expressions
00:06:16 <evincar> That's probably what's happening...
00:06:32 <monqy> whbgat's surroundedBy
00:07:08 <oerjan> evincar: btw a general tip is too always gobble up whitespace at the end of a token and not the beginning (except for the whole program)
00:07:11 <oerjan> *to
00:07:28 <oerjan> this prevents that giving back trouble
00:07:32 <evincar> surroundedBy :: Monad m => m i -> m o -> m i
00:07:32 <evincar> inner `surroundedBy` outer = do outer result <- inner outer return result
00:07:41 <evincar> Crap, lines got borked. :/
00:07:49 <elliott> i am 100% sure parsec has a combinator for that.
00:08:01 <evincar> do { outer; result <- inner; outer; return result }
00:08:11 <oerjan> "between" although that requires writing it twice
00:08:25 -!- hagb4rd2 has quit (Ping timeout: 240 seconds).
00:08:26 <monqy> outer *> inner <* outer
00:08:54 <monqy> you know how to use Applicative right
00:08:59 <oerjan> that too
00:09:39 <monqy> and what's ws
00:09:39 <evincar> The surroundedBy works for list/map syntax, just not this part of the lambda syntax.
00:09:47 <evincar> Shorthand for spaces.
00:09:59 <evincar> == many space
00:10:04 <monqy> spaces is a thing iirc
00:10:27 <elliott> <elliott> i am 100% sure parsec has a combinator for that.
00:10:29 <monqy> or did you know that and just not want to type spaces
00:10:35 <elliott> ?hoogle Parser a -> Parser b -> Parser b
00:10:35 <lambdabot> No results found
00:10:42 <evincar> I knew that and just didn't want to type spaces. :P
00:10:50 <monqy> crys
00:10:58 <oerjan> evincar: (evenIdentifier <* ws) `sepBy` (char ',' <* ws), i think
00:12:12 <evincar> Hold up, I'm gonna move some of the whitespace rules around.
00:12:12 <oerjan> evincar: even ignoring try, the problem was that the last evenIdentifier wouldn't gobble up following spaces. assuming you want that to happen.
00:13:49 <evincar> Yeah, that's fixed it. I wasn't being careful enough with my whitespace rules.
00:14:11 <elliott> Deewiant: Wake up and tell me what to use insetad of clyde
00:14:17 <elliott> s/insetad/instead/
00:14:39 <monqy> what's cleyd
00:15:00 <monqy> evincar so what's with that args quargs stuff why do you have it???
00:16:07 * pikhq has somehow come across text that is both valid UTF-8 and obviously not UTF-8.
00:16:30 <pikhq> It's quite amazing, if horrifying.
00:16:39 <elliott> go on
00:16:53 <oerjan> pikhq: probably using the ancient r'lyehan charset?
00:16:59 <evincar> monqy: Easy variadic functions. Same reason Scheme has (define (f something . rest) (...))
00:17:02 <oerjan> *character subset
00:17:20 <pikhq> oerjan: No, it's a .zip file that I *expect* to contain things in a Japanese encoding.
00:17:47 <pikhq> I'm *suspecting* it's something utterly insane like Shift-JIS shoved through the UTF-8 algorithm.
00:17:48 <evincar> pikhq: SJIS mistakenly re-encoded as UTF8 via something else?
00:17:54 <evincar> Yeah, that.
00:17:58 <monqy> args can be kind of a mess and quargs is a big mess. I'd recommend at the very least keeping your language simple until you've everything sorted
00:18:32 <pikhq> Unfortunately, I don't think there's anything that could *sanely* invert that.
00:18:41 <pikhq> Hmm. Waaait.
00:18:47 <pikhq> UTF-8 to UTF-16 conversion?
00:19:08 <evincar> monqy: Thanks for the recommendation. I was going to get the basics working first, but I want the syntax to be there when I need it later.
00:19:10 <monqy> troubles include: added syntax, requirement of putting lists and maps in the core language, troubles writing generic apply etc etce tce tfccccc
00:19:27 <monqy> for your language replace apply with composition
00:19:31 <monqy> (even bigger problesm>????)
00:19:41 <monqy> generic apply is probably always good too though (thumbs up)
00:20:04 <monqy> so you're making even general-puprose?
00:21:34 <elliott> more importantly
00:21:53 <elliott> args = no currying lol
00:21:54 <elliott> which means your language is insatntly unusable shit, fact.
00:22:28 <monqy> i thought we had already established no currying but haha/yeah
00:24:32 <monqy> I had assumed it had some fancy magical alternative to curreying which eveincar had thought over very well and knew the implications of etc etc
00:24:55 <elliott> yes, that's a common aspect of features of this language so far
00:24:58 <evincar> It's not exactly magical, but it is pretty straightforward.
00:25:13 <evincar> And it is basically currying. :P
00:25:17 <monqy> oh?
00:25:23 <evincar> You can have partially applied functions, if that's what you mean.
00:25:33 <monqy> currying is entirely different
00:25:41 <monqy> from partial application
00:28:09 <evincar> If functions of multiple arguments are treated the same as functions of a single argument that return functions, then for all practical purposes, they're the same.
00:28:55 <monqy> they are fundamentally different but currying allows for partial application is what you're saying right
00:29:20 <evincar> Yes.
00:30:34 <evincar> So Even has currying, and partial application implemented atop that, plus syntax for fixing arguments of a function other than the first.
00:30:52 <evincar> It's just that internally, functions *do* take multiple arguments.
00:31:03 <monqy> even has currying?
00:31:04 <elliott> that sounds elegant and practical.
00:31:33 <evincar> Can't tell if you're serious. :/
00:31:34 <monqy> and yeah what elliott said; it's a fucking mess
00:31:41 <oerjan> ...ghc has much of that too
00:31:48 <elliott> hint: if i'm praising your language i'm not serious
00:31:57 <elliott> oerjan: yes i totally believe that "internally" means "completely hidden from the user and an implementation detail"
00:32:07 <elliott> rather than "hidden behind a thin layer of syntax"
00:32:32 <monqy> evincar: you claim it has currying, yet you have demonstrated it doesn't; ???????????????????????
00:33:01 <elliott> it is...
00:33:03 <elliott> and it isn't
00:33:05 <oerjan> let the poor guy implement it, then it will become obvious to him if/that it doesn't work
00:33:16 <evincar> ^ that.
00:33:17 <monqy> zennest langauge
00:33:39 <elliott> oerjan: he is implementing it, also talking about it
00:33:39 <elliott> we're interrupting the latter, not the former
00:33:55 <oerjan> WELL I'M SICK OF IT
00:33:57 <monqy> I don't entirely believe it will become obvious if he has fundamental confusion
00:33:58 * oerjan runs away
00:34:39 <monqy> it may become obvious that something's wrong, but not necessarily what. alternatively, it could seem as though nothing is wrong because of misinterpretation/misdescription
00:34:47 <monqy> maybe i am not trusting enough???
00:36:13 <evincar> I think you're not trusting enough.
00:36:20 <evincar> I could just be very, very bad at explaining what I mean.
00:42:34 <elliott> go go distro install
00:42:39 -!- elliott has quit (Remote host closed the connection).
00:56:45 <pikhq> Welp. I'm at a complete loss.
01:00:35 <pikhq> It's now not valid UTF-8, but it's not valid anything else, either.
01:02:04 <pikhq> I'm suspecting endianness.
01:02:52 <oerjan> well so switch the bytes, then
01:03:08 <pikhq> Which is nontrivial if it's Shift-JIS.
01:03:23 <pikhq> Or anything but UTF-8...
01:03:41 <pikhq> Damned variable-width encodings.
01:04:19 -!- elliott has joined.
01:04:57 <oerjan> well if you have read the utf-8 in as code points into a program, shouldn't you be able to print it in any other format you wish
01:06:25 <pikhq> Except the UTF-8 is merely the result of horrific mangling, and not anything sensible.
01:07:06 <oerjan> i thought you said you thought it was something encoding it as utf-8, in which case shouldn't the codepoints contain all the original information
01:07:20 <pikhq> What I have is filenames which have been shoved through *some* sort of process, with one step involving the application of the UTF-8 algorithm.
01:07:53 <oerjan> just the filenames?
01:08:07 <pikhq> The text is apparently valid Shift-JIS.
01:09:05 <oerjan> oh well i don't know anything more about this
01:09:14 <elliott> i hate people on irc who ask for more detail about a question and then say nothing more about it :(
01:09:15 <evincar> My money's on SJIS -> ISO 8859-1 -> UTF-8.
01:09:43 <oerjan> elliott: wait are you referring to me :(
01:09:49 <elliott> no
01:09:52 <elliott> :)
01:09:55 <elliott> people in #archlinux
01:10:15 <evincar> oerjan: To be hated by elliott isn't exactly a difficult distinction to achieve.
01:10:29 <elliott> translation: <evincar> :'(
01:10:35 <oerjan> evincar: true, but i seem to have strangely evaded it so far
01:10:56 <evincar> Hah, I haven't.
01:17:05 -!- pikhq_ has joined.
01:18:09 -!- tiffany has quit (Quit: Leaving).
01:19:55 <pikhq_> Got it.
01:19:55 -!- pikhq has quit (Ping timeout: 258 seconds).
01:20:14 <pikhq_> It's *just* Shift-JIS with each *byte* having the UTF-8 algorithm applied.
01:20:21 <pikhq_> iconv -f utf-8 -t utf-16 | tr -d '\0' | tail -c +3 | iconv -f shift-jis -t utf-8
01:20:22 <elliott> :D
01:21:08 <oerjan> which is more or less what evincar said
01:22:10 <oerjan> with the first -> meaning "reinterpreted as"
01:24:31 <pikhq_> That was really, really nasty.
01:27:33 <evincar> This has happened to me before...
01:28:24 <evincar> Congratulations on your newfound filenames.
01:28:28 <evincar> What does the archive contain?
01:28:44 <evincar> (Insert joke about the illegal or pornographic nature of a corrupt Japanese archive.)
01:29:24 <pikhq_> The novel series "キノの旅", in reasonably formatted text.
01:36:07 <oklopol> oerjan: so what was u2b about, i never got that
01:36:44 <oerjan> oklopol: youtube, sheesh
01:37:12 -!- cheater has quit (Read error: Connection reset by peer).
01:37:38 -!- cheater has joined.
01:37:46 <oklopol> oh, it was that one
01:37:50 <oerjan> pikhq_: i have this sense i may have seen an anime episode of that once, perhaps #10 on http://en.wikipedia.org/wiki/List_of_Kino%27s_Journey_episodes
01:38:06 <oerjan> actually only part of the episode
01:39:28 <elliott> oerjan: don't be silly, you're norwegian
01:40:34 <pikhq_> oerjan: It's a fairly good anime, and so I'm interested in seeing if the books are as good and/or better.
01:41:09 <elliott> NOTE TO SELF
01:41:11 <elliott> NOTE TO SELF
01:41:15 <elliott> _COPY BACK THE BACKUP BEFORE INSTALLING ARCH_
01:41:19 <oerjan> elliott: it was sent around midnight on some satellite channel when i was visiting my aunt
01:42:41 <oerjan> actually it may even have been a norwegian channel
01:44:08 -!- elliott has quit (Read error: Connection reset by peer).
01:46:28 -!- elliott has joined.
01:46:30 <elliott> elliott@dinky:~$ sudo partprobe
01:46:30 <elliott> Error: Invalid partition table - recursive partition on /dev/sdb.
01:46:32 <elliott> oh good...
01:47:12 <evincar> G'night all. Thanks for the assistance, as always.
01:47:15 -!- evincar has quit (Quit: leaving).
01:47:16 <oerjan> yo dawg i heard you like partitions
01:47:23 -!- ive has joined.
01:48:09 -!- elliott has quit (Remote host closed the connection).
01:52:44 -!- cheater has quit (Remote host closed the connection).
01:53:13 -!- cheater has joined.
01:53:16 <oerjan> @list remember
01:53:17 <lambdabot> quote provides: quote remember forget ghc fortune yow arr yarr keal b52s brain palomer girl19 v yhjulwwiefzojcbxybbruweejw protontorpedo nixon farber
01:53:28 <oerjan> @remember how does this work?
01:53:28 <lambdabot> Done.
01:53:47 <oerjan> @quote how does this
01:53:47 <lambdabot> how says: does this work?
01:54:01 <oerjan> @forget how does this work?
01:54:01 <lambdabot> Done.
01:54:05 <oerjan> @quote how does this
01:54:05 <lambdabot> No quotes match. Just what do you think you're doing Dave?
01:56:42 <Gregor> @quote Haskell
01:56:43 <lambdabot> Haskell says: I'm a bitching language
01:56:55 <Gregor> @quote JavaScript
01:56:56 <lambdabot> donw says: [of JavaScript booleans] I've heard of duck-typing, and static-typing, but this is the first time I've heard of Schrödinger-typing...
01:57:07 <Gregor> X-D
01:59:26 <Madoka-Kaname> @quote JavaScript
01:59:27 <lambdabot> Jafet says: Javascript is pretty much a DSL for making your web browser take up more CPU
01:59:31 <Madoka-Kaname> @quote JavaScript
01:59:31 <lambdabot> medfly says: I wanted to use xmonad and yi, just to be cool like that, but to write javascript.
01:59:33 <Madoka-Kaname> @quote JavaScript
01:59:34 <lambdabot> medfly says: I wanted to use xmonad and yi, just to be cool like that, but to write javascript.
01:59:35 <Madoka-Kaname> @quote JavaScript
01:59:36 <lambdabot> medfly says: I wanted to use xmonad and yi, just to be cool like that, but to write javascript.
02:04:14 <oerjan> @quote repetitive
02:04:15 <lambdabot> No quotes match. Maybe if you used more than just two fingers...
02:05:22 <Madoka-Kaname> @quote JavaScript
02:05:23 <lambdabot> medfly says: I wanted to use xmonad and yi, just to be cool like that, but to write javascript.
02:05:24 <Madoka-Kaname> @quote JavaScript
02:05:24 <lambdabot> medfly says: I wanted to use xmonad and yi, just to be cool like that, but to write javascript.
02:05:25 <Madoka-Kaname> @quote JavaScript
02:05:26 <lambdabot> donw says: [of JavaScript booleans] I've heard of duck-typing, and static-typing, but this is the first time I've heard of Schrödinger-typing...
02:26:54 -!- elliott_ has joined.
02:26:58 <elliott_> Anyone know GRUB2?
02:30:35 <elliott_> oerjan: btw you can remove the numbers from the topic.
02:30:46 <elliott_> 1234567890!@#$%^&*()
02:31:26 <oerjan> aww
02:31:39 <elliott_> oerjan: well you can leave them if you want :P
02:31:48 -!- oerjan has set topic: EPL evening school assignments! http://tinyurl.com/5stnu5n | It's the end of an era | http://codu.org/logs/_esoteric/.
02:32:04 <elliott_> pikhq_: Can you find out whether GRUB2 can boot from JFS or not; I can't really browse the web from this :P
02:36:42 <elliott_> Oh well, let's assume "yes"
02:37:22 <pikhq_> Seems it's "yes".
02:37:56 <elliott_> Good, I assumed right :P
02:38:18 <elliott_> Yay, #grub agree.
02:38:30 <elliott_> pikhq_: Thanks
02:45:35 <elliott_> pikhq_: Oooooooooops
02:45:41 <elliott_> pikhq_: Not the same for GRUB1, is it
02:45:48 <elliott_> Looks like Arch still uses GRUB1 for some insane reason
02:48:02 <elliott_> I can just install GRUB2, but this is still annoying :/
02:49:02 -!- elliott_ has changed nick to elliott.
02:49:21 -!- elliott has quit (Changing host).
02:49:21 -!- elliott has joined.
02:51:57 <elliott> meh, time to redo i guess
02:52:02 <elliott> pikhq_: quick, give my /boot partition a size
02:54:38 -!- NDandy has joined.
02:54:50 <NDandy> What up, yo?
02:55:04 <elliott> NDandy: Pssst, give my /boot partition a size. It's a once-in-a-lifetime opportunity,
02:55:25 <NDandy> Hmm
02:55:30 <NDandy> What's the upper bound?
02:55:35 <NDandy> And what are you booting?
02:55:39 <elliott> Probably 100. And Linux.
02:55:45 <NDandy> I usually go for 4 GB or so
02:55:51 <elliott> ...for /boot?
02:55:57 <elliott> How big are your kernels?
02:56:04 <pikhq_> I tend to go with 100M.
02:56:07 <elliott> Even 100 is massively overshooting it if you're not a kernel dev :P
02:56:07 <pikhq_> And that's overkill.
02:56:15 <NDandy> I suppose
02:56:19 <NDandy> I just overdo space
02:56:21 <elliott> How big are your disks
02:56:22 <NDandy> It's so cheap
02:56:25 <elliott> df -h
02:56:28 <elliott> How much of /boot is being used :P
02:56:36 <elliott> It'll be like one percent of a percent.
02:56:40 <pikhq_> 20M!
02:56:41 <NDandy> OS X, remember?
02:56:50 <elliott> Oh.
02:56:55 <NDandy> Also, go 100M
02:56:58 <pikhq_> initrd is apparently huge.
02:56:58 <elliott> pikhq_: Ooh ooh should I make it 100 or 128.
02:57:01 <NDandy> Should be sufficient
02:57:10 <elliott> Oh wait this isn't an SSD.
02:57:11 <NDandy> Also, any awk wizards, perchance?
02:57:12 <elliott> 100 it is
02:57:17 <elliott> NDandy: I'm ... decent at awk.
02:57:19 <pikhq_> elliott: 100 MB or 128 MiB, :)
02:57:26 <elliott> I wrote some part of a Lisp in awk once.
02:57:31 <NDandy> elliott: That makes you better than me, most likely
02:57:41 <NDandy> I'm just trying to save some time at work, and I'm almost there
02:58:26 <elliott> To be perfectly honest, Perl is probably less painful than awk.
02:58:35 <elliott> It's way uglier, but you run into awk's limitations really qucikly.
02:59:08 <NDandy> This script is pretty ugly, anyway
02:59:09 <NDandy> http://hpaste.org/53187
02:59:26 <NDandy> Data I'm working with: http://giraffe.uvm.edu/~rgweb/batch/enrollment/curr_enroll_201101.txt
03:00:09 <elliott> So what's the problem
03:00:13 <elliott> Also, are you meant to use gsub like that
03:00:14 <NDandy> I could probably just pipe through grep a few times to get the same effect, but I wanted to try something new
03:00:20 <elliott> Pretty sure gsub returns a string
03:00:22 <oerjan> i'm rather awkward at awk
03:00:24 <elliott> And you're meant to use it in the {} part
03:00:29 <elliott> I might be wrong though :P
03:00:35 <NDandy> Well, it works, and that's what I'm working with :D
03:00:39 <elliott> Fair enough
03:00:54 <elliott> I'm so glad this livecd gives me a large framebuffer console
03:00:58 <elliott> Or this would be unbearable
03:00:59 <elliott> IRC, I mean
03:01:10 <NDandy> I just want to add the numbers at $9 when $2 is equal on multiple lines
03:01:23 <NDandy> <3 livecds
03:01:36 -!- MDude has changed nick to MSleep.
03:01:39 <elliott> I don't get your explanation of whaty ou want to do
03:01:57 <NDandy> $9 is the number of students enrolled in a particular class
03:02:01 <NDandy> $2 is the class number
03:02:12 <elliott> So you want to consolidate lines?
03:02:30 <NDandy> Right, and I'd like to add the values in $9 at the same time
03:02:47 <elliott> BEGIN{n=0;foo=""} $2==foo{n+=$9} {print n; foo=$2; n=$9}
03:02:51 <elliott> There's something to start you off with
03:02:56 <elliott> Note that it prints 0 on startup...
03:03:19 <elliott> holy crap
03:03:29 <elliott> guy in #archlinux
03:03:35 <elliott> trying to get openbox to work
03:03:40 <elliott> turns out he hasn't got x started
03:03:42 <elliott> people tell him to install it
03:03:46 <elliott> he says he opted not to install x
03:03:51 <elliott> they tell him openbox needs x
03:03:56 <elliott> he says he thought x was just another wm like openbox :P
03:04:15 <elliott> arch users: like ubuntu users, but with chainsaws
03:08:52 -!- elliott has quit (Read error: Connection reset by peer).
03:16:32 <variable> Are there any languages on the esowiki with "random" effects ?
03:16:39 <variable> for certain operators or functions
03:18:25 <oklopol> noit o' mnain worb for instance
03:18:38 <oklopol> is pretty random
03:18:53 -!- augur has quit (Remote host closed the connection).
03:19:25 <Madoka-Kaname> @hoogle m a -> m a -> a -> a -> a -> m a
03:19:26 <lambdabot> Text.Parsec.Error showErrorMessages :: String -> String -> String -> String -> String -> [Message] -> String
03:19:27 <lambdabot> Text.ParserCombinators.Parsec.Error showErrorMessages :: String -> String -> String -> String -> String -> [Message] -> String
03:19:27 <lambdabot> Control.Monad liftM5 :: Monad m => (a1 -> a2 -> a3 -> a4 -> a5 -> r) -> m a1 -> m a2 -> m a3 -> m a4 -> m a5 -> m r
03:19:30 <Madoka-Kaname> @hoogle m a -> m a -> (a -> a -> a )-> m a
03:19:31 <lambdabot> Data.IntMap unionWith :: (a -> a -> a) -> IntMap a -> IntMap a -> IntMap a
03:19:31 <lambdabot> Data.IntMap intersectionWith :: (a -> b -> a) -> IntMap a -> IntMap b -> IntMap a
03:19:31 <lambdabot> Data.List deleteFirstsBy :: (a -> a -> Bool) -> [a] -> [a] -> [a]
03:19:39 <Madoka-Kaname> @hoogle m a -> m a -> (a -> a -> a) -> m a
03:19:40 <lambdabot> Data.IntMap unionWith :: (a -> a -> a) -> IntMap a -> IntMap a -> IntMap a
03:19:40 <lambdabot> Data.IntMap intersectionWith :: (a -> b -> a) -> IntMap a -> IntMap b -> IntMap a
03:19:40 <lambdabot> Data.List deleteFirstsBy :: (a -> a -> Bool) -> [a] -> [a] -> [a]
03:20:13 <Madoka-Kaname> @hoogle (a -> b -> c) -> m a -> m b -> m c
03:20:14 <lambdabot> Control.Monad liftM2 :: Monad m => (a1 -> a2 -> r) -> m a1 -> m a2 -> m r
03:20:15 <lambdabot> Control.Applicative liftA2 :: Applicative f => (a -> b -> c) -> f a -> f b -> f c
03:20:15 <lambdabot> Prelude zipWith :: (a -> b -> c) -> [a] -> [b] -> [c]
03:20:18 <Madoka-Kaname> @src liftM2
03:20:19 <lambdabot> liftM2 f m1 m2 = do { x1 <- m1; x2 <- m2; return (f x1 x2) }
03:20:28 <oerjan> :t liftA2
03:20:29 <lambdabot> forall a b c (f :: * -> *). (Applicative f) => (a -> b -> c) -> f a -> f b -> f c
03:20:43 <oerjan> oh it was there
03:21:26 <oerjan> @src liftA2
03:21:26 <lambdabot> liftA2 f a b = f <$> a <*> b
03:22:14 -!- augur has joined.
03:22:23 -!- copumpkin has quit (Ping timeout: 258 seconds).
03:22:33 -!- copumpkin has joined.
03:25:41 -!- augur has quit (Remote host closed the connection).
03:40:42 -!- CakeProphet has joined.
03:40:43 -!- CakeProphet has quit (Changing host).
03:40:43 -!- CakeProphet has joined.
03:51:49 -!- NDandy has quit (Quit: brb, Troll 2).
03:57:25 -!- elliott has joined.
03:57:33 <elliott> sup
03:59:22 <shachaf> elliott: kmc's exciting bug is up.
03:59:26 <shachaf> http://hpaste.org/53188
03:59:54 <elliott> shachaf: That's only a bug because people project their desires onto unsafePerformIO.
04:00:09 <oerjan> elliott: i appear to have started archive binging yet another fantasy gamer comic
04:00:20 <elliott> Which
04:00:25 <oerjan> XD
04:00:28 <shachaf> elliott: Desires like "it should do what it says it'll do"?
04:00:44 <elliott> shachaf: Where does unsafePerformIO guarantee the IO will only be done once?
04:00:55 <shachaf> elliott: In GHC?
04:01:04 <elliott> shachaf: You're writing unportable programs???
04:01:11 <elliott> GHC shouldn't support such riff-raff.
04:01:23 <shachaf> elliott: http://www.haskell.org/ghc/docs/latest/html/libraries/base/System-IO-Unsafe.html
04:01:56 <elliott> Yes yes that's just the evil effects of popular demand.
04:02:15 <kmc> that's deep, man
04:02:27 <elliott> See, people demand the value of IO actions.
04:02:28 <elliott> Popularly.
04:02:32 <elliott> And... yeah.
04:03:27 <shachaf> kmc: Since when are you in here?
04:03:32 <elliott> Since ages.
04:03:34 <elliott> It's an infestation.
04:03:51 <oerjan> `quote kmc
04:03:53 <HackEgo> No output.
04:04:19 <oerjan> he doesn't deign _us_ with quotable material though
04:05:27 -!- Darth_Cliche has joined.
04:07:25 <oerjan> elliott: why http://yafgc.net/ of course
04:07:38 <oerjan> i thought i'd made that _perfectly_ clear
04:07:54 * oerjan coughs
04:08:46 <elliott> That oerjan. So wacky.
04:08:54 <elliott> pikhq_: You use Chromium and xfwm4, right?
04:08:59 -!- DCliche has quit (Ping timeout: 260 seconds).
04:09:34 <pikhq_> Firefox and xfwm4
04:09:41 <elliott> Oh. I thought you used Chromium.
04:09:52 * elliott is trying to get it to not look like shit (technical term).
04:11:27 <oerjan> hm, wasn't there a ghc function for specifically preventing more than one thread from entering a thunk?
04:11:44 <shachaf> oerjan: noDuplicate?
04:11:45 <elliott> well there's the unsafeDupablePerformIO mess
04:11:49 <shachaf> That's what unsafePerformIO uses.
04:11:54 <shachaf> kmc is full of quotable material, by the way.
04:12:04 <shachaf> @quote kmc
04:12:04 <lambdabot> kmc says: fuck me with a rusty chainsaw
04:12:13 <kmc> oh dear
04:12:21 <elliott> It's better than most of our quotse.
04:12:22 <shachaf> Is that cheater?
04:12:28 <oerjan> shachaf: oh so it _is_ actually supposed to prevent that thing...?
04:12:31 <kmc> it sounds like something i *would* say
04:12:32 <shachaf> elliott: ..."quotse"?
04:12:36 <elliott> shachaf: You're not meant to ping him.
04:12:39 <elliott> Also yes, quotse.
04:12:40 <kmc> i'm amused because whenever i poke my head in here, you guys are talking about haskell
04:12:42 <elliott> http://quotse.cx/
04:12:44 <kmc> the real esoteric language
04:12:52 <elliott> kmc: We gave up on finding anything more esoteric.
04:12:56 <shachaf> kmc: Don't worry, they talk about C++ too.
04:13:01 <kmc> we have those esoteromorphisms
04:13:01 <shachaf> @quote kmc eso
04:13:02 <lambdabot> kmc says: maybe the 9,639,482nd time we argue about C++ we will finally resolve the issue
04:13:04 <kmc> you can't beat that
04:13:09 <oerjan> shachaf: hey that's slander!
04:13:16 <shachaf> @quote kmc eso
04:13:16 <lambdabot> kmc says: C++ is at least interesting to learn. it's a good esolang
04:13:16 <kmc> haha shachaf, that worked
04:13:37 <kmc> @quote kmc
04:13:38 <lambdabot> kmc says: type constructors are "functions" that operate on types
04:13:43 <shachaf> kmc: It's just because 90% of your quotes are about C++.
04:13:45 <kmc> why is that quotable
04:13:46 <elliott> What a quote.
04:13:49 <kmc> @quote kmc c\+\+
04:13:49 <elliott> I'm in stitches.
04:13:49 <lambdabot> kmc says: maybe the 9,639,482nd time we argue about C++ we will finally resolve the issue
04:13:51 <kmc> @quote kmc c\+\+
04:13:51 <lambdabot> kmc says: I enjoy it when people write "C/C++" on their resume as if it were one language... so "F#/FORTRAN/Forth", "Perl/Python/Pascal", "Ruby/REBOL/R"
04:14:00 <elliott> @quote kmc kmc
04:14:01 <lambdabot> kmc says: <kmc> this is a bit too Rube Goldberg for me to be totally happy trusting it to run a cutting laser <kmc> but oh well
04:14:53 <oerjan> kmc: well _some_ of our recent haskell talk was about evincar trying to use parsec for his esolang
04:15:09 <kmc> clearly his esolang should be a haskell EDSL
04:15:14 <shachaf> oerjan: Oh, give it up; the only thing you ever talk about in this channel is Haskell.
04:15:16 <elliott> oerjan: Oh, oh no.
04:15:22 <kmc> Esolang Demented pSychopathic Language
04:15:25 <elliott> oerjan: No no no, I am 99% sure evincar does not consider that an esolang.
04:15:32 <elliott> 99.9%, even.
04:15:34 <shachaf> elliott: I met kmc the other day; he's nothing like anything in person.
04:15:39 <elliott> I believe he has even stated this.
04:15:40 <pikhq_> shachaf: And being Nørsë.
04:15:42 <kmc> i am a non-entity
04:15:55 <shachaf> Also, there was no LSD involved. Which was kind of weird.
04:15:58 <kmc> welcome to Numberwang, the numbers quiz that's simply everyone!
04:16:00 <elliott> kmc: Say something funny.
04:16:06 <kmc> COCKS
04:16:26 <elliott> kmc: No that wasn't funny you lose sorry.
04:16:27 <elliott> oerjan: Ban him.
04:16:32 <kmc> ffffuuuuuuuu
04:16:38 <elliott> oerjan: Ban him twice for that.
04:16:48 <shachaf> Ooh, we're handing out bans?
04:16:50 <shachaf> elliott: u mad?
04:17:04 <elliott> Exceedingly!
04:17:28 <shachaf> yo elliawtt, i hird u mad, so i put all the things in your things so u can mad while u mad
04:17:28 -!- Zuu2 has joined.
04:17:33 <pikhq_> In kmc's IRC comment "COCKS", kmc makes a clear appeal to the most traditional yet ever-poignant theme of IRC humor: the penis. This mention elucidates laughter amongst all who hear it. Truly, "COCKS" is a masterpiece.
04:17:45 <elliott> Let's talk about Haskell again.
04:18:09 <kmc> truly cocks
04:18:11 <shachaf> @google "invented the mysterious force"
04:18:12 <lambdabot> http://qdb.rawrnix.com/?browse&3
04:18:12 <lambdabot> Title: Browse Quotes
04:18:12 <kmc> @quote cocks
04:18:13 <lambdabot> Tinned_Tuna says: "Phwoar, she's got a nice set of tits and a nice fat pair of cocksucking lips"
04:18:17 <elliott> `addquote <kmc> truly cocks
04:18:19 <HackEgo> 698) <kmc> truly cocks
04:18:26 <elliott> `delquote 698
04:18:28 <HackEgo> ​*poof*
04:18:29 <kmc> haha that's allowed but not @vixen?
04:18:32 <elliott> `addquote <kmc> COCKS [...] <kmc> truly cocks
04:18:32 <kmc> @vixen cocks
04:18:33 <lambdabot> Solutions are not the answer.
04:18:34 <HackEgo> 698) <kmc> COCKS [...] <kmc> truly cocks
04:19:37 -!- CakeProphet has quit (Ping timeout: 240 seconds).
04:20:20 * shachaf doesn't get it.
04:21:37 -!- Zuu has quit (Ping timeout: 258 seconds).
04:28:10 -!- BeholdMyGlory has quit (Ping timeout: 252 seconds).
04:29:20 -!- augur has joined.
04:33:32 -!- copumpkin has quit (Ping timeout: 244 seconds).
04:33:42 -!- copumpkin has joined.
05:41:46 -!- oerjan has quit (Quit: Good night).
05:55:09 <olsner> oh, kmc is here now
05:56:42 -!- Darth_Cliche has quit (Quit: You are now graced with my absence.).
06:00:22 <kmc> i'm always here
06:00:24 <kmc> watching you
06:11:40 <elliott> reassuring
06:25:49 <elliott> I wonder if it's morally acceptable to use an old GHC.
06:25:56 <elliott> I wonder if I will be able to sleep at night.
06:26:04 <shachaf> elliott: How old?
06:26:10 <elliott> shachaf: 7.0.3
06:26:19 <shachaf> (In general, no, it's not, and no, you won't.)
06:26:22 <shachaf> Oh, that's OK.
06:26:38 <elliott> But it's not the latest-and-greatest. :(
06:26:40 <shachaf> You're not supposed to use 7.w.
06:26:47 <shachaf> Nor 7.2.
06:26:50 <elliott> 7.w is the best.
06:27:06 <elliott> $ ghc --version
06:27:19 <elliott> The Glorious Glasgow Haskell Compilation System, version 7.w "the best version"
06:28:22 <shachaf> More like 7.ω
06:29:47 <elliott> Hey, why don't we have a McCarthy topic yet?
06:30:02 -!- elliott has set topic: EPL evening school assignments! http://tinyurl.com/5stnu5n | It's the end of an era | RIP John McCarthy) | http://codu.org/logs/_esoteric/.
06:30:10 <elliott> There, that's my bare minimum contribution to society.
06:31:32 <elliott> shachaf: If I regret using this GHC you're getting the blame.
06:32:54 <shachaf> Can I handle elliott's wrath?
06:33:03 <elliott> No.
06:37:06 <pikhq_> elliott's wrath destroyed ð.
06:37:19 <pikhq_> Don't make him destroy d, too.
06:37:44 <elliott> I wonder if Arch has a sufficiently large portion of Haskell that I can avoid "cabal install" entirely.
06:37:51 <elliott> That would significantly improve the quality of my life.
06:38:32 -!- elliott has quit (Quit: Leaving).
06:39:00 -!- elliott has joined.
06:48:05 <elliott> Hmph.
06:48:17 <elliott> This library I'm binding to Haskell should be written in Haskell instead.
06:49:05 <shachaf> Rewrite it.
06:49:08 <shachaf> You know you want to.
06:49:16 * shachaf waves the NIH under elliott's nose.
06:49:33 <elliott> shachaf: There is nooo way I am enthusiastic enough about this to rewrite it.
06:49:48 <shachaf> About what?
06:50:25 <elliott> This. Are you even paying attention?
06:53:09 <olsner> just rewrite it, that thing sucks
06:53:17 <olsner> whatever it is
06:54:36 <elliott> It is also waaay more code than I can be bothered to write.
06:55:37 <olsner> right, but it will be short and trivial in haskell! obviously.
07:01:07 <shachaf> Heart of the Oak mace, everybody.
07:01:35 <shachaf> elliott: Also, you're duplicating less for me, in Haskell.
07:01:49 <elliott> What
07:02:14 <shachaf> /bin/less
07:02:19 <elliott> Ah
07:02:24 <elliott> main = system "less"
07:02:27 <shachaf> shachaf@argon:~$ which less
07:02:27 <shachaf> /usr/bin/less
07:02:28 <elliott> It takes no arguments.
07:02:31 <elliott> That's the beauty of it.
07:02:38 <shachaf> Whatever.
07:02:56 <shachaf> Anyway, you're making one that lets you say "go to the end of the input that you *currently have*, but don't try to go beyond it".
07:03:25 <shachaf> When less tries to go beyond it, it freezes in such a way that the only way to unfreeze is to wait for the input to end or ^C (which kills the process).
07:05:01 <elliott> shachaf: http://www.opensource.org/licenses/Fair
07:05:34 <shachaf> elliott: Looks nice.
07:05:41 <elliott> Wait wait I've got it.
07:05:42 <shachaf> Still capitalized, though.
07:05:49 <elliott> You can do whatever. DISCLAIMER: FUCK YOU
07:06:07 <shachaf> zomg brilliant
07:06:16 <elliott> shachaf: The WTFPL lets you supply your own disclaimer. If that helps.
07:06:17 <shachaf> elliott: The Nobel Prize in Mathematics for you!
07:06:50 <elliott> Ooh, this library is Friends with me.
07:07:03 <elliott> It lets you supply your own allocator, so I can give it one that allocates on the Haskell heap.
07:07:16 <elliott> Hmm, I wonder if that's altogether allowed.
07:07:25 <elliott> I guess so; it'll just look like bytes to Haskell.
07:07:34 <elliott> I mean, that's kind of what ForeignPtrs are.
07:12:36 <Patashu> Does anyone know of an object recognition algorithm that could be used to detect cars in video that's either implemented in opencv or could be implemented in opencv?
07:12:38 -!- ive has quit (Quit: leaving).
07:12:48 <Patashu> I'm thinking like SIFT or SURF or something
07:13:02 <elliott> You're in luck!! I know ABSOLUTELY NOTHING about that.
07:13:06 <Patashu> \o/
07:13:06 <myndzi\> |
07:13:06 <myndzi\> >\
07:14:26 <Patashu> It's like one of my previous subjects, where you don't have to come up with a revolutionary new object detection algorithm (cuz you only have like 3 weeks) just use one that exists
07:16:21 <elliott> type Allocator = Ptr () -> CSize -> Ptr () -> IO (Ptr ())
07:16:22 <elliott> SO BEAUTIFUL.
07:38:28 <elliott> {-# NOINLINE allocator #-}
07:38:28 <elliott> allocator :: FunPtr Allocator
07:38:28 <elliott> allocator = unsafePerformIO $ mkAllocator allocate
07:38:28 <elliott> where allocate ptr 0 _ = free ptr
07:38:28 <elliott> allocate ptr size _
07:38:29 <elliott> | ptr == nullPtr = mallocBytes size
07:38:31 <elliott> | otherwise = reallocBytes ptr size
07:38:34 <elliott> Yessssss.
07:42:27 -!- ais523 has joined.
07:49:41 <elliott> Hi ais523.
07:49:56 <ais523> hi elliott
07:50:13 <elliott> It occurs to me that using a top-level FunPtr like that is probably Not The Way. It also occurs to me that shachaf has been selected to Know The Way.
07:50:55 <ais523> elliott: I vaguely feel that what you just wrote is somewhat out of context
07:51:00 <ais523> but it doesn't otherwise look zzo38y
07:51:30 <elliott> Context is:
07:51:32 <elliott> <elliott> {-# NOINLINE allocator #-}
07:51:32 <elliott> <elliott> allocator :: FunPtr Allocator
07:51:32 <elliott> <elliott> allocator = unsafePerformIO $ mkAllocator allocate
07:51:32 <elliott> <elliott> where allocate ptr 0 _ = free ptr
07:51:32 <elliott> <elliott> allocate ptr size _
07:51:33 <elliott> <elliott> | ptr == nullPtr = mallocBytes size
07:51:35 <elliott> <elliott> | otherwise = reallocBytes ptr size
07:51:37 <elliott> <elliott> Yessssss.
07:53:13 -!- ais523 has quit (Remote host closed the connection).
07:53:27 -!- ais523 has joined.
07:53:33 <ais523> <elliott> Context is:
07:53:39 <ais523> such a nice place for the connection to drop
07:53:46 <elliott> <elliott> <elliott> {-# NOINLINE allocator #-}
07:53:47 <elliott> <elliott> <elliott> allocator :: FunPtr Allocator
07:53:47 <elliott> <elliott> <elliott> allocator = unsafePerformIO $ mkAllocator allocate
07:53:47 <elliott> <elliott> <elliott> where allocate ptr 0 _ = free ptr
07:53:47 <elliott> <elliott> <elliott> allocate ptr size _
07:53:47 <elliott> <elliott> <elliott> | ptr == nullPtr = mallocBytes size
07:53:49 <elliott> <elliott> <elliott> | otherwise = reallocBytes ptr size
07:53:51 <elliott> <elliott> <elliott> Yessssss.
07:54:40 <ais523> are you trying to embed C into Haskell?
07:55:16 <elliott> How do you always focus on the most mundane aspect of whatever ridiculous thing I am doing at any given time :P
07:55:23 <elliott> "You're... using an FFI????"
07:55:44 <ais523> <elliott> How do you always focus on the most mundane aspect of whatever ridiculous thing I am doing at any given time :P <--- because it's the only bit I understand
07:55:50 <elliott> lol
08:01:06 -!- monqy has quit (Quit: hello).
08:07:29 <ais523> elliott: I could almost accuse you of doing the same with Anarchy
08:07:43 <elliott> :D
08:07:52 <elliott> I've barely said anything about Anarchy
08:07:55 -!- Vorpal has joined.
08:10:01 <ais523> indeed
08:21:07 -!- Ngevd has joined.
08:21:35 <elliott> ghc: error: a C finalizer called back into Haskell.
08:21:35 <elliott> This was previously allowed, but is disallowed in GHC 6.10.2 and later.
08:21:35 <elliott> To create finalizers that may call back into Haskell, use
08:21:35 <elliott> Foreign.Concurrent.newForeignPtr instead of Foreign.newForeignPtr.
08:21:35 <elliott> oh jesus
08:21:43 <Ngevd> HellO!
08:22:09 <elliott> "These finalizers necessarily run in a separate thread"
08:22:11 <elliott> uggh this is going to be so slow
08:30:23 <Ngevd> I think I have found an XKCD reference in Learn You A Haskell
08:30:31 <Ngevd> Or possibly the other way around
08:30:50 <elliott> It's lowercase.
08:31:08 <Ngevd> Upper case looks like it has potential to be funnier
08:31:27 <Ngevd> Of course, dozens of people have probably seen this reference before
08:31:44 <Ngevd> xkcd.com/221/ and the first code example in http://learnyouahaskell.com/input-and-output#randomness
08:44:11 <Vorpal> elliott, hi, what are you doing there+
08:44:14 <Vorpal> s/+/?/
08:44:21 <elliott> Define there.
08:44:34 <Vorpal> elliott, with the haskell<->C stuff
08:44:46 <elliott> FFI.
08:44:50 <Vorpal> ah
08:44:56 <Vorpal> elliott, for what ultimate purpose?
08:45:10 <elliott> A vote-counting IRC bot.
08:45:14 <Vorpal> heh
08:45:19 <Vorpal> elliott, why would that need FFI?
08:45:40 <elliott> Let's lie and say it's for optimisation.
08:45:51 <Vorpal> elliott, what is the truth then?
08:46:05 <elliott> Not that.
08:46:21 <Vorpal> elliott, okay
08:49:03 <fizzie> Ngevd: Synchronicitity; the slightly related Dilbert strip was published pretty close to ten years ago: http://dilbert.com/strips/comic/2001-10-25/
08:49:34 <elliott> Was that thing always in colour?
08:49:55 <Ngevd> Hmmm
08:51:32 <fizzie> I vaguely recall seeing it black-and-white, but maybe I'm remembering someone's printout on the wall.
08:52:00 <ais523> fizzie: I've seen it black-and-white in a black-and-white compilation book
08:52:01 <Ngevd> I've got a collection that has that story arc but not that strip in black and white
08:52:09 <ais523> I think there are both black-and-white versions and coloured ones
08:53:20 <Ngevd> In other news, my Piet implementation in Haskell is off to a good start
08:54:15 <elliott> Man, why libraries gotta be not thread safe.
08:54:52 <Ngevd> It is approximately now when I had the idea of using head and (:) as the stack
08:55:17 <elliott> don't use head use pattern-matching
08:55:58 <Ngevd> I'll try
08:58:03 <Ngevd> Numeric input:
08:58:18 <Ngevd> Actually, I'll think I'll test it first
09:00:12 <Ngevd> Prepare yourself for some awful Haskell
09:00:15 <Ngevd> inn input stack output = let (toPush, inLeft):_ = reads (dropWhile (not . isDigit) input) :: [(Integer, String)] in (inLeft, toPush:stack, output)
09:00:56 <Ngevd> Just found a downside
09:01:26 <Ngevd> Yup, fails when there isn't any numbers in the input string
09:19:52 -!- elliott has quit (Ping timeout: 255 seconds).
10:25:36 -!- sllide has joined.
10:39:07 -!- cheater has quit (Ping timeout: 256 seconds).
10:40:33 -!- GreaseMonkey has quit (Quit: The Other Game).
11:09:10 <Ngevd> My three-cell brainfuck to Piet translator doesn't work
11:10:01 <Vorpal> three-cell brainfuck?
11:10:12 <Vorpal> what is even the point of that
11:10:23 <Ngevd> Oerjan proved it Turing-Complete
11:10:36 <Vorpal> Ngevd, bignums?
11:10:42 <Ngevd> Yeah
11:10:47 <Vorpal> right
11:11:59 <Vorpal> is there any esolang based on matrix operations?
11:12:53 <Vorpal> hm searching turns up http://esolangs.org/wiki/Matrix
11:13:45 <Vorpal> eh, looks underspeced and probably useless
11:20:30 <fizzie> MATLAB. (Yeah, yeah; not esolang, not based on matrix operations. But you could never tell from the name.)
11:20:57 <Ngevd> I seem to remember a tool to translate Piet into some other language
11:21:11 <Ngevd> But I saw this 2007-8
11:21:17 <Ngevd> Don't remember to well
11:21:47 <Ngevd> I just remember some wiggly text
11:21:57 <Ngevd> Snaking down the screen
11:24:01 -!- BeholdMyGlory has joined.
11:24:37 <fizzie> I did something Piet-related, but I've already forgotten what it was.
11:25:39 <fizzie> It seems to be an incomplete LLVM-driven Piet compiler.
11:28:18 <fizzie> There also seems to be a script which translates a subset of befunge-93 (no stringmode, g/p, ?, #, 0-9, \, according to comments) into Piet.
11:28:29 <Ngevd> That may have beeb it
11:28:32 <Ngevd> *been
11:30:06 <fizzie> Timestamps on these are early 2010, but of course that might just be the timestamps.
11:34:48 <Deewiant> This is why you put a "File created: <timestamp>" comment in every interesting file
11:36:34 <fizzie> Fortunately, none of my files are especially interesting.
11:37:05 <Deewiant> They don't need to be especially interesting, just interesting
11:38:17 <Ngevd> Well, my Brainfuck to Piet translator has an error I can't work out
11:38:22 <Ngevd> The error is "*** Exception: bf2piet.hs:7:18-100: Non-exhaustive patterns in lambda
11:38:22 <Ngevd> "
11:38:46 <Deewiant> > (\(Just x) -> x) Nothing
11:38:46 <lambdabot> *Exception: <interactive>:3:1-14: Non-exhaustive patterns in lambda
11:38:58 <Ngevd> Line 7 is "translation ']' = \(x,yh:yi,z) -> (x ++ "dup bnz." ++ (show yh) ++ "a\n" ++ (show yh) ++ "b:\n",yi,z)"
11:39:22 <Deewiant> > (\(x,yh:yi,z) -> "foo") (1,[],2)
11:39:23 <lambdabot> "*Exception: <interactive>:3:1-21: Non-exhaustive patterns in lambda
11:41:52 <Ngevd> Worked it out
11:42:00 <Ngevd> It's going through the program backwards
11:42:59 <Ngevd> Thanks!
11:43:03 -!- CakeProphet has joined.
11:43:03 -!- CakeProphet has quit (Changing host).
11:43:03 -!- CakeProphet has joined.
11:44:16 <Ngevd> I bet none of you had had that problem in a program before
11:49:40 <Vorpal> Ngevd, what problem?
11:49:57 <Ngevd> Having an error because the input is being parsed backwards
11:50:18 <Vorpal> Ngevd, err you were parsing bf from the end of the string? What?
11:50:26 <Ngevd> Somehow, yes
11:50:36 <Vorpal> ah, not intentionally, right
11:50:45 <Ngevd> I'll copy the full program somewhere
11:51:32 <Vorpal> don't expect me to help debug it. Too tired atm.
11:51:44 <Ngevd> I've got it to work!
11:51:55 <Vorpal> ah okay
11:52:07 <Ngevd> http://codepad.org/CMnvQoru
11:54:00 <Ngevd> I won't pretend it's the best of programs
11:54:40 <Vorpal> that seems like a very simple translation done there. I wasn't aware bf mapped that easily into piet
11:55:05 <Vorpal> wait, it doesn't generate an image anywhere, that can't work
11:55:15 <Ngevd> Read the comment at the top
11:55:30 <Ngevd> And open the link at the end of the comment
11:55:35 <Vorpal> was wider than my screen. 80 cols ftw
11:55:52 <Ngevd> I forgot to linebreak that comment
11:56:12 <Ngevd> http://www.toothycat.net/wiki/wiki.pl?MoonShadow/Piet
11:57:31 <Vorpal> hm
11:57:44 <Ngevd> Not the most efficient way to do it, I'll admit
11:58:26 <Ngevd> If I translate my code to Python, we'll have a Fractran -> Piet translator that goes through three different languages
11:58:53 <Vorpal> Fractan being?
11:59:16 <Ngevd> http://esoteric.voxelperfect.net/wiki/Fractran
11:59:37 <Ngevd> Essentially the same to iterated collatz functions
12:00:23 <Vorpal> ah
12:00:25 <Ngevd> I am proud of line 14 of my program
12:00:29 <Vorpal> right
12:01:06 <Vorpal> an interpreter in J?!
12:01:24 <Ngevd> Where!?
12:01:45 <Ngevd> Oh, there
12:07:40 <fizzie> Ngevd: Does that not need a "0 0 0" in front of the Piet-asm program to initialize the fake-tape?
12:07:49 <Ngevd> Damn, so it does
12:08:20 <Ngevd> I can fix that with 10 characters
12:08:42 <Ngevd> http://codepad.org/u2BOIo9w
12:09:03 <Ngevd> No wait
12:09:07 <Ngevd> http://codepad.org/7E5Fw9Pk
12:09:08 <fizzie> Oh, I was assuming you'd have put it in the initial state of foldr to save the ++.
12:09:20 <Ngevd> That would be even better!
12:09:56 <Ngevd> http://codepad.org/elKaoEa8
12:12:41 <fizzie> Also wouldn't translation '>' (x,y,z) = (x ++ "...\n", y, z) save a bit of typing when compared to translation '>' = \(x, y, z) -> (...)?
12:13:11 <Ngevd> Yes it would
12:13:18 <Ngevd> By a long way
12:15:19 <fizzie> Then you could probably use it as the first parameter of your fold, and fold the bf_program directly, I'd think. At least with some slight changes.
12:16:40 <fizzie> foldl (flip translation) ("0 0 0\n", [], 0) bf_program or something, maybe. Can't be bothered to think it through.
12:18:12 <Ngevd> Seems to work
12:20:34 <Ngevd> http://codepad.org/4kfGocPC
12:23:55 -!- sllide has quit (Read error: Connection reset by peer).
12:27:35 <Ngevd> Now, where could I put this so it would be seen by people who vaguely care?
12:30:39 -!- ais523 has quit (Read error: Connection reset by peer).
12:31:50 -!- ais523 has joined.
12:33:09 <fizzie> There's that EsoInterpreters page, but strictly speaking it's only for interpreters. Possibly there could be a similar matrix for compilers from one language to another.
12:35:38 -!- The_Cat has joined.
12:55:21 <atehwa> elliott: it's not hard for those who're used to building data structures from scratch, which my students most definitely are not.
12:55:59 <atehwa> (what is the way to leave delayed messages on the channel?)
12:56:06 <Ngevd> The @tell thing
12:56:12 <Ngevd> @tell
12:56:12 <lambdabot> Plugin `tell' failed with: Prelude.head: empty list
12:56:28 <Ngevd> I don't know how to get help with lambdabot
12:56:52 <fizzie> @help tell
12:56:52 <lambdabot> tell <nick> <message>. When <nick> shows activity, tell them <message>.
12:57:07 <Ngevd> Although elliott logreads
12:57:19 <Ngevd> It'd probably be safer to @tell
12:57:26 <fizzie> Also Freenode MemoServ. (Is that thing still alive? Does anyone use that?)
12:57:46 <ais523> fizzie: it's still alive, and is used on occasion
12:58:05 <fizzie> "-MemoServ- You have 0 memos (0 new)." :(
12:58:37 <fizzie> You can also ask fungot to forward messages, but he's not exactly reliable.
12:58:38 <fungot> fizzie: only i don't sing it, bruno?" said bruno. " what, you know, is fnord in the week. and that's exactly our plan i can assure you!"
12:59:17 <Ngevd> fungot, will you tell Ngevd if doing this works?
12:59:18 <fungot> Ngevd: ' she's tired, poor thing!' cried the tiger-lily. ' as to poetry, you know!" bruno said, to do a ' bit' of shakespeare when there was nobody to look at all things with a sort of mist now, i daresay you haven't had much practice.'
13:11:47 <fizzie> This I-triple-E spam is so... From: IEEE Spectrum Tech Alert <techalert@ieee.org>, Subject: With the Arduino, Now Even Your Mom Can Program
13:13:44 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
13:25:15 <Vorpal> fizzie, ... wow.
13:25:56 <Vorpal> besides isn't the Arduino AVR?
13:26:17 <Vorpal> which means non-trivial C coding in my experience.
13:28:10 <fizzie> There's an AVR chip on it, but the project also includes some sort of a tries-to-be-simple library, I believe.
13:28:27 <fizzie> And an IDE.
13:31:12 <fizzie> (The toolchain's still C/C++-based, though.)
13:39:05 -!- derdon has joined.
13:39:27 -!- boily has joined.
13:39:32 -!- ais523 has quit (Read error: Connection reset by peer).
13:41:11 -!- ais523 has joined.
13:45:58 <Vorpal> fizzie, yeah...
13:48:43 <fizzie> I really don't think it makes *programming* any simpler; might make interfacing with things easier, though.
13:49:56 <fizzie> The article itself is just on the history of Arduino. I don't know who picks (and titles) these snippets they send in this "tech alert" email.
13:53:44 -!- Phantom_Hoover has joined.
14:21:28 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
14:35:56 -!- boily has quit (Quit: WeeChat 0.3.6).
14:46:02 -!- copumpkin has joined.
15:04:46 -!- MSleep has changed nick to MDude.
15:24:41 <ais523> bleh, how am I meant to mark this question when I don't really understand it myself
15:27:31 <quintopia> ew
15:29:05 <Vorpal> ais523, ouch
15:29:20 <Vorpal> ais523, discuss with whoever formulated it?
15:29:49 <ais523> nah, I just need to focus on it more
15:29:57 <Vorpal> okay
15:31:34 -!- augur has quit (Remote host closed the connection).
16:02:24 -!- augur has joined.
16:05:52 -!- ais523 has quit (Remote host closed the connection).
16:06:27 -!- augur has quit (Remote host closed the connection).
16:11:25 <Ngevd> How do I get the output from a command line command into a file?
16:11:58 <Deewiant> command > file
16:14:05 <Ngevd> Soon, very soon
16:14:14 <fizzie> Ominous.
16:14:16 <Ngevd> I will have sort of written a brainfuck interpreter in Piet!
16:14:25 <Ngevd> Nyahahaha!
16:15:02 <fizzie> You mean you'll have something like http://www.matthias-ernst.eu/pietbrainfuck.html ?
16:16:04 <Ngevd> EXCEPT BETTER
16:16:33 <fizzie> A brainfuck-to-Piet compiler written in Haskell is not a brainfuck interpreter in Piet, though. Assuming this is still about the same thing it was.
16:16:45 -!- augur has joined.
16:16:54 <Ngevd> Trust me on this.
16:17:17 <Vorpal> Ngevd, no
16:19:53 <Phantom_Hoover> Ngevd, no, you are English.
16:21:03 -!- Zuu2 has quit (Ping timeout: 260 seconds).
16:27:43 -!- augur has quit (Remote host closed the connection).
16:31:54 -!- augur has joined.
16:35:35 -!- augur has quit (Remote host closed the connection).
16:38:50 -!- The_Cat has quit (Quit: Leaving).
16:49:57 -!- tiffany has joined.
16:50:59 -!- ais523 has joined.
16:57:09 -!- elliott has joined.
16:59:49 -!- monqy has joined.
17:00:26 -!- Ngevd has quit (Ping timeout: 258 seconds).
17:02:22 <elliott> Disappointed that there's no updates on my second day of Arch.
17:02:27 <elliott> Maybe I should use the testing repo.
17:03:35 <Deewiant> Install more stuff
17:03:56 <Phantom_Hoover> elliott, TRAITOR
17:04:17 <elliott> Phantom_Hoover: Have you seen how old Debian's ghc is.
17:04:36 <Phantom_Hoover> elliott, I know it's really old, but...
17:05:02 <olsner> a whole day and no updates!? well, if you used debian it would take a decade or two to encounter an update
17:05:07 <elliott> Deewiant: Don't say that, you'll make me want to write my "find the largest set of mutually-installable packages".
17:05:10 <elliott> program.
17:05:30 <elliott> That + Debian repos = THEE COMPLEAT LINUX
17:05:36 <elliott> olsner: lol
17:07:21 <Deewiant> elliott: Oh and re. clyde, yaourt
17:07:44 <elliott> Deewiant: Yeaaaah, I don't think I'm ever going to use yaourt again
17:07:51 <elliott> Unless they completely rewrote it
17:08:01 <Deewiant> It's a lot better than back when I switched away from it
17:08:23 <elliott> I'll... consider it.
17:08:26 <Deewiant> I.e. it isn't painfully slow
17:08:36 <Deewiant> I think that was pretty much my only issue with it
17:08:36 <monqy> it was pretty slow last I checked
17:08:42 <monqy> pretty really slow
17:08:43 <elliott> When was that
17:08:50 <monqy> I dunno amonth or two
17:08:52 <elliott> I hear they rewrote some of it in C or something
17:08:58 <olsner> hmm, I wonder if this is a bug: whenever I try to uninstall something that has dependencies on it, aptitude thinks uninstalling every package in the system is the best solution
17:09:02 <elliott> Oh, guess not then
17:09:10 <elliott> olsner: no, that's correc
17:09:11 <olsner> but if I just scroll past the whole list to the "foo: depends on something" and add those packages to the list of stuff to remove: presto, it works
17:09:11 <Deewiant> It's been fast for me since several months
17:09:11 <elliott> t
17:09:22 <elliott> Deewiant: Yeah but you use a Cray
17:09:28 <elliott> monqy: What do you use for AUR, or do you just not
17:09:31 <elliott> (I'm considering just not)
17:09:41 <Deewiant> elliott: I don't think any part of it is CPU-intensive :-P
17:10:15 <monqy> i try to avoid aur but my avoidance means i haven't had too much reason to bother switching away from yaourt
17:10:23 <monqy> i've considered it, but ehhhhhhhhhh
17:10:28 <Phantom_Hoover> The frontpaging is really starting to show in r/AskScience.
17:10:30 <Deewiant> It uses something fancy to check for updates to AUR packages in bulk instead of doing individual HTTP gets, which is nice
17:10:37 <Phantom_Hoover> There are a /lot/ more ignorant answers to questions.
17:10:38 <Deewiant> clyde was getting really slow with that
17:10:43 <olsner> yaourt? is that a funny name for yoghurt?
17:10:48 <monqy> yes
17:10:58 <Phantom_Hoover> Although the front-page questions are still good.
17:11:00 <Deewiant> olsner: It has a --sucre option
17:11:03 <Phantom_Hoover> olsner, it's French, IIRC.
17:11:14 <elliott> Maybe I'll install linux-ck
17:11:19 <elliott> That sounds like a fun way to break my system
17:11:24 <elliott> It isn't broken enough right now
17:11:36 <elliott> Wow, there's even a repo
17:11:37 <elliott> I am so lucky
17:12:57 <ais523> what's linux-ck?
17:13:07 <elliott> ais523: linux + con kolivas' patches including bfs
17:13:48 <monqy> i see fs and think filesystem instead of fuckscheduler :( help
17:14:02 <ais523> just make an fs /for/ the scheduler
17:14:04 <ais523> a bit like procfs
17:14:05 <elliott> brain filesystem
17:14:17 <elliott> a fuckscheduler sounds profitable
17:14:22 <ais523> the brainfuck scheduler would be better if it were actually written in brainfuck
17:14:41 <elliott> ais523: it's not the brainfuck scheduler
17:14:56 <elliott> Phantom_Hoover: "Please note: jokes as top-level comments, memes, and layman speculation will be downvoted and removed." heh
17:15:31 <elliott> It is completely ridiculous how much less of a hog Chromium is to Firefox.
17:15:48 <ais523> elliott: it's also ridiculous that Firefox somehow manages to be faster despite that
17:16:00 <elliott> ais523: It would be, if that were true!
17:16:02 <ais523> or has Firefox got slower since 3.6?
17:16:12 <elliott> How do you define "faster"?
17:16:14 <ais523> or is Chromium just particularly slow on my computer?
17:16:24 <elliott> I would guess so; it's very fast here.
17:16:31 <ais523> elliott: time to open a webpage, when I happen to open it in both browsers
17:16:46 <ais523> come to think of it, it's probably because Firefox is blocking JS, ads, and all those sorts of things that slow pages down
17:16:52 <ais523> which gives it something of an unfair advantage
17:26:55 -!- Gregor has set topic: EPL evening school assignments! http://tinyurl.com/5stnu5n | It's the end of an era | RIP John McCarthy | TO SHREDS! | http://codu.org/logs/_esoteric/.
17:26:58 -!- Gregor has set topic: EPL evening school assignments! http://tinyurl.com/5stnu5n | It's the end of an era | RIP John McCarthy | TO SHREDS! | http://codu.org/logs/_esoteric/.
17:27:11 <elliott> Gregor: You missed the )
17:27:36 -!- ais523_ has joined.
17:27:47 <elliott> Deewiant: Seems like pacaur, aurget, packer are decent non-yaourt options :P
17:28:17 <elliott> Although it'll be annoying to have to update AUR separately
17:28:24 <elliott> Eh, I'll just wait until I actually need an AUR package
17:28:29 -!- ais523 has quit (Disconnected by services).
17:28:32 -!- ais523_ has changed nick to ais532.
17:28:34 -!- ais532 has changed nick to ais523.
17:28:40 <elliott> ais523: you scared me for a second there
17:29:27 <ais523> typo
17:31:51 <Gregor> elliott: Ohhhh, it was a joke dur I didn't get it >_>
17:31:59 <Gregor> elliott: Not sure where to put it now :P
17:32:05 -!- Gregor has set topic: EPL evening school assignments! http://tinyurl.com/5stnu5n | It's the end of an era | RIP John McCarthy) | TO SHREDS!) | http://codu.org/logs/_esoteric/.
17:39:55 <elliott> Maan
17:40:04 <elliott> I have the most terrible job upon me
17:40:14 <elliott> I have to convince people to let me write pthreads code
17:40:29 <elliott> Not only do I have to write pthreads code, but I have to CONVINCE PEOPLE to LET ME.
17:45:17 -!- Ngevd has joined.
17:47:26 <Phantom_Hoover> elliott, I wasn't aware that pthreads was only permitted to be used by the privileged few.
17:52:28 <elliott> * \return HUBBUB_OK on success, appropriate error otherwise
17:52:33 <elliott> that is _not_ helpful >:(
17:53:46 <ais523> TIL that Steve Jobs used to drive a car with no license plates
17:53:55 <ais523> by changing it every 6 months to exploit a loophole in the law
17:53:58 -!- Darth_Cliche has joined.
17:54:31 <monqy> hubbub ok
17:56:38 <elliott> ais523: can you make all libraries thread-safe; thanks
17:56:59 <ais523> elliott: the whole ICA/SCI stuff is indirectly about thread-safety
17:57:54 <olsner> elliott: why do you want to code pthreads?
17:58:00 <elliott> olsner: I /don't/
17:59:41 <olsner> oh, you *have* to? but people won't let you?
17:59:46 <olsner> that doesn't make sense
18:03:47 <Phantom_Hoover> I hold a gun to your head and tell you to rob a bank.
18:03:49 <Phantom_Hoover> Q.E.D.
18:04:56 <ais523> Phantom_Hoover: actually, if you really need to hold someone at gunpoint, you should do so from a distance, maybe about eight feet away
18:05:14 <Phantom_Hoover> It's a hypothetical, ais.
18:05:15 <ais523> if the gun is adjacent, then it's possible to push it away in less than pretty much everyone's reaction time
18:06:02 <monqy> ais "holding people at gunpoint master" 523
18:06:32 <Phantom_Hoover> He took a hint from Wolfram to get that proof.
18:07:04 <ais523> Phantom_Hoover: ?
18:07:13 <ais523> oh, about holding people at gunpoint?
18:07:15 <Phantom_Hoover> Yes.
18:07:17 <ais523> turns out it doesn't work very well over the phone
18:07:27 <ais523> not internationally, at least
18:07:31 <elliott> I'm pointing a gun at all of you right now.
18:07:34 <ais523> I haven't tried national or local calls
18:07:35 <Phantom_Hoover> Or, well, you held someone at gunpoint and forced them to prove it.
18:07:44 <Phantom_Hoover> Much as Wolfram does.
18:07:52 <ais523> elliott: I suspect you're a little out of range
18:08:11 <ais523> in fact, the shot's probably even blocked by the curvature of the earth
18:08:16 <ais523> although I'm not sure how far off the ground you are
18:08:23 <ais523> for some reason I kind-of assumed you lived in a bungalow
18:08:53 <Phantom_Hoover> It's because construction techniques in the North aren't sophisticated enough to permit multiple storeys.
18:09:03 <elliott> I can confirm this.
18:09:03 <Phantom_Hoover> They try basements sometimes, but it never ends well.
18:10:33 <elliott> I can't believe people actually use Risc OS.
18:11:21 <ais523> elliott: I've used it! seriously
18:11:35 <elliott> Yes, me too, briefly.
18:11:37 <ais523> the computers at my primary school mostly ran either Risc OS or the BASIC interpreter on the BBC Micro
18:11:44 <elliott> Same, when I was super-young.
18:11:46 <elliott> But no: I mean like /actually use/.
18:11:46 <Phantom_Hoover> Me too, quite a bit
18:11:52 <elliott> Like /actually/ /use/.
18:11:58 <elliott> Like, people use it to do their online banking.
18:12:03 <Phantom_Hoover> My neighbour (who is like eighty) used it until a few years ago.
18:12:13 <ais523> I refuse to do online banking, and I'd imagine every TDWTF reader does too
18:12:20 -!- iamcal has quit (Remote host closed the connection).
18:12:56 <ais523> hmm, I should quote "Of all the things the problem that wasn't his was, being not his problem wasn't one of them.", because people have been quoting it a lot recently but I don't think it's been quoted in #esoteric yet
18:12:57 <elliott> ais523: It was an example (picked because I have evidence for it).
18:14:04 <elliott> [["You fool!" He swiveled towards Bob. "You don't understand at all. That job is a piece of PostScript code. The print server isn't running my numbers. The PRINTER is! It's far more powerful than you can imagine!"]]
18:14:07 <elliott> I do not regret skimming this
18:14:48 <elliott> ais523: you know, if GPUs are being used for intense computation, printers have to be next
18:14:58 <Phantom_Hoover> I am become Printer, destroyer of worlds.
18:15:05 <elliott> we'll get super-parallel general-purpose dot matrix computers, or something
18:15:13 <ais523> elliott: I've met people who've done computations on printers seriously
18:15:39 <ais523> because the printer was as powerful as the workstation, and it could compute the results faster than they could be transmitted to the printer over its relatively slow interface
18:20:01 <ais523> heh, anagolf does have PostScript
18:20:04 <ais523> I just went and checked
18:20:10 <elliott> ais523: you didn't know that?
18:20:13 <elliott> yshl or whoever does a ton of stuff with it
18:20:24 <ais523> elliott: I knew it had several languages beginning with P
18:20:30 <ais523> I couldn't remember if PostScript specifically was one of them
18:20:42 <ais523> or whether I was muddling it with PHP
18:21:34 <elliott> aha, I need AUR already
18:23:13 <elliott> Hmm, packer looks like it might be nicer than yaourt
18:23:32 <elliott> powaur too
18:25:47 -!- tiffany has quit (Quit: Leaving).
18:26:33 <olsner> crazy, risc os uses . to delimit directories and / for file extensions
18:27:01 <elliott> it's like if you deliberately tried to be as different as possible
18:27:14 <elliott> DOS should have adopted - as a dir separator when it chose / for paths
18:27:19 <elliott> ls /l -usr-bin
18:27:26 <elliott> erm
18:27:28 <elliott> for options
18:27:47 <olsner> istr, some of the really old mainframe systems also used . as a directory separator
18:28:39 <elliott> I'm really happy gmane shows those country flags
18:28:45 <elliott> because i'm learning that every risc os user is british
18:28:46 <elliott> without fail
18:29:12 <olsner> I think / for options was established well before DOS even had directories, and that that was the reason they had to invent the backslashes
18:29:15 <Deewiant> elliott: / comes from CP/M
18:29:18 -!- tiffany has joined.
18:29:23 <Deewiant> olsner: Right
18:29:30 <elliott> Yeah yeah, CP/M is just DOS--++
18:34:18 -!- tiffany has quit (Remote host closed the connection).
18:36:03 -!- tiffany has joined.
18:39:51 -!- BeholdMyGlory has quit (Ping timeout: 240 seconds).
18:42:58 <ais523> I think DOS – and Windows' impl of it – can still run CP/M programs unmodified
18:43:02 -!- BeholdMyGlory has joined.
18:43:05 <ais523> not sure if the syscall numbers are different
18:43:10 <ais523> but everything else is designed for compatibility
18:45:07 -!- augur has joined.
18:51:25 <Vorpal> I tried a bit ARMA 2. I'm quite impressed by that game. For those who don't know it is a highly realistic military sim. Think COD or Battlefield but ultra-realism added.
18:51:37 <Vorpal> very difficult though
18:52:36 <Deewiant> Red Orchestra is closer to "COD or Battlefield but ultra-realism added", Operation Flashpoint and ARMA are more large-scale
18:53:18 <Vorpal> Deewiant, hm good point. I tried Battlefield 2 once at a friends place. So my experience with those games is limited to video + about half an hour of hands on experience.
18:53:26 -!- olsner has quit (Ping timeout: 276 seconds).
18:53:55 <elliott> Why does anyone even write thread-unsafe code; answer: it's a fucking pain in C
18:54:02 <Deewiant> Or maybe Battlefield is more like it, I was thinking CoD/MoH
18:54:04 <elliott> Resolution: Everyone should write in Haskell instead; that would also save me writing bindings
18:54:14 <Vorpal> Deewiant, MoH?
18:54:17 <Deewiant> Medal of Honor
18:54:26 <elliott> `quote honor
18:54:29 <HackEgo> No output.
18:54:36 <Vorpal> ah
18:54:37 <elliott> What.
18:54:38 <elliott> `quote honour
18:54:41 <HackEgo> 28) <Deewiant> ehird: There is no h in "honour"
18:55:33 <Vorpal> ARMA 2 looks quite good. And I can turn up the graphics setting to get 30 FPS with vsync on, so somewhere between 30 and 60 FPS without vsync.
18:57:33 <Vorpal> that is ARMA 2: Reinforcement, which is both an add-on and a standalone. I have no idea if the original ARMA 2 looks as good.
18:58:26 <Vorpal> Deewiant, I have to complain about the helicopter flying though. I find it highly unrealistic after flying helis in flightsims.
18:59:06 <Vorpal> and they didn't seem to differentiate between IAS, TAS and GS.
18:59:08 <Deewiant> Are you sure the flight simulators are accurate compared to helicopter simulators? ;-)
18:59:50 <Vorpal> Deewiant, well, I know enough to say they are closer than ARMA 2. Basically, if it was realistic I wouldn't be able to fly a helicopter with my keyboard.
19:00:24 <Vorpal> there is no neutral position of the controls in a heli. They all interact with each other and the flight conditions too much for that
19:00:42 -!- Ngevd has quit (Read error: Connection reset by peer).
19:03:22 -!- Ngevd has joined.
19:05:02 -!- olsner has joined.
19:08:43 <elliott> Targets (2): gconf-3.2.2-1 licenses-2.9-1
19:08:43 <elliott> OMG UPDATES
19:08:44 <elliott> SO HAPPY
19:10:11 <elliott> [elliott@dinky hubbub]$ alsamixer
19:10:12 <elliott> cannot open mixer: No such file or directory
19:10:13 <elliott> Wait, what.
19:10:29 <elliott> `/etc/rc.d/alsa start` has been done.
19:10:31 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: /etc/rc.d/alsa: No such file or directory \ /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: /etc/rc.d/alsa: cannot execute: No such file or directory
19:14:38 <Phantom_Hoover> http://www.eastoftheweb.com/short-stories/UBooks/DeatScra.shtml
19:14:41 <Phantom_Hoover> Ahahahahahahaha
19:15:07 <Phantom_Hoover> There was a guy in my school who copied this story -verbatim- and submitted it to a short story competition.
19:15:12 <Phantom_Hoover> The teacher loved him from it.
19:15:17 <Phantom_Hoover> *for it
19:16:33 <Phantom_Hoover> I *think* he submitted it to an exam, too.
19:17:11 <Phantom_Hoover> I... guess nobody actually cares.
19:17:20 <Ngevd> Not really
19:17:40 <Phantom_Hoover> He's a really annoying objectivist, does that make it interesting?
19:17:55 <elliott> hi
19:19:52 <elliott> if (parser->tb != NULL) {
19:19:52 <elliott> 146 /* Client is defining their own token handler,
19:19:52 <elliott> 147 * so we must destroy the default treebuilder */
19:19:52 <elliott> 148 hubbub_treebuilder_destroy(parser->tb);
19:19:52 <elliott> 149 parser->tb = NULL;
19:19:52 <elliott> 150 }
19:19:54 <elliott> Oh come on.
19:20:54 <olsner> hmm?
19:21:53 <monqy> hubub.,.,..
19:22:04 <elliott> olsner: The interface is SLIGHTLY
19:22:05 <elliott> LSES
19:22:06 <elliott> ORTHOGONAL
19:22:08 <elliott> THAN I'D LIKE
19:22:12 <elliott> s/LSES/LESS/
19:22:18 <olsner> hubbabubba is a brand of chewing gum
19:22:55 <olsner> elliott: just rewrite everything, it'll be awesome
19:23:04 <monqy> eliotbub
19:23:17 <elliott> olsner: noooooooooooo
19:23:25 <elliott> Also how do you even know that, that's a UK thing.
19:23:42 <monqy> it's a uk thing?
19:23:53 <olsner> I know everything, that's how
19:23:58 <Deewiant> Hubba Bubba is a brand of bubble gum originally produced by Wm. Wrigley Jr. Company, a subsidiary of Mars, Incorporated,[1] in the United States in 1979 but more recently produced in countries around the world.
19:24:01 <olsner> a subset of everything, anyway
19:24:04 <monqy> i thought it wa sa usa thing....
19:24:54 <elliott> Deewiant: Oh
19:24:59 <elliott> Well everything is a UK thing
19:25:02 <elliott> Even if it isn't in the UK
19:25:44 <Phantom_Hoover> What about Mars Bars?
19:30:04 <elliott> Oh nooo, I can't figure out which interface to expose.
19:30:44 <Deewiant> All of them
19:31:12 <Ngevd> elliott exposes all!
19:31:17 <Ngevd> That's one for the tabloids
19:31:42 <elliott> Deewiant: That'll be such duplication though :-(
19:32:16 <Deewiant> Probably easier to deal with
19:32:29 <elliott> Deewiant: Eh?
19:32:39 <Deewiant> For users
19:33:14 <elliott> Deewiant: Well, probably only one of these interfaces is ACTUALLY useful, and the other one can be implemented in the exact same way the other one is
19:33:21 <elliott> i.e. Trivial use of the lower-level functions
19:33:28 <elliott> (OK, an unsafePerformIO to turn IO [a] into [a] too)
19:33:40 <elliott> (But you're encouraged to use unsafePerformIO if you're making your own interface on top of this :P)
19:33:44 <Deewiant> If it needs an unsafePerformIO it's something you want hidden :-P
19:33:48 <elliott> Actually I wonder if I could use ST to avoid the unsafeness anyway.
19:33:51 <elliott> Deewiant: What?
19:34:06 <elliott> Deewiant: The low-level interface is in IO. On top of that, pure interfaces are built with unsafePerformIO.
19:34:18 <elliott> I'm deciding how much to expose purely, since a lot of it will be useless :P
19:34:49 <Deewiant> It just doesn't sound like good practice to tell users "oh, if you want to do that, just unsafePerformIO this"
19:35:19 -!- oerjan has joined.
19:35:23 <elliott> Deewiant: If they want this interface, chances are incredibly high they're building their own interface
19:35:26 -!- GreaseMonkey has joined.
19:35:54 <elliott> Deewiant: In this case, the pure interface would be parseTreeEvents :: Lazy.ByteString -> [TreeEvent] or similar
19:35:54 <Deewiant> Incredibly high chances isn't 100% :-P
19:36:02 <elliott> Deewiant: But that's basically unusable without actually processing it sequentially
19:36:03 <Deewiant> But I dunno, whatever you think works
19:36:04 <elliott> Because it involvse things like
19:36:07 <elliott> hubbub_tree_has_children has_children; /**< Has children? */
19:36:12 <elliott> hubbub_tree_encoding_change encoding_change; /**< Change encoding */
19:36:30 <elliott> i.e. it makes no real sense as a list (unlike the main pure interface, which produces a list of tokens), only as a bunch of events :P
19:36:45 <elliott> In which case you should just use the IO interface and mutable variables and shit and then unsafePerformIO it to get your wonderful pure tree.
19:36:50 <elliott> Because that's what you'll have to do anyway.
19:45:33 <Ngevd> God I hate the sound of my own voice
19:47:12 <elliott> Insert oblig. "you're not the only one".
19:47:31 <Ngevd> It's so bloody English
19:47:53 <Ngevd> I sound like I'm about to start rhyming scone with phone all the time
19:48:00 <Phantom_Hoover> DIE
19:48:44 <oerjan> 06:29:47: <elliott> Hey, why don't we have a McCarthy topic yet?
19:48:44 <oerjan> 06:30:10: <elliott> There, that's my bare minimum contribution to society.
19:48:59 <oerjan> Gregor: I DETECT A LACK OF TOPIC CHANGE IN THE LOGS
19:52:26 -!- Zuu has joined.
19:52:40 -!- Zuu has quit (Changing host).
19:52:40 -!- Zuu has joined.
19:52:50 <oerjan> it's that christmas gatekeeper again
19:58:50 <oerjan> <Ngevd> inn input stack output = let (toPush, inLeft):_ = reads (dropWhile (not . isDigit) input) :: [(Integer, String)] in (inLeft, toPush:stack, output)
19:59:00 <oerjan> for patterns that may fail, use case, not let
19:59:20 <elliott> s/.* fail, //
19:59:38 <elliott> s/let/where/ -- now it's actually useful advice
20:00:13 <oerjan> also, don't listen to elliott when he's in the "everything that isn't the way i do things suck" mood
20:00:35 <elliott> oerjan: let is a code smell
20:00:58 <elliott> if you're that deeply nested that where doesn't work, you have bigger problems :P
20:01:22 <oerjan> also, your advice doesn't apply in do blocks.
20:01:25 <elliott> true.
20:01:29 <elliott> don't use let...in, then :p
20:02:39 <Deewiant> let is more local than where, for short/simple things I prefer it
20:03:07 <oerjan> Ngevd: also if all that dropWhile is just for skipping whitespace, then reads does that automatically.
20:03:33 <elliott> Deewiant: If it's "more local" in any appreciable way, you have too much nesting in the first place
20:03:42 <elliott> I'm not saying let...in should never be used ever, but it's certainly a symptom
20:03:54 <Ngevd> oerjan, it's for finding the next number
20:04:01 <Deewiant> let xs = foo in bar xs where bar xs = ...
20:04:08 <Ngevd> There may be any range of symbols
20:04:17 <oerjan> ok
20:04:52 <elliott> Deewiant: Uh
20:04:55 <elliott> bar foo where bar xs = ...
20:05:38 <Ngevd> I'm going to leave that now, and when I'm decent at Haskell (about the time when @ will come out, at current rates), I'll find it and think "WTF was I thinking?"
20:05:39 <Deewiant> Now assume I want to name foo because it's an expression
20:05:45 <Deewiant> That isn't just a name
20:05:52 <elliott> Deewiant: bar $ foo
20:06:01 <ais523> Ngevd: you're going to get good at Haskell just as it becomes obsolete?
20:06:07 <Deewiant> elliott: That doesn't name foo
20:06:10 <Ngevd> Probably
20:06:16 <Ngevd> It's not the best of plans
20:06:43 <elliott> Deewiant: It probably shouldn't have a name, but if you must: bar xss where xss = foo; bar xs = ...
20:06:58 -!- augur has quit (Remote host closed the connection).
20:07:00 <Deewiant> Why shouldn't it have a name
20:07:18 <Deewiant> And I don't want to do that because then bar and possibly baz and qux see xss
20:07:32 <elliott> Because if it does, it's probably too complex; and that doesn't matter, if they're big enough they should be at the top level anyway
20:07:55 <elliott> And yes, you can come up with a contrived situation where this is bad advice /and/ the code is fine :P
20:09:19 <elliott> foreign import ccall "hubbub/parser.h hubbub_parser_setopt"
20:09:19 <elliott> c_parser_setopt :: Ptr ParserStruct -> CInt -> Ptr () -> IO CInt
20:09:20 <elliott> This will be painful
20:10:28 <Deewiant> For me it's also a bit of a style thing because I prefer having "where" on its own line, so with let..in I can sometimes save a line :-P
20:11:18 <Deewiant> "let x = f y\n in foo x (g x) (h x)" instead of "foo x (g x) (h x)\nwhere\nx = f y"
20:11:31 <elliott> I use
20:11:31 <elliott>
20:11:31 <elliott> foo = bar
20:11:31 <elliott> where quux = abc
20:11:31 <elliott> zuul = def
20:11:32 <elliott>
20:11:34 <elliott> but have been occasionally tempted by
20:11:36 <elliott>
20:11:38 <elliott> foo = bar where
20:11:40 <elliott> quux = abc
20:11:42 <elliott> zuul = def
20:11:44 <elliott>
20:11:46 <elliott> and
20:11:48 <elliott>
20:11:50 <elliott> foo = bar
20:11:52 <elliott> where
20:11:54 <elliott> quux = abc
20:11:56 <elliott> zuul = def
20:11:58 -!- Zuu has left.
20:11:58 <elliott> Pretty sure the first is the best though
20:12:00 <elliott> It gets slightly annoying with long do blocks, but those probably shouldn't be in a where anyway
20:12:02 <elliott> And the alignment is nice
20:12:07 <Deewiant> I use the last
20:12:29 <Deewiant> My "where" stuff tends to be long enough that the additional indentation of the first would be a pain
20:12:43 <elliott> Yeah, I've established well the suckitude of your Haskell code :P
20:12:45 <Deewiant> Likewise the second lengthens the foo = bar line
20:13:20 <elliott> The second line is kinda gross because the "where" looks like part of the expression.
20:13:33 <elliott> This doesn't annoy me with "do" but I think that's because do is actually a bona-fide expression :P
20:13:41 <oerjan> <Phantom_Hoover> The frontpaging is really starting to show in r/AskScience.
20:13:51 <oerjan> i think you mean r/askreddit
20:13:56 <elliott> Leaving this here in case I feel the urge to go back to this implementation: http://sprunge.us/IZRK
20:13:57 <Deewiant> IIRC you've only complained about that parser :-P
20:13:58 <elliott> oerjan: I think not
20:14:07 <elliott> Deewiant: What parser
20:14:22 -!- impomatic has joined.
20:14:24 <Deewiant> I can't remember which part of it, but the C one
20:14:40 <elliott> Deewiant: Err, what's the context
20:14:43 <elliott> I have no clue what you're talking about
20:14:46 <Deewiant> DS9K C
20:14:51 <elliott> Oh
20:14:54 <elliott> No, I also complained about list-tries
20:15:03 <elliott> And your use of 904534895749534857-parameter functions
20:15:29 <Deewiant> The parameter count thing was in mushspace, I think
20:15:45 <Deewiant> And list-tries was mostly about the size of the Map class, which I just couldn't figure out how to avoid :-P
20:15:48 <elliott> Nah, there was a Haskell thing too
20:16:30 <Deewiant> Possibly the lack of separate types for function parameters
20:16:44 <elliott> ?hoogle a -> (Ptr a -> IO b) -> IO b
20:16:44 <lambdabot> Foreign.Marshal.Utils with :: Storable a => a -> (Ptr a -> IO b) -> IO b
20:16:44 <lambdabot> Foreign.ForeignPtr withForeignPtr :: ForeignPtr a -> (Ptr a -> IO b) -> IO b
20:16:44 <lambdabot> Foreign.Marshal.Alloc allocaBytes :: Int -> (Ptr a -> IO b) -> IO b
20:16:50 <oerjan> elliott: oh huh, is this something new about how things reach the front page? i stopped reading the reddit frontpage a while ago...
20:16:51 <Deewiant> But hey
20:16:55 <Deewiant> genericUnionWithKey :: (Alt st a, Boolable (st a), Trie trie st map k)
20:16:55 <Deewiant> => (st a -> trie map k a -> trie map k a)
20:16:55 <Deewiant> -> ((a -> a -> a) -> st a -> st a -> st a)
20:16:55 <Deewiant> -> ([k] -> a -> a -> a)
20:16:55 <Deewiant> -> trie map k a
20:16:57 <Deewiant> -> trie map k a
20:17:00 <Deewiant> -> trie map k a
20:17:02 <Deewiant> Is minimal
20:17:11 <copumpkin> Boolable o.O
20:17:20 <elliott> oerjan: They just changed the default set
20:17:22 <elliott> Deewiant: "Boolable"
20:17:25 <elliott> Deewiant: This is not acceptable
20:17:33 <Deewiant> It's a hack
20:17:38 <copumpkin> Trie is a typeclass? o.O
20:17:40 <elliott> Deewiant: No, stop talking
20:17:43 <Deewiant> No
20:17:46 <elliott> Yes
20:17:47 <elliott> Fix that
20:17:47 <elliott> Now
20:17:52 <Deewiant> No
20:17:57 <Deewiant> I'll be going to sleep shortly
20:17:59 <elliott> Please
20:18:03 <Deewiant> And I don't know of a good way of fixing this
20:18:25 <elliott> Deewiant: Meh, I'll just send you ten patches that rewrites half of the library sometime
20:18:31 <elliott> It is my duty
20:18:35 <Deewiant> That's fine
20:18:38 <copumpkin> ((a -> a -> a) -> st a -> st a -> st a) looks like liftA2
20:18:42 <Deewiant> I don't mind if you can get rid of the hacks :-P
20:18:46 <copumpkin> is st Applicative?
20:18:58 <copumpkin> or Apply
20:19:13 <Deewiant> It's either Maybe or Identity so... yes?
20:19:25 <Deewiant> Yeah, it is
20:19:27 <copumpkin> then just add an Applicative constraint and get rid of that parameter :)
20:19:36 <Deewiant> But it's not liftA2
20:19:39 <copumpkin> oh?
20:19:40 <oerjan> elliott: the default set has always been changing, but now it seems there are more than 10 subreddits in it...
20:19:48 <elliott> oerjan: See reddit blog :p
20:19:51 <elliott> oerjan: /r/reddit.com got shut down too.
20:20:22 <Deewiant> copumpkin: It's either a strict or non-strict combiner function
20:20:34 <copumpkin> what does it do on Maybe and Identity?
20:20:41 <copumpkin> for Identity I can see it doing one of three things
20:20:43 <Deewiant> Well, for the Maybe case
20:20:50 <copumpkin> same for Maybe, really
20:20:58 <Deewiant> It either selects the Just one if one is Nothing
20:21:08 <Deewiant> Or it's liftA2
20:21:12 <Deewiant> Or it's a strict version of liftA2
20:21:16 <Deewiant> (Just $! f a b)
20:21:33 <Deewiant> For Identity it's a hack
20:21:41 <impomatic> How come the report.txt here is empty? http://codu.org/eso/fyb/ Has something broken?
20:21:47 <Deewiant> Seriously, don't ask about the Identity :-P
20:21:48 <elliott> setOption :: CInt -> (a -> (Ptr () -> IO CInt) -> IO CInt) -> Parser -> IO ()
20:21:49 <elliott> Lovely
20:22:00 <elliott> Deewiant: I'm asking about the Identity
20:22:08 <Deewiant> unionVals _ (Id a) (Id b) = Id$ a || b
20:22:09 <Deewiant> unionVals' = error "Data.ListTrie.Base.Classes.unionVals' :: internal error"
20:22:14 <Deewiant> It's either of those two
20:22:18 <Deewiant> And it shouldn't be the latter
20:22:21 <elliott> Erm
20:22:23 <elliott> setOption :: CInt -> (a -> (Ptr () -> IO CInt) -> IO CInt) -> Parser -> a -> IO ()
20:22:25 <copumpkin> what other constructor would you get?
20:22:37 <Deewiant> copumpkin: Two different functions
20:22:40 <Deewiant> Notice the '
20:22:45 <copumpkin> oh
20:22:50 <oerjan> !sh echo "I am totally broken"
20:22:53 <Deewiant> elliott: Also when you do the rewrite can you do the Lazy/Strict split that everybody is doing nowadays kthx
20:22:56 <copumpkin> what are you making, out of curiosity? :)
20:23:09 <Deewiant> copumpkin: This is from list-tries (Data.ListTrie), it's been made :-P
20:23:11 <oerjan> impomatic: EgoBot is very, very ill and Gregor doesn't care
20:23:16 <copumpkin> ah
20:23:33 * Gregor listens to EgoBot's heart monitor slowly fade away.
20:23:41 <elliott> Deewiant: No, no, I'll make it a type family parameterised on strictness.
20:23:43 <Deewiant> copumpkin: This hackiness is so that I can have maps that store (Maybe a) and sets that store (Identity Bool) use the same code
20:23:47 <elliott> Deewiant: Maybe ConstraintKinds? Definitely type naturals.
20:23:55 <Deewiant> elliott: That's just the public API do whatever you want internally
20:24:00 <elliott> (It is a joke because you should not be allowed to use any language extensions.)
20:24:20 <Deewiant> Well yes, anything that doesn't require extra extensions
20:26:02 <elliott> ?hoogle (Enum a, Integral b) => a -> b
20:26:02 <lambdabot> Prelude ceiling :: (RealFrac a, Integral b) => a -> b
20:26:02 <lambdabot> Prelude floor :: (RealFrac a, Integral b) => a -> b
20:26:02 <lambdabot> Prelude round :: (RealFrac a, Integral b) => a -> b
20:26:05 <elliott> Bah
20:27:35 <Deewiant> @ty fromIntegral . fromEnum
20:27:36 <lambdabot> forall b a. (Num b, Enum a) => a -> b
20:27:45 <elliott> Yes, yes
20:31:45 -!- impomatic has left.
20:32:07 <oerjan> > fromIntegral . fromEnum $ 123456789012345678901234567890 :: Integer
20:32:09 <lambdabot> -4362896299872285998
20:32:17 * oerjan whistles innocently
20:33:41 <oerjan> > fromEnum $ 123456789012345678901234567890
20:33:42 <lambdabot> -4362896299872285998
20:37:13 <elliott> setOption :: CInt -> (a -> (Ptr b -> IO CInt) -> IO CInt) -> Parser -> a -> IO ()
20:37:16 <elliott> oerjan: Behold my type
20:38:11 <oerjan> what is Parser
20:39:33 -!- augur has joined.
20:39:49 <elliott> oerjan: A type
20:39:56 <elliott> newtype Parser = Parser (ForeignPtr ParserStruct)
20:40:46 * oerjan sidles away carefully
20:42:35 -!- CakeProphet has quit (Ping timeout: 258 seconds).
20:54:54 <elliott> ?hoogle poke
20:54:56 <lambdabot> Foreign.Storable poke :: Storable a => Ptr a -> a -> IO ()
20:54:56 <lambdabot> Foreign.Marshal.Array pokeArray :: Storable a => Ptr a -> [a] -> IO ()
20:54:56 <lambdabot> Foreign.Marshal.Array pokeArray0 :: Storable a => a -> Ptr a -> [a] -> IO ()
20:54:57 <elliott> ?hoogle pokeElem
20:54:58 <lambdabot> Foreign.Storable pokeElemOff :: Storable a => Ptr a -> Int -> a -> IO ()
21:05:19 <oerjan> <olsner> istr, some of the really old mainframe systems also used . as a directory separator
21:05:43 <oerjan> i vaguely recall vms may have done, in a weird way
21:05:54 <elliott> Hey oerjan, figure out the zipper of this type.
21:06:04 * elliott watches oerjan scream and run away.
21:06:20 <oerjan> something like logicalVolume:[dir1.dir2.dir3]filename.ext;version where i may recall parts wrong
21:07:19 <oerjan> and there was a way to define new logical volumes in some kind of dictionary
21:07:50 <oerjan> elliott: which type? all you mentioned so far as IO, which i don't know how to zipperize
21:07:56 <oerjan> *has
21:08:27 <oerjan> vms wasn't really mainframe, btw
21:08:38 <elliott> oerjan: no, that isn't it :P
21:08:59 <oerjan> elliott: what type then
21:09:59 <elliott> THE WORLD MUST NEVER KNOW
21:10:06 <oerjan> sheesh
21:11:18 <olsner> it's hard to zipperize something you've never seen
21:11:26 <olsner> but I'm sure oerjan can do it
21:11:37 <pikhq_> I don't think IBM mainframes historically had files.
21:12:02 <pikhq_> Punchcard readers and card punchers, sure.
21:12:13 -!- derdon has quit (Remote host closed the connection).
21:13:56 <olsner> my VM/370 machine has disks with files on them
21:14:55 <Phantom_Hoover> Argh, I swear I understood centripetal force before I tried to answer this question in r/AskScience.
21:16:41 <ais523> centripetal force is the force that must act in order to keep something's momentum moving in a circle; the centrifugal effect is what happens if a centripetal force is not present or not strong enough (and manifests as the object appearing to move in the other direction)
21:17:46 <Phantom_Hoover> ais523, nononono.
21:17:59 <Phantom_Hoover> Centripetal and centrifugal force don't exist in the same reference frame.
21:18:13 <ais523> "centrifugal force" doesn't exist; it's an effect caused by the /lack/ of a force
21:18:32 <ais523> and right, the centrifugal effect only looks like a force if you look at it from a rotating reference frame
21:18:40 <ais523> otherwise it just looks like the lack of a force, which is what it actually is
21:18:50 <Phantom_Hoover> Erm, I see what you mean.
21:20:31 <elliott> Excuse me, my parents come from a rotating reference frame.
21:20:52 <Phantom_Hoover> Kinky.
21:22:58 <Phantom_Hoover> I give up, my brain isn't working any more or something.
21:25:39 -!- Ngevd has quit (Ping timeout: 240 seconds).
21:26:27 <Phantom_Hoover> http://www.reddit.com/r/askscience/comments/lrcws/what_would_happen_if_everyone_simultaneously/
21:26:31 <Phantom_Hoover> Actual best question.
21:26:37 <elliott> We would all die.
21:26:50 <ais523> I won't look at the question, and rather take the cut-off version
21:26:54 <ais523> it'd be rather like accidentallying, I guess
21:26:58 <ais523> but more synchronized and deliberate
21:30:49 <elliott> :t left
21:30:50 <lambdabot> forall (a :: * -> * -> *) b c d. (ArrowChoice a) => a b c -> a (Either b d) (Either c d)
21:31:34 <olsner> it would create a sewage singularity
21:31:53 <olsner> i.e. the whole world turns to crap. simultaneously.
21:32:26 <ais523> elliott: that's a bizarre type for something with such a short name
21:36:00 -!- Patashu has joined.
21:38:00 -!- Ngevd has joined.
21:38:36 -!- elliott has quit (Read error: Connection reset by peer).
21:39:02 -!- elliott has joined.
21:39:29 <Phantom_Hoover> Help, Look Around You has made me elide everything.
21:44:17 -!- ais523 has quit (Remote host closed the connection).
21:47:34 -!- zzo38 has joined.
21:51:58 <zzo38> This is the shell archive if the SQL reporting program for use with SQLite, another program to make it work with CGI, and an example file (actually, it is a program of actual use, which I have been asked to write, with the HTML template showing what should be done, I made the similar one here)
21:51:59 <lambdabot> zzo38: You have 4 new messages. '/msg lambdabot @messages' to read them.
21:52:01 <Ngevd> Well, my clever idea for making a brainfuck interpreter in Piet wasn't so clever after all
21:52:03 <zzo38> http://sprunge.us/IAAe
21:52:20 <Ngevd> It's 5604 by 1131 pixels
21:52:24 <Ngevd> 110.6 KB
21:52:29 <Ngevd> And only probably works
21:53:24 <elliott> ?pl maybe x fromCtx (goUp x)
21:53:25 <lambdabot> maybe x fromCtx (goUp x)
21:53:28 <elliott> ?pl \x -> maybe x fromCtx (goUp x)
21:53:29 <lambdabot> ap (flip maybe fromCtx) goUp
21:54:08 -!- Vorpal has quit (Ping timeout: 244 seconds).
21:54:18 <elliott> Targets (7): sg3_utils-1.30-1 parted-3.0-3 libatasmart-0.17-1 lsof-4.85-1
21:54:18 <elliott> eject-2.1.5-7 udisks-1.0.4-1 xfce4-power-manager-1.0.10-2
21:54:18 <elliott> SO MUCH BLOAT.
21:54:45 <zzo38> GHC does support universal quantifiers for types.
21:56:09 <Phantom_Hoover> http://www.reddit.com/r/AskReddit/comments/lrc3q/would_you_fight_a_bear_for_1000000/
21:56:10 <Phantom_Hoover> I...
21:57:30 <elliott> "No because the bear would kill me and I wouldn't get to spend my money"
21:57:33 <elliott> Nailed it in one.
21:58:19 <Phantom_Hoover> What if you got the money before and you could fight the bear after buying kit (the answer is yes).
21:59:00 <elliott> ?pl liftA2 (&&) -- give me a nicer way to write this dammit
21:59:01 <lambdabot> liftA2 (&&)
21:59:02 <elliott> hmm
21:59:09 <elliott> > mconcat [(>4), (<10)] 5
21:59:10 <lambdabot> No instance for (Data.Monoid.Monoid GHC.Bool.Bool)
21:59:10 <lambdabot> arising from a use of...
21:59:16 <elliott> hmph
21:59:21 <elliott> > ala And foldMap [(>4), (<10)] 5
21:59:23 <lambdabot> Not in scope: data constructor `And'Not in scope: `foldMap'
21:59:36 <oerjan> <olsner> but I'm sure oerjan can do it <-- BUT OF COURSE
21:59:40 <elliott> > ala All foldMap [(>4), (<10)] 5
21:59:42 <monqy> lambdabot, what!!
21:59:42 <lambdabot> Not in scope: `foldMap'
21:59:47 <elliott> > ala All F.foldMap [(>4), (<10)] 5
21:59:48 <lambdabot> Not in scope: `F.foldMap'
21:59:50 <elliott> > ala All Foldable.foldMap [(>4), (<10)] 5
21:59:51 <lambdabot> Not in scope: `Foldable.foldMap'
21:59:52 <elliott> > ala All Data.Foldable.foldMap [(>4), (<10)] 5
21:59:53 <lambdabot> The section `GHC.Classes.> 4' takes one argument,
21:59:54 <lambdabot> but its type `GHC.Bool.B...
22:00:03 <elliott> HATE YOU SO MUCH
22:00:17 <zzo38> elliott: Yes; some of those things I also wanted infix ways of liftA2 (&&) and liftA2 (++) such thing as that.
22:01:43 -!- CakeProphet has joined.
22:01:43 -!- CakeProphet has quit (Changing host).
22:01:43 -!- CakeProphet has joined.
22:03:17 <oerjan> ?pl fromCtx x = maybe x fromCtx (goUp x)
22:03:17 <lambdabot> fromCtx = fix ((`ap` goUp) . flip maybe)
22:03:40 <CakeProphet> RIP McCarthy
22:03:45 <Ngevd> oerjan, I think I pronounce your name horrendously wrong
22:03:46 <Ngevd> I pronounce it "O'er jam" but with an n instead of an m
22:04:09 <elliott> it's ~yohan
22:04:15 <oerjan> <zzo38> GHC does support universal quantifiers for types. <-- yes but i don't think they can be used for doing general predicate logic proofs, or _can_ they?
22:04:29 <elliott> i pronounce it like that too though
22:05:02 <monqy> oerjam
22:06:04 <olsner> Engage Overjam
22:06:45 <oerjan> <elliott> it's ~yohan <-- oh come on you pronounced it better than that in the sound file you sent
22:06:56 <olsner> oerjan is the norwegian version of George
22:07:09 <Ngevd> George? Why that's my middle name!
22:07:10 <oerjan> _one_ of the norwegian versions
22:07:37 <elliott> oerjan: halfway between yohan and j\"orgen :P
22:07:38 <olsner> yes, *one* of them ... there are like a gadjillion versions of george
22:07:45 <elliott> (aka yerrgan)
22:08:03 <oerjan> i recall this old baby name book with evolutionary (?) trees for several names, the georgios tree was one of them
22:08:21 <olsner> örjan, jörgen, göran, georg
22:08:29 <oerjan> nicolaos, johannes, cecilia were others
22:09:03 <oerjan> actually when i think about it i'm not quite sure if georgios was a tree
22:09:24 <fizzie> "Yrjö" in Finnish. (Also the Finnish word for 'vomit', incidentally.)
22:09:25 <olsner> yuri is apparently also a george (not swedish, but russian/slavic/eastern-european)
22:09:27 <oerjan> it may not be that much bigger than what olsner said
22:10:00 <oerjan> well the tree would mostly include names used in norway, naturally
22:11:01 <fizzie> Naturally: why would anyone care about things outside Norway, really?
22:11:13 <CakeProphet> I often wonder the same thing
22:11:33 <oerjan> in a norwegian baby name book? no reason.
22:12:15 <olsner> not so sure about that, I think foreign names are generally quite popular
22:12:35 <olsner> doesn't mean those names are in the book though
22:12:45 <CakeProphet> Adam - the most foreign of names
22:12:45 <Ngevd> It amazes me how Jan can be the same name as Sean and Theo
22:12:47 <fizzie> "Forget Norway", like the song (http://www.weebls-stuff.com/songs/kenya/) goes.
22:13:57 <oerjan> <elliott> oerjan: halfway between yohan and j\"orgen :P <-- yohan would be in the johannes/jochanan tree, except mostly we would spell it johan, although the spelling yohan was used in a recent norwegian period film
22:14:46 -!- MDude has quit (Ping timeout: 258 seconds).
22:15:24 <oerjan> olsner: this book was from a time when norwegian name laws were stricter than today, a _really_ foreign sounding name may not always be acceptable.
22:16:11 <oerjan> although english loans like jimmy, ronny (curiously frequently in nick name form) were popular at the time
22:18:26 <oerjan> <Ngevd> It amazes me how Jan can be the same name as Sean and Theo <-- wait, same as Theo?
22:18:39 <Ngevd> Same etymology, different language
22:19:06 <oerjan> i'm skeptical, since jan is in that johannes group
22:19:43 <oerjan> but i guess it may have occured in several ways, like the norwegian "line"
22:19:58 <olsner> "line"?
22:19:59 <Ngevd> Johannes, John, Sean, Ian, Jan, Yan, etc come from I think Hebrew originally
22:20:04 <Ngevd> Theo is Greek
22:20:12 <oerjan> Ngevd: yes, yochanan
22:20:26 <olsner> is there a name derived from line, or was that referring to they johannes line?
22:20:52 <oerjan> olsner: no i mean line is a short form of several other names, like caroline
22:21:31 <oerjan> iirc
22:21:39 <olsner> oh, Line, that's like our Lina then
22:21:44 <oerjan> yeah
22:22:10 <olsner> I read it lajn not lineh
22:22:43 <olsner> (unsure if those pronounciation guides help much though :P)
22:23:20 <oerjan> ...i don't think there is much in that name to confuse a swede
22:23:47 <olsner> norwegian and line are two english words
22:24:08 <oerjan> apparently
22:24:17 <olsner> obviously
22:24:56 <olsner> I like how (the norwegian word for) wrong is pronounced like fail in norwegian
22:27:21 <oerjan> sheesh that MrX crackpot/troll is _still_ going on in the godel's lost letter comments
22:29:35 -!- MSleep has joined.
22:29:41 * Phantom_Hoover → sleep
22:29:42 -!- Phantom_Hoover has quit (Quit: Leaving).
22:29:48 <Ngevd> Good idea
22:29:56 -!- Ngevd has quit (Quit: Leaving).
22:30:01 <oerjan> no! sleep is for the weak!
22:30:37 <olsner> slep is for wek
22:30:43 * olsner slep
22:32:42 <monqy> wgat about slepe
22:33:08 <CakeProphet> for the weke
22:33:14 <oerjan> too slep, perching two dram
22:33:15 <monqy> weka
22:34:06 <CakeProphet> monqy: yes, if you look at it that way I suppose.
22:36:38 <zzo38> If there was a type in Haskell for only bijective functions, would it be possible to prove non-equality?
22:37:31 -!- pikhq_ has quit (Ping timeout: 244 seconds).
22:37:40 -!- pikhq has joined.
22:39:16 <oerjan> i recall once trying to think about a type system for bijective functions, it seemed like a tricky thing to achieve
22:39:34 <monqy> ooh?
22:39:35 <oerjan> (for reversible computing)
22:39:49 <zzo38> oerjan: Yes, it would seem to be so. But there are reversible programming languages and I was thinking to do it in a similar way to reversible programming
22:40:37 <elliott> oerjan: well they're a category
22:40:49 <elliott> I think an Applicative too
22:41:26 <copumpkin> http://www.iai.uni-bonn.de/~jv/popl09-2.pdf
22:41:28 <copumpkin> you see that?
22:41:43 <copumpkin> other stuff of his also explores it: http://www.iai.uni-bonn.de/~jv/
22:42:13 <zzo38> Yes, it would be a category, I think.
22:42:57 <monqy> theyr'e an applicative?
22:43:20 <zzo38> But how would it be Applicative?
22:43:29 <oerjan> the tricky thing iirc was how you sometimes needed to know that a piece of the data is not changed by a function _even if it is composed from functions which do_
22:44:34 <oerjan> it's a trick of reversible computation called a cascade
22:45:05 <oerjan> you compute something reversibly, copy the result, and uncompute the original
22:45:29 <elliott> "Yeah, I guess I was trying to say there's always other choices besides fighting a bear for money."
22:47:00 <oerjan> copumpkin: that's about lenses, not reversible computing, isn't it
22:49:23 <copumpkin> oerjan: maybe you're right, but there was some paper with a similar title that was about it
22:49:28 <copumpkin> I read it a while ago
22:49:29 <copumpkin> hmm
22:49:31 <copumpkin> :)
22:50:38 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
22:57:33 <zzo38> You might be able to restrict that to make a function having the bijective type, if you compose, the functions you are composing must also have bijective types
22:58:25 <oerjan> zzo38: i'm just not sure if anyone knows how to do it without full dependent typing
23:05:03 <elliott> Does anyone know of some really thin layer on top of Win32/pthreads that just offers mutexes?
23:05:07 <elliott> That's all I need, a single portable mutex :P
23:05:51 <zzo38> oerjan: Then how do you do it with full dependent typing? I don't know a lot about dependent typing
23:06:28 <elliott> zzo38: that constitutes a full logic
23:06:39 <elliott> so you can just have a->b, b->a, and the proposition that f.g = g.f = id
23:06:42 <elliott> bundled together
23:06:50 <elliott> and it's the burden of the definer to prove that
23:06:59 <elliott> ofc you can prove it generically, e.g. you can define a composition operator that requires no proof
23:07:15 <oerjan> yeah
23:09:59 <zzo38> Another thing I would want to see in Haskell is the ability to define classes with no parameters. This would be an alternative way to call functions in modules which do not yet exist, possibly.
23:18:33 -!- copumpkin has joined.
23:21:41 -!- evincar has joined.
23:21:51 <CakeProphet> elliott: I'm guessing you've already googled "windows pthread mutex" and the first result that talks about mutexes isn't what you're wanting?
23:22:34 <elliott> have you done that yourself
23:22:44 <CakeProphet> I have.
23:22:47 <CakeProphet> A Pthread mutex is an object that can be created, initialized, locked, unlocked or destroyed. A mutex is represented by a variable of type pthread_mutex_t. It is just like any other data variable except that it must be initialized specially, either with the PTHREAD_MUTEX_INITIALIZER macro or the pthread_mutex_init() function.
23:22:49 <zzo38> How are you supposed to make a proposition that (f.g = g.f = id) when you added dependent types?
23:24:05 <elliott> zzo38: curry-howard
23:24:26 <elliott> (forall x, f (g x) = x) /\ (forall x, g (f x) = x)
23:24:29 <elliott> ->
23:24:33 <elliott> (forall x, f (g x) = x, forall x, g (f x) = x)
23:24:36 <elliott> ->
23:24:52 <elliott> ((x::a) -> f (g x) = x, ...blah blah blah if you want to be more haskell-looking...)
23:27:48 * CakeProphet wants to be more haskell-looking. :(
23:28:22 <CakeProphet> wow pthreads in Windows look horrible.
23:30:58 <zzo38> That doesn't seem to be a type as far as I can see
23:31:25 <elliott> of course it isn't a haskell type, because haskell isn't dependently-typed
23:31:28 <CakeProphet> also this thing: http://locklessinc.com/articles/pthreads_on_windows/
23:32:10 <elliott> Inductive bij A B := bij : forall (f : A -> B) (g : B -> A), (forall x, f (g x) = x) -> (forall x, g (f x) = x) -> bij A B.
23:32:19 <elliott> that should be real, actual Coq code
23:32:23 <elliott> unless I messed it up :)
23:41:21 -!- SimonRC has quit (Ping timeout: 252 seconds).
23:43:14 -!- SimonRC has joined.
23:49:25 <oerjan> @src many
23:49:25 <lambdabot> Source not found. You speak an infinite deal of nothing
23:49:32 <oerjan> gah
23:49:46 <elliott> @info Alternative
23:49:47 <lambdabot> Alternative
23:49:50 <elliott> @src Alternative
23:49:51 <lambdabot> class Applicative f => Alternative f where
23:49:51 <lambdabot> empty :: f a
23:49:51 <lambdabot> (<|>) :: f a -> f a -> f a
23:49:56 <elliott> hmmmmmmm
23:55:09 <CakeProphet> I'm guessing the name Merlin is already taken for a programming language.
23:58:10 <elliott> Deewiant: monqy: aurget, pacaur, packer; pick at random, you are both psychic.
23:58:41 <monqy> but im bad at choices
23:58:52 <monqy> i will psychically choose the worst
2011-10-28
00:01:05 <elliott> choose
00:02:34 -!- tiffany has quit (Quit: Leaving).
00:04:36 <monqy> aurget or pacaur? packer's linked webpage isn't as tidy as either of theirs so im disqualify it
00:05:08 <elliott> what, https://github.com/bruenig/packer?
00:06:28 <monqy> yeah; it is slightly less tidy
00:06:42 <monqy> at least I think it is???
00:06:45 <elliott> oh I don't like pacaur much because it has its own non-pacman syntax
00:06:51 <elliott> even if it supports the pacman ones too
00:06:59 <monqy> I don't know enough to make actually educated guesses ;_;
00:07:10 <zzo38> Is there any other way to represent equality of numbers in the type system?
00:07:13 <elliott> aurget is tempting especially since it avoids wrapping pacman operations
00:07:31 <monqy> oh yeah that's nice
00:07:40 <zzo38> I thought of using bijective function but there is no such type that can only be bijective function.
00:08:23 <monqy> equality of what numbers
00:11:17 <monqy> where did you get these numbers? what is their home
00:11:19 <zzo38> For example, (Maybe (Maybe Zero), Maybe (Maybe (Maybe Zero))) meaning 2 times 3 make 6 so you can have a bijective function between that and the Maybe (Maybe (Maybe (Maybe (Maybe (Maybe Zero))))) for six
00:14:39 -!- MSleep has quit (Ping timeout: 240 seconds).
00:15:07 <monqy> wjat?
00:17:03 <elliott> monqy: aurget seems good
00:17:22 <monqy> i'll get aurget next time i need to aur i guess
00:17:49 <elliott> monqy: i'm glad the aur packages for haskell stuff are good... they build profiling and docmentation
00:17:52 <elliott> lol, dynamic too but w/e
00:18:30 <monqy> i haven't gotten much aur haskell stuff...afraid of conflicts with cabal stuff...nightmares...
00:18:49 <monqy> haven't gotten much/i forget if i've gotten any
00:19:05 <elliott> monqy: oh i am literally just using only aur
00:19:10 <elliott> and not cabal-install
00:19:10 <monqy> oh
00:19:18 <monqy> what happens when you need something that's not on aur
00:19:25 <monqy> manual instl?
00:19:45 <elliott> monqy: http://aur.archlinux.org/packages.php?K=arch-haskell&SeB=m
00:19:49 <elliott> there's 1815 packages
00:19:55 <elliott> anything that's not on there is probably not worth using
00:19:58 <elliott> or else I can just package it myself
00:19:59 <monqy> h,mm
00:20:01 <elliott> I think there's an automated tool
00:20:08 <elliott> to turn cabal -> pkgbuild
00:21:09 <monqy> i guess i'll try that next time i start oveR??
00:26:25 <elliott> monqy: yeah, I'm practically sure all these are generated
00:26:27 <elliott> because they have things like
00:26:31 <elliott> # custom variables
00:26:31 <elliott> _hkgname=cpphs
00:26:31 <elliott> _licensefile=LICENCE-LGPL
00:26:36 <elliott> and all their build/package functions look the same
00:27:07 <elliott> monqy: yep: http://aur.archlinux.org/packages.php?ID=17471
00:27:09 <elliott> cabal2arch
00:27:23 <elliott> awesome
00:27:38 <elliott> this could keep me with arch indefinitely, if it's a reliable way to avoid cabal-install being a pile of crap
00:31:58 <elliott> monqy: I still need cabal to handle actually building my stuff though
00:32:01 <elliott> but that's much less painful
00:32:08 -!- evincar has quit (Quit: leaving).
00:33:26 <zzo38> What would your D&D character do in case of the following:
00:33:33 <zzo38> * You find some money that you think is money but everyone else thinks is just all hallucination.
00:33:38 <monqy> I have no dnd character
00:33:41 <zzo38> * You find some money that you think is just hallucination but everyone else thinks is real money.
00:33:55 <elliott> `quote game where
00:33:57 <HackEgo> 50) <GregorR-L> If I ever made a game where you jabbed bears ... <GregorR-L> I'd call it jabbear. \ 582) <monqy> game where you flip a coin but it's really really big
00:33:57 <zzo38> * The king is going bald!
00:34:05 <elliott> second one to be precise
00:34:25 <zzo38> * Your deity has been destroyed.
00:34:33 <zzo38> * Along the road, you encounter a kobold that looks injured - he's unconcious, bleeding slowly from an arrow wound.
00:34:42 <zzo38> * Someone offers a party member a job you are clearly unqualified for.
00:34:51 <zzo38> * You find a magic scroll with strange effects that matches nothing you have ever seen before. (Using any Identify spell and such doesn't help)
00:35:01 <elliott> monqy: should i use String or Text or mix both help
00:35:19 <monqy> what are you doing and whats text ;_;
00:35:34 <elliott> you know what Text is..........
00:35:54 <monqy> sort of
00:36:17 <elliott> http://hackage.haskell.org/package/text.........
00:36:33 <monqy> yeah that thing
00:36:51 <monqy> but I don't know every trade off
00:36:59 <monqy> never used it so i can;t judge preteynes either
00:38:15 <elliott> well I don't really want to just use String
00:38:18 <elliott> mixing String and Text is ugly BUT
00:38:23 <elliott> it means you can avoid OverloadedStrings
00:38:35 <elliott> tag names and the like become Strings but actual body text becomes Text
00:38:43 <elliott> but you'll want to pattern-match over the former much more than the latter
00:39:10 <monqy> how ugly is mixing? maybe the best chocie?
00:40:32 <elliott> not that ugly, but it just Feels a bit Wrong
00:40:38 <elliott> especially since I get the data from the C lib in UTF-8
00:40:46 <elliott> so I need a UTF-8 -> String decoder as well as UTF-8 -> Text
00:40:49 <elliott> which might even mean another dependency
00:42:15 <monqy> oh gross
00:43:46 <oerjan> oh sh why isn't there a hobbit pun in iwc today
00:44:07 <oerjan> (well it _is_ (prolonged) guest week, but still...)
00:48:06 <oerjan> :t many
00:48:07 <lambdabot> forall (f :: * -> *) a. (Alternative f) => f a -> f [a]
00:51:13 <zzo38> There is monad transformer that makes a new monad from a monad, but what is it called when it makes a monad from a comonad instead?
00:51:28 <elliott> [21 of 21] Compiling Language.Haskell.Exts ( src/Language/Haskell/Exts.hs, dist/build/Language/Haskell/Exts.dyn_o )
00:51:28 <elliott> BFD: reopening dist/build/libHShaskell-src-exts-1.11.1.a(Exts__22.o): No such file or directory
00:51:28 <elliott> uh
00:51:31 <coppro> A comonad cotransformer
00:51:33 <monqy> "weird"
00:51:43 <monqy> don't comonad transformers go comonad->comonad????
00:51:53 <monqy> or am I thinking of something else
00:52:01 <oerjan> monqy: presumably
00:52:03 <monqy> oh I missed the co
00:52:06 <monqy> in cotransformer
00:52:07 <elliott> this is getting painful
00:52:10 <monqy> yeah cotransformer makes sense
00:52:12 <monqy> I guessssssss
00:52:28 <monqy> I was thinking cotransformer too then looked and wow it was there
00:52:37 <monqy> crys in not reading things properly shame
00:56:56 <zzo38> What are some examples of comonad cotransformers?
00:57:23 -!- pikhq_ has joined.
00:57:48 -!- pikhq has quit (Ping timeout: 260 seconds).
01:00:00 -!- MSleep has joined.
01:05:01 <elliott> hmm
01:05:03 <elliott> > id <|> id
01:05:04 <lambdabot> Overlapping instances for GHC.Show.Show (a -> a)
01:05:04 <lambdabot> arising from a use of `...
01:05:15 <elliott> :t (fromLeft <|> fromRight)
01:05:16 <lambdabot> Not in scope: `fromLeft'
01:05:16 <lambdabot> Not in scope: `fromRight'
01:05:22 <elliott> oh wait no
01:05:23 <elliott> hmm
01:05:34 <elliott> :t ((?f :: a -> Maybe b) <|> (?g :: a -> Maybe b))
01:05:36 <lambdabot> Could not deduce (?f::a -> Maybe b) from the context ()
01:05:36 <lambdabot> arising from a use of implicit parameter `?f'
01:05:36 <lambdabot> at <interactive>:1:2-3
01:05:39 <elliott> sigh
01:05:39 <oerjan> > (id <|> undefined) 2
01:05:40 <lambdabot> No instance for (Control.Applicative.Alternative ((->) a))
01:05:40 <lambdabot> arising from ...
01:05:46 <elliott> :t ((undefined :: a -> Maybe b) <|> (undefined :: a -> Maybe b))
01:05:48 <lambdabot> forall a b. (Alternative ((->) a)) => a -> Maybe b
01:05:54 <elliott> darn, there's no instance
01:05:55 <oerjan> ic
01:05:59 <elliott> oerjan: I was thinking goNext = goRight <|> goUp
01:06:12 <elliott> oh wait
01:06:13 <elliott> it's actually
01:06:20 <elliott> goNext = goRight <|> (goUp >>= goNext)
01:06:29 <oerjan> > (Just <|> undefined) 2
01:06:29 <lambdabot> No instance for (Control.Applicative.Alternative ((->) a))
01:06:29 <lambdabot> arising from ...
01:06:30 <elliott> goNext x = goRight x <|> (goUp x >>= goNext)
01:06:30 <elliott> not bad
01:07:30 <oerjan> :t (id <|> id)
01:07:31 <lambdabot> forall a. (Alternative ((->) a)) => a -> a
01:08:01 <oerjan> elliott: you're forgetting some goDown there
01:08:11 <elliott> oh hm
01:08:17 <elliott> what is the correct implementation?
01:08:40 <oerjan> well depends whether you want to do the parent node first or last
01:09:06 <elliott> oerjan: first, I would think; although last would be good to have too; but doesn't last result in an infinite loop?
01:09:20 <elliott> if you transform a child into something that causes the parent node to match ... hmm, no
01:09:25 <elliott> yeah i guess both would be nice
01:09:39 <elliott> oerjan: parent node first sounds like it needs less satck
01:09:44 <elliott> s/satck/stack/
01:12:30 <elliott> [ 2 of 21] Compiling Language.Haskell.Exts.Annotated.Syntax ( src/Language/Haskell/Exts/Annotated/Syntax.hs, dist/build/Language/Haskell/Exts/Annotated/Syntax.dyn_o )
01:12:32 <elliott> so sloooow
01:12:38 <oerjan> goDown x <|> goRight x <|> (goUp >>= goNext)
01:13:51 <elliott> oerjan: what is goDown?
01:13:53 <elliott> go down to first child?
01:13:58 <oerjan> yes
01:14:40 <elliott> pretty
01:14:44 <elliott> what's the other way around?
01:16:23 <oerjan> (goRight x >>= goBottom) <|> goUp x
01:16:34 <elliott> #let alignment t = "%lu", (unsigned long)offsetof(struct {char x__; t (y__); }, y__)
01:16:37 <elliott> hmm, does that _work_?
01:16:41 <elliott> any language lawyers? :P
01:16:47 <elliott> oerjan: goBottom?
01:17:05 <oerjan> goBottom x = (goDown x >>= goBottom) <|> pure x
01:17:23 <elliott> ah
01:17:43 <elliott> these are nice. feels like we've cracked it
01:17:49 <oerjan> that recursion is what i wanted many for, btw, but it doesn't fit
01:18:40 <elliott> darn
01:18:52 <oerjan> hm?
01:19:27 <elliott> re: many
01:21:57 <oerjan> it's a kind of muntil
01:22:13 <oerjan> @hoogle muntil
01:22:13 <lambdabot> No results found
01:22:17 <oerjan> @hoogle untilM
01:22:17 <lambdabot> No results found
01:22:35 <elliott> http://hackage.haskell.org/packages/archive/monad-loops/0.3.0.2/doc/html/Control-Monad-Loops.html
01:22:41 <elliott> untilM :: Monad m => m a -> m Bool -> m [a]Source
01:22:41 <elliott> Execute an action repeatedly until the condition expression returns True. The condition is evaluated after the loop body. Collects results into a list. Parameters are arranged for infix usage. eg. do {...} untilM_ ...
01:22:55 <oerjan> aha
01:23:00 <oerjan> not quite it, either
01:23:06 <elliott> oerjan: well there's whileM
01:23:15 <elliott> whileM :: Monad m => m Bool -> m a -> m [a]Source
01:23:16 <elliott> Execute an action repeatedly as long as the given boolean expression returns True. The condition is evaluated before the loop body. Collects the results into a list.
01:23:23 <elliott> oerjan: and whileM' does it for any MonadPlus
01:23:27 <oerjan> we _don't_ want a list :P
01:23:50 <elliott> thus whileM'
01:23:51 <elliott> Dependenciesbase (<4) or
01:23:51 <elliott> base (≥4)
01:23:55 <elliott> good dependencies
01:24:58 <oerjan> elliott: we need something with (a -> m a) argument
01:26:05 <oerjan> all of the untilM's and iterateUntil seem to think it's enought to just do an action.
01:26:23 <oerjan> which _technically_ is correct since you can use a StateT wrapping
01:26:27 <oerjan> i think
01:26:41 <oerjan> *enough
01:28:12 <oerjan> :t many . StateT
01:28:13 <lambdabot> forall a s (m :: * -> *). (Functor m, MonadPlus m) => (s -> m (a, s)) -> StateT s m [a]
01:28:39 <oerjan> well many also collects, hmph
01:28:58 <oerjan> :t many_
01:28:59 <lambdabot> Not in scope: `many_'
01:29:03 <oerjan> :P
01:34:42 <oerjan> so this norwegian non-profit organization SOS Rasisme was apparently taken over by communists, who inflated their membership numbers by something like 900% to receive 9.5 million NOK in state support.
01:37:47 <oerjan> http://translate.googleusercontent.com/translate_c?act=url&hl=no&ie=UTF8&prev=_t&rurl=translate.google.no&sl=no&tl=en&u=http://www.dagbladet.no/2011/10/27/nyheter/innenriks/sos_rasisme/medlemsjuks/lnu/18790279/&usg=ALkJrhjuxo3KtieUzuxMTVuJAptIb0NPfw
01:38:02 <elliott> oh, i thought you meant in the past.
01:38:16 <oerjan> no, last 10 years :P
01:38:39 <oerjan> well it's definitely in the past _now_
01:57:51 -!- pikhq has joined.
01:57:54 -!- pikhq_ has quit (Ping timeout: 252 seconds).
01:59:00 -!- ive has joined.
02:16:29 <zzo38> Do you know of any comonad cotransformers or monad cotransformers? Is there anything else even more strangely?
02:19:17 -!- aloril has quit (Ping timeout: 260 seconds).
02:26:31 <oerjan> zzo38: http://comonad.com/reader/2011/monads-from-comonads/ seems relevant
02:28:22 <zzo38> oerjan: Yes I saw that too.
02:28:41 <oerjan> there's a whole series of posts
02:31:34 -!- aloril has joined.
02:36:18 <zzo38> One idea for bijective function syntax would be like: bijection { (x, y) -> (y, x); } similar to case but with various restrictions.
02:40:31 -!- MSleep has changed nick to MDude.
02:48:18 <elliott> Deewiant: I bet you know ALL ABOUT offsetof.
02:50:12 <oerjan> vladimir offsetof, famous russian book printer
02:57:59 <elliott> :t replicateM
02:58:00 <lambdabot> forall (m :: * -> *) a. (Monad m) => Int -> m a -> m [a]
02:58:16 <elliott> :t peekElemOff
02:58:17 <lambdabot> Not in scope: `peekElemOff'
02:58:19 <elliott> ?hoogle peekElemOff
02:58:20 <lambdabot> Foreign.Storable peekElemOff :: Storable a => Ptr a -> Int -> IO a
02:59:32 <oerjan> boris peekelemoff, notorious st. petersburg voyeurist
03:01:33 -!- aloril has quit (Read error: Operation timed out).
03:02:09 <elliott> :D
03:08:05 <elliott> i hate ffis
03:08:44 <oerjan> foreign functions coming here and stealing our jobs
03:13:14 -!- pikhq has quit (Remote host closed the connection).
03:17:49 -!- aloril has joined.
03:18:16 -!- pikhq has joined.
03:22:50 -!- pikhq has quit (Remote host closed the connection).
03:25:02 -!- pikhq has joined.
03:26:02 -!- DCliche has joined.
03:29:35 -!- Darth_Cliche has quit (Ping timeout: 245 seconds).
03:41:02 <elliott> hey oerjan what happens if i work on something else to distract me from code problems but it's broken too????
03:46:32 <oerjan> it's bugs all the way down
03:51:49 <zzo38> When I was thinking about making number theory with Haskell type system, I think that (Not x) is like the C (!x) for natural numbers x, like (x -> Zero) or $0^x$ is that correct?
04:09:32 <pikhq> "Mozilla and Bing are pleased to make available Firefox with Bing, a customized version of Firefox that sets Bing as the default search engine in the search box and AwesomeBar and makes Bing.com the default home page."
04:10:03 <elliott> instant download
04:10:31 <pikhq> Hell is awfully chilly today.
04:10:50 <zzo38> Why does Mozilla have to do anything about that? Bing could do it by themself, isn't it?
04:11:04 <pikhq> zzo38: Most definitely.
04:12:57 <elliott> zzo38: because this way microsoft give money to mozilla
04:13:54 -!- quintopia has quit (Ping timeout: 255 seconds).
04:24:44 -!- quintopia has joined.
04:41:12 <zzo38> How much do you know about Local Sidereal Time?
04:47:10 <pikhq> Not much; there is no time but UTC.
04:51:30 <zzo38> There is other time specifications, though.
04:51:41 <pikhq> Few of them worthwhile.
04:52:16 <zzo38> It seems to depend what you do, such as solar time or whatever
04:53:54 <pikhq> DESTROY THE DAY STAR
04:53:54 <pikhq> :P
04:54:02 <fizzie> UT1, the Unreal Tournament time.
04:54:53 -!- Jafet has joined.
05:20:34 -!- copumpkin has changed nick to IAmTheOnePercent.
05:21:19 <zzo38> Astrolog supports equatorial mode but its implementation does not work with all charts that Astrolog can make; and as far as I know there is no "Local Sidereal Time" object that can be plotted in equatorial mode. The documentation suggests using sidereal zodiac and hours/minutes display of angles, but tropical/sidereal mode appears to be ignored in equatorial mode
05:22:28 <zzo38> "This will display planetary positions relative to the Earth's equator instead of the ecliptic i.e. Earth's orbit. This is the way more commonly used in astronomy, and results in real right ascension notation, especially when combined with the -s sidereal zodiac and -sh hours and minutes display format. This switch makes the declination values in the standard -v listing also relative to the
05:22:56 <zzo38> equator, instead of the ecliptic latitude displayed by default, where "Declination" will be printed at the head of the column instead of "Latitude". (Without this the only way to get such information is from the zenith latitudes in the -L astro-graph chart which show the same thing.) Note that this setting isn't fully integrated with allof Astrolog's charts; specifically it will distort the values in the
05:23:10 <zzo38> -Z local horizon, -S orbit, and -L astro-graph charts which assume ecliptic positions, and hence -sr shouldn't be combined with these options."
05:23:53 -!- IAmTheOnePercent has changed nick to copumpkin.
05:25:45 -!- DCliche_ has joined.
05:29:34 -!- DCliche has quit (Ping timeout: 260 seconds).
05:40:09 <zzo38> But the documentation seems to be wrong; selecting sidereal zodiac does not affect equatorial mode.
05:44:55 <pikhq> http://perldoc.perl.org/perlmod.html#BEGIN%2c-UNITCHECK%2c-CHECK%2c-INIT-and-END
05:45:04 <pikhq> The Awkawkawkawkawkawk section of Perl.
05:49:17 -!- pikhq_ has joined.
05:52:17 -!- pikhq has quit (Ping timeout: 256 seconds).
05:54:56 <zzo38> Actually it seems the 10th Cusp object might plot the local sidereal time
05:55:29 <zzo38> (That is, in equatorial mode)
05:55:37 <elliott> zzo38: Why are you using Astrolog, anyway?
05:59:35 <elliott> pikhq_: /nick elliott, i wanna try something
05:59:40 -!- elliott has changed nick to qqqq.
06:00:31 <zzo38> Maybe I should make my own program instead so that I can include whatever improvements and licensed under GNU GPL (in fact, the Swiss Ephemeris requires it; Astrolog does not use Swiss Ephemeris and is licensed for non-commercial use only); there are some features of Astrolog which I wish to purposely omit (such as interpretation mode), althhough a separate program could use its output to produce something similar.
06:01:43 -!- oerjan has quit (Quit: Good night).
06:05:15 <qqqq> OK someone else take my nick.
06:05:23 <qqqq> monqy you do it.
06:09:12 <monqy> hi
06:09:20 <monqy> are you going to kill me ;_;
06:10:35 -!- elliott has joined.
06:10:49 <zzo38> Now you can try something.
06:11:04 -!- elliott has changed nick to Guest58077.
06:11:39 -!- Guest58077 has quit (Remote host closed the connection).
06:12:04 <qqqq> oh
06:12:06 <qqqq> i forgot
06:12:07 <qqqq> oops
06:12:12 <qqqq> i apologise zzo38
06:12:17 <qqqq> i did not see it :(
06:13:49 <zzo38> Why don't you try it on another connection from your computer?
06:14:16 <qqqq> oh right that would work
06:15:13 -!- elliott has joined.
06:15:15 -!- qqqq has quit (Quit: Leaving).
06:15:27 -!- qqqq has joined.
06:15:27 -!- elliott has quit (Disconnected by services).
06:15:34 <qqqq> * elliott :Nickname is already in use.
06:15:35 <qqqq> * nicksev :No such nick/channel
06:15:37 <qqqq> -NickServ- elliott has been ghosted.
06:15:39 <qqqq> close enough :P
06:16:23 <qqqq> hmm, i guess xchat has no way to wait a bit
06:25:29 <qqqq> ?hoogle try
06:25:36 <lambdabot> Control.Exception try :: Exception e => IO a -> IO (Either e a)
06:25:36 <lambdabot> Control.OldException try :: IO a -> IO (Either Exception a)
06:25:36 <lambdabot> Control.Exception.Base try :: Exception e => IO a -> IO (Either e a)
06:26:14 -!- qqqq has changed nick to elliott.
06:26:17 -!- elliott has quit (Changing host).
06:26:17 -!- elliott has joined.
06:26:51 <shachaf> elliott: Leeds?
06:27:04 <elliott> Leeds is a place, yes.
06:27:30 <shachaf> A place you're in?
06:28:17 <elliott> No. (Is this going to be followed by another placename until I say yes?)
06:29:04 -!- zzo38 has quit (Remote host closed the connection).
06:29:05 <shachaf> elliott: Maybe.
06:29:10 <shachaf> Langtoft?
06:29:55 <elliott> I actually live in a little cardboard box underneath Sealand.
06:30:06 <shachaf> Oh.
06:30:28 <shachaf> What happened to <elliott> I am in fact already in California. </elliott>?
06:30:39 <elliott> We are all, in some sense, already in California.
06:30:49 <elliott> Actually I have no idea why I said that. Nor do I remember saying it.
06:31:08 <shachaf> elliott: We were talking about how great the cheese in the US was, or something.
06:31:12 <shachaf> And by great I mean terrible.
06:31:17 <shachaf> And by cheese I mean something I don't remember.
06:31:55 <elliott> pikhq_: nttpf
06:31:58 <elliott> oh, you did
06:32:45 -!- DCliche_ has quit (Quit: You are now graced with my absence.).
06:42:16 <shachaf> elliott: FunPtrs are aptly named.
06:42:21 <elliott> Yes
06:42:27 <elliott> s/s/s./
06:42:37 <shachaf> Surely you mean s/$/./
06:42:51 <elliott> Yes.
06:42:56 <shachaf> Anyway, get ready for a lot of fun.
06:43:39 <Madoka-Kaname> s/(.)(.)(.)/\2\3\1/g
06:44:01 <elliott> shachaf: Do _you_ know whether exceptions are meant to work from Haskell code called by C via a FunPtr?
06:44:26 <elliott> I mean, hanging for like ten seconds, spiking in CPU or RAM use (not sure which) and then getting killed by the OS is quite a dramatic result.
06:45:31 <shachaf> elliott: Oh, that sounds exciting.
06:46:09 <shachaf> Speaking of excitement, it's 02:45 and I should go to sleep.
06:46:09 <fizzie> All you want to do is to have some FunPtr.
06:47:08 <shachaf> (Also, I don't know.)
06:48:06 <fizzie> Does Sealand follow the UK timezone/DST rules?
06:48:20 -!- aloril has quit (Read error: Operation timed out).
06:49:54 <fizzie> I was wondering how hard would it be the convince Finland to invert our timezone from UTC+2 (+3 in the summer) to UTC-10; I mean, then we could *really* be the "land of the midnight sun".
06:53:21 <olsner> regardless of timezone you'll still be screwed when the polar night starts
06:55:15 <fizzie> Sure, but it'd still improve our midnight-sun-% by a whole lot.
06:55:52 <elliott> ?hoogle Either SomeException a -> IO a
06:55:52 <lambdabot> Data.Typeable typeOf2 :: Typeable2 t => t a b -> TypeRep
06:55:53 <lambdabot> Prelude either :: (a -> c) -> (b -> c) -> Either a b -> c
06:55:53 <lambdabot> Data.Either either :: (a -> c) -> (b -> c) -> Either a b -> c
06:57:46 <olsner> hmm, except, isn't "midnight" really when the sun is on the other side of the earth, rather than some time stamp?
07:02:47 <CakeProphet> olsner: if you're a pedantic asshole, sure
07:03:52 -!- aloril has joined.
07:04:00 <CakeProphet> if you want to communicate with anyone else in the world, who subscribes to this standardized system of time so that communication and commerce isn't a complete nightmare, then no.
07:04:29 <olsner> why would I want to communicate with anyone else?
07:09:44 <fizzie> Also this bridge has got a hump in it: http://mw2.google.com/mw-panoramio/photos/medium/15358461.jpg
07:09:53 <elliott> hmm, this is a _very_ difficult problem due to laziness :)
07:11:19 <elliott> on the other hand
07:11:26 <elliott> i don't get why it's even happening if laziness
07:12:42 -!- aloril has quit (Ping timeout: 260 seconds).
07:14:46 <CakeProphet> I wish df were open source.
07:15:09 <elliott> it half is
07:15:13 <elliott> well
07:15:17 <elliott> source-available
07:15:28 <CakeProphet> yeha not the half I want.
07:19:07 <CakeProphet> http://lifehacker.com/5854053/how-to-stop-caring-about-trolls-and-get-on-with-your-life
07:19:10 <CakeProphet> ,,,,
07:19:10 <CakeProphet> ;;;;
07:19:26 <CakeProphet> worst troll ever.
07:24:53 -!- aloril has joined.
07:28:16 <CakeProphet> http://en.wikipedia.org/wiki/Indiana_Pi_Bill
07:28:37 <CakeProphet> or wait, maybe the Indiana General Assembly collectively are the worst trolls.
07:30:13 <elliott> yesss, one IORef and a bunch of code later, it works
07:31:22 <CakeProphet> aren't IORefs like communing with demons or something?
07:31:34 <CakeProphet> the angry demons of mutability or... something.
07:36:39 <olsner> I think they are more like angry demons of mutability put in little cages for safer handling
07:37:56 <elliott> http://sprunge.us/YVVQ
07:37:59 <elliott> this code is quite messy.
07:40:01 <CakeProphet> good hubbubLocks
07:41:02 -!- ais523 has joined.
07:41:03 -!- ais523 has quit (Changing host).
07:41:03 -!- ais523 has joined.
07:41:40 <elliott> hi ais523
07:42:48 <ais523> hi elliott
07:43:02 <ais523> just woken up, or not yet gone to sleep?
07:43:37 <elliott> I'm not even sure myself
07:43:41 <elliott> but I think it's the latter
07:45:38 <elliott> ?hoogle Bool -> m a -> Maybe a
07:45:38 <lambdabot> Control.Exception assert :: Bool -> a -> a
07:45:38 <lambdabot> Control.OldException assert :: Bool -> a -> a
07:45:38 <lambdabot> Control.Exception.Base assert :: Bool -> a -> a
07:45:41 <elliott> ?hoogle Bool -> m a -> m (Maybe a)
07:45:41 <lambdabot> Data.Generics.Aliases orElse :: Maybe a -> Maybe a -> Maybe a
07:45:41 <lambdabot> Control.Monad unless :: Monad m => Bool -> m () -> m ()
07:45:41 <lambdabot> Control.Monad when :: Monad m => Bool -> m () -> m ()
07:48:32 <Deewiant> ?pl \b mx -> if b then return Nothing else liftM Just mx
07:48:32 <lambdabot> (. fmap Just) . flip if' (return Nothing)
07:55:20 <CakeProphet> @hoogle Bool -> a -> Maybe a
07:55:21 <lambdabot> Control.Exception assert :: Bool -> a -> a
07:55:21 <lambdabot> Control.OldException assert :: Bool -> a -> a
07:55:21 <lambdabot> Control.Exception.Base assert :: Bool -> a -> a
07:56:03 <Deewiant> ?pl \b x -> guard b >> Just x
07:56:03 <lambdabot> (. Just) . (>>) . guard
07:58:13 <elliott> Deewiant: Can one forcibly take ownership of an AUR package from someone else; I want to update the C-INTERCAL package without having to talk to Vorpal
07:58:41 <Deewiant> If you ask some kind of adminy person, probably
07:58:49 <Deewiant> Otherwise he needs to disown it
07:58:53 <Deewiant> If I understand correctly
07:59:47 <elliott> Oh well, I guess I can tolerate momentary hostile contact :D
08:00:24 <elliott> Holy fuck, someone who isn't Vorpal uploaded a cfunge package
08:00:34 <elliott> Then 3 people voted for it??
08:00:49 <Deewiant> I may've voted for it
08:01:02 <elliott> I said three, not one :P
08:01:02 <Deewiant> It's outdated by now though
08:01:14 <Deewiant> Well, he probably did and if I did that makes two
08:01:19 <Deewiant> (he = submitter)
08:01:24 <Deewiant> (uploader)
08:01:25 <Deewiant> (whatevre)
08:01:26 <Deewiant> (er)
08:01:26 <elliott> Maybe Vorpal did too then
08:01:28 <elliott> Fiine
08:01:29 * elliott considers making a package for CCBI, realises it's D, gives up on idea immediately.
08:01:43 <Deewiant> You could make ccbi-bin
08:01:55 <elliott> As a wise man once said: Gross
08:02:04 <elliott> Ha, ldc is orphaned and out of date
08:02:11 <elliott> What's the D compiler of the year
08:02:13 <Deewiant> Or you could depend on ldc-bin and company, it should build without too much trouble
08:02:18 <Deewiant> I dunno
08:02:23 <elliott> BeholdMyGlory: Hey, stop maintaining ldc-hg, it's weird seeing names from here elsewhere
08:02:24 <Deewiant> I don't know how alive D1 is in general
08:02:32 <elliott> I thought CCBI2 was D2.
08:02:36 <Deewiant> It's not
08:02:58 <elliott> Will it start being D2 when mushspace comes out? :p
08:02:59 <Deewiant> I might make it D2 what with GDC going into GCC and all
08:03:12 <elliott> You should also make it: not depend on Tango.
08:03:19 <Deewiant> That's the main problem :-P
08:03:31 <Deewiant> Unfortunately: Tango is the only good library.
08:03:43 <elliott> Deewiant: It's also completely unmaintained to my knowledge :P
08:03:51 <elliott> You could: use a real programming language.
08:04:03 <Deewiant> It's maintained
08:04:07 <elliott> "Real" here is defined as literally anything but D how do you even end up with multiple stdlibs.
08:04:15 <elliott> Deewiant: pikhq said not a few weeks ago
08:04:18 <Deewiant> C has multiple stdlibs
08:04:22 <elliott> A cursory glance at their website supported this
08:04:28 <Deewiant> There are changesets from 4 days ago in the timeline
08:04:30 <elliott> And yeah but they all follow the same rough standard
08:04:46 <elliott> The difference between what you're about to say and D is that people actually use both Phobos and Tango
08:04:49 <Deewiant> The problem is that D has no standard
08:05:24 <elliott> So in conclusion
08:05:27 <Deewiant> And if I could do the metaprogramming shit conveniently I might move CCBI to C++11, but I doubt I can
08:05:32 <elliott> I'll package CCBI if you completely rewrite it
08:05:44 <Deewiant> I could package it myself if I cared :-P
08:05:44 <elliott> Deewiant: OK, you picked possibly the only worse language to move it to.
08:05:52 <Deewiant> elliott: Smallest effort
08:06:17 <Deewiant> Like okay sure I could use a Lisp but that's a full rewrite, of every single line
08:06:17 <elliott> Deewiant: I think you probably could pull the metaprogramming shit off; my qualifications backing this statement: http://esolangs.org/wiki/Deadfish#C.2B.2B_templates
08:06:33 <Deewiant> Yeah but "conveniently"
08:06:51 <elliott> You should rewrite it in Haskell, and call it shiro.
08:06:58 <Deewiant> I don't want to, because it would be slow.
08:07:03 <Deewiant> And also a 100% rewrite.
08:07:11 <elliott> No fuck you it is going to be so fast.
08:08:10 <elliott> Deewiant: Well, dmd is in community
08:08:15 <elliott> Does CCBI work with dmd/tango
08:08:19 <Deewiant> Yes but DMD sucks
08:08:25 <elliott> Define sucks
08:08:34 <Deewiant> It might be slower than shiro
08:08:40 <elliott> Wow
08:08:46 <Deewiant> (Okay maybe not that slow but still)
08:08:53 <elliott> Heyyy :P
08:08:53 <Deewiant> I haven't used it in a while, dunno
08:08:58 <elliott> shiro is faster than Language::Befunge.
08:08:59 <Deewiant> It might also not build due to bugs
08:09:03 <elliott> By lots.
08:09:05 <Deewiant> That's not an achievement ;-)
08:09:12 <elliott> IT'S PROBABLY EVEN FASTER THAN PYFUNGE.
08:09:27 <Deewiant> Woo, beating interpreted languages
08:09:31 <elliott> What I need to do is restructure it so it doesn't use the abominally stupid "StateT of globals over IO" approach.
08:09:41 <Deewiant> What's the better approach
08:09:51 <elliott> Depends
08:10:18 <elliott> I think IORefs would buy me quite a bit in Shiro though
08:10:24 <elliott> Also I should factor a lot of it out to be completely pure and take params
08:10:29 <elliott> Rather than just doing read-only shit on the state
08:11:18 <Deewiant> ?hoogle StateT s m a -> ReaderT s m a
08:11:18 <lambdabot> No results found
08:11:33 <Deewiant> ?hoogle ReaderT s m a -> StateT s m a
08:11:33 <lambdabot> No results found
08:11:34 <elliott> Deewiant: Yeah, no
08:11:36 <CakeProphet> elliott: is it faster than Perl?
08:11:41 <CakeProphet> that's the true test.
08:11:47 <elliott> Deewiant: That still has the problem that it takes EVERY SINGLE GLOBAL
08:11:52 <elliott> Rather than, e.g.: what it needs.
08:12:03 <elliott> CakeProphet: Language::Befunge is Perl.
08:12:28 <CakeProphet> oh, I guess I should have pressed page up. :P
08:12:44 <Deewiant> elliott: But hey re. C++11 at least people could build it
08:13:02 <elliott> Deewiant: Unless they're on e.g. Debian stable (I think)
08:13:12 <Deewiant> Well yeah, the 11 makes it harder
08:13:15 <elliott> gcc (GCC) 4.6.1 20110819 (prerelease)
08:13:15 <elliott> Prerelease? Seriously guys?
08:13:29 <Deewiant> I just said 11 because it's likely that such will be useful :-P
08:13:37 <elliott> Arch's goal in life is to always be at the absolute latest repository commit of every package.
08:13:44 <Deewiant> Not really
08:13:52 <elliott> Or, better: Latest set of working files on the most active developer's computer.
08:14:03 <Deewiant> It's probably a prerelease build that's equivalent to the release
08:14:10 <elliott> Shut up with your facts and logic.
08:14:13 <Deewiant> Besides, 4.6.2 is out
08:14:20 <elliott> Yeah, so is GHC 7.2.1
08:14:24 <Deewiant> Yep
08:14:49 <elliott> I can't really complain though because AUR is about 34895734985793485 times better than cabal-install.
08:15:02 <elliott> So I am pretty much unreasonably happy as far as Haskell goes.
08:15:26 <Deewiant> I ran into problems regarding outdated packages so switched back to cabal-installing everything
08:15:34 <Deewiant> AUR updates too slowly :-p
08:15:36 <elliott> ldc 1574-1
08:15:36 <elliott> Last Updated: Sun, 04 Oct 2009 20:28:36 +0000
08:15:36 <elliott> First Submitted: Thu, 04 Dec 2008 18:07:57 +0000
08:15:36 <elliott> Noice
08:15:44 <elliott> Deewiant: You could use cabal2arch yourself
08:15:50 <Deewiant> elliott: What a pain
08:16:07 <elliott> Deewiant: Meh, just a matter of writing a pacabalman script :P
08:16:39 <Deewiant> elliott: What a pain
08:16:44 <elliott> Deewiant: Okay, so will CCBI build with an LDC from hg and a tango from SVN
08:16:54 <elliott> Oh for fuck's sake BeholdMyGlory
08:16:56 <Deewiant> No not a tango from SVN probably
08:16:59 <elliott> You haven't updated them in literally a year
08:17:21 <Deewiant> "You’ll need Tango—version 0.99.9 or later. But not too late: there are breaking changes in trunk which CCBI doesn’t support building against."
08:17:37 <CakeProphet> > pi * 10000000000000000000000000
08:17:38 <lambdabot> 3.1415926535897935e25
08:17:47 * CakeProphet gasps! :o
08:18:01 <elliott> Deewiant: Just...
08:18:09 <elliott> Deewiant: Just port it to something reasonable already :P
08:18:21 <Deewiant> That's not unreasonable, that's the latest Tango release :-P
08:18:32 <elliott> It's funny because you just claimed D is reasonable!
08:18:47 <Deewiant> It got less reasonable over time
08:19:14 <elliott> I was having problems with D toolchains in 2007, 2008
08:19:24 <Deewiant> You're you
08:19:49 <Deewiant> You tend to find problems in everything :-P
08:20:04 <elliott> No, problems like "I literally can't get a compiler working"
08:20:10 <elliott> "Apart from this ancient gdc"
08:20:28 <Deewiant> Yes, because you're you
08:20:50 <elliott> No, everyone else is just suffering under a collective delusion that D has ever worked
08:21:20 <CakeProphet> I.. don't think I have that delusion
08:21:31 <CakeProphet> I think most people have the collective delusion that D is not a thing.
08:21:41 <CakeProphet> or they don't know very much about it. :P
08:22:02 <Deewiant> elliott: Feel free to suggest good targets for porting
08:22:22 <Deewiant> (Note: anything slower than C is not good)
08:22:38 <CakeProphet> Fortran!
08:22:48 <Deewiant> Lacks metaprogramming
08:22:57 <CakeProphet> Fortran with CPP
08:23:02 <Deewiant> CPP isn't metaprogramming
08:23:20 <CakeProphet> maybe you're just not inventive enough. :P
08:23:27 <Deewiant> Maybe I don't want to be
08:23:46 <elliott> Deewiant: C
08:23:53 <elliott> C++ is "slower than C", anyway
08:23:54 <elliott> As is D
08:23:59 <Deewiant> C lacks metaprogramming
08:24:03 <Deewiant> And no, not really
08:24:13 <Deewiant> They're within margin of error at worst ;-P
08:24:36 <elliott> C has metaprogramming
08:24:51 <elliott> And your uses of metaprogramming are mostly superfluous, at least the ones I saw :P
08:25:08 <CakeProphet> Java.
08:25:14 <Deewiant> C doesn't have metaprogramming :-P
08:25:26 <elliott> cpp
08:25:28 <Deewiant> CakeProphet: Note: anything that doesn't create native binaries is not good
08:25:31 <Deewiant> CPP isn't metaprogramming
08:25:41 <elliott> Yes, it is; also, gcj
08:25:52 <CakeProphet> Ada.
08:26:07 <elliott> Yes. Ada.
08:26:13 <elliott> Go with Ada.
08:26:51 <Deewiant> Meh, I don't wanna learn Ada
08:27:09 <CakeProphet> ATS
08:27:17 <Deewiant> Nobody wants to learn ATS
08:27:40 <CakeProphet> so I guess you're stuck with C with CPP
08:27:48 <CakeProphet> because no one would want to use D.
08:28:15 <Deewiant> C++ is much better, with its templates
08:28:23 <Deewiant> For the kind of metaprogramming I do
08:28:26 -!- derrik has joined.
08:28:38 <Deewiant> But I don't know if it's sufficient, at least without much pain
08:29:00 <CakeProphet> pain is the only concept that's relevant to C++
08:29:28 <elliott> <Deewiant> Nobody wants to learn ATS
08:29:29 <elliott> I do
08:30:57 -!- ive has quit (Quit: leaving).
08:31:53 <CakeProphet> anyway you could use GHC as it can approach speeds that are reasonably close to the average C program.
08:31:56 <CakeProphet> just become a badass
08:32:04 <CakeProphet> and then your speed addiction will be solved
08:32:43 -!- monqy has quit (Quit: hello).
08:38:02 <CakeProphet> elliott: I wish the great language shootout had data on LuaJIT.
08:38:49 <CakeProphet> http://attractivechaos.wordpress.com/2011/01/23/amazed-by-luajit/ "I have kept looking for a replacement of Perl for several years. Now I have found it: Lua, although the decision is not made based on the language itself, but on its implementation LuaJIT."
08:38:54 * CakeProphet stops reading in disgust.
08:39:26 <CakeProphet> there is no replacement for Perl. Well, maybe Perl 6.
08:40:44 <elliott> hmm, I need a nicer name for this whiz-bang high-level library than hubbub-tree
08:41:21 <CakeProphet> what does it do?
08:41:38 <elliott> hubbubs trees
08:42:26 <CakeProphet> right, what the hell is that.
08:43:26 <elliott> Yes
08:43:35 <elliott> s/$/./
08:43:59 <CakeProphet> I. see.
08:44:08 <CakeProphet> well, sorry, I can't help you with your name problem.
08:44:13 <CakeProphet> not knowing what a hubbub tree is.
08:45:24 <CakeProphet> http://thesaurus.com/browse/rowdydow commotion, babel, bedlam, brouhaha, clamor, hullabaloo, pandemonium, ruckus...
08:45:38 <CakeProphet> plenty of good names.
08:45:39 <fizzie> 1. (1) hubbub, uproar, brouhaha, katzenjammer -- (loud confused noise from many sources)
08:45:45 <fizzie> katzenjammer-tree.
08:50:06 <CakeProphet> elliott: are these "reverse context trees"?
08:50:12 <elliott> No.
08:50:17 <CakeProphet> Okay
08:52:44 <atehwa> I wonder why there's so much talk about the pros and cons of languages on a channel which is primarily meant for discussion about languages that were not intended to be practical in the first place.
08:53:37 <fizzie> How to recognize a graph theorist: show them something like http://ecofuture.net/energy/files/2011/03/tree-field.jpg and ask if they think it's a forest.
08:55:41 <elliott> Heh.
08:56:09 <elliott> atehwa: That makes the grossly unjustified assumption that this channel was ever sincerely on-topic.
08:56:37 <atehwa> ;_;
08:56:56 <atehwa> (of course, I don't really think that channels should be on-topic.)
08:57:04 <elliott> Only ais523 thinks that.
08:57:23 <CakeProphet> elliott: back in the great golden age, when #esoteric wasn't overrun the dastardly language zealots, things were... well... still off-topic.
08:57:32 <elliott> warning: haskell-haskell-src-exts-1.11.1-20 is up to date -- reinstalling
08:57:42 <elliott> That sure makes a lot of sense, aurget!
08:57:54 <elliott> Deewiant: I am a convert to the yaourt cause
08:58:06 <atehwa> Maybe it's just good to remember that, for instance, the fact that there's no pros to C++ is not a reason to stop using it -- merely a sign that using C++ has artistic value.
08:58:26 <elliott> atehwa: Oh, certainly! C++ sudoku is one of my favourite games.
08:58:39 <elliott> But for something /serious/ like a Funge-98 interpreter...
08:58:40 <CakeProphet> this is making the implication no pros -> esoteric
08:58:44 <CakeProphet> which is totally wrong.
08:59:31 <CakeProphet> Funge-98 is probably the best language for a Funge-98 interpreter.
08:59:38 <atehwa> CakeProphet: that wasn't my intention; just to point out that the good sides of a language can be something else than that it is practical, expressive, has efficient implementations, or the like.
09:00:30 <CakeProphet> yes, like Perl.
09:00:33 <atehwa> using C++ _does_ have artistic value, even though the language is not very esoteric.
09:00:37 <atehwa> yes, like Perl.
09:01:01 <CakeProphet> well, Perl /can/ be practical and expressive, but I don't know if those qualifiers fit always.
09:01:32 <atehwa> But why bother with those values, when its artistic value is not to be questioned?
09:02:39 <CakeProphet> uh, well, I think programming is always going to be rooted in practicality, even if the production of source code is a kind of art.
09:02:45 <atehwa> ;_;
09:03:25 <CakeProphet> it's an art of organization, efficiency, clarity, and probably a few other nouns.
09:04:27 <atehwa> heck, all it really boils down to is "wow, _that_ is a neat way to use closures / mixins / iterators / whatever you happen to like"
09:04:55 <CakeProphet> I wouldn't say that.
09:05:17 <elliott> <CakeProphet> uh, well, I think programming is always going to be rooted in practicality, even if the production of source code is a kind of art.
09:05:24 <elliott> mark me down on the record as super anti-this statement
09:05:34 <CakeProphet> marked.
09:06:34 <atehwa> well, I'm just trying to advocate a broader view on the values of programming (languages): we're already as deeply immersed in those "practical" values as can be, so it would be nice to give some notice to the other values, too.
09:06:46 * elliott ++
09:06:50 <CakeProphet> they're noted. especially here.
09:06:54 <elliott> That was meant to be atehwa++.
09:06:58 <elliott> But I can't use computers.
09:07:21 <CakeProphet> elliott: what happens when atehwa wraps around?
09:07:27 <CakeProphet> is that like, a huge diss?
09:07:33 <CakeProphet> wicked burn, etc?
09:07:41 <elliott> @karma atehwa
09:07:42 <lambdabot> atehwa has a karma of 0
09:07:45 <elliott> :(
09:07:48 <elliott> @karma elliott
09:07:49 <lambdabot> You have a karma of 2
09:07:50 <elliott> :)
09:07:52 <atehwa> I also know that organisation, efficiency, clarity, and so on are important, but they also depend on one's aesthetic preferences
09:07:54 <CakeProphet> @karma CakeProphet
09:07:54 <elliott> @bot
09:07:54 <lambdabot> :)
09:07:55 <lambdabot> You have a karma of 0
09:08:19 <CakeProphet> atehwa: well, aside from efficiency, but efficiency is not a requisite for good programs.
09:08:39 <atehwa> if one was to define expressivity, what it comes down to is http://c2.com/cgi/wiki?NumberOfKeystrokes
09:08:51 <CakeProphet> I do believe there is such a thing as good organization and bad organization.
09:08:59 <CakeProphet> and no, there's not really a quantifiable metric for it.
09:09:06 <atehwa> if one was to define efficiency, what it comes down to is http://shootout.alioth.debian.org/
09:09:20 <Madoka-Kaname> @karma
09:09:21 <lambdabot> You have a karma of 1
09:09:42 <CakeProphet> just what #esoteric needs: a brownie point system.
09:09:47 <atehwa> CakeProphet: and BTW: I don't overflow: I'm arbitrary precision.
09:10:04 * elliott does not think expressivity and efficiency can be defined so simply.
09:10:11 * atehwa does :)
09:10:16 <elliott> Especially expressivity = keystrokes is problematic.
09:10:25 -!- copumpkin has quit (Ping timeout: 245 seconds).
09:10:42 <atehwa> I've been advocating this for quite some time; I'd like to hear the counterarguments
09:10:43 <elliott> Certainly the idea is to minimise human<->computer friction to express a program.
09:10:50 -!- copumpkin has joined.
09:10:59 <elliott> But increased expressive power can have an up-front cost that would make it lose to an uber-golfed language on some tasks.
09:11:03 -!- copumpkin has quit (Changing host).
09:11:03 -!- copumpkin has joined.
09:11:04 <elliott> Yet the former's expressivity scales far better.
09:11:21 <CakeProphet> Haskell vs. GolfScript
09:11:21 <atehwa> elliott: it depends on what one is used to
09:11:48 <atehwa> if we're not trying to measure the efficiency of language-user pairs but languages, then number of keystrokes makes sense
09:12:03 <atehwa> s/efficiency/expressivity/
09:12:19 <CakeProphet> number of keystrokes for.. what? an average of every program ever written?
09:12:21 <atehwa> and actually, it is the expressivity of a language for a certain task
09:12:24 <elliott> atehwa: Well, the question is -- what CakeProphet said.
09:12:34 <elliott> The domain is "programs people actually want to write".
09:13:03 <elliott> People want to write things more complex than FizzBuzz, so GolfScript loses very quickly -- even if it minimises keystrokes it certainly doesn't minimise development time.
09:13:12 <elliott> (Because it's unreadable.)
09:13:39 <CakeProphet> yet Python is readable but not incredibly expressive compared to other high level languages.
09:15:28 <CakeProphet> here expressive means... what one can accomplish with a single expression.
09:17:01 <derrik> and single expressions means what?
09:17:45 <CakeProphet> please go read one of the many definitions of what an expression is. preferably a correct one.
09:18:04 <derrik> http://s3.amazonaws.com/theoatmeal-img/comics/brain/ideas.png
09:18:22 <elliott> Have we actually proven that derrik isn't a Markov bot?
09:18:28 <CakeProphet> no.
09:18:41 <elliott> Well, we know CakeProphet is.
09:18:47 <derrik> CakeProphet: "correct" as in ... ?
09:19:15 <ais523> elliott: it's reasonably hard to prove that anyone isn't a markov bot, I think
09:19:51 <CakeProphet> derrik: do you actually know what an expression is?
09:20:16 <atehwa> elliott, CakeProphet: but it is important to understand that it does _not_ make sense to talk about the expressivity of a language for an unspecified task.
09:20:30 <derrik> i know that no single word means anything without context, CakeProphet
09:20:44 <atehwa> for instance, what kind of task is Python "not incredibly expressive" for?
09:20:50 <CakeProphet> atehwa: so all the "Python is sooooooo expressive" blog posts are invalid. Yes, I can agree with that statement.
09:21:14 <CakeProphet> derrik: the context here is programming languages, dude.
09:21:41 <derrik> CakeProphet: not so familiar with programming languages.. but i am very familiar with natural languages
09:21:43 <elliott> atehwa: Sure, but you can talk about the expressivity in general of a programming language as much as you can talk about any subjective, slightly ill-defined statement.
09:21:59 <elliott> It's about the expressivity in terms of "programs people want to write", or more cynically "programs the speaker wants to write".
09:22:34 <atehwa> this?: print sorted([(line, lineno) for lineno, line in enumerate(file("foo.txt"))])
09:23:09 <atehwa> elliott: yes, that's true.
09:23:37 <atehwa> it just often turns out that people want to write different stuff.
09:24:02 <elliott> main = readFile "foo.txt" >>= print . sortBy (comparing fst) . zip [0..] . lines
09:24:16 <atehwa> When people talk about expressivity of Lisp, they often think about e.g. heuristic solution space searches
09:24:32 * elliott would expect metaprogramming instead.
09:25:04 <atehwa> when people talk about the expressivity of Perl, they might talk about all the libraries that provide glue with different protocols/services
09:25:54 <ais523> atehwa: I normally phrase that as "Perl has excellent library support"
09:26:09 <atehwa> yes
09:26:38 <atehwa> elliott: metaprogramming is cool, but it too, can be used more for some tasks and less for others
09:26:43 <CakeProphet> Perl is also pretty expressive in not-that-sense as well.
09:26:55 <elliott> atehwa: I just meant, I think that's what most people would say when they talk about the expressivity of Lisp.
09:27:04 <elliott> Rather than what you said.
09:27:08 <elliott> But I might be wrong.
09:27:57 <atehwa> hmm... maybe... but then they'd be horribly cut off from what expressivity means for the actual programming... if they weren't thinking about some specific cases where metaprogramming helped them to make their programs shorter.
09:28:19 <elliott> Well, metaprogramming is just a kind of abstraction.
09:28:47 <elliott> Abstraction helps in an awful lot of places; metaprogramming is a rather blunt form of it to use everywhere, but it's still abstraction.
09:29:07 <elliott> (And like all abstraction offers obfuscatory potential etc. etc. etc., but that's probably true of anything that increases expressivity.)
09:29:13 <elliott> (There's that word again!)
09:29:36 <CakeProphet> therefore Perl is the best at expressionsivity.
09:29:40 <atehwa> The usefulness of abstraction tools or code organisation tools should be measured, IMO, by the number of keystrokes they save you, for given task(s).
09:30:20 <CakeProphet> maybe if you're a software project manager.
09:31:03 <atehwa> maybe in every case.
09:31:34 <CakeProphet> hmmm, okay, well that's solved then.
09:31:37 <atehwa> good!
09:31:39 <CakeProphet> next topic: let's measure "beautiful"
09:31:47 <atehwa> yes, I was just coming to that :)
09:32:29 <CakeProphet> I think the Saw movies had beautiful imagery.
09:32:39 <elliott> atehwa: IMO, number of keystrokes saved is a bit of an overly first-order interpretation.
09:32:44 <CakeProphet> if not the best storyline, or well, anything else.
09:32:48 <atehwa> beauty of a language can be measured by the number of people who, having learned something of the language, tell their opinions to other people.
09:33:14 <CakeProphet> elliott: but it does correspond to Java not being terribly expressive
09:33:17 <elliott> Let's at least say: Mean of number of keystrokes saved by you in every possible universe weighted by its probability.
09:33:18 <CakeProphet> which is very acceptable for me. :P
09:33:34 <atehwa> elliott: well, it's directly tied to Kolmogorov complexity :) and as we all know, the KC of a datum (program) depends on the language it is specified in...
09:33:42 <elliott> Then, just because you miraculously avoid inserting a ridiculously easy bug to add that'd take years to fix, doesn't make the tool magic :)
09:34:33 <CakeProphet> I think reducing the number of some kind of language-defined construct might make more sense?
09:34:36 <CakeProphet> like... "atoms"?
09:34:48 <CakeProphet> keystrokes are cheap and kind of irrelevant in my opinion.
09:35:00 -!- Slereah_ has quit (Ping timeout: 260 seconds).
09:35:16 -!- Slereah_ has joined.
09:35:36 <CakeProphet> but this doesn't say anything at all about the language, just the particular abstraction being used.
09:35:40 <elliott> CakeProphet: aka token
09:35:45 <CakeProphet> yes, that works.
09:36:23 <atehwa> CakeProphet: well, I wouldn't count out the number of keystrokes that come from the language definition: compare "def" with "public static String"
09:36:55 <atehwa> and compare "i" with "indexOfTraversedArray"
09:36:57 <CakeProphet> 1 and 3, respectively.
09:37:07 <CakeProphet> what you name your variables is totally irrelevant to expressivity.
09:37:34 <atehwa> humhum
09:37:56 <atehwa> I think that a language that would require me to use very long variables is quite unexpressive (or quite unimpressive)
09:38:18 <CakeProphet> I could take an extremely expressive (uh) expression and change all of the variables to ghost_ridesTheWhipN where N is an incrementing number that starts at 0
09:38:25 <CakeProphet> and it would be pretty much the same thing I think?
09:38:26 <elliott> atehwa: so do we count keystrokes an ide saves you?
09:38:44 <atehwa> OO languages increase expressivity by allowing same names to be used for operations of different data types
09:38:49 <atehwa> elliott: if we have to
09:38:52 <CakeProphet> Visual Studio, most expressive programming language.
09:38:52 <fizzie> "Similarly, if someone asserted that cats were vegetables, someone correcting this might emphasize the last word: <p>Cats are cute <em>animals</em>.</p>" -- HTML5 specification, the best specification.
09:39:00 <atehwa> but I don't like to use an IDE, so...
09:39:14 <elliott> atehwa: So it's not measuring the expressivity of a language, it's a development environment (Unix counts)
09:39:24 <elliott> Oh no, I told the Risc OS people I'm a Haskell person and now they think I'm weird.
09:40:01 <CakeProphet> Perl in a UNIX environment is the most expressive. I get bash and Perl and everything in UNIX!
09:40:01 <atehwa> elliott: I don't believe IDE's save all that many keystrokes...
09:40:10 <ais523> elliott: /Risc OS/ people think you're weird?
09:40:12 <CakeProphet> the bash and UNIX stuff is just 2 tokens away. ` and `
09:40:39 <elliott> atehwa: Like I said, Unix counts.
09:40:44 <elliott> atehwa: My point is that your tools matter.
09:40:57 <ais523> elliott: I consider UNIX a good development environment
09:41:00 <elliott> Magnetic butterfly is slower than cat and restarting if you make a mistake is slower than vi is slower than mind-reading.
09:41:01 <ais523> I'm not sure if it counts as an IDE, though
09:41:22 <ais523> `addquote <elliott> Magnetic butterfly is slower than cat and restarting if you make a mistake is slower than vi is slower than mind-reading.
09:41:29 <HackEgo> 699) <elliott> Magnetic butterfly is slower than cat and restarting if you make a mistake is slower than vi is slower than mind-reading.
09:41:35 <ais523> it's probably slightly better out of context
09:41:37 <ais523> `quote
09:41:38 <ais523> `quote
09:41:40 <HackEgo> 395) <olsner> two quotes about quotes about django <olsner> I guess the worst part is that I appear in all three hackego quotes about django
09:41:41 <ais523> `quote
09:41:41 <HackEgo> 591) <Gregor> Electrons are so fragile X-D
09:41:42 <ais523> `quote
09:41:43 <HackEgo> 270) <ais523> gah, why does lose keep winning?
09:41:44 <ais523> `quote
09:41:44 <HackEgo> 27) PA ET ANNET UNIVERSET DER DE ENESTE PERSONEN OERJAN: <oerjan> sa jeg kan bare konkludere med at det er feil, eller er verden helt bonkers
09:41:46 <HackEgo> 628) <itidus20> what is nice about a pebble is that you can process it with your brain as a number by simply looking at it
09:41:50 <elliott> atehwa: Trivial example: Tab completion saves keypresses if your identifiers are over a certain length. Maybe those identifiers are more readable because they're longer, and this means you make less mistakes, and thus need to do less bug-fixing, and thus end up pressing fewer keys overall.
09:42:05 <atehwa> elliott: I believe that tools matter; maybe that is why the length of variable names does not have all that much to do with expressivity (because you end writing the same number of keystrokes, if you have an editor to help you with long names)
09:42:08 <elliott> `delquote 591
09:42:10 <HackEgo> ​*poof*
09:42:15 <ais523> elliott: it was either that one or 628
09:42:25 <ais523> I'm not sure which was worse
09:42:34 <elliott> 628 is my favourite there
09:42:42 <ais523> ah, OK
09:42:55 <elliott> 27 is probably the weakest, but: tradition.
09:42:55 <ais523> I like 395 the best, I think
09:42:58 <CakeProphet> we haven't made very much progress on measuring beautiful.
09:43:04 <elliott> atehwa: Right. So you're not really measuring the expressivity of a language at all :)
09:43:38 <elliott> ...so what I'm saying is, @ is the most expressive thing ever, and every other development environment of any sort is vastly inferior by definition.
09:43:47 <elliott> Finally something none of us can disagree with.
09:44:28 <CakeProphet> maybe we could measure the hip-waist ratio of programs to determine beauty.
09:46:15 <atehwa> elliott: I think I am measuring the expressivity of languages after all, because really, all the nifty ways to enter programs do not affect number of keystrokes all that much. It's still about the least number of keystrokes you can go with.
09:46:27 <elliott> <elliott> atehwa: Trivial example: Tab completion saves keypresses if your identifiers are over a certain length. Maybe those identifiers are more readable because they're longer, and this means you make less mistakes, and thus need to do less bug-fixing, and thus end up pressing fewer keys overall.
09:46:38 <elliott> You might think it doesn't make much difference in practice, but it's still a difference.
09:46:53 <elliott> And all I have to do is make the tools more magical until it's all the difference :)
09:47:09 <atehwa> elliott: if you're going with the least number of keystrokes, you won't be using variable names that benefit from auto-completion. :)
09:47:34 <CakeProphet> what is the expressivity of Piet?
09:47:35 <elliott> atehwa: You would because: "Maybe those identifiers are more readable because they're longer, and this means you make less mistakes, and thus need to do less bug-fixing, and thus end up pressing fewer keys overall."
09:47:38 <atehwa> this brings to my mind a book where they talked about inducing (logic) programs, such as Prolog programs
09:48:02 <elliott> So there's an example where a more verbose coding style but a fancier editor results in less overall keystrokes.
09:48:13 <elliott> So it's not about the language (consider if it enforced the coding style).
09:48:15 <CakeProphet> I don't think Piet is programmed with keystrokes, necessarily.
09:48:59 -!- elliott has quit (Remote host closed the connection).
09:49:05 <atehwa> elliott: but I wouldn't be so sure that it happens in practice. There's ample statistical evidence that the time programmers use to correcting and rewriting programs is also proportional to the program length.
09:49:12 -!- Ngevd has joined.
09:49:57 <atehwa> I think it would stand even if the extra length was only caused by longer identifier names.
09:50:05 <Ngevd> Hello!
09:50:17 -!- elliott has joined.
09:50:26 <atehwa> elliott: but I wouldn't be so sure that it happens in practice. There's ample statistical evidence that the time programmers use to correcting and rewriting programs is also proportional to the program length.
09:50:49 <atehwa> I think it would stand even if the extra length was only caused by longer identifier names.
09:51:12 <elliott> So, you're saying it literally never applies? i.e., every identifier should be as short as physically possible?
09:51:36 <atehwa> I'll try to rephrase what I'm trying to claim
09:51:38 <CakeProphet> this is why Perl is the best language.
09:52:09 <CakeProphet> to accomodate the length of sigil, you simply remove spaces in front of the sigil.
09:52:14 <CakeProphet> my $x becomes my$x
09:52:49 <atehwa> The claim is this: the "expressivity" of a language for a given task is the amount of physical work that is required to write the shortest program that exists that is a "solution" of the given task.
09:53:20 -!- ais523 has quit (Ping timeout: 252 seconds).
09:53:39 <CakeProphet> in this sense, Charles Babbage's Analytical Engine has the least expressive language.
09:54:06 <CakeProphet> all those punch cards. You probably have to shovel coal into a furnace or something too because it's steam-powered.
09:54:24 <atehwa> CakeProphet: I wouldn't be surprised; on the other hand, I wouldn't be surprised to find programming environments that are even less expressive than Babbage's engine.
09:54:54 <atehwa> CakeProphet: but count out the work that goes into _executing_ the program.
09:55:05 <CakeProphet> hmmm, wait I don't think it's steam powered
09:55:24 <atehwa> only count the work that goes into _specifying_ the program.
09:55:35 <elliott> <atehwa> The claim is this: the "expressivity" of a language for a given task is the amount of physical work that is required to write the shortest program that exists that is a "solution" of the given task.
09:55:44 <elliott> yes, and i've been trying to prove that it isn't about the language :)
09:55:50 <elliott> and that it only makes sense in terms of an entire toolchain
09:55:56 <CakeProphet> ah well I just use slaves to punch my Analytical Engine cards.
09:56:16 <CakeProphet> slaves = most expressive component of your toolchain.
10:01:05 <atehwa> elliott: well, I agree with you in principle; I just think that the impact of the rest of the toolchain is almost negligible
10:01:34 <Ngevd> "almost negligible" implies it isn't negligible
10:01:37 <atehwa> elliott: there's a reason why source code is called so: it is the single point that is really the work of people, not automata.
10:01:43 <elliott> atehwa: Well, certainly coding Java without an IDE is quite painful, because the language itself is underpowered and verbose. An IDE helps to mitigate that.
10:02:22 <elliott> atehwa: But maybe I'll agree that /today/ it doesn't matter all that much beyond pathological examples like that.
10:02:28 <elliott> (Although worryingly common ones.)
10:02:35 <CakeProphet> hlep Piet and keystrokes problem ignored.
10:02:36 <atehwa> elliott: well, when I enter discussions about how unexpressive Java is and how it takes so much work to write a program in Java, people invariably toss IDE's in.
10:02:43 <elliott> But I'm pretty sure there's no way that @ won't disprove this thesis as soon as everyone is using it :)
10:03:02 <atehwa> elliott: what is @? Pointer?
10:03:22 <Ngevd> elliott's operating system type thing porject
10:03:23 <elliott> It, er; oh no, ais isn't here, I can't even delegate the task.
10:03:26 <elliott> It's an OS. Sort of.
10:03:29 <Ngevd> *project
10:03:38 <elliott> Except not really.
10:03:38 <Ngevd> Hence "type thing"
10:03:44 <atehwa> elliott: in the lines of INTERLISP-D?
10:03:45 <elliott> Except yes really but it's misleading to think of it in those terms.
10:03:52 <CakeProphet> @ is The Most Revolutionary Mostly Undefined Thing.
10:04:10 <elliott> atehwa: Attempting to go for the most obscure reference possible? :-)
10:04:12 <Ngevd> It's an operating system, Jim, but not as we know it
10:04:13 <CakeProphet> suitable for the many porpoises.
10:04:37 <atehwa> elliott: no really, it was what first came to my mind... because I've been thinking about implementing a Scheme OS, myself.
10:05:07 <elliott> Well, @ is certainly lumpable under the "language-based OS" banner, although that's not strictly true.
10:05:12 <CakeProphet> NULL is the most obscured reference.
10:05:19 <elliott> Scheme is waaayy below it, though :-)
10:05:36 <elliott> (Note: Same applies to almost every language I know of; the rest are just way below, rather than waaayy below.)
10:05:37 <atehwa> elliott: I'm sure it is.
10:05:46 <Ngevd> elliott, the things you say are getting annoyingly close to self-contradictions
10:05:56 <elliott> Ngevd: Well, they are... and they aren't.
10:05:59 <Ngevd> :P
10:06:18 <CakeProphet> wait a second, I thought I had copyright on self-contradictions here?
10:06:25 <CakeProphet> I will have to take legal action soon.
10:06:33 <atehwa> CakeProphet: Piet kinda handled by changing "number of keystrokes" into "amount of physical work"
10:07:10 <CakeProphet> pure-data is probably the least expressive language then
10:07:14 <CakeProphet> because it's a pain in the ass to program.
10:07:58 <Ngevd> CakeProphet, that's a generic trademark now
10:08:03 <CakeProphet> example program: http://en.wikipedia.org/wiki/File:Pd_example_3.svg
10:08:44 <elliott> More representative example program: http://upload.wikimedia.org/wikipedia/commons/7/74/Pure_Data_with_many_patches_open_%28netpd_project%29.png
10:08:53 <elliott> Well, s.
10:08:58 <CakeProphet> program(s) --yes
10:09:08 <elliott> But what's a plural between friends.
10:09:12 <elliott> No, wait, we're not friends.
10:09:14 <elliott> Between enemies.
10:09:40 <atehwa> I guess one could also replace a Java IDE with macro preprocessing :) to set up sensible abbreviations for all boilerplate code.
10:09:44 <CakeProphet> actually I would the massive spaghetti mess underneath all of those clean UIs is more representative.
10:09:49 <CakeProphet> *would say
10:10:57 <CakeProphet> anyway graphical dataflow languages are an interesting concept, but I'd prefer more textiness.
10:11:07 <fizzie> http://goto10.org/wp-content/uploads/goto10.org/2008/11/pure_data-workshop.png
10:11:17 <fizzie> How about that for representativeness?
10:11:24 <CakeProphet> yes that's not too far off.
10:11:49 <CakeProphet> you can mitigate that kind of situation with some good style, but no one does this of course.
10:11:53 <CakeProphet> as it involves more clicking.
10:16:21 * elliott tests something.
10:16:21 -!- elliott has quit (Quit: Leaving).
10:16:37 -!- elliott has joined.
10:16:39 <elliott> `echo elliott
10:16:41 <HackEgo> elliott
10:16:47 <fizzie> ^echo elliott
10:16:47 <fungot> elliott elliott
10:17:02 <elliott> Yay, t'works.
10:17:23 <CakeProphet> `run echo `echo echo`
10:17:25 <HackEgo> echo
10:17:32 <elliott> `echo elliott
10:17:34 <HackEgo> elliott
10:17:35 <fizzie> ^cho elliott
10:17:36 <fungot> elliottlliottliottiottottttt
10:18:26 <elliott> Man, nobody told me `speaker-test -c2` produced avant-garde noise on command.
10:18:33 <CakeProphet> > map head (tails "elliott")
10:18:34 <lambdabot> "elliott*Exception: Prelude.head: empty list
10:18:35 <elliott> fizzie: Make fungot do a /me that highlights me pls.
10:18:35 <fungot> elliott: 17. no pokers are soft; all pillows are soft. 11. no. 16. here we only understand " are" between names of two attributes ( for example, such propositions as " all the fnord i've done, from fnord and from fnord.
10:19:20 <fizzie> ^bf +.,[.,]+.!ACTION elliott whatever
10:19:20 * fungot elliott whatever
10:19:25 <elliott> Sigh.
10:19:27 <elliott> OK, to clarify
10:19:32 <elliott> fizzie: One that doesn't highlight me the line before :P
10:19:41 <elliott> That worked, but probably only because you highlighted me...
10:20:01 <elliott> ^bf +.,,[.,,]+.!.A.C.T.I.O.N. .e.l.l.i.o.t.t. .w.h.a.t.e.v.e.r
10:20:01 * fungot elliott whatever
10:20:02 <CakeProphet> just do a rot13
10:20:07 <CakeProphet> or that.
10:20:11 <elliott> ^bf +[+]+.,,[.,,]+.!.A.C.T.I.O.N. .e.l.l.i.o.t.t. .w.h.a.t.e.v.e.r
10:20:11 * fungot elliott whatever
10:20:51 <atehwa> is there documentation somewhere about the many bots on the channel?
10:21:03 <CakeProphet> dunno ask fungot
10:21:04 <fungot> CakeProphet: and what a grand thing it would be glad to be helped up again.
10:21:19 <atehwa> fungot: is there documentation about you and your comrades?
10:21:19 <fungot> atehwa: next to him the eldest daughter: she suggested very little, only asked if he would take her with her look of ' passive beauty.'
10:21:23 <fizzie> ^bf +.,[-.,]+.!BDUJPO!fmmjpuu!whatever
10:21:23 * fungot elliott vg`sdudq
10:21:35 <Ngevd> ^style
10:21:35 <fungot> Available: agora alice* c64 ct darwin discworld europarl ff7 fisher fungot homestuck ic irc jargon lovecraft nethack pa sms speeches ss wp youtube
10:21:37 <CakeProphet> sdudq, good data structure name.
10:21:55 <Ngevd> ^style irc
10:21:55 <fungot> Selected style: irc (IRC logs of freenode/#esoteric, freenode/#scheme and ircnet/#douglasadams)
10:21:56 <CakeProphet> `help
10:21:57 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/
10:22:08 <fizzie> There is "documentation" in the sense of
10:22:10 <fizzie> ^prefixes
10:22:11 <fungot> Bot prefixes: fungot ^, HackEgo `, EgoBot !, lambdabot @ or ?
10:22:14 <fizzie> `prefixes
10:22:15 <HackEgo> Bot prefixes: fungot ^, HackEgo `, EgoBot !, lambdabot @ or ?
10:22:17 <elliott> ^bf +[+]+.,,[.,,]+.!.A.C.T.I.O.N. .e.l.l.i.o.t.t. .w.h.a.t.e.v.e.r
10:22:17 * fungot elliott whatever
10:22:18 <elliott> ^bf +[+]+.,,[.,,]+.!.A.C.T.I.O.N. .e.l.l.i.o.t.t. .w.h.a.t.e.v.e.r
10:22:19 * fungot elliott whatever
10:22:25 <elliott> Ugh, why won't it be context-sensitive.
10:22:37 <atehwa> fizzie: interesting.
10:22:47 <fizzie> !prefixes I think used to work too maybe I guess.
10:23:06 <CakeProphet> `!prefixes
10:23:08 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: !prefixes: not found
10:23:10 <CakeProphet> !prefixes
10:23:13 <fizzie> But EgoBot's being uncoöperative, to ö a bit, lately.
10:23:32 <atehwa> and besides, lambdabot has > too
10:23:35 <atehwa> > 1
10:23:35 <lambdabot> 1
10:23:44 <Ngevd> > head [1..10]
10:23:45 <lambdabot> 1
10:23:46 <fizzie> It's different.
10:23:53 <fizzie> It does that ":t" thing on-channel also.
10:23:59 <fizzie> :t Nothing
10:24:00 <lambdabot> forall a. Maybe a
10:24:04 <CakeProphet> `echo HackEgo is th ebest.
10:24:06 <HackEgo> HackEgo is th ebest.
10:24:28 <CakeProphet> `words
10:24:30 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: words: not found
10:24:34 <CakeProphet> :(
10:24:38 <fizzie> ^echo fungot is the eboniest.
10:24:38 <fungot> fungot is the eboniest. fungot is the eboniest.
10:24:50 <CakeProphet> `ls bin
10:24:52 <HackEgo> ​? \ addquote \ allquotes \ calc \ define \ delquote \ etymology \ forget \ fortune \ frink \ google \ json \ k \ karma \ karma+ \ karma- \ learn \ log \ logurl \ macro \ marco \ paste \ pastekarma \ pastelog \ pastelogs \ pastenquotes \ pastequotes \ pastewisdom \ ping \ prefixes \ qc \ quote \ quotes \ roll \ runperl \ toutf8
10:24:56 -!- elliott has quit (Remote host closed the connection).
10:25:22 -!- elliott has joined.
10:25:24 <CakeProphet> why did words get deleted? :(
10:25:40 <fizzie> `word 4
10:25:42 <HackEgo> strunkuna cal las cous
10:25:45 <CakeProphet> oh.
10:25:46 <fizzie> It just got truncamated in the ls.
10:25:46 * CakeProphet is blind.
10:25:51 <CakeProphet> or that.
10:25:55 <fizzie> `run ls bin/w*
10:25:57 <HackEgo> bin/wl \ bin/word \ bin/wtf
10:26:09 <CakeProphet> `word 10
10:26:12 <HackEgo> fes banchind wiigandepatalastollinqui mter genbrimed inata mes chedu chturtihaheaing hot
10:26:30 <CakeProphet> hot
10:27:02 <elliott> <HackEgo> strunkuna cal las cous
10:27:05 <elliott> sounds like a phrase
10:27:09 <fizzie> You're such a chedu.
10:27:49 <CakeProphet> fizzie: The relevance is an inata
10:28:01 <elliott> Good god, there's no Clearlooks for GTK3?
10:28:18 <fizzie> For some reason I think 'chedu' sounds like a derogatory racial term from Star Wars.
10:28:56 <CakeProphet> wiigandepatalastollinqui is an ancient god.
10:29:40 <fizzie> "Valarin seemed to use long words; for example, the Valarin word for Telperion, Ibrîniðilpathânezel, is eight syllables long."
10:29:58 <Ngevd> CakeProphet, that's the Mayan god of esoteric programming languages
10:34:29 <CakeProphet> `run echo '[a-z'\''-]+(?<='\''s)'
10:34:31 <HackEgo> ​[a-z'-]+(?<='s)
10:34:35 <CakeProphet> hmmm
10:35:16 <CakeProphet> does '[a-z'\''-]+(?<='\''s)' count as a single argument?
10:35:52 <fizzie> It should; there's no whitespace in there.
10:36:26 <CakeProphet> eng_filter='[a-z'\''-]+(?<!'\''s)'
10:36:34 <CakeProphet> gb_opt eng-1M Eng1M $eng_filter
10:36:40 <CakeProphet> sh: Syntax error: ")" unexpected
10:37:15 <fizzie> Sure, it's not escaped/quoted any more at that point.
10:37:21 <fizzie> Try "$eng_filter" or some-such.
10:37:29 <CakeProphet> oh right...
10:37:34 <CakeProphet> stupid bash.
10:37:35 -!- GreaseMonkey has quit (Quit: The Other Game).
10:38:13 <CakeProphet> fizzie: same thing.
10:38:22 -!- Phantom_Hoover has joined.
10:38:25 <elliott> hi Phantom_Hoover
10:38:27 <elliott> s/ $//
10:38:34 <Phantom_Hoover> That was quick.
10:38:34 <lambdabot> Phantom_Hoover: You have 2 new messages. '/msg lambdabot @messages' to read them.
10:38:39 <CakeProphet> elliott: ah. I was confused.
10:38:43 <CakeProphet> until you made that correction.
10:39:09 <CakeProphet> I was like "who is Phantom_Hoover ?"
10:39:43 -!- ais523 has joined.
10:39:45 <CakeProphet> fizzie: same error. it doesn't seem to change anything.
10:40:54 <fizzie> CakeProphet: Hrm. Well, I'unno. foo='[a-z'\''-]+(?<!'\''s)'; echo $foo seems to work just fine.
10:41:14 <CakeProphet> maybe because the "$eng_filter" is being passed to a function
10:41:20 <CakeProphet> which then doesn't quote things.
10:41:32 <CakeProphet> bash is silly. :P
10:41:33 <ais523> [11:40] <ais523> how do I convert a char to a string in OCaml, without using any modules? I'm trying to write a script to automatically mark other people's homework (in a kind of reverse to the usual question), so it has to run inside a sandbox where modules aren't allowed, and there's no standard string_of_char function, nor anything similar that I can find in Pervasives
10:41:34 <ais523> [11:40] <ais523> I have a feeling that I'm missing some sort of syntax for declaring a string a character at a time
10:41:45 <ais523> I asked in #ocaml, but I'd better ask here too just in case somebody knows
10:41:47 <fizzie> Passing into a function shouldn't be any different than passing into a command; but of course what you do inside the function is a different thing.
10:41:50 <ais523> it shouldn't be that difficult an operation...
10:41:54 <ais523> *…
10:42:06 <CakeProphet> fizzie: right, I'm not quoting inside the function. so that's the problem.
10:42:20 <Ngevd> I don't know OCaml
10:42:39 <Ngevd> If it's anything like Haskell, surround it by square brackets
10:43:12 <elliott> ais523: I'm sure there's something in the string module
10:43:14 <elliott> which I think exists
10:43:24 <Ngevd> elliott, didn't you read?
10:43:27 <fizzie> There is something in the String module, but "without using any modules".
10:43:28 <Ngevd> He's not using modules!
10:43:31 <elliott> Oh.
10:43:46 <elliott> ais523: Surely the string module is not all that unsafe.
10:44:10 * elliott tests somethin
10:44:10 <elliott> g.
10:44:12 <ais523> elliott: it's not a security thing, but a using-modules-to-do-their-work-for-them thing
10:44:12 -!- elliott has quit (Quit: Leaving).
10:44:19 <ais523> #ocaml have come up with a suggesiton, I'll try it
10:44:32 -!- elliott has joined.
10:44:35 <fizzie> ais523: Is the suggestion... complicated and perverse?
10:44:55 <Ngevd> Hey, look, they've changed the royal succession rules for Commonwealth countries
10:45:20 <ais523> # let x = "x" in x.[0] <- 'y'; x ;;
10:45:21 <ais523> - : string = "y"
10:45:23 <ais523> fizzie: indeed
10:45:23 <Phantom_Hoover> How does that work?
10:45:32 <ais523> turns out strings are mutable in OCaml
10:45:38 <ais523> so I use a one-character string literal and mutate it
10:45:41 <Phantom_Hoover> Commonwealth countries recognise a different monarch to the UK?
10:45:50 <Ngevd> UK's in the Commonwealth
10:46:16 -!- elliott has quit (Client Quit).
10:46:26 -!- elliott has joined.
10:46:42 <CakeProphet> gb_opt() { echo perl ./construct_grams.pl -m "${2:-$1}"${3:+ -f $3}${4:+ -e $4} $D/googlebooks-$1-*.csv; }
10:46:45 <CakeProphet> d_opt() { echo perl ./construct_grams.pl -m "${3:-$1}"${2:+ -e "$2"}${4:+ -f "$4"} dict/$1;
10:46:53 <CakeProphet> bash is the best programming language for writing abstractions
10:47:21 <ais523> # string_of_char 'a' ^ string_of_char 'b' ;;
10:47:22 <ais523> - : string = "aa"
10:47:24 <ais523> oh dear
10:47:37 <CakeProphet> nope. same error. :(
10:47:58 <ais523> the joys of impure languages, right?
10:48:06 <elliott> ais523: wat
10:48:17 <ais523> elliott: it's closing over "x"
10:48:27 <elliott> I don't even want to know.
10:48:33 <ais523> so it's modifying the same string literal twice
10:48:36 <elliott> Does anyone know how to get my LAN IP without ifconfig?
10:48:37 <fizzie> ais523: Heh, heh. What if you return "" ^ x after mutating x.
10:48:48 <CakeProphet> I guess I need to like
10:48:48 <elliott> ais523: oh, that's your string_of_char
10:48:50 <CakeProphet> echo the "'s ?
10:48:55 <CakeProphet> ughhhhhzsodihwiuerhiuwerh
10:49:05 <elliott> ais523: why not just make a new variable each time
10:49:18 <elliott> ais523: let string_of_char char = let x = "x" in x.[0] <- 'y'; x ;;
10:49:24 <elliott> or does that actually share the "x"
10:49:29 <elliott> in which case: ewwwww
10:49:52 <ais523> elliott: it closes over the "x"
10:49:57 <elliott> ais523: that's disgusting
10:50:02 <ais523> # let string_of_char c = let x = "*" ^ "" in x.[0] <- c ; x ;;
10:50:04 <ais523> val string_of_char : char -> string = <fun>
10:50:05 <ais523> # string_of_char 'a' ^ string_of_char 'b' ;;
10:50:07 <ais523> - : string = "ab"
10:50:09 <ais523> concatenation operator saves the day
10:50:13 <elliott> ais523: I prefer fizzie's
10:50:14 <ais523> as it has to construct a new string each time
10:50:25 <CakeProphet> `run echo \"test\"
10:50:27 <elliott> let string_of_char c = let x = " " in x.[0] <- c; "" ^ x ;;
10:50:27 <HackEgo> ​"test"
10:50:49 <elliott> aha, "ip addr show dev eth0"
10:51:21 <fizzie> But would let x = " " in x.[0] <- c; "" ^ x ;; be theoretically non-re-entrant?
10:51:41 <ais523> fizzie: indeed
10:51:50 <CakeProphet> perl ./construct_grams.pl -m "Eng1M" -f "[a-z'-]+(?<!'s)" "/media/Elements/googledata//googlebooks-eng-1M-*.csv"
10:51:56 <CakeProphet> this is what my function outputs
10:52:32 -!- elliott has quit (Quit: Leaving).
10:52:37 -!- elliott has joined.
10:52:55 -!- elliott has quit (Client Quit).
10:53:00 -!- elliott has joined.
10:53:11 <CakeProphet> er wait I don't want the * in quotes.
10:53:12 <CakeProphet> wuehruhweriuhasudhiuwehr
10:53:13 -!- elliott has quit (Client Quit).
10:53:19 -!- elliott has joined.
10:53:26 -!- hagb4rd has joined.
10:53:26 <elliott> _sigh_ what is this thing complaining about
10:53:40 <fizzie> Also with the default bash config (histexpand true) ""s aren't enough to quote a !.
10:53:52 <CakeProphet> uh, why?
10:53:58 <CakeProphet> what's special about !
10:54:01 <fizzie> $ echo "foo!bar"
10:54:02 <fizzie> bash: !bar": event not found
10:54:04 <fizzie> That's why.
10:54:08 <fizzie> It's the history expansion character.
10:54:12 <CakeProphet> so... \!?
10:54:12 <fizzie> (Well, the default one.)
10:54:21 -!- elliott has quit (Client Quit).
10:54:25 -!- elliott has joined.
10:54:31 <fizzie> $ echo "foo\!bar"
10:54:31 <fizzie> foo\!bar
10:54:31 <elliott> WHY WOULD YOU SAY NO IDENT RESPONSE
10:54:32 <fizzie> Not quite.
10:54:33 <elliott> OH
10:54:34 <elliott> duh
10:54:44 -!- elliott has quit (Client Quit).
10:54:49 -!- elliott has joined.
10:54:51 <CakeProphet> fizzie: help what do.
10:54:56 <elliott> Excellent.
10:54:59 <elliott> ais523: Look at mah hostname.
10:55:33 <CakeProphet> fizzie: also does * not expand inside quotes?
10:55:53 <fizzie> CakeProphet: I suggest: despair. And yes, * does not expand inside quotes.
10:56:01 <CakeProphet> how do I quote spaces in a file name and also expand wildcards?
10:56:04 <CakeProphet> WEIRWEEHRJIUS<FDUWHERUHAEUHWERUHWET
10:56:07 <CakeProphet> bash string hell.
10:56:14 <fizzie> You put the * outside the quotes.
10:56:26 <CakeProphet> oh so wildcard expansion comes after quote expansion
10:56:39 <fizzie> htkallas@pc112:~$ touch 'foo bar 1'
10:56:39 <fizzie> htkallas@pc112:~$ touch 'foo bar 2'
10:56:39 <fizzie> htkallas@pc112:~$ echo "foo bar"*
10:56:39 <fizzie> foo bar 1 foo bar 2
10:57:16 <CakeProphet> I seem to be able to echo ! just fine.
10:57:34 <fizzie> You (or someone else) may have set histexpand off.
10:57:40 <fizzie> (It's the sensible thing.)
10:57:42 <CakeProphet> yep unquoted * fixed everything now.
10:57:58 <CakeProphet> and now my functions are beautifully written as:
10:57:59 <CakeProphet> gb_opt() { echo perl ./construct_grams.pl -m \"${2:-$1}\"${3:+ -f \"$3\"}${4:+ -e \"$4\"} \"$D/googlebooks-$1-\"*\".csv\"; }
10:58:02 <CakeProphet> d_opt() { echo perl ./construct_grams.pl -m \"${3:-$1}\"${2:+ -e \"$2\"}${4:+ -f \"$4\"} \"dict/$1\"; }
10:59:02 <CakeProphet> so basically I'm going to compile all the English stuff with a special filter so I can avoid weirdness
10:59:11 <CakeProphet> and then use my default filter on everything else
10:59:19 <CakeProphet> until I determine more weirdness in those corpii.
10:59:36 <CakeProphet> but anyway I can specify a regex filter for word data now.
11:00:09 <fizzie> The completely different argument order for gb_opt and d_opt looks pretty weird already.
11:00:21 <CakeProphet> yes it's for convenience
11:00:36 <CakeProphet> what I might need to commonly specify for the googledata is not the same as the /usr/share/dict data.
11:00:52 <CakeProphet> /usr/share/dict needs more explicit encodings. the googledata is all in the data encoding.
11:00:55 <elliott> noidentd.hs: accept: resource exhausted (Too many open files)
11:01:00 <CakeProphet> s/data/default/
11:01:00 <elliott> Nooooo, my identd is exploitable.
11:02:18 * elliott wonders if there's any way to avoid that without one process per connection.
11:02:22 <CakeProphet> googledata however needs explicitly specified module names more often because a lot of the names have hyphens
11:02:33 <CakeProphet> I suppose I could fix this with a de-hyphenate regex in my perl script, but... eh.
11:03:24 -!- ais523 has quit (Ping timeout: 255 seconds).
11:05:17 <CakeProphet> actually the dehyphenate regex sounds nice so I'll do that...
11:06:54 <CakeProphet> now they have the same argument order
11:07:10 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
11:07:46 -!- ais523 has joined.
11:08:05 <ais523> there we go
11:08:25 <ais523> thanks, it's nice to have IRC to depend on when you need to do something bizarre with a relatively rarely-used language in an emergency
11:08:45 <elliott> ais523: Did I mention I preferred fizzie's?
11:08:53 <elliott> let string_of_char c = let x = " " in x.[0] <- c; "" ^ x ;;
11:08:54 <ais523> elliott: not while my connection was holding
11:09:04 <ais523> it feels weird mutating the same string constantly, though
11:09:19 <elliott> That's conceptually "nicer" than making a too-big string just to do what you do.
11:09:20 <CakeProphet> feels completely natural in Perl.
11:09:21 <ais523> so it's the difference between mutate then clone, and clone then mutate
11:09:26 <elliott> Erm, not too-big.
11:09:26 <ais523> elliott: there isn't a too-big string
11:09:30 <elliott> But anyway, okay, if you insist.
11:09:36 <elliott> ais523: I misspoke.
11:09:37 <elliott> Fingerthunk.
11:09:40 <elliott> Tunkletyped.
11:10:19 <CakeProphet> TUnkletypedfingerthunk
11:10:59 <elliott> BSD sockets should be simpler so that it's actually possible to golf a fake identd.
11:11:55 * elliott has a 20-line Haskell solution, but it's Just Not The Same.
11:12:20 <ais523> probably because Haskell doesn't have mutable strings
11:12:24 <fizzie> I'd have been worried with let x = "*" ^ "" in x.[0] <- c; x that some constant-folding pass pre-did "*" ^ "" -> "*"; but I guess not.
11:12:31 <elliott> ais523: Yes, that is a correct reading of context.
11:12:36 <elliott> fizzie: OCaml basically doesn't optimise.
11:12:42 <CakeProphet> gb_opt() { echo perl ./construct_grams.pl -m \"$1\"${2:+ -f \"$2\"}${3:+ -e \"$3\"} \"$D/googlebooks-$1-\"*\".csv\"; }
11:12:45 <CakeProphet> d_opt() { echo perl ./construct_grams.pl -m \"$1\"${2:+ -e \"$2\"}${3:+ -f \"$3\"} \"dict/$1\"; }
11:12:48 <CakeProphet> this is a little nicer.
11:12:50 <ais523> elliott: well, that optimization is incorrect
11:13:22 <ais523> otherwise, if you later mutated one of the original strings, ^'s return value would change too
11:13:37 <fizzie> Yeah, well, mutable strings.
11:14:18 <Ngevd> I think I'll register Pietbot with nickserv now
11:14:29 <elliott> fizzie: Hey, golf me a fake identd.
11:14:42 * elliott awaits total success.
11:14:51 <ais523> Ngevd: is it actually written in Piet?
11:15:30 <fizzie> elliott: Nnnno. But I've seen a not-many-lines fakedentd somewhere.
11:15:43 <elliott> fizzie: But it's like two hundred.
11:15:44 <Ngevd> Actually, no I won't
11:17:04 <ais523> elliott: you could just submit it as an anagol puzzle, then use the result?
11:17:13 <elliott> ais523: those can't do networking
11:17:14 <coppro> ohgods graph theory
11:17:28 <ais523> elliott: could you just use an nc wrapper?
11:17:30 <coppro> awesome, but such a pain
11:17:34 <elliott> ais523: no
11:17:34 <ais523> or is the identd protocol more complicated than that?
11:17:55 <coppro> anyone here ever looked at random graphs at all?
11:18:29 <elliott> ais523: no, it's trivial
11:18:30 <CakeProphet> I should just write a sprunge script
11:18:39 <CakeProphet> because I can never remember the command for it.
11:18:47 <ais523> CakeProphet: the command is on sprunge's website
11:18:50 <elliott> fizzie: ah, hmm, this one is only 143 lines, but it needs to be executed via identd
11:18:52 <elliott> i'll just write my own
11:18:53 <CakeProphet> ais523: I'm aware
11:19:02 <CakeProphet> but going to the website to get the command defeats the purpose of a command line pastebin
11:19:18 <ais523> not really, it saves you a copy-and-paste of the thing you're trying to submit
11:19:29 <CakeProphet> that's true.
11:20:24 <fizzie> I think someone did use a nc wrapper inside a 'while true' loop. It's a bit race-conditiony perhaps since the nc will only accept the first connection, but usually it's over fast enough.
11:20:27 -!- Ngevd has quit (Ping timeout: 240 seconds).
11:21:12 <elliott> ports are unsigned sixteen bits, right?
11:21:32 <fizzie> For now... (ominous ominesance)
11:23:01 <CakeProphet> echo -e '#!/bin/sh'"\n"curl -F 'sprunge=<-' http://sprunge.us > scripts/sprunge
11:23:02 <fizzie> The one I saw was just "read line; chomp newline; append ' : USERID : UNIX : osofake'; write out" without bothering to, you know, check that the query made any sense.
11:23:04 <CakeProphet> woooo
11:23:22 <ais523> elliott: yes, generally speaking
11:23:49 <elliott> fizzie: That's what I'm doing too.
11:24:06 <CakeProphet> er wait that doesn't work
11:24:13 <elliott> fizzie: Except (a) with a maximum length it'll read before kicking you and (b) maintaining like 16 connections at a time and if there's more than that a new one boots an old one off.
11:24:22 <elliott> fizzie: In case, you know, someone tries to DOS it.
11:24:32 <CakeProphet> cat Acro/build_data.sh | ./sprunge
11:24:32 <CakeProphet> ./sprunge: 2: cannot open -: No such file
11:24:42 <ais523> why would someone try to DOS a golfed identd
11:24:47 <ais523> and why would an identd golfer worry about DOSes?
11:25:32 <ais523> also, hmm, is 0 a valid port number? what about 65535?
11:25:34 <CakeProphet> oh...
11:25:35 <CakeProphet> right
11:25:36 <CakeProphet> stupid
11:25:37 <CakeProphet> bash
11:25:38 <CakeProphet> quoting
11:26:22 <elliott> CakeProphet: alias sprunge='curl -F "sprunge=<-" sprunge.us'
11:26:33 <CakeProphet> cat sprunge | ./sprunge http://sprunge.us/Qfge
11:26:40 <CakeProphet> elliott: I fixied it
11:26:52 <fizzie> ais523: At least API-wise 0 is generally not a valid port number, since it's used to indicate "any port".
11:27:07 -!- Vorpal has joined.
11:27:15 <CakeProphet> elliott: hmmm, alias? what is that?
11:27:21 <CakeProphet> no man entry for it.
11:27:33 <fizzie> It's a bash builtin.
11:27:44 <ais523> CakeProphet: try "help alias" in bash
11:28:33 <CakeProphet> hmmm okay
11:28:40 <CakeProphet> are these defined in a file or something?
11:28:51 <fizzie> Quite often in .bashrc, or some other file.
11:29:11 <CakeProphet> so I don't need to like... "export" them or anything.
11:29:21 <elliott> ...
11:29:23 <elliott> TEST TIME
11:29:25 -!- elliott has quit (Quit: Leaving).
11:29:29 -!- elliott has joined.
11:29:39 <fizzie> It's pretty close to a shell function except more restricted.
11:29:39 <elliott> Aww.
11:31:05 <fizzie> Vorpal: Heh, remember yesterday's sillily-titled IEEE tech alert? It seems they got some feedback: "Subject: IMPORTANT: A Letter From IEEE Spectrum Editor in Chief Susan Hassler About Today's Tech Alert
11:31:05 <fizzie> -- Please accept our sincere apologies for the headline in today's Tech Alert: "With the Arduino, Now Even Your Mom Can Program." The actual title of the article is "The Making of Arduino."
11:31:05 <fizzie> I'm an IEEE member, and a mom, and the headline was inexcusable, a lazy, sexist cliché that should have never seen the light of day. Today we are instituting an additional headline review process that will apply to all future Tech Alerts so that such insipid and offensive headlines never find their way into your in-box. --"
11:31:43 <elliott> select reports connects to a listening socket as "reads", right?
11:31:49 <CakeProphet> ah so I do need to edit .bashrc or whatever.
11:31:55 <CakeProphet> they don't persist between sessions otherwise.
11:33:15 <Phantom_Hoover> https://sites.google.com/site/mandelbox/negative-mandelbox
11:33:23 <Phantom_Hoover> help i can't stop looking
11:33:30 <elliott> Actually, maybe I'll just use poll.
11:33:38 <elliott> poll doesn't need the set of fds reset each time, right?
11:34:12 <fizzie> You can use a static array of struct pollfd's, yes.
11:34:24 <fizzie> It doesn't even touch the "events" fields, just the "revents".
11:35:09 <fizzie> And a new connection on a listening socket should be a POLLIN(ation).
11:35:51 -!- derrik has quit (Quit: thx for the day, D, L, s, et al).
11:40:36 <elliott> Right.
11:45:12 <CakeProphet> fizzie: help I can't stop looking https://lh4.googleusercontent.com/-3H-b7AFnpE4/TqhDiDPG0KI/AAAAAAAAKJU/QIpbMwzYsn4/s400/boss.gif
11:48:58 <fizzie> "What."
11:49:22 <elliott> fizzie: Hmm, I think I must be using poll wrong. :-(
11:49:42 <elliott> At least, I get the events for new connections, but no read events beyond that.
11:50:41 <elliott> Oh, hmm.
11:50:47 <fizzie> Well, um, well. I'unno. Do you accept() the new connections and add them to your fd-list?
11:50:58 <elliott> bind: Address already in use
11:50:59 <elliott> Ajhgkhrkahkrjghkj
11:51:04 <elliott> How _do_ you fix that?
11:51:15 <fizzie> SO_REUSEADDR can help.
11:51:32 <elliott> Nah, I'd rather not change my code.
11:51:40 <elliott> I just need some kind of all-purpose unlock-port. :p
11:52:45 <elliott> Aha, now it works.
11:53:42 <fizzie> Well, it's a timeout. When the lingering entry in the TCP stack evaporates from CLOSE_WAIT or whatever to gone, it'll be again available.
11:58:11 <elliott> Hmm.
11:58:21 <elliott> It's safe to have a pollfds with a junk fd as long as .events = 0, right?
11:58:28 <elliott> *pollfds entry
12:03:56 <fizzie> Er, it could be safe, but I'm not sure it's necessarily safe.
12:04:34 <fizzie> "The array's members are pollfd structures within which fd specifies an open file descriptor --"
12:05:17 <fizzie> You can have a struct pollfd with .fd = -1, though.
12:05:26 <fizzie> "If the value of fd is less than 0, events shall be ignored, and revents shall be set to 0 in that entry on return from poll()."
12:07:14 <elliott> <fizzie> You can have a struct pollfd with .fd = -1, though.
12:07:16 <elliott> Ah, thanks.
12:07:53 <fizzie> Well, to be exact, POSIX says you can have one. I don't see a mention it in my "man poll", but...
12:09:51 <elliott> Let's just assume it works.
12:10:13 <elliott> Are four send()s after another likely to get mushed together or will they cause ~overhead~? I don't really know network stuff.
12:10:45 <fizzie> Oh, I guess it's also safe-for-some-values-of to have an invalid fd in there; it'll just set POLLNVAL in the .revents member, but you can ignore that.
12:11:25 <fizzie> If you don't specifically request TCP_NODELAY, I suppose they're rather likely to get combined to a single packet.
12:11:40 <elliott> Also also: Are you meant to shutdown() a server fd too, or is it just close() that you're meant to do?
12:12:56 <ais523> elliott: you can request the packets to be sent separately, but by default they'll be queued up a bit
12:13:09 <fizzie> Well, uh... I guess you could shutdown(s, SHUT_RD) the socket immediately when you've read the query, that would (theoretically) let one half of the four-packet shutdown sequence happen during the time you're "computing" and writing the reply.
12:13:28 <elliott> fizzie: Nonono, I mean server fds.
12:13:29 <elliott> As in.
12:13:32 <elliott> What I accept() from.
12:14:40 <fizzie> Oh, that; I'd just close it.
12:15:13 <elliott> Okay.
12:16:53 <elliott> Let's try this.
12:16:55 -!- elliott has quit (Quit: Leaving).
12:17:00 -!- elliott has joined.
12:17:05 <elliott> :/
12:17:08 <fizzie> Oh no. :/
12:17:09 <elliott> It didn't like the response.
12:17:30 <elliott> [elliott@dinky noidentd]$ nc localhost 113
12:17:30 <elliott> 113, 113
12:17:30 <elliott> 113, 113 : USERID : UNIX : elliott
12:17:34 <elliott> That's korrect, no?
12:18:14 <fizzie> It looks good to me.
12:18:22 <elliott> Hmm.
12:18:44 <fizzie> Did you put a CR-LF pair at the end?
12:18:48 <elliott> fizzie: Also, are you sure close() is enough? "bind: Address already in use" still happens for me even with a proper atexit handler.
12:19:50 <fizzie> Yes, close() does an implicit shutdown() for connection-oriented sockets; I don't think shutdown() is even sensible for a listening socket, which after all is not connected to anything.
12:20:05 <elliott> Alright.
12:20:12 -!- elliott has quit (Client Quit).
12:20:17 -!- elliott has joined.
12:20:21 <elliott> :/
12:20:48 <elliott> http://sprunge.us/aMJS ;; I'm actually surprised it came out looking as good as it does; all I have to do now is make it work...
12:22:08 <elliott> [elliott@dinky noidentd]$ echo -n 'a' | nc localhost 113
12:22:08 <elliott> [hang]
12:22:15 <elliott> Hmm, I guess recv doesn't work like read.
12:22:35 <elliott> Or nc doesn't.
12:22:37 <elliott> One of the two.
12:22:50 <elliott> Oh well, hardly matters.
12:23:11 <elliott> Ooh, I can get mine to break.
12:24:20 <elliott> Ah, yes.
12:24:27 <elliott> woo 1
12:24:27 <elliott> woo 2
12:24:27 <elliott> woo 3
12:24:27 <elliott> woo 4
12:24:27 <elliott> woo 5
12:24:27 <elliott> woo 6
12:24:29 <elliott> woo 7
12:24:31 <elliott> woo 8
12:24:33 <elliott> woo 9
12:24:35 <elliott> woo 0
12:24:37 <elliott> Turns out one can't have 0 connections.
12:24:50 -!- ais523 has quit (Ping timeout: 258 seconds).
12:25:15 <elliott> conns = (conns % (MAXCONNS - 1)) + 1;
12:25:15 <elliott> I... think that should fix it.
12:26:08 <fizzie> That thing looks suspicious. Isn't it going to just abandon the (open) sockets when it wraps over?
12:27:00 <elliott> fizzie: Yes, that's the intent. Oh, I should probably close them.
12:27:23 <elliott> fizzie: The intent is that too many connections disconnect older ones, though, yes.
12:28:00 <fizzie> It still sounds strange that it'd abandon/close all MAXCONNS existing connections every MAXCONN'th connection when that counter wraps over.
12:28:15 <elliott> Why would it? It'll just abandon the first. Oh, I see whaty ou mean.
12:28:22 <elliott> I guess I'll just always pass MAXCONNS + 1 to poll.
12:28:24 <elliott> Not like it'll go any slower.
12:28:48 <fizzie> You loop with for (size_t i = 0; i < conns; i++) so when the counter wraps over to 1, it'll only look at the first connection.
12:28:53 <elliott> Yes, indeed.
12:29:19 <elliott> Fixing.
12:31:16 <elliott> fizzie: This should look more reasonable to you: http://sprunge.us/GGWW
12:31:20 <elliott> Oh, modulo me having not yet defined NELEMS.
12:32:34 <elliott> fizzie: It would be kind of nice if it only dropped people if there was more than ten simultaneous connections. But I'd need a bitset then.
12:32:50 <elliott> I suppose it would still be more elegant, as I'd call poll() with a proper count.
12:33:05 -!- elliott has quit (Quit: Leaving).
12:33:10 -!- elliott has joined.
12:33:17 <elliott> Still doesn't actually _work_, though.
12:33:33 * elliott installs Wireshark.
12:34:40 <elliott> fizzie: Anyway, I think that behaviour is semi-sensible.
12:34:52 <elliott> It just cycles through ten slots, closing sockets as it overwrites them.
12:34:54 <fizzie> Also (conns % (MAXCONNS - 1)) + 1 returns values in the [1, MAXCONNS-1] range (since %(MAXCONNS-1) is at most MAXCONNS-2); I think you want just (conns%MAXCONNS)+1 there. Then it'll go 0 (initial) -> 1, 1 -> 2, ..., MAXCONNS-1 -> MAXCONNS, MAXCONNS -> 1, 1 -> 2, ...
12:35:02 <elliott> Oh, right.
12:35:16 <elliott> Anyway, validate my semi-confidence in the behaviour being reasonable.
12:35:25 <fizzie> Yes, it sounds semi-reasonable.
12:35:32 <elliott> Can you remove the semi- qualifier???
12:35:52 <fizzie> Oh, it was a semi-confidence on reasonability, not confidence on semi-reasonability.
12:35:59 <elliott> If I added a bitset of available slots I'd also want something that keeps track of the oldness order of them, so I only kill the oldest socket. But blah blah blah, too much effort.
12:36:49 -!- ais523_ has joined.
12:36:59 -!- elliott has quit (Client Quit).
12:37:04 -!- elliott has joined.
12:37:19 <fizzie> Yes, at that level of simplicity a circular buffer like that is a reasonable choice.
12:37:39 <ais523_> programming needs more pretzel buffers
12:37:56 <fizzie> You could use the clients[] array as the "bitset" (just find the first .fd = -1) but you'd still need some sort of a serial number array to select the oldest when all the slots are full.
12:38:10 <elliott> Does anyone know how to filter wireshark to just show things on a certain port?
12:38:25 <fizzie> I always just tcpdump and then open the dumpfile in wireshark.
12:39:10 <fizzie> tcpdump -i iface -s 0 -w blah.pcap 'port 113' + wait, ^c + wireshark blah.pcap.
12:39:15 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
12:39:16 <ais523_> I'd be shocked if wireshark didn't have some way to do that
12:39:18 <fizzie> But I'm sure the built-in capturator can filter too.
12:39:30 <ais523_> the problem is that it has so many options it's hard to find the one you actually want
12:39:37 <ais523_> which is an issue with both GUI and CLI programs
12:39:39 <elliott> fizzie: I'm filtering this one after-the-fact.
12:39:48 <fizzie> Oh. Well, those filters are really messy too.
12:40:19 <fizzie> You can just write an expression in that box, but I don't really know the syntax.
12:40:32 <fizzie> There's that GUI thing for constructing a filter, but it especially has far too many options.
12:40:42 <fizzie> (If you can find the first packet, you can use the "follow the stream" option.)
12:41:05 <elliott> "tcp.port == 113" does it.
12:41:06 <fizzie> I'd check, but they haven't installed such HACKER TOOLS on these work-workstations.
12:41:19 <fizzie> Yes, the syntax is reasonable, I just can't remember it.
12:41:39 -!- Phantom_Hoover has joined.
12:42:34 <elliott> fizzie: "Heh", it actually goes in two packets here.
12:42:41 <elliott> What the client said, and then the rest of the line.
12:42:52 <elliott> A bit... wasteful.
12:43:41 <fizzie> Well, you can use the MSG_MORE flag in the three first send()s.
12:44:02 <fizzie> It's the "wait, wait, I'm not done yet" flag.
12:47:28 <elliott> That's not part of my manpage.
12:47:54 -!- elliott has quit (Quit: Leaving).
12:47:57 <fizzie> It might not be exactly portable.
12:47:59 -!- elliott has joined.
12:48:02 <fizzie> <fizzie> It might not be exactly portable.
12:48:06 <elliott> Annoyed that made a difference.
12:49:24 <fizzie> Sounds like a lazy identd-client-writer; TCP is stream-oriented, the packet boundaries shouldn't really matter.
12:49:29 -!- elliott_ has joined.
12:49:30 <elliott_> <fizzie> <fizzie> It might not be exactly portable.
12:49:32 <elliott_> <elliott> Annoyed that made a difference.
12:49:34 <elliott_> <elliott> [elliott@dinky noidentd]$ curl -F 'sprunge=<-' sprunge.us
12:49:36 <elliott_> <elliott> curl: (6) Could not resolve host: sprunge.us; Unknown error
12:49:38 <elliott_> <elliott> Uh.
12:49:40 <elliott_> <elliott> Neat, my connection is broken.
12:49:42 <elliott_> <elliott> fizzie: Ping.
12:49:44 <elliott_> <elliott> ^echo hi
12:49:48 <elliott_> But yes,
12:49:50 <elliott_> 12:49:24: <fizzie> Sounds like a lazy identd-client-writer; TCP is stream-oriented, the packet boundaries shouldn't really matter.
12:49:51 -!- Jafet has quit (Read error: Connection reset by peer).
12:49:53 <elliott_> fizzie: That's why I was annoyed. :p
12:50:05 <elliott_> fizzie: Although -- send isn't actually guaranteed to send everything at once, is it?
12:50:17 <ais523_> elliott_: it's TCP, it's not even guaranteed to send everything in order
12:50:19 <elliott_> So I'm being lazy, too.
12:50:22 <ais523_> depending on conditions in the Internet
12:50:31 -!- Jafet has joined.
12:50:36 <elliott_> ais523_: I'm sure send(fd, foo, n, 0) can't actually rearrange the bytes in foo.
12:50:38 <ais523_> however, recv will always appear receive it in order, because it reconstructs the packets into the order of the original sends
12:50:49 <elliott_> Well, yes, yes.
12:50:56 <ais523_> elliott_: right, but it can place them in multiple packets, which can be received out of order
12:51:11 -!- elliott has quit (Read error: Operation timed out).
12:51:29 <elliott_> fizzie: Actually I don't think I will bother trying multiple send()s for the response, because (a) it's tiny and (b) if I'm not careful you could put it into an infloop by being a bad client, perhaps.
12:52:04 <fizzie> You can't be non-lazy, since there's no way to guarantee in-one-packet delivery; I guess a single send() with a small amount of data is sort of a best-effort thing, though.
12:52:34 <CakeProphet> dude why has the US not cut its ridiculous military spending.
12:53:03 <CakeProphet> you know, instead of catapulting itself into the debtosphere.
12:53:56 <CakeProphet> I think I've lost faith in democracy. Or, well, whatever the US system is called.
12:54:04 <ais523_> `quote
12:54:06 <ais523_> `quote
12:54:06 <HackEgo> 229) <l4rk> your premise to falsify "false" is false
12:54:06 <ais523_> `quote
12:54:07 <ais523_> `quote
12:54:07 <ais523_> `quote
12:54:12 <HackEgo> 568) <evincar> elliott_: I don't see a difference between a function taking a function as an argument, and some composition of those functions.
12:54:12 <HackEgo> 524) <Taneb> So it's like... Rummy mixed with... breakout?
12:54:23 <HackEgo> 525) <oerjan> i try to be a hermit but it's hard with all these housemates.
12:54:24 <HackEgo> 695) <Phantom_Hoover> Add a full stop in the middle and it becomes philosophy.
12:54:24 <fizzie> CakeProphet: How did you find out the US policy decisions were made on #esoteric?!
12:54:30 <fizzie> I thought it was a best-kept secret.
12:54:30 <elliott_> <fizzie> You can't be non-lazy, since there's no way to guarantee in-one-packet delivery; I guess a single send() with a small amount of data is sort of a best-effort thing, though.
12:54:36 <elliott_> fizzie: I can; I can just assume it worked.
12:54:51 <CakeProphet> fizzie: I've been slowly uncovering the secret #esoteric cabal for years now.
12:54:54 <ais523_> elliott_: hmm, none of those are massively good
12:55:09 <elliott_> `delquote 695
12:55:12 <HackEgo> ​*poof*
12:55:14 <Phantom_Hoover> 568 looks like the weakest to me.
12:55:26 <CakeProphet> Note: elliott, an obvious choice for figurehead of the #esoteric cabal, is actually a mere puppet to a more sinister force.
12:55:35 <elliott_> Phantom_Hoover: The qdb has to act as a shrine to people being really stupid, as well as being entertaining.
12:55:35 <Phantom_Hoover> elliott_, I was about to point out that you added it when I remembered that it was Taneb.
12:55:40 <elliott_> Otherwise we would forget and forgive.
12:55:51 <ais523_> actually, Gregor takes all the decisions unilaterally, but doesn't know what they mean
12:56:02 <elliott_> I hereby decree this a good enough identd: http://sprunge.us/FYDV
12:56:05 <ais523_> and #esoteric effectively shapes them by working out what language they're in
12:56:10 <elliott_> Now to use fizzie's clever idea of using the fd values directly to select a new slot.
12:56:20 <CakeProphet> elliott_: if it's a shrine of stupidity, why am I not quoted more often?
12:56:27 <elliott_> fizzie: (Does that actually let me call poll with a smaller number, though? I guess not.)
12:56:32 <elliott_> CakeProphet: I can hardly add everything you say.
12:56:49 <Phantom_Hoover> CakeProphet, because you're not stupid as much as thick-headed.
12:57:18 <ais523_> !bfjoust cat ,[.,]
12:57:22 <fizzie> elliott_: Not really, no. (Well, I guess you could also keep track of the largest-index non-"-1" entry, but that's not much of a win.)
12:57:25 <EgoBot> ​Score for ais523__cat: 6.8
12:57:33 <ais523_> I wonder why I did that?
12:57:45 <ais523_> !help bfjoust
12:57:46 <EgoBot> ​Sorry, I have no help for bfjoust!
12:58:36 <ais523_> now I have to try to remember what undermine does
12:58:51 <ais523_> oh right, I think I remember
12:59:07 <fizzie> elliott_: Technically something like " 12345 , 12345 \r\n" is still a legal request, but I'm not sure you need to care about that.
12:59:17 <elliott_> fizzie: Yeah, I don't give a damn about that.
13:00:19 <CakeProphet> Phantom_Hoover: according to most online dictionaries thick-headed and stupid are pretty much the same thing. :P
13:00:50 <elliott_> fizzie: Oops, I forgot to drop privileges after listen().
13:00:52 <elliott_> Or is it after bind()?
13:01:12 <Phantom_Hoover> CakeProphet, ah, but your problem is that it takes massive effort to actually get you to learn anything, and because of that everything you do learn rattles around in all the empty space and gets mixed up.
13:01:28 <elliott_> (Also is nobody always UID/GID 99?)
13:01:38 <elliott_> (Or, wait, should I use "daemon" instead? And is that always UID/GID 2?)
13:02:19 <fizzie> I'd suspect after bind() is enough; and the actual numbers (except perhaps 0) are non-standard.
13:02:26 <elliott_> :/
13:02:34 <CakeProphet> Phantom_Hoover: I will choosed to interpret this as a positive thing in one way or another.
13:02:43 <elliott_> fizzie: And no way to get them other than parsing /etc/passwd?
13:02:56 <Phantom_Hoover> CakeProphet, you aren't at risk of joining a cult, I suppose.
13:03:00 <CakeProphet> mixing and combinging of concepts demonstrates true understanding!
13:03:01 <fizzie> Something like getpwnam("nobody")->pw_uid, except maybe with error-checking in-between.
13:03:13 <elliott_> Are you sure it should be nobody and not daemon?
13:03:17 <elliott_> Also, do I need to set the gid...?
13:03:18 <fizzie> No.
13:03:59 <elliott_> Which was that a no to?
13:04:14 <fizzie> The first one. I'm not sure which user account you "should" use.
13:04:42 <ais523_> elliott_: "nobody" is 65534 on this system
13:04:59 <elliott_> So is setting the group necessary?
13:05:14 <CakeProphet> I find normative questions difficult to answer.
13:05:43 <CakeProphet> "Which shirt should I wear?" "life has no inherent meaning."
13:06:21 <elliott_> http://sprunge.us/IYgT ;; OK, this is slightly better, now to implement the age thing.
13:09:25 <CakeProphet> Fallibilism (from medieval Latin fallibilis, "liable to err") is the philosophical principle that human beings could be wrong about their beliefs, expectations, or their understanding of the world.
13:09:29 <CakeProphet> good ism.
13:10:24 <elliott_> http://sprunge.us/KCQe
13:10:36 <elliott_> This MIGHT even do the oldest-connection thing; I'll let fizzie figure it out. :p
13:10:43 <CakeProphet> though the Catholic Church seems to disagree, what with the Pope and all.
13:10:59 <CakeProphet> if I ever become Pope.
13:11:12 <CakeProphet> I will just spew logical contradictions all day.
13:11:31 <elliott_> Hmmmm.
13:11:32 <ais523_> !bfjoust undermine2 (+)*9>(+)*9(>[++++[-[-[-[--[-[-[-[>(>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1]]]]]]]](>+++++++[-])*29])*-1
13:11:33 <elliott_> Seems maybe not.
13:11:35 <EgoBot> ​Score for ais523__undermine2: 0.0
13:11:42 <elliott_> ais523_: wow
13:11:48 <ais523_> hmm, I was expecting to do better than that
13:11:53 <elliott_> looks like a bug
13:11:54 <ais523_> elliott_: I'm guessing unmatched paren somewhere
13:11:59 <elliott_> heh
13:12:49 <ais523_> !bfjoust undermine2 (+)*9>(+)*9(>[++++[-[-[-[--[-[-[-[((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1]]]]]]]](>+++++++[-])*29])*-1
13:12:52 <EgoBot> ​Score for ais523__undermine2: 27.3
13:13:16 <elliott_> gah
13:13:19 <elliott_> it does the exact wrong thing
13:13:26 <elliott_> kills the _newest_ client
13:13:29 <elliott_> i.e. the one that just connected :)
13:14:10 <ais523_> !bfjoust undermine2 (+)*9>(+)*9(>[>++++[-[-[-[--[-[-[-[((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1]]]]]]]](>+++++++[-])*29])*-1
13:14:13 <EgoBot> ​Score for ais523__undermine2: 28.3
13:14:19 <elliott_> oh hmm
13:14:20 <elliott_> duh
13:14:22 <ais523_> heh, hardly any change
13:15:37 -!- boily has joined.
13:16:11 <ais523_> !bfjoust undermine2 (+)*9>(+)*9(>[>++++[-[-[-[--[-[-[-[((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1]]]]]]]]([>]>+++++++[-])*29])*-1
13:16:14 <EgoBot> ​Score for ais523__undermine2: 28.1
13:16:27 <ais523_> !bfjoust undermine2 (+)*9>(+)*9(>[[>]++++[-[-[-[--[-[-[-[((>++++[-[-[-[-[-[-[-[-[(-)*120[.-]{}]]]]]]]]])%29)*-1]]]]]]]]([>]>+++++++[-])*29])*-1
13:16:31 <EgoBot> ​Score for ais523__undermine2: 20.4
13:16:37 <ais523_> yep, thought that would happen
13:16:45 <fizzie> elliott_: I suppose tracking the ago-order like that is possible. Personally I'd probably have gone with the slightly disoptimal but possibly simpler int serial = 0; int serials[MAXCONNS]; /* on inserting a new conn */ serials[conn-1] = serial++; /* and then when slots are full, select argmin_i serials[i] */
13:16:50 <fizzie> s/ago/age/
13:16:59 <fizzie> Awaysh for a couple of hours now.
13:17:04 <elliott_> fizzie: Oh, yes. Duh.
13:17:07 <elliott_> That's almost certainly cheaper.
13:17:09 <elliott_> Thanks.
13:17:16 <elliott_> (argmin_i?)
13:17:27 <ais523_> !bfjoust undermine2 <
13:17:30 <EgoBot> ​Score for ais523__undermine2: 0.0
13:17:51 <fizzie> Well, you know, C is a bit verbose for selecting the index with the minimum value; I went with the mathy comment. :p
13:17:54 <fizzie> (Okay, gone.)
13:18:03 <elliott_> fizzie: Butbutbut wait.
13:18:08 <elliott_> serial eventually overflows like that.
13:18:11 <elliott_> Oh, wait, no.
13:18:16 <elliott_> Or, hmm, yes.
13:18:29 <ais523_> !bfjoust oddrush (>)*8(>>[-])*10
13:18:32 <EgoBot> ​Score for ais523__oddrush: 3.1
13:18:37 <ais523_> about what I expected
13:19:08 <fizzie> elliott_: Well, yes, it does. It'll behave poorly during the wraparound, that's true.
13:19:22 <elliott_> fizzie: Is there any way to somehow keep serial low?
13:19:26 <ais523_> !bfjoust oddrush (>)*8(>>[+++++[-]])*10
13:19:30 <EgoBot> ​Score for ais523__oddrush: 1.8
13:19:34 <elliott_> fizzie: I could... loop through the array again, subtracting the slot picked?
13:19:39 <elliott_> Since it's the minimum and all.
13:20:01 <elliott_> That would work, I think.
13:20:03 <fizzie> elliott_: Yeah, I guess you could do that. And then set 'serial' to max+1.
13:20:13 <elliott_> fizzie: Right.
13:20:23 <fizzie> Now really. ->
13:20:55 <elliott_> serial = 0;
13:20:55 <elliott_> for (size_t i = 0; i < NELEMS(serials); i++) {
13:20:55 <elliott_> serials[i] -= slot;
13:20:55 <elliott_> if (serials[i] > serial)
13:20:55 <elliott_> serial = serials[i];
13:20:56 <elliott_> }
13:20:57 <elliott_> serial++;
13:20:59 <elliott_> Ugly. :(
13:21:20 <elliott_> ais523_: Here, you prettify that.
13:21:21 <elliott_> :p
13:22:31 <fizzie> I think you want to slotserial = serials[slot]; ... serials[i] -= slotserial; ... assuming slot is the index here, I'unno. If it's the smallest serial, then that's a different thing, of course.
13:22:34 <fizzie> Really really. -> ->
13:23:24 <ais523_> !bfjoust oddsyncrush (>)*7(>>[-[++[+++[-]]](>[-[++[+++[-]]]])*20])*11
13:23:27 <EgoBot> ​Score for ais523__oddsyncrush: 18.1
13:23:36 <ais523_> the strategy is going somewhere!
13:24:54 <elliott_> Jesus christ, it's doing the same again
13:25:00 <elliott_> fizzie: Oh, right, thanks
13:25:14 <ais523_> !bfjoust oddsyncrush (+)*9>(+)*6>(>)*5(>>[-[++[+++[-]]](>[-[++[+++[-]]]])*20])*11
13:25:17 <EgoBot> ​Score for ais523__oddsyncrush: 22.5
13:26:08 <elliott_> size_t minserial = 0;
13:26:08 <elliott_> for (size_t i = 0; i < NELEMS(serials); i++) {
13:26:08 <elliott_> if (!ok || serials[i] < minserial) {
13:26:08 <elliott_> ok = true;
13:26:09 <elliott_> slot = i;
13:26:11 <elliott_> minserial = serials[i];
13:26:13 <elliott_> }
13:26:15 <elliott_> }
13:26:17 <elliott_> size_t maxserial = 0;
13:26:19 <elliott_> for (size_t i = 0; i < NELEMS(serials); i++) {
13:26:21 <elliott_> serials[i] -= minserial;
13:26:23 <elliott_> if (serials[i] > maxserial)
13:26:25 <elliott_> maxserial = serials[i];
13:26:27 <elliott_> }
13:26:29 <elliott_> serial = maxserial + 1;
13:26:31 <elliott_> drop(&clients[slot]);
13:26:33 <elliott_> fizzie: PERFECT
13:26:35 <elliott_> It is funny because it pulls fizzie back.
13:26:57 <elliott_> AND IT DOES THE SAME
13:26:58 <elliott_> HOW
13:27:13 <ais523_> !bfjoust oddsyncrush (+)*9>(+)*6>(>)*5(>>[>[-[++[+++[-]]]](>[-[++[+++[-]]]])*20])*11
13:27:16 <EgoBot> ​Score for ais523__oddsyncrush: 22.3
13:27:40 <ais523_> !bfjoust oddsyncrush (+)*9>(+)*6>(>)*5(>>[>[-[++[+++[-]]](>[-[++[+++[-]]]])*20]])*11
13:27:43 <EgoBot> ​Score for ais523__oddsyncrush: 20.6
13:27:49 <ais523_> hmm
13:28:30 <elliott_> Yesss, it works.
13:29:18 <ais523_> !bfjoust (+)*9>(+)*6>(>)*5(>>[(>[-[++[+++[-]]](>[-[++[+++[-]]]])*20])*20])*11
13:29:19 <EgoBot> ​Use: !bfjoust <program name> <program> . Scoreboard, programs, and a description of score calculation are at http://codu.org/eso/bfjoust/
13:29:24 <ais523_> !bfjoust oddsyncrush (+)*9>(+)*6>(>)*5(>>[(>[-[++[+++[-]]](>[-[++[+++[-]]]])*20])*20])*11
13:29:27 <EgoBot> ​Score for ais523__oddsyncrush: 22.3
13:29:45 <ais523_> that's what I meant, but it doesn't seem to have helped much
13:30:15 <elliott_> http://sprunge.us/fSJR
13:30:20 <elliott_> Tada.
13:30:27 <ais523_> !bfjoust oddsyncrush <
13:30:29 <elliott_> Please feel free to tell me how hideously broken it is.
13:30:30 <EgoBot> ​Score for ais523__oddsyncrush: 0.0
13:30:51 -!- elliott_ has quit (Quit: Leaving).
13:30:55 -!- elliott_ has joined.
13:31:10 <ais523_> !bfjoust collision (>>>>[>+++++[-]])*7
13:31:13 <EgoBot> ​Score for ais523__collision: 0.7
13:31:24 <ais523_> !bfjoust collision (>>>>[(>+++++[-]])*20)*7
13:31:27 <EgoBot> ​Score for ais523__collision: 0.0
13:31:34 <ais523_> !bfjoust collision (>>>>[(>+++++[-])*20])*7
13:31:37 <EgoBot> ​Score for ais523__collision: 8.3
13:31:45 <ais523_> !bfjoust collision (>>>[(>+++++[-])*20])*7
13:31:48 <EgoBot> ​Score for ais523__collision: 11.4
13:32:30 <ais523_> haha, it beats most of my programs
13:32:32 <ais523_> but not a lot of others
13:32:46 <ais523_> presumably you can figure out who's written a program just from its decoy setup pattern
13:33:05 <ais523_> !bfjoust collision (>>>[(>[+++++[-]])*20])*7
13:33:08 <EgoBot> ​Score for ais523__collision: 12.2
13:33:29 <ais523_> Gregor_ill_bet_you_have_four_decoys.bfjoust vs ais523__collision.bfjoust ><<><<><<><<><<<<>>>> ><<><<><<><<><<<<>>>> 6
13:33:36 <ais523_> now, /that's/ a bizarre patter nof wins and losses
13:33:38 <ais523_> *pattern
13:34:03 <ais523_> !bfjoust collision (>>>[(>[+++++[-]])*20])*9
13:34:06 <EgoBot> ​Score for ais523__collision: 16.2
13:34:15 <ais523_> can't believe I got /that/ wrong...
13:34:33 <ais523_> !bfjoust collision (>>>[(>[+++++[-]])*20])*9(>[+++++[-]])*2
13:34:36 <EgoBot> ​Score for ais523__collision: 16.3
13:35:05 <ais523_> !bfjoust collision >>>>>>(>>>[(>[+++++[-]])*20])*7(>[+++++[-]])*2
13:35:08 <EgoBot> ​Score for ais523__collision: 13.0
13:35:19 <ais523_> !bfjoust collision >++>>>>>(>>>[(>[+++++[-]])*20])*7(>[+++++[-]])*2
13:35:22 <EgoBot> ​Score for ais523__collision: 13.4
13:35:34 <ais523_> !bfjoust collision >..>>>>>(>>>[(>[+++++[-]])*20])*7(>[+++++[-]])*2
13:35:37 <EgoBot> ​Score for ais523__collision: 15.0
13:35:43 <ais523_> oh right
13:35:50 <ais523_> !bfjoust collision >.>>(>>>[(>[+++++[-]])*20])*8(>[+++++[-]])*2
13:35:53 <EgoBot> ​Score for ais523__collision: 16.3
13:36:00 <ais523_> !bfjoust collision >->>(>>>[(>[+++++[-]])*20])*8(>[+++++[-]])*2
13:36:03 <EgoBot> ​Score for ais523__collision: 15.2
13:36:09 <ais523_> !bfjoust collision >>->(>>>[(>[+++++[-]])*20])*8(>[+++++[-]])*2
13:36:12 <EgoBot> ​Score for ais523__collision: 15.6
13:36:19 <ais523_> !bfjoust collision >>>-(>>>[(>[+++++[-]])*20])*8(>[+++++[-]])*2
13:36:22 <EgoBot> ​Score for ais523__collision: 16.7
13:36:25 <ais523_> decoys hurting is never a good sign
13:36:29 <ais523_> !bfjoust collision >>>--(>>>[(>[+++++[-]])*20])*8(>[+++++[-]])*2
13:36:32 <EgoBot> ​Score for ais523__collision: 16.3
13:36:36 <ais523_> but in this case, seems I just have to put them a long way from the flag
13:36:42 <ais523_> for reasons I don't fully understand
13:36:48 <ais523_> !bfjoust collision >>>(->>>[(>[+++++[-]])*20])*8(>[+++++[-]])*2
13:36:51 <EgoBot> ​Score for ais523__collision: 18.8
13:36:58 <ais523_> whoo, trails help!
13:37:02 <ais523_> !bfjoust collision >>>(->>+>[(>[+++++[-]])*20])*8(>[+++++[-]])*2
13:37:05 <EgoBot> ​Score for ais523__collision: 20.3
13:37:23 <ais523_> !bfjoust collision >>>(->>++>[(>[+++++[-]])*20])*8(>[+++++[-]])*2
13:37:25 <EgoBot> ​Score for ais523__collision: 21.9
13:37:31 <ais523_> !bfjoust collision >>>(-->>++>[(>[+++++[-]])*20])*8(>[+++++[-]])*2
13:37:34 <EgoBot> ​Score for ais523__collision: 22.5
13:37:43 <ais523_> !bfjoust collision >>>(-->+>++>[(>[+++++[-]])*20])*8(>[+++++[-]])*2
13:37:46 <EgoBot> ​Score for ais523__collision: 24.4
13:37:55 <ais523_> I'm expecting that to hurt
13:37:57 <ais523_> but it didn't
13:38:09 <ais523_> !bfjoust collision >>>(-->+>++>[(>[+++++[-]])*20]-----)*8(>[+++++[-]])*2
13:38:12 <EgoBot> ​Score for ais523__collision: 22.3
13:38:17 <ais523_> !bfjoust collision >>>(-->+>++>[(>[+++++[-]])*20]--)*8(>[+++++[-]])*2
13:38:20 <EgoBot> ​Score for ais523__collision: 23.3
13:38:25 <ais523_> !bfjoust collision >>>(>+>++>[(>[+++++[-]])*20]--)*8(>[+++++[-]])*2
13:38:28 <EgoBot> ​Score for ais523__collision: 23.7
13:38:38 <ais523_> !bfjoust collision >>>(-->+>+++>[(>[+++++[-]])*20])*8(>[+++++[-]])*2
13:38:41 <EgoBot> ​Score for ais523__collision: 25.3
13:38:49 <ais523_> !bfjoust collision >>>(-->+>++++>[(>[+++++[-]])*20])*8(>[+++++[-]])*2
13:38:52 <EgoBot> ​Score for ais523__collision: 23.9
13:38:56 <ais523_> !bfjoust collision >>>(-->>++++>[(>[+++++[-]])*20])*8(>[+++++[-]])*2
13:38:59 <EgoBot> ​Score for ais523__collision: 21.3
13:39:04 <ais523_> ?
13:39:10 <ais523_> !bfjoust collision >>>(->->++++>[(>[+++++[-]])*20])*8(>[+++++[-]])*2
13:39:13 <EgoBot> ​Score for ais523__collision: 23.3
13:39:20 <ais523_> !bfjoust collision >>>(-->+>+++>[(>[+++++[-]])*20])*8(>[+++++[-]])*2
13:39:23 <EgoBot> ​Score for ais523__collision: 25.3
13:39:36 <ais523_> oh right, putting too many +s there just speeds up enemy offset clears on one polarity
13:41:52 <ais523_> !bfjoust collision >>>(-->+>+++>[(>[+++++[-]])*20])*7(>[+++++[-]])*5
13:41:55 <EgoBot> ​Score for ais523__collision: 24.9
13:42:11 <ais523_> !bfjoust collision >>>(-->+>+++>[(>[+++++[-]])*20])*6(>[+++++[-]])*8
13:42:14 <EgoBot> ​Score for ais523__collision: 24.4
13:42:47 <CakeProphet> Says a lot about how retarded WE (at least some of us ) in the U.S. are when a people that still has Kings and Queens
13:42:50 <CakeProphet> believes in and practices evolution.
13:42:53 <CakeProphet> --comment on NPR article
13:43:03 * CakeProphet refuses to participate in evolution.
13:43:03 <ais523_> !bfjoust collision >>>(-->+>+++>[(>[+++++[-]])*20])*6(<<(+)*40)*6(>)*18(>[+++++[-]])*8
13:43:06 <EgoBot> ​Score for ais523__collision: 19.8
13:43:16 <ais523_> !bfjoust collision >>>(-->+>+++>[(>[+++++[-]])*20])*6(<(-)*40<(+)*40)*6(>)*18(>[+++++[-]])*8
13:43:19 <EgoBot> ​Score for ais523__collision: 19.8
13:43:47 <ais523_> !bfjoust collision >>>(-->+>+++>[(>[+++++[-]])*20])*6(<)*12((-)*100<(+)*100)*3(>)*18(>[+++++[-]])*8
13:43:50 <EgoBot> ​Score for ais523__collision: 24.2
13:44:29 <ais523_> !bfjoust collision >>>(-->+>+++>[(>[+++++[-]])*20])*5(<)*9((-)*100<(+)*100)*3(>)*15(>[+++++[-]])*8
13:44:32 <EgoBot> ​Score for ais523__collision: 20.5
13:44:37 <ais523_> !bfjoust collision >>>(-->+>+++>[(>[+++++[-]])*20])*6(<)*12((-)*100<(+)*100)*3(>)*18(>[+++++[-]])*8
13:44:40 <EgoBot> ​Score for ais523__collision: 24.2
13:44:48 <ais523_> !bfjoust collision >>>(-->+>+++>[(>[+++++[-]])*20])*7(<)*12((-)*100<(+)*100)*3(>)*18(>[+++++[-]])*5
13:44:51 <EgoBot> ​Score for ais523__collision: 25.3
13:45:35 <ais523_> I suspect the next improvement is a better clear loop
13:45:54 <ais523_> !bfjoust collision >>>(-->+>+++>[(>[-[++++++[-]]])*20])*7(<)*12((-)*100<(+)*100)*3(>)*18(>[+++++[-]])*5
13:45:58 <EgoBot> ​Score for ais523__collision: 20.7
13:46:09 <ais523_> !bfjoust collision >>>(-->+>+++>[(>[-[++++[-]]])*20])*7(<)*12((-)*100<(+)*100)*3(>)*18(>[+++++[-]])*5
13:46:12 <EgoBot> ​Score for ais523__collision: 18.1
13:46:17 <ais523_> !bfjoust collision >>>(-->+>+++>[(>[+++++[-]])*20])*7(<)*12((-)*100<(+)*100)*3(>)*18(>[+++++[-]])*5
13:46:20 <EgoBot> ​Score for ais523__collision: 25.3
13:46:27 <ais523_> but I need to see what sort of clear is needed
13:48:28 -!- Ngevd has joined.
13:48:55 <Ngevd> Ah, I'm alive
13:49:18 <Ngevd> <ais523> Ngevd: is it actually written in Piet? <-- going to be. I've only barely started, still learning the protocol
13:49:31 <Ngevd> ais523_ ^^^
13:50:04 <ais523_> !bfjoust collision >>>(>>>[(>[+++++[-]])*20])*7(>[+++++[-]])*5
13:50:07 <EgoBot> ​Score for ais523__collision: 13.6
13:50:15 <ais523_> !bfjoust collision >>>(-->+>+++>[(>[+++++[-]])*20])*7(<)*12((-)*100<(+)*100)*3(>)*18(>[+++++[-]])*5
13:50:18 <EgoBot> ​Score for ais523__collision: 25.3
13:50:32 <ais523_> !bfjoust collision >>>(+>+++>[(>[+++++[-]])*20])*10(<)*13((-)*100<(+)*100)*3(>)*18(>[+++++[-]])*5
13:50:35 <EgoBot> ​Score for ais523__collision: 29.5
13:50:56 <ais523_> !bfjoust collision >>>(+>+++>[(>[+++++[-]])*20])*10(<)*11((-)*100<(+)*100)*3(>)*17(>[+++++[-]])*6
13:50:59 <EgoBot> ​Score for ais523__collision: 29.8
13:51:47 <ais523_> !bfjoust collision >>>(->+++>[(>[+++++[-]])*20])*10(<)*11((-)*100<(+)*100)*3(>)*17(>[+++++[-]])*6
13:51:50 <EgoBot> ​Score for ais523__collision: 29.6
13:51:56 <ais523_> !bfjoust collision >>>(--+>++>[(>[+++++[-]])*20])*10(<)*11((-)*100<(+)*100)*3(>)*17(>[+++++[-]])*6
13:51:59 <EgoBot> ​Score for ais523__collision: 29.5
13:52:05 <ais523_> !bfjoust collision >>>(-->++>[(>[+++++[-]])*20])*10(<)*11((-)*100<(+)*100)*3(>)*17(>[+++++[-]])*6
13:52:08 <EgoBot> ​Score for ais523__collision: 30.0
13:52:19 <ais523_> my guess is that 2 is the sweet spot for trails
13:53:14 <ais523_> !bfjoust collision >>>(-->++>[(>[+++++[-]])*20])*10(<)*9(<<(-)*100)*3(>(+)*100>)*3(>)*9(>[+++++[-]])*6
13:53:17 <EgoBot> ​Score for ais523__collision: 29.5
13:53:24 <ais523_> !bfjoust collision >>>(-->++>[(>[+++++[-]])*20])*10(<)*9(<<(+)*100)*3(>(-)*100>)*3(>)*9(>[+++++[-]])*6
13:53:27 <EgoBot> ​Score for ais523__collision: 29.5
13:53:36 <ais523_> !bfjoust collision >>>(-->++>[(>[+++++[-]])*20])*10(<)*9(<<(+)*100)*4(>(-)*100>)*4(>)*9(>[+++++[-]])*6
13:53:39 <EgoBot> ​Score for ais523__collision: 29.1
13:53:55 <ais523_> !bfjoust collision >>>(-->++>[(>[+++++[-]])*20])*10(<)*9(<(+)*100<)*3((-)*100>>)*3(>)*9(>[+++++[-]])*6
13:53:59 <EgoBot> ​Score for ais523__collision: 29.5
13:54:31 <ais523_> !bfjoust collision >>>(-->++>[(>[+++++[-]])*20])*11(<)*9(<(+)*100<)*3((-)*100>>)*3(>)*9(>[+++++[-]])*4
13:54:34 <EgoBot> ​Score for ais523__collision: 29.9
13:54:42 <ais523_> !bfjoust collision >>>(-->++>[(>[+++++[-]])*20])*12(<)*9(<(+)*100<)*3((-)*100>>)*3(>)*9(>[+++++[-]])*2
13:54:45 <EgoBot> ​Score for ais523__collision: 30.4
13:54:53 <ais523_> !bfjoust collision >>>(-->++>[(>[+++++[-]])*20])*13
13:54:56 <EgoBot> ​Score for ais523__collision: 30.4
13:55:08 <ais523_> !bfjoust collision >>>(-->++>[(>[+++++[-]])*20])*12(>[+++++[-]])*2
13:55:11 <EgoBot> ​Score for ais523__collision: 30.4
13:55:21 <ais523_> heh, I guess that case never really comes up
13:56:00 <Ngevd> What does a channel message look like to a client?
13:56:26 <ais523_> Ngevd: privmsg to channel?
13:56:29 <ais523_> like the ones I'm sending now
13:57:02 <Ngevd> I'm not sure
13:57:22 <ais523_> !bfjoust collision >>>(-)*20<(-)*40<(+)*60<(-)*80>>>(-->++>[(>[+++++[-]])*20])*12(>[+++++[-]])*2
13:57:25 <EgoBot> ​Score for ais523__collision: 34.8
13:57:30 <ais523_> let's try a slower version of the same idea
13:57:36 <Ngevd> Nice one
13:57:41 <ais523_> !bfjoust collision >>>(-)*20<(-)*40<(+)*60<(-)*80>>>(-->++>++>[(>[+++++[-]])*20])*8(>[+++++[-]])*2
13:57:44 <Ngevd> hang on, is a high score good?
13:57:45 <EgoBot> ​Score for ais523__collision: 37.3
13:57:49 <ais523_> yes, higher is better
13:58:04 <ais523_> !bfjoust collision >+>+>(-)*20<(-)*40<(+)*60<(-)*80>>>(-->++>++>[(>[+++++[-]])*20])*8(>[+++++[-]])*2
13:58:07 <EgoBot> ​Score for ais523__collision: 34.6
13:58:18 <ais523_> !bfjoust collision >>>>+<(-)*20<(-)*40<(+)*60<(-)*80>>>(-->++>++>[(>[+++++[-]])*20])*8(>[+++++[-]])*2
13:58:21 <EgoBot> ​Score for ais523__collision: 32.7
13:58:29 <ais523_> !bfjoust collision >>>(-)*20<(-)*40<(+)*60<(-)*80>>>(-->++>++>[(>[+++++[-]])*20])*8(>[+++++[-]])*2
13:58:32 <EgoBot> ​Score for ais523__collision: 37.3
13:58:41 <ais523_> !bfjoust collision >>>(-)*20<(-)*40<(+)*40<(-)*40>>>(-->++>++>[(>[+++++[-]])*20])*8(>[+++++[-]])*2
13:58:44 <EgoBot> ​Score for ais523__collision: 37.4
13:58:57 <ais523_> !bfjoust collision >>>(-)*20<(-)*40<(+)*40<(-)*20>>>(-->++>++>[(>[+++++[-]])*20])*8(>[+++++[-]])*2
13:59:00 <EgoBot> ​Score for ais523__collision: 37.0
13:59:07 <ais523_> !bfjoust collision >>>(-)*30<(-)*40<(+)*40<(-)*20>>>(-->++>++>[(>[+++++[-]])*20])*8(>[+++++[-]])*2
13:59:10 <EgoBot> ​Score for ais523__collision: 37.7
13:59:11 -!- derdon has joined.
13:59:21 <ais523_> !bfjoust collision >>>(-)*30<(-)*30<(+)*30<(-)*30>>>(-->++>++>[(>[+++++[-]])*20])*8(>[+++++[-]])*2
13:59:25 <EgoBot> ​Score for ais523__collision: 38.5
13:59:40 <ais523_> !bfjoust collision >>>(-)*30<(-)*30<(+)*30<(-)*30>>>(-->++>++>++>[(>[+++++[-]])*20])*6(>[+++++[-]])*2
13:59:43 <EgoBot> ​Score for ais523__collision: 33.2
13:59:58 <ais523_> !bfjoust collision >>>(-)*30<(-)*30<(+)*30<(-)*30>>>>(-->++>++>++>[(>[+++++[-]])*20])*6(>[+++++[-]])*2
14:00:01 <EgoBot> ​Score for ais523__collision: 36.1
14:00:16 <ais523_> !bfjoust collision >>>(-)*30<(-)*30<(+)*30<(-)*30>>>>>(-->++>++>[(>[+++++[-]])*20])*8(>[+++++[-]])*2
14:00:19 <EgoBot> ​Score for ais523__collision: 38.4
14:00:25 <ais523_> !bfjoust collision >>>(-)*30<(-)*30<(+)*30<(-)*30>>>>>(>>>[(>[+++++[-]])*20])*8(>[+++++[-]])*2
14:00:28 <EgoBot> ​Score for ais523__collision: 39.0
14:00:40 <ais523_> this strategy is looking promising
14:00:49 <ais523_> and it's still with a hastily thrown-together clear loop
14:02:20 <elliott_> Haha, projects cannot ship source tarballs with their Arch PKGBUILD file, I think
14:03:18 <elliott_> Because PKGBUILDs contain checksums of the tarballs
14:03:56 <ais523_> !bfjoust collision >>>(-)*30<(-)*30<(+)*30<(-)*30>>>>>(>>>[(>[+[+[+[----[-[-[(-)*100(-)]]]]]]])*20])*8(>[+++++[-]])*2
14:03:59 <EgoBot> ​Score for ais523__collision: 10.8
14:04:08 <ais523_> haha, reverse offset clear does /that/ badly?
14:04:14 <ais523_> !bfjoust collision >>>(-)*30<(-)*30<(+)*30<(-)*30>>>>>(>>>[(>[+++++[-]])*20])*8(>[+++++[-]])*2
14:04:17 <EgoBot> ​Score for ais523__collision: 39.0
14:04:34 <ais523_> !bfjoust collision >>>(-)*30<(-)*30<(+)*30<(-)*30>>>>>(>>>[(>[++++++[-]])*20])*8(>[++++++[-]])*2
14:04:37 <EgoBot> ​Score for ais523__collision: 39.5
14:04:37 <ais523_> I suppose that makes sense
14:04:53 <ais523_> !bfjoust collision >>>(-)*30<(-)*30<(+)*30<(-)*30>>>>>(>>>[(>[(+)*7[-]])*20])*8(>[(+)*7[-]])*2
14:04:56 <EgoBot> ​Score for ais523__collision: 39.4
14:05:02 <ais523_> !bfjoust collision >>>(-)*30<(-)*30<(+)*30<(-)*30>>>>>(>>>[(>[(+)*10[-]])*20])*8(>[(+)*10[-]])*2
14:05:05 <EgoBot> ​Score for ais523__collision: 43.5
14:05:09 <elliott_> Actually, hmm
14:05:12 <elliott_> I'm not sure how to handle this at all
14:05:17 <ais523_> !bfjoust collision >>>(-)*30<(-)*30<(+)*30<(-)*30>>>>>(>>>[(>[(+)*12[-]])*20])*8(>[(+)*12[-]])*2
14:05:20 <EgoBot> ​Score for ais523__collision: 40.0
14:05:25 <ais523_> !bfjoust collision >>>(-)*30<(-)*30<(+)*30<(-)*30>>>>>(>>>[(>[(+)*15[-]])*20])*8(>[(+)*15[-]])*2
14:05:28 <EgoBot> ​Score for ais523__collision: 42.3
14:05:41 <ais523_> !bfjoust collision >>>(-)*30<(-)*30<(+)*30<(-)*30>>>>>(>>>[(>[(+)*18[-]])*20])*8(>[(+)*18[-]])*2
14:05:44 <EgoBot> ​Score for ais523__collision: 40.7
14:05:51 <ais523_> !bfjoust collision >>>(-)*30<(-)*30<(+)*30<(-)*30>>>>>(>>>[(>[(+)*10[-]])*20])*8(>[(+)*10[-]])*2
14:05:54 <EgoBot> ​Score for ais523__collision: 43.5
14:06:32 <ais523_> wow, it's eighth now
14:06:34 <ais523_> just above undermine
14:06:49 <ais523_> I seem to have a habit of inventing new strategies and running them up to the bottom of the top ten
14:07:04 <Ngevd> Explain how this works
14:07:28 <ais523_> how what works? the BF Joust program?
14:07:31 <Ngevd> Yes
14:08:01 <ais523_> set up decoys, adjust flag, then check every third cell for the opponent's decoys, when you find it move forward one cell and start a clear loop
14:08:15 <ais523_> the idea is that it's going to skip, "randomly" based on the tape length, 0, 1, or 2 decoys
14:08:22 <ais523_> which gives it an advantage over an opponent who doesn't skip any
14:08:35 <ais523_> !bfjoust collision >>>(-)*30<(-)*30<(+)*30<(-)*30>>>>>>(>>>[(>[(+)*10[-]])*20])*8(>[(+)*10[-]])*1
14:08:38 <EgoBot> ​Score for ais523__collision: 44.2
14:08:47 <ais523_> also, I just noticed an off-by-one, even better
14:08:59 <ais523_> !bfjoust collision >>>(-)*30<(-)*30<(+)*30<(-)*30>>>>>>(>>>[(>[(+)*10[-]])*20])*7(>[(+)*10[-]])*4
14:09:02 <EgoBot> ​Score for ais523__collision: 44.2
14:09:19 <ais523_> !bfjoust collision >>>(-)*30<(-)*30<(+)*30<(-)*30>>>>>>(>>>[(>[(+)*10[-]])*20])*7(>[(+)*100[+]])*4
14:09:22 <EgoBot> ​Score for ais523__collision: 44.2
14:09:23 <CakeProphet> ais523_: how does that not suicide on some playing fields?
14:09:32 <CakeProphet> if you check every third cell.
14:09:37 <ais523_> CakeProphet: most programs set decoys near their flags
14:09:44 <ais523_> it suicides if the opponent sets fewer than two decoys
14:09:47 <ais523_> but how many programs do that?
14:09:59 <Ngevd> My one, I think
14:10:09 <ais523_> so the basic idea of BF Joust, is that anything that opponents do consistently, you can take advantage of
14:10:15 <ais523_> a program that sets no decoys typically won't do well
14:10:16 <CakeProphet> most of my bfjoust programs are some kind of rush clear-everything program.
14:10:23 <ais523_> thus, you may as well assume that opposing programs tend to set decoys
14:10:56 <ais523_> !bfjoust collision >>>(-)*30<(-)*30<(+)*30<(-)*30>>>>>>(>>>[(>[(+)*10[-]])*20])*7(>)*99
14:10:59 <EgoBot> ​Score for ais523__collision: 44.2
14:11:04 <Ngevd> Aww, my one isn't on the scoreboard any more
14:11:07 <ais523_> yep, I /thought/ that last bit made no difference
14:11:12 <CakeProphet> ais523_: the real question is: would this beat space elevator?
14:11:18 <ais523_> !bfjoust collision >>>(-)*30<(-)*30<(+)*30<(-)*30>>>>>>(>>>[(>[(+)*10[-]])*20])*7(>[(+)*100[+]])*4
14:11:21 <EgoBot> ​Score for ais523__collision: 44.2
14:11:47 <ais523_> ais523__collision.bfjoust vs quintopia_space_elevator.bfjoust <><<>>>><<<<<<><>>><> <><<>>>><>><<<><>>><> -2 ais523__collision.bfjoust wins.
14:11:57 <ais523_> CakeProphet: it does beat space_elevator, /just/
14:12:25 <CakeProphet> admirable work.
14:12:52 <CakeProphet> surely you could also suicide on some decoy patterns.
14:13:11 <ais523_> whoops, I just remembered why I don't open space_elevator in egojsout
14:13:16 <ais523_> CakeProphet: yes, but nobody uses them
14:13:18 <ais523_> perhaps they should
14:13:54 <CakeProphet> ais523_: space_elevator is the most beautiful jouster in terms of code elegance.
14:14:02 <ais523_> you think so?
14:14:06 <CakeProphet> definitely.
14:14:13 <ais523_> although I have a tendency to make huge ridiculous jousters
14:14:16 <CakeProphet> it even provides comments!
14:14:21 <ais523_> I have a soft spot for the short ones
14:14:26 <ais523_> and my long ones tend to be commented too
14:15:01 <CakeProphet> I'm guessing [ and ] jumps don't count as turns right?
14:15:24 <CakeProphet> if they did the complex logic of large jousters would be at a disadvantage to dumb rushers.
14:15:30 <ais523_> each of [ and ] takes one step
14:15:32 <ais523_> that's really fundamental
14:15:36 <CakeProphet> ...oh
14:15:38 <ais523_> otherwise there's no reason not to put [ and ] everywhere
14:15:55 <ais523_> they aren't at a disadvantage to dumb rushers, because dumb rushers are easily tricked
14:16:09 <ais523_> due to being dumb
14:16:41 <CakeProphet> seems like they'd be moving too fast for you to do anything about them if your code has 20 nested loops.
14:16:53 <ais523_> aha, that's the issue
14:17:02 <ais523_> a dumb rusher has issues determining if it's found the flag
14:17:12 <ais523_> doing something like [-] can hold you up for 510 cycles, worst-case
14:17:23 <ais523_> precisely because of the time penalty of doing ]
14:17:42 <CakeProphet> ah right
14:17:52 <CakeProphet> and there'd be no difference between the different kinds of clears otherwise
14:17:58 <CakeProphet> aside from the nops
14:18:15 <ais523_> !bfjoust collision >>>(-)*30<(-)*20<(+)*20<(-)*30>>>>>>(>>>[(>[(+)*10[-]])*20])*7(>[(+)*100[+]])*4
14:18:18 <EgoBot> ​Score for ais523__collision: 40.7
14:18:28 <ais523_> !bfjoust collision >>>(-)*30<(-)*30<(+)*40<(-)*30>>>>>>(>>>[(>[(+)*10[-]])*20])*7(>[(+)*100[+]])*4
14:18:31 <EgoBot> ​Score for ais523__collision: 41.4
14:18:43 <ais523_> !bfjoust collision >>>(-)*33<(-)*33<(+)*33<(-)*33>>>>>>(>>>[(>[(+)*10[-]])*20])*7(>[(+)*100[+]])*4
14:18:46 <EgoBot> ​Score for ais523__collision: 43.7
14:18:47 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
14:18:57 <ais523_> !bfjoust collision >>>(-)*33<(-)*35<(+)*35<(-)*22>>>>>>(>>>[(>[(+)*10[-]])*20])*7(>[(+)*100[+]])*4
14:19:00 <EgoBot> ​Score for ais523__collision: 41.6
14:19:05 <ais523_> just experimenting a bit
14:19:14 <ais523_> !bfjoust collision >>>(-)*31<(-)*31<(+)*31<(-)*31>>>>>>(>>>[(>[(+)*10[-]])*20])*7(>[(+)*100[+]])*4
14:19:18 <EgoBot> ​Score for ais523__collision: 44.4
14:19:28 <Ngevd> What should Pietbot do...
14:19:28 <ais523_> !bfjoust collision >>>(-)*32<(-)*32<(+)*32<(-)*32>>>>>>(>>>[(>[(+)*10[-]])*20])*7(>[(+)*100[+]])*4
14:19:32 <EgoBot> ​Score for ais523__collision: 43.7
14:19:37 <ais523_> implement an esolang of your choice
14:19:42 <ais523_> !bfjoust collision >>>(-)*32<(-)*32<(+)*32<(-)*28>>>>>>(>>>[(>[(+)*10[-]])*20])*7(>[(+)*100[+]])*4
14:19:45 <EgoBot> ​Score for ais523__collision: 44.4
14:19:57 <ais523_> !bfjoust collision >>>(-)*33<(-)*33<(+)*33<(-)*22>>>>>>(>>>[(>[(+)*10[-]])*20])*7(>[(+)*100[+]])*4
14:20:00 <EgoBot> ​Score for ais523__collision: 42.3
14:20:11 <CakeProphet> Ngevd: run Piet programs via IRC command lines.
14:20:11 <ais523_> !bfjoust collision >>>(-)*34<(-)*34<(+)*34<(-)*28>>>>>>(>>>[(>[(+)*10[-]])*20])*7(>[(+)*100[+]])*4
14:20:14 <EgoBot> ​Score for ais523__collision: 43.4
14:20:24 <ais523_> !bfjoust collision >>>(-)*32<(-)*32<(+)*32<(-)*28>>>>>>(>>>[(>[(+)*10[-]])*20])*7(>[(+)*100[+]])*4
14:20:27 <EgoBot> ​Score for ais523__collision: 44.4
14:20:34 <ais523_> let's stick with that version for the decoy setup
14:20:59 <ais523_> !bfjoust collision >>>>(-)*32<(-)*32<(+)*32<(-)*32<(-)*28>>>>>>(>>>[(>[(+)*10[-]])*20])*7(>[(+)*100[+]])*4
14:21:02 <EgoBot> ​Score for ais523__collision: 38.8
14:21:08 <CakeProphet> I'm assuming by using the same name over and over you're overwriting the old ones and therefore not jousting the 20 million old iterations of your program?
14:21:21 <ais523_> oh right, that loses to ill_bet_you_have_four_decoys
14:21:22 <ais523_> by having four decoys
14:21:25 <ais523_> CakeProphet: that's it
14:21:27 <ais523_> !bfjoust collision >>>(-)*32<(-)*32<(+)*32<(-)*28>>>>>>(>>>[(>[(+)*10[-]])*20])*7(>[(+)*100[+]])*4
14:21:31 <EgoBot> ​Score for ais523__collision: 44.4
14:22:02 <ais523_> !bfjoust collision >>>>>>(-)*32<<(-)*32<<(+)*32<<(-)*28>>>>>>(>>>[(>[(+)*10[-]])*20])*7(>[(+)*100[+]])*4
14:22:05 <EgoBot> ​Score for ais523__collision: 35.5
14:22:11 <ais523_> I was just curious
14:22:17 <ais523_> !bfjoust collision >>>>>>(-)*32<-<(-)*32<-<(+)*32<-<(-)*28>>>>>>(>>>[(>[(+)*10[-]])*20])*7(>[(+)*100[+]])*4
14:22:20 <EgoBot> ​Score for ais523__collision: 35.9
14:22:24 <ais523_> !bfjoust collision >>>(-)*32<(-)*32<(+)*32<(-)*28>>>>>>(>>>[(>[(+)*10[-]])*20])*7(>[(+)*100[+]])*4
14:22:28 <EgoBot> ​Score for ais523__collision: 44.4
14:22:35 <ais523_> I just have no idea why
14:22:35 <ais523_> seems like that is indeed the perfect decoy setup
14:23:40 <CakeProphet> tried using different cell skip intervals?
14:23:49 <CakeProphet> perhaps a non-constant interval?
14:24:36 <ais523_> no, but given the current competitors on the hill it's unlikely to make much difference
14:24:51 <ais523_> pretty much everyone checks for small decoys behind large ones nowadays
14:25:18 <CakeProphet> er I was referring to your offense.
14:25:24 <ais523_> oh, right
14:25:36 <ais523_> I've tried different intervals, but not a varying one
14:25:49 <ais523_> I don't see why a varying one would help, though, given the tape length randomization
14:25:53 -!- Darth_Cliche has joined.
14:25:58 -!- derrik has joined.
14:26:49 <ais523_> I don't think I can get collision to the top of the hill, anyway; its strategy is fundamentally beaten by slowpoke's
14:27:12 <CakeProphet> ais523_: I don't see how it would hurt though. basically the smaller tape lengths cut off your cell skip function.
14:27:16 <ais523_> and FFSPG for much the same reason (they're similar programs, even if they were invented independently)
14:27:21 <ais523_> CakeProphet: I don't think it'd hurt either
14:27:27 <ais523_> except that you're using a suboptimal interval
14:27:38 <ais523_> I suppose, on longer tapes, the opponent will have had more time to set up decoys…
14:28:06 <CakeProphet> yes that's what I mean. the interval can change once it gets into longer tape lengths.
14:28:11 <ais523_> !bfjoust collision >>>(-)*32<(-)*32<(+)*32<(-)*28>>>>>>(>>>[(>[(+)*10[-]])*20])*3(>>>>[(>[(+)*10[-]])*20])*3(>[(+)*100[+]])*4
14:28:14 <EgoBot> ​Score for ais523__collision: 38.6
14:28:15 <ais523_> let's try it
14:28:18 -!- Darth_Cliche has quit (Client Quit).
14:28:25 <ais523_> it didn't really seem to help…
14:28:45 <CakeProphet> you only tried one. :P
14:28:55 <ais523_> !bfjoust collision >>>(-)*32<(-)*32<(+)*32<(-)*28>>>>>>(>>>[(>[(+)*10[-]])*20])*3(>>>>[([(+)*10[-]])*20])*3(>[(+)*100[+]])*4
14:28:56 <CakeProphet> WHAT KIND OF BFJOUST SCIENCE IS THAT.
14:28:58 <EgoBot> ​Score for ais523__collision: 29.3
14:29:03 <ais523_> whoops
14:29:06 <ais523_> !bfjoust collision >>>(-)*32<(-)*32<(+)*32<(-)*28>>>>>>(>>>[(>[(+)*10[-]])*20])*3(>>>>[([(+)*10[-]]>)*20])*3(>[(+)*100[+]])*4
14:29:09 <EgoBot> ​Score for ais523__collision: 40.7
14:29:27 <ais523_> I think it's just falling off the tape too much
14:29:36 <ais523_> the vast majority of programs don't set more decoys on longer tapes
14:29:40 <CakeProphet> ah.
14:29:56 <ais523_> !bfjoust collision >>>(-)*32<(-)*32<(+)*32<(-)*28>>>>>>(>>>[(>[(+)*10[-]])*20])*7(>[(+)*100[+]])*4
14:29:59 <EgoBot> ​Score for ais523__collision: 44.4
14:30:23 <ais523_> now I'll try something a bit different, it'll probably hurt but might help
14:30:59 <ais523_> !bfjoust collision >>>(-)*32<(-)*32<(+)*32<(-)*28>>>>>>(>>>[-[-[+++[+[(>[(+)*10[-]])*20]]]]])*7(>[(+)*100[+]])*4
14:31:02 <EgoBot> ​Score for ais523__collision: 36.7
14:31:08 <ais523_> yep, just loses too much speed
14:31:12 -!- augur has quit (Remote host closed the connection).
14:31:25 <ais523_> !bfjoust collision >>>(-)*32<(-)*32<(+)*32<(-)*28>>>>>>(>>>[-[-[+++[+[(>[(+)*10[-]])*20]]]]<<])*7(>[(+)*100[+]])*4
14:31:28 <EgoBot> ​Score for ais523__collision: 36.9
14:31:46 <ais523_> !bfjoust collision >>>(-)*32<(-)*32<(+)*32<(-)*28>>>>>>(>>>[-[-[+++[+[(>[(+)*10[-]])*20]]]]>])*7(>[(+)*100[+]])*4
14:31:50 <EgoBot> ​Score for ais523__collision: 41.7
14:32:02 <ais523_> it's not a bad tactic, just not as good as doing it the normal way
14:32:10 <ais523_> !bfjoust collision >>>(-)*32<(-)*32<(+)*32<(-)*28>>>>>>(>>>[-[-[+++[+[([(+)*10[-]])*20]]]]>])*7(>[(+)*100[+]])*4
14:32:11 <CakeProphet> ais523_: on a longer tape the optimal thing to do would be to skip a large number of cells early, but on a short tape this is a bad idea.
14:32:13 <EgoBot> ​Score for ais523__collision: 30.0
14:32:21 <ais523_> !bfjoust collision >>>(-)*32<(-)*32<(+)*32<(-)*28>>>>>>(>>>[-[-[+++[+[([(+)*10[-]]>)*20]]]]>])*7(>[(+)*100[+]])*4
14:32:24 <EgoBot> ​Score for ais523__collision: 42.3
14:32:24 <CakeProphet> so... yeah. varying skip distance probably can't work for all tape lengths.
14:32:27 <ais523_> CakeProphet: right
14:33:22 <ais523_> !bfjoust collision >>>(-)*32<(-)*32<(+)*32<(-)*28>>>>>>(>>>[(>[(+)*10[-]])*20])*7(>[(+)*100[+]])*4
14:33:25 <EgoBot> ​Score for ais523__collision: 44.4
14:33:36 <ais523_> it's beginning to reach the point where I'll have to start targeting specific programs to do better
14:34:03 <CakeProphet> slowpoke is a good start.
14:34:22 <ais523_> slowpoke's unbeatable with this strategy
14:34:41 <ais523_> it lays a large trail, which nullifies the advantage of skipping forwards
14:34:49 <ais523_> and detecting it would /also/ nullify the advantage of skipping forwards
14:35:24 <CakeProphet> ais523_: skip at distances that are a reverse of a fibonacci subsequence
14:35:26 <CakeProphet> ...and, uh,
14:35:27 <CakeProphet> well
14:35:31 <CakeProphet> that's the extent of my idea
14:35:40 <CakeProphet> I haven't thought anything through. :P
14:36:30 <ais523_> !bfjoust collision >>>>>>(+)*32<(-)*32<(-)*32<(-)*32<(-)*32<(+)*32<(-)*28>>>>>>(>>>[(>[(+)*10[-]])*20])*7(>[(+)*100[+]])*4
14:36:33 <EgoBot> ​Score for ais523__collision: 40.3
14:36:45 <ais523_> !bfjoust collision >>>>>>(+)*32<(+)*32<(-)*32<(-)*32<(-)*32<(+)*32<(-)*28>>>>>>(>>>[(>[(+)*10[-]])*20])*7(>[(+)*100[+]])*4
14:36:48 <EgoBot> ​Score for ais523__collision: 41.6
14:36:56 <ais523_> !bfjoust collision >>>>+>+>(+)*32<(+)*32<(-)*32<(-)*32<(-)*32<(+)*32<(-)*28>>>>>>(>>>[(>[(+)*10[-]])*20])*7(>[(+)*100[+]])*4
14:36:59 <EgoBot> ​Score for ais523__collision: 42.8
14:37:07 <ais523_> I'm trying a really heavy decoy setup
14:37:21 <CakeProphet> ais523_: try a fiboacci sequence decoy setup
14:37:23 <ais523_> !bfjoust collision >>>>+>+>->(-)*32<(+)*32<(+)*32<(-)*32<(-)*32<(-)*32<(+)*32<(-)*28>>>>>>(>>>[(>[(+)*10[-]])*20])*7(>[(+)*100[+]])*4
14:37:26 <EgoBot> ​Score for ais523__collision: 42.9
14:37:28 <CakeProphet> everything is better when it's a fibonacci sequence.
14:37:34 <ais523_> !bfjoust collision >>>>+>+>->(-)*12<(+)*32<(+)*32<(-)*32<(-)*32<(-)*32<(+)*32<(-)*28>>>>>>(>>>[(>[(+)*10[-]])*20])*7(>[(+)*100[+]])*4
14:37:37 <EgoBot> ​Score for ais523__collision: 42.0
14:38:07 <ais523_> !bfjoust collision >>>>+>+>->(-)*32<(+)*32<(+)*32<(-)*60<(-)*60<(-)*60<(+)*60<(-)*28>>>>>>(>>>[(>[(+)*10[-]])*20])*7(>[(+)*100[+]])*4
14:38:10 <EgoBot> ​Score for ais523__collision: 40.4
14:38:27 <CakeProphet> les 32 32 32 more 1 1 2 3 5 8 13
14:38:27 <ais523_> !bfjoust collision >>>>+>+>->(-)*32<(+)*32<(+)*32<<<<<(-)*28>>>>(-)*60<(-)*60<(-)*60<(+)*60>>>>>(>>>[(>[(+)*10[-]])*20])*7(>[(+)*100[+]])*4
14:38:31 <EgoBot> ​Score for ais523__collision: 41.3
14:38:34 <CakeProphet> less
14:39:16 <ais523_> !bfjoust collision >>>>>>(+)*5<(+)*8<(-)*13<(-)*21<(-)*34<(+)*45<(-)*28>>>>>>(>>>[(>[(+)*10[-]])*20])*7(>[(+)*100[+]])*4
14:39:19 <EgoBot> ​Score for ais523__collision: 37.8
14:39:22 <CakeProphet> heh
14:39:23 <ais523_> happy? (the 28 is on the flag)
14:39:26 <CakeProphet> NO REVERSE IT.
14:39:37 <ais523_> err, that's really stupid the way decoy setups work, but OK
14:39:43 -!- copumpkin has joined.
14:39:53 <Ngevd> brb
14:39:54 <ais523_> !bfjoust collision >>>>>>(+)*45<(+)*34<(-)*21<(-)*13<(-)*8<(+)*5<(-)*28>>>>>>(>>>[(>[(+)*10[-]])*20])*7(>[(+)*100[+]])*4
14:39:54 <CakeProphet> ais523_: oh, yes it is.
14:39:55 -!- Ngevd has left ("Leaving").
14:39:57 <EgoBot> ​Score for ais523__collision: 34.4
14:40:10 <ais523_> !bfjoust collision >>>(-)*32<(-)*32<(+)*32<(-)*28>>>>>>(>>>[(>[(+)*10[-]])*20])*7(>[(+)*100[+]])*4
14:40:12 <EgoBot> ​Score for ais523__collision: 44.4
14:40:23 <ais523_> there's no reason for the decoys to differ in size at all, that I can see
14:41:03 <CakeProphet> perhaps to spend fewer steps setting them up
14:41:36 <ais523_> !bfjoust collision >>>(-)*5>>>[<<<(-)*27<(-)*32<(+)*32<(-)*28>>>>>>(>>>[(>[(+)*10[-]])*20])*7(>[(+)*100[+]])*4](-)*32<(-)*32<(+)*32<(-)*27<(-)*32<(+)*32<(-)*28>>>>>>(>>>[(>[(+)*10[-]])*20])*7(>[(+)*100[+]])*4
14:41:38 <CakeProphet> also some jousters handle large/small decoys differently, or something.
14:41:39 <EgoBot> ​Score for ais523__collision: 42.9
14:42:02 <ais523_> !bfjoust collision >>>(-)*5>+>+>[<<<(-)*27<(-)*32<(+)*32<(-)*28>>>>>>(>>>[(>[(+)*10[-]])*20])*7(>[(+)*100[+]])*4](-)*32<(-)*32<(+)*32<(-)*27<(-)*32<(+)*32<(-)*28>>>>>>(>>>[(>[(+)*10[-]])*20])*7(>[(+)*100[+]])*4
14:42:05 <EgoBot> ​Score for ais523__collision: 42.6
14:42:29 <ais523_> !bfjoust collision >>>(-)*5>+>->[<<<(-)*27<(-)*32<(+)*32<(-)*28>>>>>>(>>>[(>[(+)*10[-]])*20])*7(>[(+)*100[+]])*4](-)*32<(-)*31<(+)*31<(-)*27<(-)*32<(+)*32<(-)*28>>>>>>(>>>[(>[(+)*10[-]])*20])*7(>[(+)*100[+]])*4
14:42:32 <EgoBot> ​Score for ais523__collision: 43.2
14:42:34 -!- Taneb has joined.
14:42:54 <Taneb> Pietbot is now registered
14:43:26 <ais523_> !bfjoust collision (-)*5>>>>>>[<<<(-)*27<(-)*32<(+)*32<(-)*23>>>>>>(>>>[(>[(+)*10[-]])*20])*7(>[(+)*100[+]])*4](-)*6<(-)*32<(+)*32<(-)*32<(-)*32<(+)*32<(-)*23>>>>>>(>>>[(>[(+)*10[-]])*20])*7(>[(+)*100[+]])*4
14:43:29 <EgoBot> ​Score for ais523__collision: 40.1
14:43:57 <ais523_> !bfjoust collision (-)*5>>>>>>[<<<(-)*27<(-)*32<(+)*32<(-)*23>>>>>>(>>[(>[(+)*10[-]])*20])*10(>[(+)*100[+]])*5](-)*6<(-)*32<(+)*32<(-)*32<(-)*32<(+)*32<(-)*23>>>>>>(>>>[(>[(+)*10[-]])*20])*7(>[(+)*100[+]])*4
14:44:00 <EgoBot> ​Score for ais523__collision: 42.2
14:44:18 <ais523_> !bfjoust collision (-)*5>>>>>>[<<<(-)*27<(-)*32<(+)*32<(-)*23>>>>>>(>>[(>[(+)*10[-]])*20])*10(>[(+)*100[+]])*5](-)*6<(-)*32<(+)*32<(-)*32<(-)*32<(+)*32<(-)*23>>>>>>>>>(>>>[(>[(+)*10[-]])*20])*6(>[(+)*100[+]])*4
14:44:21 <EgoBot> ​Score for ais523__collision: 36.5
14:44:34 <ais523_> !bfjoust collision (-)*5>>>>>>[<<<(-)*27<(-)*32<(+)*32<(-)*23>>>>>>(>>[(>[(+)*10[-]])*20])*10(>[(+)*100[+]])*5](-)*6<(-)*32<(+)*32<(-)*32<(-)*32<(+)*32<(-)*23>>>>>>>(>>>>[(>[(+)*10[-]])*20])*5(>[(+)*100[+]])*4
14:44:37 <EgoBot> ​Score for ais523__collision: 35.5
14:44:45 <ais523_> yep, that isn't really going to work all that well, I think
14:44:53 <ais523_> !bfjoust collision >>>(-)*32<(-)*32<(+)*32<(-)*28>>>>>>(>>>[(>[(+)*10[-]])*20])*7(>[(+)*100[+]])*4
14:44:56 <EgoBot> ​Score for ais523__collision: 44.4
14:45:01 <CakeProphet> probably not enough fibonacci
14:45:23 <ais523_> stop it!
14:45:29 <ais523_> !bfjoust collision >>>(-)*50<(-)*50<(+)*50<(-)*28>>>>>>(>>>[(>[(+)*10[-]])*20])*7(>[(+)*100[+]])*4
14:45:32 <EgoBot> ​Score for ais523__collision: 40.1
14:45:49 <ais523_> !bfjoust collision >>>(-)*32<(-)*100<(+)*100<(-)*28>>>>>>(>>>[(>[(+)*10[-]])*20])*7(>[(+)*100[+]])*4
14:45:52 <EgoBot> ​Score for ais523__collision: 38.7
14:46:13 <CakeProphet> try n!/2
14:46:29 <ais523_> !bfjoust collision >>>(-)*32<(-)*32<(+)*32<(-)*28>>>>>>(>>>[(>[(+)*10[-]])*20])*7(>[(+)*100[+]])*4
14:46:32 <EgoBot> ​Score for ais523__collision: 44.4
14:46:35 <ais523_> I'll just leave it like that until I have any other amazing ideas
14:46:37 -!- derrik has left.
14:46:47 <CakeProphet> > let fac n = product [1..n] in map fac [1..]
14:46:48 <lambdabot> [1,2,6,24,120,720,5040,40320,362880,3628800,39916800,479001600,6227020800,8...
14:47:12 <CakeProphet> > let fac n = product [1..n] in map (div 2 . fac) [1..]
14:47:14 <lambdabot> [2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,...
14:47:22 <CakeProphet> > let fac n = product [1..n] in map (flip div 2 . fac) [1..]
14:47:24 <lambdabot> [0,1,3,12,60,360,2520,20160,181440,1814400,19958400,239500800,3113510400,43...
14:47:31 <CakeProphet> yep. best decoy setup.
14:47:41 -!- ive has joined.
14:47:50 -!- elliott_ has quit (Remote host closed the connection).
14:47:54 <ais523_> no, it isn't; 360 is an utterly mindblowingly stupid size for a decoy
14:48:00 <ais523_> and 2520 is even worse
14:48:09 <ais523_> (making them more than 256 only makes sense as part of a lock algorithm)
14:48:21 <ais523_> (and even then, is generally suboptimal)
14:48:23 <Deewiant> > let fac n = product [1..n] in map (flip mod 256 . flip div 2 . fac) [1..]
14:48:25 <lambdabot> [0,1,3,12,60,104,216,192,192,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,...
14:48:43 <ais523_> in fact, outside lock algos, making them more than 128's a bit silly
14:48:49 -!- elliott has joined.
14:48:52 <elliott> It works!
14:48:55 <Deewiant> > let fac n = product [1..n] in map (flip mod 128 . flip div 2 . fac) [1..]
14:48:57 <lambdabot> [0,1,3,12,60,104,88,64,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0...
14:48:58 <elliott> No it doesn't!
14:48:58 <ais523_> It = ?
14:49:17 <CakeProphet> > let fac n = product [1..n] in map (\x -> fac x - fac (x-1)) [1..]
14:49:18 <lambdabot> [0,1,4,18,96,600,4320,35280,322560,3265920,36288000,439084800,5748019200,80...
14:49:45 <Taneb> Hurrah!
14:49:52 <Taneb> Oh no!
14:49:56 <ais523_> that isn't a good decoy setup either
14:49:57 <ais523_> elliott: ?
14:50:05 <CakeProphet> > let fac n = product [1..n] in map (\x -> (fac x - fac (x-1))/2) [1..]
14:50:06 <lambdabot> [0.0,0.5,2.0,9.0,48.0,300.0,2160.0,17640.0,161280.0,1632960.0,1.8144e7,2.19...
14:50:11 <Deewiant> > let fac n = product [1..n] in map (flip mod 128 . liftM2 (-) fac (fac . pred)) [1..]
14:50:13 <lambdabot> [0,1,4,18,96,88,96,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0...
14:50:22 <elliott> [elliott@dinky ~]$ ls -lh /etc/rc.d/noidentd
14:50:22 <elliott> -rwxr-xr-x 1 root root 890 Oct 28 15:46 /etc/rc.d/noidentd
14:50:22 <elliott> [elliott@dinky ~]$ cat /etc/rc.d/noinetd
14:50:22 <elliott> cat: /etc/rc.d/noinetd: No such file or directory
14:50:24 <elliott> what the /fuck/?
14:50:25 <CakeProphet> > let fac n = product [1..n] in map (\x -> (fac x - fac (x-1)) `div` 2) [1..]
14:50:27 <lambdabot> [0,0,2,9,48,300,2160,17640,161280,1632960,18144000,219542400,2874009600,404...
14:50:38 <Deewiant> elliott: noidentd != noinetd
14:50:44 <elliott> Ah
14:50:47 <elliott> Quite so
14:51:00 -!- elliott has quit (Client Quit).
14:51:04 -!- elliott has joined.
14:51:10 <CakeProphet> > let fac n = sum [1..n] in map fac [1..]
14:51:11 <lambdabot> [1,3,6,10,15,21,28,36,45,55,66,78,91,105,120,136,153,171,190,210,231,253,27...
14:51:14 <ais523_> aha, no ~
14:51:25 -!- elliott has quit (Remote host closed the connection).
14:51:27 <ais523_> but given that you're cloaked, the identd doesn't make a whole lot of sense
14:51:42 <CakeProphet> ais523_: I was under the impression that have to use interesting mathematical sequences to win at bfjoust
14:51:45 <Deewiant> > let fac n = sum [1..n] in map (flip mod 128 . fac) [1..]
14:51:47 <CakeProphet> I guess I misunderstand the game.
14:51:47 <lambdabot> [1,3,6,10,15,21,28,36,45,55,66,78,91,105,120,8,25,43,62,82,103,125,20,44,69...
14:52:28 -!- elliott has joined.
14:52:32 <elliott> Perfect.
14:52:44 <ais523_> it was right last time too
14:52:52 <elliott> Yes, but it didn't start on boot.
14:53:30 <ais523_> that was a fast reboot
14:53:32 <CakeProphet> ais523_: that's a reasonable decoy sequence no?
14:53:36 <elliott> ais523_: Yes, it was :)
14:53:40 <CakeProphet> 1 might be too small
14:53:56 <ais523_> 1 is sometimes OK for a first decoy
14:54:01 <ais523_> the problem there is you're going to lose on short tapes
14:55:51 <CakeProphet> wouldn't a decoy of 1 take more time to set up than it (in the best case scenario) affords?
14:56:55 <ais523_> no; it sends the opponent into either a small decoy detection loop or their offset clear
14:57:20 <ais523_> it'll typically gain 10-20 cycles if they offset clear, and around 3-10 for a small decoy detection loop (depending on if they get the polarity right first try or not)
14:59:43 <CakeProphet> if bfjoust programs were sentient
14:59:51 <Taneb> What bot prefix symbol should I use?
14:59:58 <Taneb> ""?
15:00:04 <ais523_> I don't think $ is in use here
15:00:12 <elliott> Deewiant: You should try my package it will give you endless money, riches, and ident.
15:00:19 <elliott> Especially money and riches.
15:00:21 <CakeProphet> you could win by creating a program that generates beautiful treatises on various topics of relevance to sentient computer culture.
15:00:21 <ais523_> or you could always use zero-width-space
15:00:39 <ais523_> or if you're feeling especially evil, right-to-left-override
15:00:41 <CakeProphet> and the enemies would hastily try to take notes.
15:00:46 <CakeProphet> or sit in awe.
15:01:28 <CakeProphet> The stan rune is the best character for anything.
15:02:26 <CakeProphet> $ or # would be good for an actual command prefix
15:02:43 <CakeProphet> but ( would be good in that it would be hilariously ugly.
15:02:47 <ais523_> # often gets pasted in here
15:02:55 <ais523_> as part of shell commands
15:03:00 <ais523_> (and lines often start with an opening paren)
15:03:10 <ais523_> ) could work, I guess
15:03:36 <elliott> https://aur.archlinux.org/packages.php?ID=53492 AW MAN LOOK AT THAT I'M LIKE SOME KIND OF MAGICIAN
15:03:37 <CakeProphet> doesn't $ start shell prompts?
15:03:46 <CakeProphet> or end them rather.
15:03:50 <elliott> INSTALL OR DIE
15:03:53 <ais523_> err, right
15:03:58 <ais523_> I've been using too much OCaml recently
15:04:02 <ais523_> which has a # as its prompt
15:04:17 <Deewiant> elliott: Why ident
15:04:18 -!- augur has joined.
15:04:19 <CakeProphet> # would be fine then, unless people start pasting a lot of CPP directives.
15:04:37 <elliott> Deewiant: You know how freenode and other IRC servers pause for a couple of seconds whenever you connect??
15:04:41 <Deewiant> elliott: No
15:04:46 <elliott> WELL THEY DO
15:04:50 <elliott> An identd COMPLETELY ELIMINATES THAT WOOO
15:04:58 <elliott> ALSO, the ~ before your username disappears on freenode.
15:05:02 <elliott> That means you're special.
15:05:09 <elliott> But seriously, reconnections are instant now, this is so much less annoying.
15:05:10 <Deewiant> In other words, no good reason
15:05:22 <Deewiant> GOT IT THANKS
15:05:34 <elliott> What's one yaourt and a vi /etc/conf.d/noidentd and an rc.d start noidentd!!!!
15:05:43 <elliott> That's nothing!!!!! That's LESS THAN NOTHING!!!!!!!!!!
15:06:47 <CakeProphet> : would be a good command prefix, but could possibly conflict with :t
15:08:35 <CakeProphet> elliott: but NOTHING is less than NOTHING!!!!!
15:08:39 <elliott> CakeProphet: Surely YOU know the call of idents fine fellow????
15:08:52 <elliott> LET ME INTEREST YOU IN NOIDENTD, THE SMALLEST SELF-CONTAINED FAKE IDENTD ANYWHERE _OR YOU MONEY BACK!!!!!!_
15:08:53 <CakeProphet> uh, I do now?
15:09:19 <CakeProphet> instant login does sound nice.
15:09:31 <ais523_> but that's not what an identd does, is it?
15:09:34 <CakeProphet> s/login/connect/
15:10:22 <elliott> ais523_: yes, it does
15:10:30 <elliott> freenode wastes like two to three seconds trying to connect to your identd
15:10:34 <elliott> if it succeeds, it goes through instantly
15:10:39 <elliott> hit reconnect and watch the server log
15:10:42 <ais523_> ouch
15:10:44 <elliott> it pauses after can't resolve hostname
15:10:48 <elliott> that's the identd connection
15:10:55 <ais523_> why doesn't it do that for nickserv identifies, where it'd actually be useful?
15:10:59 <elliott> one installation of noidentd and CONNECTIONS ARE INSTANT FOREVER!!!!!!
15:11:11 <ais523_> also, all ports are firewalled or NATted inbound on all connections i use
15:11:13 <ais523_> typically both
15:11:15 <elliott> ais523_: because irc is stupid
15:11:17 <elliott> also
15:11:18 <elliott> YOU COULD
15:11:18 <elliott> ER
15:11:21 <elliott> DAMMIT!!!!!
15:11:22 <ais523_> so noidentd wouldn't be particularly useful
15:11:25 <elliott> CakeProphet FINE FELLOW!!!!
15:11:35 <CakeProphet> going to sleep...
15:11:40 <CakeProphet> MAYBE LATER GENTLEPERSON.
15:11:50 <elliott> GOOOD DAAAAAMN IIIIIT
15:12:02 <CakeProphet> yes it is a very good damn it.
15:12:08 <elliott> THE BEST
15:12:14 <elliott> Deewiant SLIGHTLY LESS FINE FELLOW!
15:12:18 <elliott> You all suck.
15:12:37 <Deewiant> I'm running splint on your code
15:12:44 <CakeProphet> noidentd is some kind of botnet virus isn't it?
15:13:45 <elliott> Deewiant: splint complains about everything, but it's pretty unobjectionable code :P
15:15:05 <Deewiant> Finished checking --- 28 code warnings
15:15:05 <Deewiant> 34 internal bugs reported
15:15:09 <elliott> X-D
15:15:11 <elliott> Gimme the report
15:15:12 <Deewiant> It doesn't like /usr/include/bits/confname.h
15:15:18 <elliott> But ais523_ can attest to splint's uselessness :P
15:15:46 <Deewiant> elliott: These line numbers won't match, I had to un-C99 your variable declarations
15:15:48 <ais523_> elliott: it would be very useful if it weren't so buggy
15:15:52 <elliott> Deewiant: lol
15:16:13 -!- elliott has quit (Quit: Leaving).
15:16:18 <ais523_> I like the way that splint detected more bugs in itself than in elliott's code
15:16:19 -!- elliott has joined.
15:16:24 <ais523_> <ais523_> I like the way that splint detected more bugs in itself than in elliott's code
15:16:25 -!- elliott has quit (Read error: Connection reset by peer).
15:16:32 -!- elliott_ has joined.
15:16:36 <elliott_> LOOK AT MY SPEEEEDY RECONNECTS
15:16:38 <elliott_> Oops
15:17:23 -!- elliott_ has changed nick to elliott.
15:17:25 -!- elliott has quit (Changing host).
15:17:25 -!- elliott has joined.
15:17:48 <Vorpal> ais523_, at what reporting level?
15:17:53 -!- zzo38 has joined.
15:18:02 <elliott> Vorpal!!! Tell me you're on an Arch machine.
15:18:04 <Vorpal> ais523_, also was that per line of code or in total?
15:18:06 <Deewiant> elliott: Report: http://sprunge.us/Uied Modified code: http://sprunge.us/GaDZ
15:18:23 <Vorpal> elliott, nope, I'm on ubuntu on my laptop and windows 7 on my desktop atm. Playing ARMA 2
15:18:23 <Deewiant> (Command line: $ splint +posixlib -systemdirs /usr/include -systemdirerrors +trytorecover noidentd.c)
15:18:25 <elliott> Deewiant: Hahaha jesus
15:18:41 <elliott> Deewiant: It compiles with clang -std=c99 -pedantic -Wall -Wextra, that's good enough for me :P
15:18:47 <elliott> Erm, as in, without warning
15:18:51 <Deewiant> (Without the +trytorecover it just dies on the first internal bug)
15:18:58 <elliott> Nice
15:19:02 <Vorpal> elliott, why did you want me to be on an arch machine?
15:19:13 <ais523_> Not in global scope as expected: Un-unparseable context: 10
15:19:16 <elliott> Vorpal: NOIDENTD!!!! It's the best identd since sliced identd!!! But it's not an identd!!
15:19:27 <Vorpal> elliott, what?
15:20:18 <Deewiant> elliott: Okay it's running but I'm not going to reconnect
15:20:31 <elliott> Deewiant: Just connect with another client :P
15:20:53 <Deewiant> Oh and also it's not going to help at all, heh
15:20:59 <elliott> Firewall?
15:21:14 <Vorpal> elliott, you made no sense
15:21:19 <Deewiant> This machine != the machine my keyboard is attached to
15:21:23 <elliott> Deewiant: lol
15:21:43 <elliott> Vorpal: I made total sense, sorry
15:22:06 <Deewiant> elliott: Make a Solaris 10 package kthx
15:22:26 <elliott> Deewiant: Observe the Makefile that installs a grand total of one file to the system :P
15:22:40 <Deewiant> elliott: But I need service configuration!!
15:22:42 <Vorpal> elliott, why are you not using tup?!
15:22:50 <elliott> Deewiant: True!!!!!!
15:22:58 <elliott> Vorpal: Couldn't be fucked to install it!!!!!!!!!!!!
15:23:15 <elliott> https://aur.archlinux.org/packages.php?ID=35320
15:23:18 <elliott> Also it's orphaned??/
15:23:19 <Vorpal> elliott, it is like cp tup ~/bin after building it
15:23:26 <Vorpal> oh never used aur for tup
15:23:38 <elliott> No I do not install anything outside the package manager now.
15:23:40 <elliott> It is so blissful.
15:23:43 <Vorpal> I just built it in my home dir and copied to ~/bin
15:23:55 <elliott> All language-specific packaging tools are DEAD to me. DEAD.
15:23:59 -!- FireFly has quit (Quit: ZNC - http://znc.in).
15:24:03 <Vorpal> elliott, I use package manager for everything outside $HOME, with a few /opt exceptions such as nwn
15:24:13 <elliott> https://aur.archlinux.org/ Hahaha I wonder if anyone's seen my package
15:24:20 <elliott> I wonder if I can track download counts
15:24:23 <Vorpal> elliott, you are on arch linux?
15:24:27 <elliott> No
15:24:30 <elliott> Gentoo.
15:24:40 <Vorpal> elliott, I don't believe that
15:24:40 <elliott> Also Debian.
15:24:42 <elliott> It's Gentoo/Debian.
15:24:48 <elliott> With Solaris userland.
15:24:52 -!- FireFly has joined.
15:24:52 <Vorpal> hah
15:24:54 <elliott> And DragonflyBSD kernel.
15:25:10 <Vorpal> elliott, which part is from debian then?
15:25:27 <elliott> Vorpal: /etc/debian_version
15:25:35 <Vorpal> elliott, and the bit from gentoo?
15:25:50 <elliott> /dev/tty4
15:25:55 <Vorpal> :P
15:26:39 <elliott> OH YEAH I was going to ask
15:26:42 <FireFly> Neat, hostname tilde begone
15:26:50 <elliott> FireFly: omg bffs 4eva <3
15:27:08 <elliott> As I was saying,
15:27:22 <elliott> Vorpal: What do I have to get you to do to click the thing on AUR so that I can update the C-INTERCAL package :)
15:27:37 <elliott> (Have I mentioned I'm not installing anything outside the package manager any more?)
15:27:57 <elliott> FireFly: P.S. You just installed the most secretest rootkit ever.
15:28:00 <Vorpal> elliott, c-intercal updated? I was unaware, I will deal with it tomorrow. Won't be on arch until then.
15:28:03 <elliott> (It's so secret it doesn't even exist.)
15:28:16 <elliott> Vorpal: It updated months ago, you are an irresponsible maintainer!
15:28:43 <elliott> Vorpal: Also your package doesn't use package() but I dunno if that's new or not.
15:28:45 <Vorpal> elliott, I wasn't notified. I do check the usenet channel every week or so
15:29:00 <Vorpal> elliott, package() is quite new I think yeah.
15:29:02 <ais523_> "usenet channel"?
15:29:13 <elliott> http://groups.google.com/group/alt.lang.intercal/browse_thread/thread/3c17bc59ad7e44a7#
15:29:20 <elliott> You were notified in April
15:29:23 <Vorpal> ais523_, alt.lang.intercal
15:29:28 <ais523_> Vorpal: "channel"? seriously?
15:29:40 <Vorpal> ais523_, err, too tired
15:29:45 <ais523_> "newsgroup" is the correct term; "group" is acceptable
15:29:51 <Vorpal> elliott, oh right, my desktop broke around then. Probably why I missed it.
15:29:55 <ais523_> "forum" is not really acceptable but people have been seen using it on occasion
15:29:58 <fizzie> ais523_: This is the best IRC group on esoteric languages there is.
15:29:59 <ais523_> but "channel" is just bizarre
15:30:09 <elliott> Vorpal: Also, you're using a suboptimal download mechanism in the package
15:30:13 <Vorpal> ais523_, I'm just tired. Don't try to read anything into it
15:30:15 <Vorpal> elliott, ?
15:30:28 <elliott> Vorpal: HTTP
15:30:47 <elliott> The state-of-the-art C-INTERCAL distribution mechanism is gopher/IPv6.
15:30:49 <Vorpal> elliott, you didn't mark c-intercal out of date anyway. You could have done that.
15:30:53 <elliott> Over UDP I guess.
15:31:06 <elliott> Vorpal: I only noticed today going to install c-intercal as an innocent, delicate flower.
15:31:09 <elliott> Alas I am now withered.
15:31:10 <Deewiant> ?pl \c -> (c:) <$> optional (char c)
15:31:10 <lambdabot> liftM2 (<$>) (:) (optional . char)
15:31:11 <Vorpal> elliott, the issue is that makepkg only does http and ftp to my knowledge
15:31:20 <elliott> Vorpal: Patch makepkg
15:31:26 <elliott> It is the only way
15:31:41 <ais523_> elliott: try drinking some water
15:31:42 <Vorpal> elliott, you do it and submit it to upstream, I'm not going to care.
15:31:52 <ais523_> I've been known to revive flowers from apparently fatal wilting before like that
15:31:55 <elliott> Vorpal: But you might care in the past?
15:32:01 <elliott> Also the present?
15:32:02 <Vorpal> elliott, ...
15:32:04 <Vorpal> elliott, no
15:32:10 <elliott> I weep.
15:32:14 <ais523_> wait, I thought I was upstream
15:32:21 <ais523_> or is there another stream between?
15:32:31 <Vorpal> ais523_, upstream for the packaging utilities
15:32:40 <Vorpal> ais523_, if elliott wants it to support gopher/ipv6
15:32:47 <Vorpal> them*
15:32:58 <ais523_> Vorpal: err, the distribution isn't /only/ on gopher over IPv6
15:33:06 <ais523_> it's just that when it first came out, I needed somewhere to put it
15:33:17 <ais523_> and someone happened to have an IPv6 gopher server and asked if they could host it there
15:33:23 <Vorpal> ais523_, I know. It was elliott who said I should use gopher/ipv6 because http was "suboptimal"
15:33:27 <ais523_> and it seemed a pretty appropriate set of protocols
15:33:32 <Vorpal> ais523_, he is just messing around.
15:35:05 <elliott> ais523_: I don't know why you support deprecated protocols like HTTP.
15:35:10 <elliott> IPv4 has all run out.
15:35:55 <Vorpal> ipv4/ipv6 is a completely unrelated issue to gopher/http
15:36:36 <ais523_> elliott: I doubt you'll be able to convince many computer-literate people that HTTP is deprecated in favour of gopher
15:37:02 <elliott> Hmm, someone needs to implement git-over-gopher
15:37:05 <elliott> Preferably push-capable
15:37:10 <elliott> No wait
15:37:13 <elliott> tla-over-gopher
15:37:23 <elliott> ais523_: Move C-INTERCAL over to tla-over-gopher version control
15:37:46 <ais523_> no
15:38:04 <ais523_> clearly, we need to get sg implemented as the new standard, here
15:38:10 <elliott> sg/gopher
15:38:32 <elliott> sg is really boring, it doesn't even have its own sync protocol :'(
15:39:03 <elliott> Or hmm
15:39:09 <elliott> I think it started to have one, actually
15:40:36 <zzo38> What is tla-over-gopher anyways?
15:40:47 <ais523_> zzo38: tla is a version control system
15:41:03 <ais523_> and putting it over gopher means using gopher to transmit the information needed for pulls and pushes
15:45:24 <zzo38> Gopher is particularly suitable for serving files; it is not very suitable to do the other way around, however, but there are a few exceptions.
15:48:55 <Deewiant> @ty (concat .) . zipWith (\a b -> [a,b])
15:48:56 <lambdabot> forall b. [b] -> [b] -> [b]
15:49:09 <Deewiant> elliott: Does that^ still not exist anywhere
15:49:27 <elliott> Hmmm
15:49:43 <elliott> Not to my knowledge, but I can't help but feel there must be a nicer way
15:49:55 <elliott> :t zipWith (\a b xs -> a:b:xs)
15:49:57 <lambdabot> forall b. [b] -> [b] -> [[b] -> [b]]
15:50:07 <Deewiant> The practical way is to write it with manual recursion :-P
15:50:11 <elliott> :t \xs ys -> foldr ($) [] $ zipWith (\a b xs -> a:b:xs) xs ys
15:50:12 <lambdabot> forall a. [a] -> [a] -> [a]
15:50:25 <elliott> :t ala Endo concatMap .: zipWith (\a b xs -> a:b:xs) xs ys
15:50:27 <lambdabot> Not in scope: `xs'
15:50:27 <lambdabot> Not in scope: `ys'
15:50:27 <elliott> :t ala Endo concatMap .: zipWith (\a b xs -> a:b:xs)
15:50:28 <lambdabot> Couldn't match expected type `Endo a' against inferred type `[b]'
15:50:28 <lambdabot> Expected type: (a -> a) -> Endo a
15:50:28 <lambdabot> Inferred type: (a -> a) -> [b]
15:50:32 <Deewiant> Also it probably shouldn't use zip as it could take the remainder when one list runs out
15:50:37 <elliott> :t ala EndoconcatMap
15:50:38 <lambdabot> Not in scope: data constructor `EndoconcatMap'
15:50:41 <elliott> :t ala Endo concatMap
15:50:42 <lambdabot> Couldn't match expected type `Endo a' against inferred type `[b]'
15:50:43 <lambdabot> Expected type: (a -> a) -> Endo a
15:50:43 <lambdabot> Inferred type: (a -> a) -> [b]
15:50:45 <elliott> :t ala Endo foldMap .: zipWith (\a b xs -> a:b:xs)
15:50:46 <lambdabot> Not in scope: `foldMap'
15:50:48 <elliott> >_<
15:50:52 <Deewiant> @ty ala
15:50:53 <lambdabot> forall o n b n' o'. (Newtype n o, Newtype n' o') => (o -> n) -> ((o -> n) -> b -> n') -> b -> o'
15:50:54 <elliott> :t ala Endo Data.Foldable.foldMap .: zipWith (\a b xs -> a:b:xs)
15:50:55 <lambdabot> forall b. [b] -> [b] -> [b] -> [b]
15:51:00 <elliott> Deewiant: Perf... wait, what
15:51:03 <Deewiant> :-D
15:51:06 <elliott> Oh
15:51:14 <elliott> :t ($ []) . ala Endo foldMap .: zipWith (\a b xs -> a:b:xs)
15:51:16 <lambdabot> Not in scope: `foldMap'
15:51:21 <elliott> :t ($ []) . ala Endo Data.Foldable.foldMap .: zipWith (\a b xs -> a:b:xs)
15:51:22 <lambdabot> forall b. [b] -> [b] -> [b]
15:51:27 <elliott> Deewiant: Perfect
15:52:23 <Deewiant> > (($ []) . ala Endo Data.Foldable.foldMap .: zipWith (\a b xs -> a:b:xs)) "abc" "123"
15:52:24 <lambdabot> "123"
15:52:26 <Deewiant> elliott: Try again
15:52:38 <elliott> :t ($ []) .: ala Endo foldMap .: zipWith (\a b xs -> a:b:xs)
15:52:39 <lambdabot> Not in scope: `foldMap'
15:52:42 <elliott> dfjk
15:52:42 <elliott> gho
15:52:43 <elliott> em,l;
15:52:48 <elliott> :t ($ []) .: ala Endo Data.Foldable.foldMap .: zipWith (\a b xs -> a:b:xs)
15:52:49 <lambdabot> forall b. [b] -> [b] -> [b]
15:52:55 <Deewiant> @hoogle (/\/)
15:52:55 <lambdabot> No results found
15:53:07 <elliott> Try hayoo
15:54:18 <Deewiant> No luck
16:00:47 <Taneb> May I test Pietbot?
16:01:00 <ais523_> I'm not sure who you're asking for permission
16:01:02 <Deewiant> I don't think you need to ask
16:01:06 <ais523_> but I'll stand by ready to kick it if it goes berserk
16:01:07 <Taneb> Channel in general
16:01:10 <ais523_> if you think it's necessary
16:01:45 <elliott> Geh, aurget is just too fragile for me
16:01:48 <elliott> I'm trying yaorut
16:01:49 <elliott> yaourt
16:01:51 <elliott> Fuck that name
16:01:57 <Deewiant> yaourt --sucre
16:02:01 <elliott> Fuck that option
16:02:22 <Deewiant> It's a bad option :-/
16:02:32 <elliott> Deewiant: Start counting the days until I write my own libalpm/AUR thing
16:02:38 <elliott> They are numbered
16:02:53 <ais523_> what is AUR anyway?
16:02:54 <Deewiant> If it had just -y instead of -fyy it'd be better
16:03:03 <elliott> ais523_: Arachnids Understanding Rodents
16:03:10 <elliott> Deewiant: -fyy?
16:03:14 <Deewiant> elliott: -fyy
16:03:18 <elliott> What
16:03:26 <Deewiant> ais523_: Arch User Repository
16:03:44 <Deewiant> elliott: It's equivalent to -Sfyyua --devel
16:03:54 <Deewiant> elliott: Notice "fyy"
16:03:55 <elliott> Deewiant: Have I mentioned I don't like yaourt
16:04:01 <elliott> I take it -fyy is like force yes yes
16:04:04 <elliott> Or something
16:04:04 <Deewiant> It's just a joke
16:04:07 <Deewiant> -f is force
16:04:16 <Deewiant> -y is the normal pacman -y
16:04:18 <elliott> What is sucre actually meant to be, even as a joke
16:04:21 <Deewiant> And I think -yy also is, I think
16:04:32 <Deewiant> Or maybe not
16:04:34 <elliott> Also, why does everybody mindlessly copy pacman's basic command structure
16:04:36 <elliott> It's kind of shit
16:04:45 <Deewiant> Anyway, -yy is "force update of package databases"
16:04:54 <Deewiant> I.e. overwrite them even if they appear to be up to date
16:04:55 <elliott> Oh,r ight
16:04:58 <elliott> s/r / r/
16:05:09 <Deewiant> elliott: Because having them be more or less drop-in replacements of each other is handy :-P
16:05:38 <elliott> Deewiant: Yeah, but they offer like two things, AUR building, and an improved UI
16:05:39 <Deewiant> elliott: http://translate.google.com/#fr|en|yaourt%20sucre
16:05:41 <elliott> If you're doing the latter...
16:05:49 <elliott> And yes
16:05:51 <elliott> I realise it is French :P
16:05:58 <elliott> I just don't get the joke of the option itself
16:06:00 <elliott> i.e., why it does that
16:06:17 <Deewiant> It's like syntactic sugar except it's pactactic sugar
16:06:18 <Deewiant> I don't know
16:07:05 <elliott> [elliott@dinky yaourt]$ makepkg -s
16:07:05 <elliott> ==> Making package: yaourt 0.10.2-1 (Fri Oct 28 17:06:24 BST 2011)
16:07:06 <elliott> ==> Checking runtime dependencies...
16:07:06 <elliott> ==> Installing missing dependencies...
16:07:06 <elliott> error: target not found: package-query>=0.7
16:07:06 <elliott> ==> ERROR: 'pacman' failed to install missing dependencies.
16:07:18 <elliott> Dependencies on other AUR packages
16:07:19 <elliott> So great
16:07:22 <elliott> So simple
16:08:03 <Deewiant> I think a couple of the helpers use that
16:08:10 <Deewiant> Not sure though
16:08:37 <elliott> The idea of writing my own on top of libalpm As God Intended is annoyingly prominent at this point :P
16:09:27 <elliott> "man libalpm" is uh
16:09:31 <elliott> It references a bunch of section manpagse
16:09:33 <elliott> That don't exist
16:13:40 <elliott> Deewiant: I like how yaourt has bash_completion support but it's so slow that it actually just makes you regret having a tab key
16:13:49 <elliott> I wish that was my typical hyperbole
16:14:44 <Deewiant> I don't use bash nor yaourt's completion :-P
16:15:50 <ais523_> elliott: perldoc does that too
16:15:59 <ais523_> although hitting control-C at a judiciously timed moment
16:16:00 <ais523_> helps
16:16:43 <Taneb> Damn
16:16:57 <Taneb> How do I get my bot to use netcat?
16:17:12 <elliott> noidentd-git is now onto pkgrev=5 :P
16:17:28 <elliott> FireFly: If you upgrade, you'll get an EXCITING NEW NOTHING.
16:17:38 <Taneb> I want some sort of two way pipe?
16:17:41 <FireFly> Omgz
16:17:46 <elliott> Taneb: nc -e
16:17:53 <Deewiant> elliott: Why is bash a dep
16:17:55 <elliott> Taneb: nc -e 'piet mybot' irc.freenode.net 6667
16:18:02 <ais523_> Taneb: that's one possibility (use mkfifo to make a fifo, then you can make a pipe go round in a circle); but elliott's suggestion is better
16:18:04 <elliott> Deewiant: install -D -m755 noidentd.rc.d "$pkgdir/etc/rc.d/noidentd"
16:18:15 <ais523_> unless you're using a version of nc whose author things -e is a massive security bug
16:18:18 <elliott> ais523_: Well, it's not that better; if FIFOs weren't gross they'd be better
16:18:20 <ais523_> because it can easily be used to make a reverse shell
16:18:30 <elliott> e.g. if tie was installed on the system :-)
16:18:35 <Deewiant> elliott: So it's a makedep?
16:18:45 <elliott> Deewiant: No? /etc/rc.d/noidentd is a bash script
16:18:50 <elliott> It runs at startup/etc.
16:18:59 <elliott> So it's a runtime dependency
16:19:07 <Deewiant> Hmm
16:19:19 <Taneb> nc: invalid option -- 'e'
16:19:19 <Taneb> This is nc from the netcat-openbsd package. An alternative nc is available
16:19:19 <Taneb> in the netcat-traditional package.
16:19:24 <elliott> Deewiant: BTW, the official package-bug-checker-thing told me to put it there
16:19:40 <Deewiant> elliott: Yeah but it's not always right
16:19:48 <elliott> Taneb: install netcat-traditional, echo '#!/bin/sh' >mybot; echo 'piet mybot.piet' >>mybot; chmod +x mybot
16:19:53 <elliott> nc -e 'piet mybot' irc.freenode.net 6667
16:19:55 <elliott> Deewiant: How's it wrong here
16:20:04 <elliott> Deewiant: An rc.d script is just as much a runtime thing as a /usr/bin executable
16:20:10 <Deewiant> elliott: I know, I'm just thinking
16:20:25 <elliott> I would prefer it just depend on any shell rather than bash but all the other rc.d scripts do it like this too :)
16:20:37 * elliott checks everything still works.
16:20:40 -!- elliott has quit (Quit: Leaving).
16:20:45 -!- elliott has joined.
16:20:46 <Deewiant> elliott: Most rc.d scripts of mine don't seem to depend on bash or sh
16:20:59 <elliott> Deewiant: See shebang
16:21:14 <Deewiant> elliott: I just mean the packages themselves
16:21:18 <elliott> Well
16:21:22 <elliott> That sounds like a bug to me
16:21:32 <elliott> They don't run without bash
16:21:37 <elliott> OK, sure, you can just not use the rc.d script
16:21:42 <elliott> But you could just "not use" something in /usr/bin too
16:21:46 <elliott> It's still a missing dependency
16:21:48 <zzo38> Have you answered the telephone by: "I'm sorry, you must have a wrong number. I don't have a telephone."
16:21:52 <Deewiant> elliott: You depend on /etc/rc.d/functions but not initscripts
16:21:57 <ais523_> if it's Debian, then scripts are allowed to assume that "essential" packages are installed, and I think that includes dash
16:22:02 <Deewiant> elliott: (As, presumably, do all/most of these packages)
16:22:09 <elliott> Deewiant: Oh, that's another bug
16:22:10 <ais523_> zzo38: I don't think so; however, it might even be correct if you answered a payphone like that
16:22:14 <ais523_> or someone else's telephone
16:22:14 <Deewiant> elliott: Fair enough :-)
16:23:21 <elliott> noidentd-git W: Dependency bash included but already satisfied
16:23:22 <elliott> noidentd-git W: Dependency included and not needed ('initscripts')
16:23:28 -!- ive has quit (Ping timeout: 240 seconds).
16:23:34 <elliott> Hmmmmmmm
16:23:42 <elliott> Deewiant: I wonder why it's complaining about that, it should see the filename if it sees bash
16:23:51 <elliott> Unless it just uses special-case hacks
16:23:51 <Deewiant> elliott: I told you it's not always right
16:24:50 <ais523_> enigma includes different floors !
16:24:51 <elliott> Deewiant: https://aur.archlinux.org/packages.php?ID=53492
16:24:51 <elliott> There we go
16:24:55 <elliott> ais523_: :D
16:25:14 -!- elliott has quit (Client Quit).
16:25:18 -!- elliott has joined.
16:25:21 <zzo38> ais523_: I suppose so. In which places could I find a payphone?
16:26:03 <ais523_> zzo38: in the UK, they still exist, but are quite rare nowadays; they are mostly found on busy roads with a lot of pedestrians
16:27:07 <elliott> Deewiant: Tell me I'll regret writing my own libalpm ditty
16:27:12 <elliott> I need it :(
16:27:15 <Deewiant> elliott: You'll regret it
16:27:18 <elliott> Deewiant: Why
16:27:29 <Deewiant> I dunno, you told me to say that
16:27:38 <elliott> oh
16:27:40 <elliott> Unconvincing
16:27:49 <elliott> I can't believe python is actually python3 on Arch
16:31:43 <Deewiant> elliott: Give me DS9K values for INT_MIN, INT_MAX, UINT_MAX, LONG_MIN, LONG_MAX, ULONG_MAX, LLONG_MIN, LLONG_MAX, and ULLONG_MAX; thanks in advance
16:32:11 <elliott> Deewiant: You're not going to decide values for them dynamically based on static analysis?
16:32:40 <Deewiant> ... no.
16:33:05 <Deewiant> Feel free to file a feature request if this ever gets that close to being finished
16:33:19 <ais523_> Deewiant: how many bits is a char?
16:33:38 <Deewiant> ais523_: Undecided
16:33:45 <ais523_> also, is this a C89 or C99 version? you should definitely make it use one's-complement with trap representation, for all the types that let you do that
16:33:49 <Deewiant> C1X
16:33:58 <elliott> Deewiant: You're not going to get anywhere interesting just by picking weird rangse
16:33:59 <elliott> ranges
16:34:02 <ais523_> almost 100 years old? boring
16:34:28 <ais523_> I'd say plain int should be equivalent to short, and between 17 and 31 bits wide
16:34:38 <ais523_> as that's going to catch more programs than making it unusually large
16:34:46 <Deewiant> elliott: Where did I say that this is the only DS9K thing I'll do
16:34:48 <ais523_> probably sizeof(int) == 3 is the value to go for
16:34:50 <elliott> char should be as big as a short, int as small as a short
16:34:56 <elliott> Deewiant: Well, fair enough
16:35:00 <Deewiant> sizeof has no relation to the min/max values
16:35:16 <elliott> I'd go for 17-bit chars, shorts ant ints
16:35:16 <ais523_> Deewiant: it does for the unsigned types, doesn't it?
16:35:19 <elliott> s/ant/and/
16:35:22 <Deewiant> ais523_: Does it?
16:35:26 <elliott> And then 129-bit longs
16:35:32 <ais523_> this is from memory, and I'm far from 100% confident
16:35:39 <Deewiant> shorts being equal to ints seems a bit forgiving
16:35:41 <elliott> All of them one's-complement-with-trap
16:35:42 <elliott> If you can do that
16:36:00 <Deewiant> I just need these values so that I can give types to integer literals :-P
16:36:03 <fizzie> All even bits are padding.
16:36:12 <ais523_> hmm, what about sizeof(short)==2, sizeof(int)==3, sizeof(long)==something that isn't representable in an int?
16:36:26 <Deewiant> sizeof is not a matter of interest to me right now
16:36:35 <Deewiant> Unless sizeof and the min/max truly are dependent
16:36:37 <ais523_> Deewiant: well, it determines the bounds that are possible on the integers
16:36:49 <ais523_> you can't have a max-min more than 2 to the power of sizeof * CHAR_BIT
16:36:59 <fizzie> You can have less, though.
16:37:07 <ais523_> yes, but not in all cases
16:37:15 <ais523_> unsigned char you definitely have to use every bit
16:37:15 <Deewiant> Can't I freely pad the sizeof
16:37:18 <ais523_> I'm not sure about unsigned int
16:37:19 <Deewiant> Except for chars
16:37:31 <ais523_> nor about signed char
16:38:10 <elliott> Sigh, AUR Haskell packages do shared objects but not profiling
16:38:16 <fizzie> "For unsigned integer types other than unsigned char, the bits of the object representation shall be divided into two groups: value bits and padding bits (there need not be any of the latter)."
16:38:25 <fizzie> For signed integer types without exception.
16:38:38 <fizzie> (And also there is a sign bit.)
16:39:44 <Deewiant> Right, there are N value bits thus giving the possible values 0 through 2^N - 1
16:40:17 <Deewiant> But with padding the sizeof can be anything bigger
16:40:28 <fizzie> Sadly, at least in C99, you have to in fact use all the value bits to represent a binary number, and only the "second zero" (for one's-complement, or sign-and-magnitude) can be a trap representation.
16:41:03 <Deewiant> fizzie: "Some combinations of padding bits might generate trap representations"
16:41:26 <Deewiant> Some combinations of padding bits might generate trap representations, for example, if one padding bit is a parity bit. Regardless, no arithmetic operation on valid values can generate a trap representation other than as part of an exceptional condition such as an overflow, and this cannot occur with unsigned types. All other combinations of padding bits are alternative object representations of the value specified by the value bits.
16:41:29 <fizzie> Oh, right. But you can't have a value range of, say, [-22222, 33333].
16:41:43 <Deewiant> No, I can't.
16:42:44 <Deewiant> (That footnote is duplicated at least in this C1X draft, amusingly.)
16:43:02 <fizzie> Prime powers of two for the elegance, maybe.
16:46:51 <Deewiant> Do unsigned numbers have to be able to represent up to 2^(N+1)-1 where 2^N-1 is the max of the corresponding signed type?
16:47:39 <Deewiant> "if there are M value bits in the signed type and N in the unsigned type, then M <= N"
16:48:22 <Deewiant> Could have signeds represent [-n,n] and unsigneds represent [0,n], then.
16:51:55 <Deewiant> 11-bit chars, 17-bit shorts, 19-bit ints, 37-bit longs, and 67-bit long longs
16:54:22 <Taneb> Right, I've got a hat on
16:54:37 <Taneb> If I act like Gregor, maybe I'll get some of Gregor's skills
16:55:58 <Deewiant> ?hoogle Ord a => (a,a) -> a -> Bool
16:55:58 <lambdabot> Data.Ix inRange :: Ix a => (a, a) -> a -> Bool
16:55:59 <lambdabot> Text.Regex.Base.RegexLike extract :: Extract source => (Int, Int) -> source -> source
16:55:59 <lambdabot> Data.Graph.Inductive.Graph gelem :: Graph gr => Node -> gr a b -> Bool
16:59:23 -!- Taneb has quit (Ping timeout: 248 seconds).
17:00:09 -!- Ngevd has joined.
17:06:41 -!- Ngevd has quit (Ping timeout: 245 seconds).
17:08:23 -!- ive has joined.
17:10:17 -!- monqy has joined.
17:13:13 -!- Ngevd has joined.
17:14:14 <zzo38> Another Arabic Part (possibly used with equatorial coordinates too) could be: Midheaven - Sun + 0Libra (no flip) I should make Astroplot capable of user defining generalized Arabic Parts, which can be whatever you want, instead of only the 177 parts that Astrolog supports. You can write your own suggestions too. From Wikipedia it is clear that astrology and astronomy program are both inadequate; that is why I have my own idea. Swiss Ephemeri
17:15:18 <zzo38> Astrolog also seems to have errors in its documentation, as well as some bugs I have found in the program.
17:16:41 -!- clog has quit (Remote host closed the connection).
17:17:23 <zzo38> The document says to use -s (sidereal zodiac) when using -sr (equatorial right ascension) but actually that not only has no effect on that mode, but right ascensions are relative to the vernal equinox anyways.
17:18:06 <zzo38> So it would be wrong to use sidereal zodiac mode with it if you wanted the standard right ascensions values.
17:21:08 <fizzie> Deewiant: I have a feeling someone in real life has actually done the [-n, n] signed, [0, n] unsiged thing, on a system where all arithmetic is signed. It might be more unexpected to have, say, values of [-n/4+1, n/4-1] for signed and [0, n-1] for unsigned, for n = 2^k.
17:21:40 -!- ive has quit (Ping timeout: 240 seconds).
17:22:03 <fizzie> Deewiant: What was this all about, incidentally? Were you writing a DS9K simulator?
17:22:49 <Deewiant> fizzie: I'm glacially writing a DS9K implementation of C, in Haskell
17:25:16 <fizzie> Ah.
17:25:21 <zzo38> What is a DS9K?
17:25:49 <fizzie> "The DeathStation 9000 (often abbreviated DS9K) is a hypothetical computer architecture often used as part of a discussion about the portability of computer code (often C code). It is imagined to be as obstructive and unhelpful as possible, whilst still conforming to any relevant standards, deliberately acting unexpectedly whenever possible."
17:26:06 <zzo38> OK.
17:28:13 -!- ive has joined.
17:30:58 <pikhq_> Hmm. *Clearly* the DS9K should have each pointer type with distinct representation.
17:31:30 <elliott> yeah yeah been there donr that
17:31:31 -!- Ngevd has quit (Ping timeout: 258 seconds).
17:34:51 <zzo38> pikhq_: I suppose it should
17:37:45 -!- ais523_ has quit (Ping timeout: 265 seconds).
17:50:11 -!- azaq23 has joined.
17:53:41 <elliott> <elliott> Sigh, AUR Haskell packages do shared objects but not profiling
17:53:43 <elliott> I retract this
17:55:47 -!- Ngevd has joined.
17:58:14 <Vorpal> elliott, so why are you using arch linux?
17:58:31 <Vorpal> elliott, I mean you don't really seem to be the type to enjoy arch linux
17:58:46 <elliott> Vorpal: It's way better than Gentoo/Debian/Solaris/DragonflyBSD
17:59:03 <Vorpal> elliott, and I'm considering switching to nixos in the future, once it gets more mature. Currently it is somewhat buggy and incomplete from my experience.
18:00:13 <elliott> Vorpal: But honestly, the real reason is that it has a newer ghc than Debian
18:00:28 <Vorpal> elliott, please don't tell me you are using this on the vps!?
18:00:50 <elliott> No. That's Debian stable as always.
18:01:01 <Vorpal> elliott, speaking of which, how did you solve the haskell issue on there?
18:01:04 <Vorpal> or ghc issue rather
18:01:10 <elliott> I didn't
18:01:15 -!- ais523 has joined.
18:01:19 <Vorpal> so what did you do instead?
18:01:55 <elliott> Used a cron plugin for bukkit
18:01:58 <Vorpal> ouch
18:02:04 <elliott> It's ok, it uses cron4j
18:02:12 <elliott> which is a feature-for-feature reimplementation :P
18:02:32 <Vorpal> this is like the only place I can think of where that is useful
18:04:16 <elliott> :P
18:04:30 <elliott> i think the advantage is, it can call java code
18:04:32 <elliott> rather than executables
18:04:46 <Vorpal> elliott, I mean, there are far better interfaces for scheduling systems to embed in your application than a crontab file
18:04:59 <elliott> Meh, they're flexible
18:05:03 <Vorpal> well yeah
18:05:04 <elliott> It has a programmatic API too
18:05:25 <Vorpal> makes sense
18:06:18 <Vorpal> elliott, have fun with arch. #archlinux is, while not friendly, acceptable.
18:06:31 <elliott> I don't use distro irc
18:06:40 <Vorpal> good choice
18:06:46 <elliott> it is an automated faq dispensal mechanism
18:06:50 <elliott> but with more yelling
18:06:54 <Vorpal> quite
18:06:54 <elliott> for all it
18:07:05 <fizzie> Maybe I should join #ubuntu, I assume it's the best place.
18:07:10 <Vorpal> elliott, the arch linux wiki tends to be surprisingly good
18:07:14 <elliott> anyway, the large selection of haskell packages in aur has me happy
18:07:21 <elliott> the wiki is nice
18:07:31 <elliott> rc.d/rc.conf/inittab/etc. is acceptable
18:07:34 <elliott> so eh
18:07:36 <elliott> i'm happy
18:07:44 <Vorpal> fizzie, iirc #ubuntu is the largest channel around the time of new releases, otherwise it tends to be the second largest after #gentoo. Might have changed, haven't been in either for ages
18:08:25 <Vorpal> elliott, rc.d... Well I have a minor issue with that, I get confused when switching between ubuntu and arch, I mix up the tab complete for init.d and rc.d.
18:08:26 <fizzie> $ aptitude search '^libghc.*-dev$' | wc -l
18:08:26 <fizzie> 232
18:08:26 <fizzie> (Sadly they're all from the third century BCE.)
18:09:10 <Vorpal> elliott, anyway arch linux init system has a major fault in my opinion. That fault is that the ordering is up to you in the DAEMONS array. It doesn't do deps between services.
18:09:25 <elliott> fizzie: of -uptodate- packages
18:09:40 <elliott> Vorpal: (a) I have a proper issue with it: It's not a service management system.
18:09:47 <Vorpal> elliott, there is that too
18:09:52 <elliott> (b) Meh, I don't have enough daemons for that to matter much, but it's imperfect.
18:10:00 <elliott> DAEMONS=(syslog-ng @network @alsa @noidentd crond)
18:10:03 <fizzie> http://p.zem.fi/zpkb <- freenode top5 when I /list'd, but this was quite a long while ago.
18:10:18 <elliott> fizzie: /list is not impressive, you know.
18:10:28 <Vorpal> elliott, it also prevents fully concurrent starting. You can basically do run in background or blocking start. So you can do some concurrency and ordering. But you can't do deps between those starting in the bg
18:10:31 <elliott> #haskell is up there nowadays, at least top 20
18:10:53 <fizzie> The 8th in that listing.
18:11:29 <elliott> Vorpal: I have a decent init/service manager time, just haven't been bothered to implement it :)
18:11:36 <elliott> Ditto for package manager.
18:11:58 <Vorpal> elliott, anything wrong with nixos package manager?
18:12:09 <elliott> Yes
18:12:12 <elliott> For one, it's C++
18:12:18 <Vorpal> oh okay, apart from that?
18:12:49 <Vorpal> oh that is another issue with nixos, while /bin/sh is there, stuff like /bin/bash or /usr/bin/env bash or /usr/bin/python are quite common in #! too
18:12:50 <elliott> I don't think it implements my higher-order package model
18:13:13 <Vorpal> elliott, higer-order packages? How does that work?
18:13:26 <elliott> Simple, packages take all their configuration as parameters
18:13:39 <Vorpal> elliott, like compilation flags?
18:13:39 <elliott> Configuration includes, e.g. what specific packages to use to satisfy a generic dependency
18:13:49 <Vorpal> hm
18:13:50 <elliott> Vorpal: Sure, and package-specific stuff
18:13:55 <elliott> build-profiling-libs, etc.
18:14:13 <Vorpal> elliott, so that includes stuff like the entire httpd config? Or would that not be in that?
18:15:11 <elliott> Vorpal: Well, the httpd package would only take "package global" config
18:15:17 <elliott> i.e., roughly "compile-time" stuff
18:15:20 <Vorpal> right
18:15:24 <elliott> But my system also subsumes configuration management
18:15:30 <Vorpal> mhm
18:15:31 <elliott> So yes and no
18:16:02 <Vorpal> elliott, okay, what are the benefits of this system then? Does it allow multiple versions of a package or something interesting like that?
18:16:53 <Vorpal> I mean, I can see it is kind of neat to have this info, but I'm not currently seeing what the huge benefit would be
18:17:01 <elliott> The benefits are vastly increased package configurability without breaking dependencies (because packages can depend on certain parameters to others), full multiarch emerges from the rest of the system, sure, multiple versions of a package...
18:17:09 <elliott> And it also underlies the configuration management.
18:17:48 <Vorpal> elliott, hm, this is kind of like the USE-flags of gentoo but more advanced. A package can depend on another package having a specific USE-flag enabled iirc.
18:18:08 <elliott> Yes, it's similar, but typed, not just a constant list of values
18:18:12 <Vorpal> yeah
18:18:21 <elliott> Configuration management eaxmple: e.g. Say foo has a configuration option that can be a cc, any cc
18:18:30 <Vorpal> yeah
18:18:35 <elliott> You might have a "package" foo.cc :: cc -> pkg
18:18:42 <elliott> So you'd install (foo.cc gcc)
18:18:45 <elliott> Or (foo.cc clang)
18:18:45 <elliott> etc.
18:18:47 <Vorpal> yay type signatures
18:19:11 <Vorpal> elliott, kind of nice.
18:19:19 <elliott> Vorpal: ...my secret wish is that packages will turn out to generalise into /services/ as well
18:19:25 <elliott> there's the same dependency management
18:19:30 <elliott> "installation" is starting
18:19:37 <elliott> "uninstallation" is stopping
18:19:38 <elliott> etc.
18:19:46 <Vorpal> elliott, not sure that would fit for stuff like httpd config though. They tend to be very complex. Stuff like rewrite rules, virtual hosts, fcgi setup and what not.
18:19:58 <elliott> httpd recommends httpd.service
18:20:04 <elliott> httpd.service depends on httpd
18:20:07 <elliott> and, i dunno, dbus.service
18:20:09 <elliott> etc.
18:20:09 <Vorpal> hm
18:20:23 <elliott> bootup = installing the configured "system.service" or w/e
18:20:53 <elliott> Vorpal: and yeah, there's modelling involved: in the worst case you just do what nixos does to solve the same problem
18:20:56 <Vorpal> (I somehow doubt an httpd needs dbus, but whatever, not relevant to the discussion really, just thought I ought to point that out)
18:20:59 <elliott> take an extra-config string
18:21:07 <elliott> and yeah i was just trying to think of a daemon
18:21:37 -!- derdon has quit (Remote host closed the connection).
18:22:25 <Vorpal> elliott, anyway you want to have some nice syntax for extra-config strings. So you don't need to escape the newlines or something silly like that. Or escape embedded quotation marks
18:22:38 <elliott> sure
18:22:41 <Vorpal> something like the heredoc stuff in bash would actually be nice there
18:22:42 <elliott> could source it from a file, even
18:22:46 <Vorpal> or that
18:22:48 <Vorpal> probably cleaner
18:22:57 <elliott> esp. for syntax highlighting
18:23:01 <Vorpal> snap
18:23:05 <Vorpal> was about to say that XD
18:23:12 <elliott> Vorpal: oh, and this model also does binary packages really well
18:23:18 <Vorpal> oh?
18:23:29 <elliott> since a package specifies a /precise/ configuration, a binary package can be substituted iff it has the exact same configuration
18:23:46 <elliott> because rebuilding would literally give you the same bits (modulo compilers not being deterministic etc.)
18:23:47 <Vorpal> elliott, exact same down to CFLAGS?
18:24:01 <elliott> Vorpal: sure -- if you specified different CFLAGS, you want them to be used...
18:24:34 <elliott> basically "pkg install foo" would almost certainly use a binary package but e.g. "pkg install foo --without-foo --extra-cflags=-fmagic" would build from source
18:24:44 <elliott> and maybe "pkg install foo --some-popular-option" would use a binary package too
18:24:49 <Vorpal> elliott, could I do something like "I accept these generic CFLAGS but for anything I compile myself for some other reason than CFLAGS I want these instead"
18:24:53 <Vorpal> that would be kind of neat
18:24:57 <elliott> it also means that self-depending packages can be bootstrapped
18:25:02 <elliott> you just force one level of source building
18:25:09 <elliott> and the next level goes to the binary to satisfy the dependencies
18:25:10 <Vorpal> like accepting -mtune=generic but doing -march=core2 or whatever if you compile it /anyway/
18:25:25 <Vorpal> in a config I mean
18:25:25 <elliott> Vorpal: sure, that's basically a frontend issue
18:25:30 <Vorpal> right
18:26:00 <elliott> Vorpal: you could also demand everything be built with -fmagic, in case half the packages in the repo aren't for some reason
18:26:09 <elliott> and that'll use the binary packages if they have -fmagic
18:26:21 <Vorpal> elliott, what with the new AVX stuff I think there are starting to be enough differences on x86-64 to investigate which, if any, packages would benefit from using AVX instead of plain SSE.
18:26:37 <elliott> ...basically the end result of this is that it's ten times more flexible than Gentoo: you can say "i want this libc, this coreutils, this blah" and it all works out...
18:26:40 <Vorpal> hm the base-line on x86-64 is actually SSE2 I think?
18:26:44 <elliott> but in the common case it still uses all-binaries etc.
18:27:22 <elliott> and ofc the same benefits nix gives you
18:27:32 <Vorpal> elliott, "I want this libc", and it all works out? Sure, if you go for glibc or eglibc. Not likely if you go for uclibc or some such :P
18:27:35 <elliott> i.e. purely functional -> rollback support, mostly-centralised configuration management
18:27:46 <elliott> Vorpal: well, it all works out if you pick the right packages
18:27:50 <elliott> Vorpal: once musl gets C++ support...
18:27:50 <Vorpal> heh
18:27:59 <elliott> musl is glibc-compatible to a T
18:28:04 <Vorpal> hm
18:28:17 <elliott> well by support I mean "works with libc++"
18:28:54 <Vorpal> elliott, what about binary blobs that depend on certain stuff. Say, df, nwn, or even the amd or nvidia drivers?
18:29:09 <elliott> What of them? They don't take cflags options :-)
18:29:30 <elliott> There'd be no built-in options, everything would be specified by "sensible default" builders like autotools, etc.
18:29:34 <Vorpal> well the drivers do, they use a glue file between the blob and the kernel. Because of how modules wokr
18:29:37 <Vorpal> work*
18:29:43 <elliott> Well, right
18:30:07 <elliott> Vorpal: Oh, and multiarch basically works perfectly like this
18:30:13 <Vorpal> hm
18:30:21 <elliott> Assuming a Nix-style store layout, I haven't quite decided how it's reflected to the FS yet
18:30:35 <elliott> But basically they just install normally and you overly them onto the right /usr/lib/<foo> directory
18:30:39 <elliott> s/overly/overlay/
18:30:46 <Vorpal> elliott, you need quite a lot of testing to ensure that stuff works. I mean, you need to test every package against every libc you support to be able to specify correct deps.
18:30:47 <elliott> (This thing basically depends on a good union-fs, I think)
18:30:57 <elliott> Vorpal: If you customise shit, shit might break
18:31:01 <Vorpal> ah...
18:31:06 <elliott> Vorpal: Not every combination of USE flags will work with a Gentoo package
18:31:10 <elliott> I mean, it should be fine
18:31:26 <Vorpal> elliott, I'm quite amazed at that nix actually works.
18:31:26 <elliott> But if you use a different libc, shrug
18:31:43 <Vorpal> it is quite complicated to make such a system work as well as it does
18:31:47 <pikhq_> Vorpal: Actually, Nix's design should make things break *less*.
18:32:04 -!- clog has joined.
18:32:15 <Vorpal> pikhq_, yes. But getting stuff like the boot-loader config version selection and what not to work is quite impressive.
18:32:16 <elliott> Vorpal: Well, the nice thing about this design is that it's so generic there's barely anything to it :)
18:32:18 <pikhq_> There's absolutely no way for you to have a breaking ABI change actually break packages.
18:32:40 <Vorpal> brb phone
18:32:43 <pikhq_> Unlike the usual scheme, where it can *and does* happen, unless you pay a lot of attention.
18:32:53 <elliott> Vorpal: I think the actual package manager comes down to a simple functional programming language, a constraint solver, exec(), and a huge standard library
18:33:04 <elliott> Well, fsvo huge
18:33:22 <elliott> But it looks like a language and an stdlib, which is far preferable to Debian
18:33:36 <elliott> Which is like the copy-and-paste coding of the package specification world
18:34:10 <elliott> Vorpal: Anyway, when you start tweaking with things like the libc, you blur the line between distro and LFS tool
18:34:13 <elliott> I think that's OK
18:34:40 <elliott> One thing that really annoys me about NixOS: Totally tied to upstart. No real way around it. With my system the upstart integration would be separate to the main packagse.
18:34:41 <elliott> packages.
18:34:52 <elliott> So you could load up a systemd repo on top of it, or whatever.
18:34:58 <elliott> And have that integrate with the packages.
18:35:33 <elliott> The defining mark of whether something is still truly Blah OS at the end of the day is, I think, whether anyone will bother giving you support :)
18:36:43 <zzo38> How do I make a list of all possible (non partial) functions from one type to another type if I have lists of all values of those types?
18:37:18 <elliott> zzo38: Get all lists of pairs of (A,B); use "lookup" appropriately
18:37:34 <elliott> Vorpal: Oh yeah, I think a killer feature that arises out of this model can be described in one line:
18:37:51 <elliott> Vorpal: cabal :: cabal-package-description -> pkg
18:38:18 <elliott> You can define systematic translations of other types into packages; another packaging format is just another type.
18:38:46 <Vorpal> back
18:39:10 <Vorpal> <pikhq_> There's absolutely no way for you to have a breaking ABI change actually break packages. <-- what about breaking API?
18:39:37 -!- Jafet has quit (Quit: Leaving.).
18:39:47 <Vorpal> <elliott> Which is like the copy-and-paste coding of the package specification world <-- hah, perfect description
18:40:13 <zzo38> elliott: And how do I do that?
18:40:35 <Vorpal> <elliott> So you could load up a systemd repo on top of it, or whatever. <-- while systemd seems nicer than upstart, it uses .ini style syntax iirc. I'm not too fond of that syntax.
18:40:44 <elliott> zzo38: Well... you can't. You can do all finite ones.
18:40:47 <elliott> Vorpal: Yeah, it was an example.
18:40:49 <Vorpal> while upstart has a really nice syntax
18:40:59 <zzo38> elliott: That is OK; I only need finite ones.
18:41:05 <Vorpal> upstart's syntax + systemd would be perfect
18:41:12 <elliott> zzo38: Well, a binary tree should do it
18:41:46 -!- copumpkin has changed nick to trololololo.
18:41:55 <elliott> zzo38: You have ValuesOf a => ValuesOf [a], right? For finite lists
18:42:06 <elliott> And (ValuesOf a, ValuesOf b) => ValuesOf [(a,b)]
18:42:11 <Vorpal> <elliott> You can define systematic translations of other types into packages; another packaging format is just another type. <-- hm, as long as you don't try to do this for debian packages. Those work in weird ways.
18:42:12 <elliott> So just get the values of [(a,b)] and use
18:42:13 <zzo38> elliott: Yes, I have those
18:42:14 <elliott> :t lookup
18:42:14 <lambdabot> forall a b. (Eq a) => a -> [(a, b)] -> Maybe b
18:42:31 <Vorpal> actually just the source packages
18:42:33 <elliott> (Nothing corresponds to an unhandled pattern)
18:42:47 <zzo38> Actually, I do not have ValuesOf a => ValuesOf [a] yet but I will put it on
18:42:48 <elliott> (you could use a cartesian product or something if you don't want those i guess...)
18:42:53 <elliott> Vorpal: Well, yes :)
18:43:03 <elliott> Vorpal: But the point is that you don't need to deal with any external package managers.
18:43:13 <elliott> You can just write an interpreter for them one and for all.
18:43:20 <Vorpal> elliott, automated translation of debian source packages would be.... interesting, but probably impossible
18:43:24 <elliott> Like cabal2arch and so on, but properly-typed, with real infrastructure.
18:43:38 <elliott> Vorpal: Well, you could do it, it just wouldn't integrate with any of the configuration or building
18:43:45 <Vorpal> obviously
18:43:47 <elliott> Vorpal: Remember, it can look like a compiler /or/ an interpreter :)
18:44:01 <Vorpal> elliott, the benefit would however be that you would get a HUGE package repo for free.
18:44:14 <elliott> Yeah. I don't think it's worth it for Debian packages though.
18:44:17 <elliott> Just too much cruft.
18:44:26 <elliott> If you used enough of them all the advantages of the system would disappear.
18:44:56 <elliott> Vorpal: One really desirable property about the system is, your package selections are basically a package themselves
18:45:06 -!- trololololo has changed nick to copumpkin.
18:45:09 <Vorpal> elliott, maybe doing it with a less... diverse package format would be worth it. PKGBUILDs tend to be quite straight-forward. And very few patches. So do .ebuilds to some degree, but with more patches.
18:45:14 <elliott> You just tell the system what packages you want, and that corresponds to the dependency specification of your system package
18:45:26 <elliott> And it just keeps that package installed
18:45:29 <elliott> Vorpal: Yes, indeed.
18:45:44 <elliott> Vorpal: Still, with the abstraction this system can offer, hand-writing packages shouldn't be too painful.
18:45:50 <Vorpal> hm
18:46:19 <elliott> Vorpal: Modulo package-specific configuration options that the distro provides (i.e. value-add type stuff), you could define a package in five lines under the assumption that it's "GNU-like"
18:46:34 <elliott> Because you can just implement handling for GNU-style packages once and reuse that elsewhere
18:46:44 <Vorpal> elliott, true, but it still takes work. This would offer quite a large selection of software during an early stage. That could be useful. Because even if it is simple it takes time to do stuff like finding out the url and the way to build the package and to test it.
18:46:54 <elliott> Yeah.
18:47:03 <elliott> I'd almost feel more like integrating inst(1) support, though :-)
18:47:17 <Vorpal> elliott, I'm not familiar with what inst(1) is
18:47:40 <elliott> My fun Python script that takes a URL to a source distribution and installs it into /opt/pkgname.
18:47:46 <elliott> It was /incredibly/ surprisingly successful.
18:47:52 <Vorpal> heh
18:47:59 <Vorpal> elliott, link?
18:47:59 <elliott> It could handle bash, perl, perl modules, C-INTERCAL, emacs, ...
18:48:13 <elliott> Although I had to fix the version parsing just for c-intercal
18:48:20 <Vorpal> of course
18:48:29 <Vorpal> elliott, what about clc-intercal?
18:48:30 <ais523> elliott: could it handle itself?
18:48:38 <elliott> Vorpal: Didn't try that, valued sanity a bit too much :P
18:48:43 <elliott> ais523: It was a Python script, so... no :-)
18:48:43 <Vorpal> hah
18:48:51 <Vorpal> elliott, well, got a link to it?
18:48:53 <elliott> Vorpal: http://sprunge.us/WCXI?python
18:48:54 <ais523> elliott: CLC-INTERCAL's build system is reasonably sane atm, I think
18:48:55 <elliott> Just found it
18:48:55 <Vorpal> thanks
18:49:02 <ais523> its version numbering isn't, ofc
18:49:06 <Vorpal> elliott, that is all!?
18:49:19 <elliott> Vorpal: It's not even close to complete, but it handles just about any orthodox package, plus quite a few that aren't
18:49:28 <ais523> does it still work on C-INTERCAL, btw?
18:49:36 <elliott> Vorpal: Try it on something (you can replace /opt with something else)
18:49:36 <Vorpal> elliott, what about nethack
18:49:40 <elliott> Hmmm
18:49:42 <elliott> Give it a shot
18:49:45 <elliott> I wouldn't count on it
18:49:56 <ais523> elliott: it won't work on vanilla NetHack, that requires manual configuration
18:49:59 <Vorpal> elliott, I very much doubt it, don't you need to manually copy a makefile to the root dir or something?
18:49:59 <ais523> it may well work on AceHack, though
18:50:02 <elliott> Darn
18:50:03 <Vorpal> and then edit a config.h
18:50:04 <elliott> ais523: Link to AceHack tarball
18:50:05 <Vorpal> or something
18:50:12 <ais523> elliott: err, I don't think there is one
18:50:19 <elliott> ais523: How do I obtain AceHack
18:50:23 <ais523> from the repo
18:50:25 <elliott> ais523: Link
18:50:35 <elliott> :P
18:50:35 <ais523> darcs get http://patch-tag.com/r/ais523/acehack
18:50:54 <ais523> I didn't have the link off-hand, so I said that to buy myself time to find it in my browser history
18:50:56 <Vorpal> elliott, hm, it depends on make install being well behaved. I seen make install install stuff outside /opt, like menu entires.
18:51:06 -!- nooga has joined.
18:51:10 <elliott> Vorpal: Yeah, chrooting or FUSE and the like would have followed
18:51:14 <ais523> the build system there comes from SLASH'EM and I haven't looked at it much
18:51:15 <nooga> that does it
18:51:17 <nooga> i died again
18:51:19 <elliott> [elliott@dinky inst]$ darcs get http://patch-tag.com/r/ais523/acehack
18:51:19 <elliott> bash: darcs: command not found
18:51:20 <elliott> Whoops
18:51:22 <Vorpal> elliott, you should start working on it again
18:51:24 <elliott> monqy: Oh hey
18:51:42 <elliott> Vorpal: I might, if it doesn't work on AceHack :)
18:52:08 * elliott installs darcs
18:52:09 <Vorpal> elliott, well, I meant chrooting or fusing it or whatever. Not sure fuse would have worked though, unless you fused / somehow
18:52:19 <Vorpal> elliott, install darcs with inst
18:52:29 <elliott> That would definitely not work.
18:52:35 <Vorpal> elliott, why not?
18:52:52 <elliott> Haskell build system is totally different... although darcs may be old enough to have makefiles
18:52:57 <Vorpal> heh
18:52:59 -!- Ngevd has quit (Quit: Leaving).
18:53:13 <elliott> ais523: Is it a big repo?
18:53:21 <ais523> not as large as some
18:53:28 <ais523> let me see if I can df it
18:53:30 <elliott> Would --lazy or --partial or w/e help
18:53:31 <ais523> umm, du it
18:53:39 <ais523> and probably
18:53:49 <Vorpal> 72 # I hate ais523
18:53:50 <Vorpal> what?
18:53:53 <Vorpal> elliott, ^
18:54:02 <elliott> Vorpal: that's the C-INTERCAL Version Number Memorial Version Number Parsing Function
18:54:06 <Vorpal> oh
18:54:10 <elliott> which I had to completely restructure because of its negative components
18:54:12 <nooga> I play Brogue
18:54:18 <ais523> elliott: 47MiB, apparently
18:54:23 <nooga> it's soooooo anoying
18:54:39 <Vorpal> that should only take a few minutes if the server can max out the bw
18:54:54 <ais523> I don't even know if 47MiB is big or small nowadays
18:54:58 <ais523> I'm a little out of touch with file sizes
18:55:14 <Vorpal> heh
18:55:23 <elliott> [elliott@dinky inst]$ rm -r acehack/_darcs
18:55:23 <elliott> [elliott@dinky inst]$ tar czf acehack.tar.gz acehack
18:55:23 <elliott> [elliott@dinky inst]$ ls -lh acehack.tar.gz
18:55:23 <elliott> -rw-r--r-- 1 elliott users 3.5M Oct 28 19:54 acehack.tar.gz
18:55:28 <elliott> time to upload thi so inst can download it
18:55:30 <elliott> s/thi/this/
18:55:33 <Vorpal> heh
18:55:41 <Vorpal> elliott, you need a local-testing thingy
18:55:42 <elliott> fuck it, I'll just patch inst to do files
18:55:53 <Vorpal> 100 # I hate Perl programmers.
18:55:53 <Vorpal> 101 return []
18:55:54 <Vorpal> err
18:56:03 <ais523> elliott: do you have a webserver running on the system?
18:56:07 <ais523> you could just download from localhost
18:56:15 <elliott> oh good, curl supports file:///
18:56:22 <elliott> Vorpal: perl shit breaks with -j iirc
18:56:30 <Vorpal> elliott, ouch.
18:56:52 <Vorpal> elliott, you need to add some code to handle that erlang won't build with -j either. Broke recursive make I'm afraid.
18:56:54 <ais523> elliott: AceHack probably also breaks with -j, because I haven't redone the build system yet
18:56:58 <Vorpal> Broken*
18:57:03 <ais523> just used someone else's
18:57:04 <elliott> ais523: ugh, ok, I'll hack it out
18:57:09 <ais523> and I don't trust it to handle parallel make correctly
18:57:17 <Vorpal> ais523, switch to tup
18:57:32 <elliott> File "./inst", line 85
18:57:32 <elliott> print 'Perl program; no configuration available. Sorry!'
18:57:33 <elliott> ^
18:57:33 <elliott> SyntaxError: invalid syntax
18:57:33 <elliott> what.
18:57:43 <Vorpal> elliott, python 3?
18:57:46 <elliott> oh
18:57:49 <elliott> arch
18:57:52 <Vorpal> yes
18:57:54 <elliott> most fucking ridiculous decision
18:58:02 <Vorpal> elliott, switch to python2 in the shebang
18:58:04 <elliott> yeah
18:58:10 <elliott> actually fuck it
18:58:12 <Vorpal> 124 if not path.startswith('http://') and not path.startswith('ftp://'):
18:58:13 <Vorpal> 125 print >>sys.stderr, 'Unsupported protocol.'
18:58:13 <Vorpal> 126 sys.exit(1)
18:58:13 <elliott> i'll just switch to print()
18:58:20 <elliott> how do you print to a file in python3 :P
18:58:21 <Vorpal> elliott, YOU FAIL AT GOPHER! :P
18:58:25 <elliott> Vorpal: oh snap so i do
18:58:27 <elliott> WILLFIX
18:58:28 <Vorpal> elliott, buggered if I know.
18:58:44 <elliott> oh, print(foo, file=blah)
18:58:58 <Vorpal> elliott, I doubt curl handles gopher btw, doing a system() on lynx might be your best bet
18:59:10 <ais523> elliott: wow that syntax looks ugly to me
18:59:19 <Vorpal> ais523, I think it is a named parameter
18:59:28 <ais523> even though it's one character off the conventional Perl for the same thing
18:59:30 <zzo38> Yes, there are other URI schemes than just http:// and ftp://
18:59:30 <ais523> print(foo, file => blah)
18:59:38 <ais523> actually, that looks somewhat ugly too
18:59:42 <zzo38> You should include gopher://
18:59:52 <zzo38> And if you want to access local files, file:///
18:59:56 <elliott> half way through I realise that 2to3 is at hing that exists
19:00:13 <Vorpal> elliott, 2to3 works surprisingly way in my experience
19:00:14 <zzo38> And possibly you might want to support https://
19:00:29 <Vorpal> and sftp://? And rsync://?
19:00:54 <Vorpal> and smb://, afp://, nfs:// (does that exist?)
19:00:55 <ais523> elliott: wouldn't 4to6 be more useful?
19:01:00 <zzo38> If you are using those
19:01:01 <elliott> ais523: give me a version number for acehack
19:01:07 <ais523> elliott: 3.6.0alpha
19:01:08 <zzo38> I don't know what all those things are
19:01:12 <Vorpal> ais523, ... stop it, you are not oerjan
19:01:25 <elliott> [elliott@dinky inst]$ ./inst file:///home/elliott/inst/acehack-3.6.0alpha.tar.gz
19:01:26 <elliott> * Downloading acehack 3.6.0alpha...
19:01:26 <elliott> ######################################################################## 100.0%
19:01:26 <elliott> that was quick
19:01:31 <ais523> reasonably sane numbering scheme?
19:01:40 <elliott> ais523: SIGH @ darcs doesn't get permissions
19:01:50 <pikhq_> Path to inst?
19:01:55 <ais523> elliott: indeed
19:01:58 <elliott> pikhq_: ?
19:02:05 <elliott> ais523: does sh ./perl-program work? i.e., does sh do shebangs?
19:02:07 <pikhq_> elliott: Hand me a URL for inst.
19:02:19 <elliott> pikhq_: http://sprunge.us/WCXI?python
19:02:19 <ais523> elliott: sh doesn't parse shebangs; perl does, though
19:02:28 <ais523> as in, perl ./x.sh will pass it to the shell if x starts #!/bin/sh
19:02:31 <elliott> ais523: ah, i'll just run perl then
19:02:37 <elliott> if configure == 'Makefile.PL':
19:02:37 <elliott> print('Perl program; no configuration available. Sorry!')
19:02:37 <elliott> else:
19:02:37 <elliott> run('perl', './' + configure, '--help')
19:02:41 <elliott> best thing i've ever written
19:02:42 <Vorpal> elliott, what if perl is not installed?
19:02:46 <ais523> that feature was apparently invented for just that situation
19:03:17 <ais523> If the #! line does not contain the word "perl", the program named after the #! is executed instead of the Perl interpreter. This is slightly bizarre, but it helps people on machines that don't do #!, because they can tell a program that their SHELL is /usr/bin/perl, and Perl will then dispatch the program to the correct interpreter for them.
19:03:27 <elliott> ais523: Vorpal: OK, here goes nothing
19:03:31 <elliott> [elliott@dinky inst]$ ./inst file:///home/elliott/inst/acehack-3.6.0alpha.tar.gz
19:03:31 <elliott> * Downloading acehack 3.6.0alpha...
19:03:31 <elliott> ######################################################################## 100.0%
19:03:31 <elliott> * Configuring acehack 3.6.0alpha...
19:03:31 <elliott> [elliott@dinky inst]$
19:03:37 <elliott> I guess it just... decided that was enough?
19:03:39 <Vorpal> elliott, what about... building?
19:03:43 <ais523> that was surprisingly fast
19:03:52 <ais523> it does need to be compiled, and is unlikely to compile that instantaneously
19:03:52 <Vorpal> elliott, or did you forget what the syntax were?
19:04:00 <elliott> Vorpal: no, something is wrong :P
19:04:06 <Vorpal> brb
19:04:08 <elliott> print >>sys.stderr, '* Building %s...' % (package,)
19:04:10 <elliott> 2to3
19:04:11 <elliott> i'm upset
19:04:28 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
19:04:48 <elliott> here goes
19:05:01 <zzo38> I think now I made the function of equality of functions.
19:05:12 <zzo38> f == g = and $ uncurry (==) <$> zip (f <$> allValues) (g <$> allValues);
19:05:26 <elliott> ais523: oh, it, er, still quits after configuring
19:05:30 <elliott> I hope this isn't Python 3's fault
19:05:37 <ais523> try it on GNU hello just to check
19:05:42 <elliott> got a link?
19:06:20 <zzo38> f == g = (f <$> allValues) == (g <$> allValues);
19:06:30 <ais523> ftp://ftp.gnu.org/gnu/hello/hello-2.7.tar.gz
19:06:50 <ais523> hello exists to be the exemplary example of packaging practices
19:07:01 <ais523> and also, the exemplary example of things to practice packaging /on/
19:07:18 <Vorpal> what exactly is the point of a separate exec bit in the permissions on *nix
19:07:39 <ais523> Vorpal: to determine what files can and can't be executed?
19:07:39 <Vorpal> the only case I can think of where it makes sense would be for a suid -r+x
19:07:44 <elliott> flood time:
19:07:46 <elliott> [elliott@dinky inst]$ time ./inst ftp://ftp.gnu.org/gnu/hello/hello-2.7.tar.gz
19:07:46 <elliott> * Downloading hello 2.7...
19:07:46 <elliott> ######################################################################## 100.0%
19:07:46 <elliott> ######################################################################## 100.0%* Configuring hello 2.7...
19:07:46 <elliott> * Building hello 2.7...
19:07:47 <elliott> * Installing hello 2.7...
19:07:49 <elliott> Password:
19:07:51 <elliott> * Installed hello 2.7.
19:07:53 <Vorpal> ais523, yes but why not just tie it into +r
19:07:53 <elliott> real0m25.532s
19:07:55 <elliott> user0m7.696s
19:07:56 <ais523> Vorpal: +r-x?
19:07:57 <elliott> sys0m4.226s
19:07:59 <elliott> [elliott@dinky inst]$ ls opt/hello-2.7
19:08:00 <ais523> that's a really plausible combination
19:08:01 <elliott> bin share
19:08:03 <elliott> [elliott@dinky inst]$ opt/hello-2.7/bin/hello
19:08:05 <elliott> Hello, world!
19:08:07 <elliott> curl output got a bit messed upt here
19:08:10 <Vorpal> ais523, and why does it matter that it is executable
19:08:12 <Vorpal> really
19:08:16 <elliott> ais523: ok, acehack is messing something up :)
19:08:20 <ais523> Vorpal: tab-completion on things to execute?
19:08:22 <ais523> elliott: it doesn't surprise me
19:08:31 <ais523> redoing the build system isn't a high priority, but is on the mental list
19:08:31 <elliott> ais523: it shouldn't be able to crash inst silently
19:08:35 -!- Phantom_Hoover has joined.
19:08:35 <elliott> that's a bug in inst
19:08:38 <Vorpal> ais523, but why would something other than a bin directory be in PATH?
19:08:50 <ais523> Vorpal: doesn't need to be at the start of the line
19:08:57 <ais523> if I type ./tab tab
19:09:05 <ais523> then I want a list of all the executables in the current directory
19:09:06 <elliott> checking whether to enable xlogfile... yes (file xlogfile)
19:09:06 <elliott> checking whether to enable wizmode... yes (user wizard)
19:09:06 <elliott> checking for owner of installed files... configure: error: in `/tmp/inst-work-c6g7hf/tree/acehack':
19:09:06 <elliott> configure: error: test for user games failed
19:09:06 <elliott> See `config.log' for more details.
19:09:09 <elliott> ais523: help
19:09:11 <Vorpal> ais523, hm true
19:09:23 <ais523> elliott: it seems that it defaults the user who owns the scorefile to "games"
19:09:28 <ais523> and that that user doesn't exist on the system
19:09:38 <elliott> if status > 0:
19:09:38 <elliott> if verbose:
19:09:38 <elliott> sys.stderr.write(open(work + '/build.log').read())
19:09:38 <elliott> print('\nThis log has been written to %s/build.log.'
19:09:38 <elliott> % (work,), file=sys.stderr)
19:09:39 <elliott> sys.exit(1)
19:09:43 <elliott> wait, why would I only print errors when verbose?
19:09:44 * elliott fixes
19:10:00 <elliott> oh, hmm
19:10:01 <elliott> I see
19:10:20 <zzo38> How can you have a beautiful ending without making beautiful mistakes?
19:10:24 <ais523> I'm not sure if that's a bad default, or a case where automatic installation isn't possible
19:10:32 <elliott> ais523: it's ok: inst takes configure options
19:10:39 <elliott> ais523: inst pretends to be the package configure, in fact
19:10:42 <elliott> you can pass it --help
19:10:48 <ais523> elliott: --with-user=anything --with-group=anything
19:10:52 <elliott> thanks
19:10:55 <ais523> where anything should be appropriate
19:10:57 <Vorpal> elliott, does it cache the downloaded package or does it re-download it every time?
19:11:06 <ais523> umm, --with-owner
19:11:09 <ais523> not --with-user
19:11:10 <elliott> Vorpal: re-download for now :) but this is from file:///
19:11:15 <Vorpal> right
19:11:38 <elliott> OK, let's try this again.
19:11:52 <elliott> [elliott@dinky inst]$ time ./inst file:///home/elliott/inst/acehack-3.6.0alpha.tar.gz
19:11:52 <elliott> * Downloading acehack 3.6.0alpha...
19:11:52 <elliott> ######################################################################## 100.0%
19:11:52 <elliott> * Configuring acehack 3.6.0alpha...
19:11:52 <elliott> Command failed with status 1. A log has been written to /tmp/inst-work-jrdpdx/build.log.
19:11:54 <elliott> real0m5.194s
19:11:55 <elliott> user0m3.256s
19:11:57 <elliott> sys0m1.010s
19:11:59 <elliott> that's more reasonable
19:12:05 <ais523> yep
19:12:06 <Vorpal> elliott, btw, wrt your future distro above, maintaining a distro is a lot of work. Keeping track of hundreds of mailing lists and what not to get notified when new versions of packages are released
19:12:09 <ais523> what was the error?
19:12:16 <elliott> Vorpal: oh, I know full well
19:12:25 <ais523> Vorpal: Debian uses daemons to watch that, rather than humans
19:12:27 <elliott> ais523: the one i pasted above
19:12:39 <ais523> elliott: I mean, in /tmp/inst-work-jrdpdx/build.log
19:12:40 <elliott> Vorpal: do you think it's coincidental that almost every package will be only a dozen or so lines long with this system? :-)
19:12:42 <Vorpal> ais523, that might be hard for some packages.
19:12:49 <Vorpal> elliott, XD
19:12:49 <elliott> ais523: it's just configure's output
19:12:53 <ais523> elliott: well, yes
19:12:54 <elliott> checking whether to enable wizmode... yes (user wizard)
19:12:54 <elliott> checking for owner of installed files... configure: error: in `/tmp/inst-work-jr
19:12:54 <elliott> dpdx/tree/acehack':
19:12:54 <elliott> configure: error: test for user games failed
19:12:54 <elliott> See `config.log' for more details.
19:12:55 <Vorpal> elliott, what about the kernel? I bet that will be more
19:13:02 <ais523> elliott: OK, that's bizarre
19:13:06 <elliott> ais523: howso?
19:13:10 <elliott> that's what you saw before
19:13:15 <elliott> you didn't react to it oddly then...
19:13:18 <elliott> ok, let's try this with the options ais523 gave
19:13:22 <Vorpal> heh
19:13:24 <ais523> ah, I thought you'd done it with the options
19:13:29 <ais523> and was wondering why it was ignoring them
19:14:02 <elliott> failed again with same error
19:14:05 <ais523> $ ./config.status --config
19:14:05 <elliott> [elliott@dinky inst]$ time ./inst file:///home/elliott/inst/acehack-3.6.0alpha.tar.gz --with-owner=anything --with-group=anything
19:14:06 <ais523> '--enable-wizmode=ais523' '--with-owner=ais523' '--with-group=ais523' '--prefix=/home/ais523/acehack/build'
19:14:15 <ais523> elliott: well, "anything" probably isn't a valid owner either
19:14:17 <Vorpal> elliott, you need to fill in relevant values for anything
19:14:18 <elliott> ais523: oh
19:14:19 <elliott> dur :P
19:14:23 <elliott> i thought that was a wildcard
19:14:26 <Vorpal> elliott, now hit any key
19:14:30 <elliott> [any key]
19:14:32 <zzo38> I still don't know how to make the list of all functions.
19:14:32 <ais523> not that one!
19:14:38 <Vorpal> XD
19:14:53 <elliott> ais523: same even with --with-owner=elliott --with-group=elliott
19:14:59 <ais523> hmm, bizarre
19:15:02 <ais523> I guess it's an Ace bug
19:15:03 <Vorpal> zzo38, nm path-to-ELF-file-that-isnt-stripped.o ?
19:15:06 <ais523> but this possibly isn't a good time to look into it
19:15:17 <elliott> oh, wait
19:15:19 <zzo38> Vorpal: Not what I meant
19:15:21 <elliott> ais523: does perl pass along command line args?
19:15:24 <elliott> perl ./configure foo bar
19:15:26 <elliott> to shell scripts
19:15:31 <ais523> elliott: I don't know, but it should be easy enough to check
19:15:37 <zzo38> I meant in Haskell, like [a -> b]
19:15:44 <ais523> elliott: yes, it does
19:15:46 <elliott> hmm, yes
19:15:47 <elliott> darn
19:15:52 <elliott> that's not the problem then
19:15:58 <elliott> oh
19:15:59 <elliott> DURRR
19:16:02 <Vorpal> what?
19:16:07 <elliott> def run_configure(*args, **kwargs):
19:16:07 <elliott> global configure
19:16:07 <elliott> prefix = kwargs['prefix']
19:16:07 <elliott> if configure == 'Makefile.PL':
19:16:07 <elliott> run_silent('perl', configure, 'INSTALL_BASE=' + prefix)
19:16:07 <elliott> else:
19:16:09 <elliott> run_silent('perl', './' + configure, '--prefix=' + prefix)
19:16:13 <elliott> noticable lack of ACTUALLY USING THE ARGUMENTS
19:16:15 <ais523> yep
19:16:18 <Vorpal> yeah
19:16:23 <elliott> how did that slip past m
19:16:23 <elliott> e
19:16:35 <ais523> zzo38: just enumerate all possible files, in length-then-asciibetical order
19:16:43 <ais523> and discard the ones that don't describe exactly one function
19:16:46 <ais523> then remove duplicates
19:16:52 <elliott> configure: error: test for group elliott failed
19:16:52 <elliott> lol
19:16:56 <elliott> ok elliott:users it is
19:17:08 <elliott> [elliott@dinky inst]$ time ./inst file:///home/elliott/inst/acehack-3.6.0alpha.tar.gz --with-owner=elliott --with-group=users
19:17:09 <elliott> * Downloading acehack 3.6.0alpha...
19:17:09 <elliott> ######################################################################## 100.0%
19:17:09 <elliott> * Configuring acehack 3.6.0alpha...
19:17:09 <elliott> * Building acehack 3.6.0alpha...
19:17:10 <Vorpal> elliott, I bet it will install to /var too
19:17:10 <elliott> woo!
19:17:17 <elliott> Vorpal: ugh
19:17:22 <elliott> ais523: does it go outside --prefix
19:17:24 <Vorpal> elliott, normal nethack would
19:17:26 <zzo38> ais523: Files? It isn't files.
19:17:34 <ais523> --localstatedir=DIR modifiable single-machine data [PREFIX/var]
19:17:39 <elliott> phew
19:17:39 <ais523> elliott: not unless it's buggy
19:17:39 <Vorpal> ais523, ah nice
19:18:01 <ais523> zzo38: but a file can describe a function; and it's easier to enumerate files, then to enumerate functions
19:18:19 <Vorpal> elliott, btw I would switch cfunge to tup if only where was a nice configuring system that fit seamlessly with tup
19:18:24 <Vorpal> and no not kconfig
19:18:36 <ais523> elliott: I'm reasonably sure it doesn't go outside the prefix, as I've installed it as non-root before
19:18:38 <Vorpal> most of it is auto detection, and it isn't all that many options to warrant kconfig
19:18:41 -!- tiffany has joined.
19:18:42 <ais523> to inside my home dir
19:18:49 <elliott> Vorpal: yeah well i've considered working on something like that
19:18:53 <elliott> Vorpal: but it should still be kconfig-based
19:18:54 <elliott> as in the format
19:19:09 <elliott> [elliott@dinky inst-work-1_vxz8]$ ls
19:19:09 <elliott> acehack-3.6.0alpha.tar build.log tree
19:19:09 <elliott> [elliott@dinky inst-work-1_vxz8]$ ls tree
19:19:09 <elliott> acehack
19:19:09 <elliott> this is what it looks like in the work dirs, btw
19:19:12 <elliott> ais523: yay, it failed
19:19:20 <elliott> make[1]: *** No rule to make target `rumors.c', needed by `rumors.o'. Stop.
19:19:34 <zzo38> ais523: I have [x] which list all possible value of [x], [y] which list all possible value of [y], I should make [x -> y] list all possible value of (x -> y) is what I meant. (Ignoring all undefined values)
19:19:39 <Vorpal> elliott, sure, but what I need is basically stuff like "detect if we have that header" or "I want to know if we have this function, and it might be in libc or in librt, because fuck freebsd"
19:19:52 <ais523> elliott: I wonder why /that/ one? it's not the first to be compiled
19:19:52 <Vorpal> or fuck linux, the point is, it differs
19:19:54 <elliott> Vorpal: autoconf actually works for this with tup :p
19:20:10 <ais523> zzo38: it's probably a bad idea
19:20:17 <Vorpal> elliott, but I haven't seen any guide to how to make autoconf fit with tup
19:20:21 <ais523> there are an infinite number of possibilities
19:20:24 <elliott> Vorpal: pikhq_ did it
19:20:30 <elliott> ais523: http://sprunge.us/DcHH
19:20:33 <elliott> (short)
19:20:37 <zzo38> ais523: I am using only finite types, though.
19:20:38 <Vorpal> pikhq_, got a link to details on how to fit autoconf with tup?
19:20:40 <ais523> Vorpal: don't see autoconf as a magic black box; learn how it works
19:20:48 <Vorpal> ais523, that sounds like a lot of work
19:20:51 <ais523> zzo38: oh, in that case, it's finite, just incredibly large
19:20:51 <zzo38> And only functions that halt.
19:20:56 <ais523> Vorpal: but it's the only way to use it correctly
19:21:13 <ais523> elliott: it's as if there's a file missing from the tarball
19:21:20 <ais523> let me make sure it's in the repo
19:21:22 <Vorpal> ais523, well then, I need a simpler system. I'm just not going to invest the time into learning m4 and so on
19:21:23 <elliott> ais523: possible, darcs was a bit funny about it
19:21:25 <zzo38> Yes, I think for (x -> y) it will be $y^x$ so yes it will be large
19:21:28 <elliott> I'll re-check out
19:21:49 <ais523> yep, it's in the repo all right
19:22:35 <tswett> elliott: fhpxref!
19:22:43 <ais523> perhaps something autocorrected "rumors.c" to "rumours.c"?
19:23:01 <elliott> ais523: ok, it's going again
19:23:06 <tswett> elliott: so, uh, wasn't there some sort of Homestuck IRC channel?
19:23:12 <elliott> ah, my acehack tarball is bigger now
19:23:15 <elliott> that's reassuring
19:23:35 <elliott> tswett: I would put the probability of that at somewhere around p=9.
19:23:37 <elliott> Out of 1.
19:24:18 <tswett> elliott: so you'd gladly agree to give me a dollar if there is such a channel, and a million dollars if there is no such channel.
19:24:41 <elliott> tswett: Yes. What's your PayPal.
19:24:51 <ais523> elliott: read the bet again
19:24:54 <tswett> Since your net gain is (-1)*9 + (-1000000)*(-8) = 7999991, if I calculate correctly.
19:25:00 <elliott> ais523: I know what the bet says.
19:25:02 <ais523> oh, right
19:25:16 -!- sllide has joined.
19:25:23 <elliott> [elliott@dinky inst]$ time ./inst file:///home/elliott/inst/acehack-3.6.0alpha.tar.gz --with-owner=elliott --with-group=users
19:25:23 <elliott> * Downloading acehack 3.6.0alpha...
19:25:23 <elliott> ######################################################################## 100.0%
19:25:23 <elliott> * Configuring acehack 3.6.0alpha...
19:25:23 <elliott> * Building acehack 3.6.0alpha...
19:25:23 <ais523> what a bizarre way for probabilities to work
19:25:24 <elliott> * Installing acehack 3.6.0alpha...
19:25:26 <elliott> Password:
19:25:28 <elliott> * Installed acehack 3.6.0alpha.
19:25:30 <elliott> real2m23.732s
19:25:31 <ais523> yay
19:25:32 <elliott> user2m7.545s
19:25:34 <elliott> sys0m7.546s
19:25:36 <elliott> [elliott@dinky inst]$ ls opt/acehack-3.6.0alpha
19:25:38 <ais523> 2 minutes for a full rebuild isn't bad
19:25:38 <elliott> acehackdir bin
19:25:42 <elliott> ais523: so the answer is "yep, inst does acehack, given a system with the right groups"
19:25:42 <tswett> Well, 9 is a bizarre probability.
19:25:50 <elliott> ais523: hold on, we haven't made sure it works yet
19:25:55 <elliott> ais523: also, wtf kind of dirname is acehackdir?
19:26:00 <elliott> that doesn't fit in any filesystem standard
19:26:04 <ais523> also, "acehack's configure file creates a new directory directly under /usr"
19:26:16 <elliott> ais523: yes, that's a good bug title
19:26:17 * ais523 mentally yells at the SLASH'EM devs
19:26:47 <ais523> the directory can't be placed anywhere under the FHS, incidentally; some of it belongs in /usr, some in /var, some even in /var/run
19:26:54 <ais523> I need to do proper moving of files to the right place
19:26:55 <elliott> you mean /run
19:26:55 <tswett> elliott: do you happen to remember the server this channel was on?
19:27:02 <tswett> What am I kidding. I can find it as long as it was mentioned in here.
19:27:04 <tswett> Ever.
19:27:05 <ais523> elliott: there is no /run
19:27:09 <elliott> ais523: you are wrong
19:27:14 <ais523> really?
19:27:22 <elliott> ais523: recently accepted addition, replacing /var/run
19:27:26 <ais523> $ ls /run
19:27:27 <elliott> as well as some other parts of /var I think
19:27:27 <ais523> ls: cannot access /run: No such file or directory
19:27:29 <ais523> ah, interesting
19:27:32 <elliott> ais523: it's in latest ubuntu
19:27:34 <elliott> and debian
19:27:35 <elliott> and arch
19:27:37 <elliott> and everything
19:27:37 <Vorpal> <ais523> also, "acehack's configure file creates a new directory directly under /usr" <--- .... what?
19:27:42 <ais523> so I'd need to have a fallback
19:27:43 <Vorpal> ais523, ever heard of /etc?
19:27:44 <ais523> Vorpal: it's a bug, OK?
19:27:51 <ais523> and no, /etc is not the right place to put it either
19:27:52 <Vorpal> ais523, ah
19:28:08 <elliott> ais523: Vorpal: http://i.imgur.com/qguK0.png
19:28:23 <ais523> that's what it's meant to look like, at least
19:28:25 <Vorpal> <elliott> ais523: recently accepted addition, replacing /var/run <-- well, that is new. is it FHS?
19:28:29 <elliott> Vorpal: yes
19:28:34 <elliott> well
19:28:36 <elliott> to be published
19:28:39 <Vorpal> elliott, when did that happen. None of my systems have it
19:28:47 <elliott> Vorpal: recently
19:28:53 <elliott> this year
19:29:10 <elliott> ais523: cool, it's a full moon
19:29:14 <Vorpal> elliott, anyway if arch have it I need to clean up that mess. Because of how my partitions are set up it doesn't make sense.
19:29:18 <elliott> thanks acehack
19:29:24 <elliott> Vorpal: no, it does make sense
19:29:34 <Vorpal> elliott, yes but not wrt my partitions
19:29:34 <elliott> Vorpal: what doesn't make sense is /var containing both volatile and non-volatile data
19:29:34 <ais523> elliott: lucky!
19:29:47 <elliott> Vorpal: see http://wiki.debian.org/ReleaseGoals/RunDirectory
19:29:52 <Vorpal> elliott, / is on an SSD, /var is not
19:29:55 <ais523> Vorpal: further evidence is that /var is on a different filesystem to /var/run on this system
19:30:08 <Vorpal> ais523, oh, tmpfs?
19:30:13 <Vorpal> makes sense I guess
19:30:25 <ais523> yep
19:30:25 <Vorpal> since it is mostly pid files and sockets
19:30:26 <elliott> Vorpal: run on /run type tmpfs (rw,nosuid,nodev,relatime,size=10240k,mode=755)
19:30:30 <elliott> /run _is_ a tmpfs
19:30:42 <Vorpal> elliott, right
19:30:46 <Vorpal> that works then
19:31:04 <elliott> ais523: I can confirm that AceHack works
19:31:17 <ais523> yay
19:31:40 <Vorpal> elliott, fully? Does saving and exiting work?
19:31:54 <Vorpal> elliott, does score file work if you die?
19:32:05 <Vorpal> (easier to check than ascending!)
19:32:06 <ais523> Vorpal: it tries to write an insurance lockfile as soon as you start playing
19:32:11 <ais523> and that goes to the same place as save files
19:32:14 <elliott> Vorpal: I'm dying now
19:32:18 <ais523> so it'd be shocking if one worked but not the other
19:32:19 <elliott> I prayed a few times
19:32:24 <Vorpal> elliott, hah
19:32:41 <Vorpal> ais523, well, it is quite possible. Disk full for example
19:32:49 <ais523> Vorpal: and that's inst's fault how?
19:32:52 <Vorpal> ais523, no
19:32:56 <Vorpal> but I meant in general
19:33:16 <elliott> wow, my god sends the shittiest death threats
19:33:24 <Vorpal> oh?
19:33:37 <elliott> well i've currently outrun it for like a hundred turns :P
19:33:47 <ais523> what is it?
19:33:51 <Vorpal> elliott, no disintegration beam?
19:34:00 <elliott> the couatl of amaterasu omikami
19:34:05 <ais523> btw, once you get a negative prayer effect, you'll get nothing but negatives until you atone
19:34:07 <Vorpal> elliott, sam?
19:34:08 * elliott prays again with 1 hp for shits and giggles
19:34:09 <ais523> ah, right
19:34:22 <elliott> oh well, i died
19:34:40 <Vorpal> <ais523> btw, once you get a negative prayer effect, you'll get nothing but negatives until you atone <-- I thought there was a timeout? Or is this behaviour new in acehack?
19:34:52 <Vorpal> elliott, sam?
19:35:02 <elliott> hi
19:35:06 <Vorpal> ...
19:35:10 <Vorpal> elliott, I asked if you played sam
19:35:13 <ais523> Vorpal: no, it's in vanilla too
19:35:18 <Vorpal> ais523, heh
19:35:23 <ais523> the timeout's on positive effects
19:35:23 <elliott> Vorpal: yes, I just accepted the defaults
19:35:28 <Vorpal> ah I see
19:35:31 <ais523> elliott: the defaults are random each time
19:35:34 <Vorpal> elliott, did the score work if you look at it?
19:35:54 <elliott> how do you check scores without playing again?
19:36:03 <Vorpal> good question, I never did
19:36:09 <ais523> elliott: there's a scores option in the main menu
19:36:15 <elliott> ah, thanks
19:36:20 <elliott> yep
19:36:40 <ais523> eventually, I'll make the game return to the main menu after you die or win
19:36:46 <Vorpal> what distros use systemd btw?
19:36:47 <ais523> probably via self-exec()
19:36:47 <elliott> ais523: I think you should probably default to something else if games doesn't exist
19:36:53 <ais523> elliott: so do I, but I'm not sure what
19:37:01 <elliott> ais523: root? user running ./configure?
19:37:01 <ais523> root is a security risk
19:37:04 <Vorpal> ais523, self-exec()... Won't that mess with the sgid?
19:37:08 <ais523> user running configure might make sense
19:37:09 <elliott> (probably latter)
19:37:17 <elliott> Vorpal: fedora
19:37:19 <elliott> and i think suse
19:37:21 <elliott> so, nobody
19:37:30 <Vorpal> elliott, right, so two horrible distros
19:37:35 <ais523> Vorpal: I don't see why not; you can exec an sgid file even if you already have group perms
19:37:37 <elliott> well, linus uses fedora :)
19:37:43 <ais523> and even if you couldn't, you can just drop them first
19:38:11 <ais523> *you could just drop them first
19:38:16 <Vorpal> ais523, won't it mess up the real gid or the egid or whichever one point to the group that was before the sgid took place?
19:38:29 <elliott> incidentally, I think inst could be legitimately useful if it spit out a package rather than doing the installation immediately
19:38:35 <Vorpal> elliott, I thought he switched some time ago? Might misremember
19:38:40 <ais523> Vorpal: real gid, yes; I don't think that's used for anything, though
19:38:41 <elliott> it'd be like checkinstall, except not terrible
19:39:47 <elliott> have i noticed that monqy is here yet
19:39:49 <elliott> because hi monqy
19:39:57 <Vorpal> elliott, I think it is quite useful already. I tend to install stuff I install manually to ~/local/<optional category, only have "games" and "compilers" currently>/package-name/<optional version, if it is useful for the package in question>/
19:40:30 <elliott> well, it's useful :) but it doesn't handle the failure case much
19:40:31 <Vorpal> elliott, you did way above
19:40:41 <elliott> when it works, it works brilliantly
19:40:59 * pikhq_ tends to install things in ~/local/stow/packagename-version/
19:41:13 <Vorpal> pikhq_, what about tup + autoconf. I never saw a reply to my question about that
19:41:20 <pikhq_> Vorpal: What about it?
19:41:24 <elliott> stow: because I want _two_ package managers in my life
19:41:38 <Vorpal> pikhq_, how is it done. I'm no autoconf wizard, not do I feel like becoming one just for that,.
19:41:40 <Vorpal> s/,//
19:41:49 <elliott> Vorpal: hmm, now i'm wondering if the configuration management system could be a build system too :)
19:41:50 <pikhq_> elliott: I'm also currently using shell scripts to build. So, more like 1.
19:41:55 <elliott> there's dependencies, and constraint solving, and configuration...
19:41:57 <Vorpal> elliott, stow being?
19:42:06 <ais523> wow that was blindingly fast
19:42:07 <elliott> Vorpal: gnu stow
19:42:10 <ais523> I just sent around 100 emails in a few seconds
19:42:12 <pikhq_> Vorpal: It's actually really, really simple. You have autoconf replace variables in a Tup file of some sort.
19:42:13 <elliott> as referenced at * pikhq_ tends to install things in ~/local/stow/packagename-version/
19:42:26 <Vorpal> ais523, you started spamming?
19:42:37 <ais523> Vorpal: no, although I think the module I'm using was designed for spambots
19:42:41 <ais523> I'm sending personalised receipts
19:42:46 <pikhq_> elliott: If I had a better package manager for ~/local/, I'd use it. As is, GNU stow is (barely) sufficient for my uses.
19:42:47 <ais523> for submissions
19:42:49 <Vorpal> https://en.wikipedia.org/wiki/GNU_Stow <-- "this page has been deleted", fuck you
19:43:25 <elliott> Vorpal: the site describes it
19:43:31 <Vorpal> elliott, right
19:43:38 <elliott> Vorpal: it basically merges a bunch of DESTDIR installs into a single tree
19:43:41 <elliott> with links
19:43:56 <Vorpal> <pikhq_> Vorpal: It's actually really, really simple. You have autoconf replace variables in a Tup file of some sort. <-- oh okay
19:44:02 <pikhq_> (autoconf, FWIW, is actually *very* build-system agnostic. *All* it does is test things, storing the results in variables, and replacing those variables in a given list of files)
19:44:02 <Vorpal> pikhq_, what about any config.h or such?
19:44:16 <ais523> I wrote an autoconf script for jettyplay
19:44:26 <Vorpal> ais523, what is jettyplay?
19:44:27 <ais523> so that it would be easily picked up by autobuildy sytems
19:44:32 <ais523> Vorpal: GUI ttyrec player
19:44:34 <ais523> written in Java
19:44:34 <elliott> ais523: tarball link plz
19:44:37 <Vorpal> hm I see
19:44:47 <ais523> elliott: I don't think I have online tarballs of it
19:44:50 <ais523> just jar files
19:44:51 <elliott> darn
19:44:58 <ais523> it was basically just written for debhelper
19:45:02 <elliott> heh
19:45:14 <elliott> oh, i might as well ask -
19:45:26 <Vorpal> what is debhelper? Another one of their automated package construction tools?
19:45:29 <ais523> Vorpal: yes
19:45:34 <elliott> it's debian's main package construction tool
19:45:37 <elliott> i believe
19:45:41 <pikhq_> Vorpal: There's some command to tell autoconf to do the config.h substitution.
19:45:46 <ais523> elliott: I can nc you the tarball that got produced when I did the local equivalent of apt-get source
19:45:51 <ais523> if you can open a port inbound
19:45:59 <elliott> ais523: umm, maybe, but not this second
19:46:02 <ais523> fair enough
19:46:14 <Vorpal> elliott, idea for inst feature: git, svn, hg, darcs, bzr support. The handling of different types could probably be done with a dict in python, making it trivial to add new ones
19:46:21 <elliott> anyway - does anyone know of a unified command to access unarchivers? I really want to be able to just type a command, an archive name, and have it extract, accounting for tarbombs
19:46:27 <Vorpal> pikhq_, hm as long as it works with tup
19:46:39 <elliott> Vorpal: I know how to write extensible software :)
19:46:44 <pikhq_> Vorpal: Not as nicely as it *could*, but it does work.
19:47:05 <pikhq_> elliott: 7z is close, but not *quite* there.
19:47:12 <pikhq_> It doesn't handle tarbombs.
19:47:26 <Vorpal> elliott, I seem to remember such a tool in portage somewhere. And portage has its own one as a bash function somewhere to help unpack for ebuilds
19:47:32 <zzo38> You can use the l option of 7z to display the list
19:47:41 <ais523> you can handle tarbombs automatically by untarring in an empty directory, then removing one level of directory structure if necessary
19:47:48 <elliott> ais523: that's the idea
19:47:55 <pikhq_> zzo38: Not helpful if you want it to be automatic.
19:47:58 <elliott> I suppose I could just do tar -> unzip -> unrar
19:48:02 <zzo38> OK
19:48:05 <ais523> so you can do the tarbomb protection and unified unarchiver separately
19:48:05 <elliott> tar detects compression, after all
19:48:12 <Vorpal> elliott, pretty sure 7z handles zip and rar as well as tar.gz
19:48:13 <ais523> elliott: really?
19:48:21 <elliott> ais523: yep, "tar xf foo.tar.blah" works just fine
19:48:22 <ais523> I thought you had to give an appropriate option character
19:48:23 <pikhq_> ais523: GNU tar and Busybox tar do, at least.
19:48:24 <elliott> you're welcome
19:48:28 <ais523> good to know
19:48:31 <Vorpal> elliott, actually 7z might just unpack the .gz level of a tar.gz, not the tar level as well
19:48:38 <Vorpal> elliott, I know the windows 7-zip does that
19:48:39 <elliott> 7z is so windowsy :(
19:48:42 <ais523> I'll still add the z because my tab-complete likes it, though
19:48:46 <Vorpal> elliott, there is that yes
19:48:55 <zzo38> Yes, 7z does just unpack the .gz level
19:49:00 <zzo38> You have to unpack the .tar separately
19:49:06 <pikhq_> That's moronic.
19:49:08 <zzo38> I have the command-line 7z
19:49:09 <Vorpal> yes
19:49:21 <ais523> hmm, what about, say, if there's a .jar in a .zip
19:49:26 <ais523> you don't want to unpack two levels then
19:49:36 <zzo38> You have to unpack all levels separately.
19:49:36 <pikhq_> ais523: That itself is pretty moronic. :)
19:49:39 <Vorpal> indeed, but tar.gz is quite a special case
19:49:44 <ais523> I'd say, stop unpacking as soon as you see any files that aren't compressed
19:49:50 <ais523> even if there are compressed files in the directory too
19:49:51 <zzo38> And I like it unpacking all levels separately I prefer this way.
19:49:54 <elliott> what about .gz.tar?
19:49:55 <Vorpal> pikhq_, not really, if you want to distribute a collection of .jars as one file, how would you do that
19:50:02 <ais523> elliott: my suggestion handles .gz.tar
19:50:05 <zzo38> Although it could be an option to unpakc multiple levels maybe there should be that one.
19:50:08 <Vorpal> elliott, what about anything packed by Xilinx?
19:50:16 <elliott> ais523: are we talking about the same .gz.tar?
19:50:22 <ais523> Vorpal: from my experience with Xilinx, it's probably insane
19:50:27 <Vorpal> ais523, yes
19:50:28 <ais523> elliott: gzip each file individually, then tarball the result?
19:50:31 <elliott> ais523: yep
19:50:35 <ais523> you'd see that /all/ the files are compressed/archived
19:50:41 <ais523> so you'd decompressarchive them all one level
19:50:46 <ais523> if there's a mix, you don't decompressarchive any of them
19:51:03 <Vorpal> ais523, I don't quite remember, it was some time ago. But I think it was bz2.rar.zip.tar.gz basically
19:51:03 <ais523> it's basically a heuristic for detecting whether the files are meant to stay compressed or not
19:51:10 <ais523> Vorpal: that's impressive
19:51:15 <zzo38> I think it should unpack only one level by default, but have an option to select how many levels you want
19:51:18 <Vorpal> ais523, might misremember the .rar level, could have been another tar
19:51:21 <Vorpal> or something
19:51:28 <elliott> Vorpal: hmm, where should I put the source directories for arch packages I create myself?
19:51:34 <elliott> I just created a haskell-groom/ dir with cabal2arch
19:51:36 <ais523> elliott: /usr/src?
19:51:40 <elliott> but am not sure where to put it for permanent storage
19:51:43 <ais523> -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
19:51:44 <elliott> ais523: plausible
19:51:56 <Vorpal> elliott, hm? ~/src/system/foo/PKGBUILD is what I use
19:52:01 <Vorpal> elliott, but that is my system
19:52:06 <Vorpal> elliott, or what do you mean
19:52:10 <elliott> was just wondering if there was a standard location
19:52:18 <Vorpal> elliott, if you find one, tell me
19:52:25 <elliott> Vorpal: probably somewhere in ABS or something :P
19:52:34 * elliott considers going back to his his hierarchy-free home directory system
19:52:35 <Vorpal> elliott, doubtful, abs is updated by rsync
19:52:39 <ais523> jettyplay-0.1~alpha1/src/jettyplay/InputStreamableFileContentsWrapper.java
19:52:48 <ais523> ah, the joys of Java
19:52:58 <Vorpal> ais523, what a horribly long class name
19:53:09 <ais523> my homedir uses a reasonably simple and consistent filing system
19:53:09 <ais523> just to help me find things quickly
19:53:12 <ais523> it's about "what will ais523 remember" more than anything else
19:53:25 <Vorpal> yeah I do the same, modulo person who is to remember
19:53:29 <ais523> Vorpal: it's a wrapper around FileContents so that it implements InputStreamable
19:53:46 <ais523> I'm not entirely sure that it could be easily shortened and still describe what it does that accurately
19:53:46 <Vorpal> except I end up with lot of temporary crap in ~ that I forget to remove
19:53:59 <elliott> Vorpal: also, what AUR helper do you use, if any
19:54:01 <Vorpal> like whatever.mp4 from youtube-dl and so on
19:54:13 <elliott> <Vorpal> except I end up with lot of temporary crap in ~ that I forget to remove
19:54:17 <elliott> this is what my hierarchy-free system solved
19:54:22 <zzo38> If I make the Haskell library to access DVI printing file, what would it be called and what namespace and so on?
19:54:22 <Vorpal> heh?
19:54:32 <ais523> well, I accidentally deleted all the files in ~ a while ago
19:54:34 <Vorpal> elliott, yaourt. I know there are more modern ones. But don't fix what isn't broken.
19:54:34 <ais523> but didn't lose much
19:54:39 <elliott> yaourt is so broken :P
19:54:46 <ais523> (I didn't delete any of the /directories/; it was a non-recursive rm * in ~)
19:54:54 <Vorpal> elliott, WFM. YMMV
19:55:10 <Vorpal> elliott, anyway I use grub 1 because I don't fix what isn't broken
19:55:19 <Vorpal> besides on my setup it would be risky to switch
19:55:19 <elliott> --arch user
19:55:28 <ais523> so, conclusions: elliott is trying out Arch, is annoyed at its package management system
19:55:31 <Vorpal> both my laptop and my desktop use somewhat complicated grub setups
19:55:37 <Vorpal> my laptop because dm-crypt
19:55:41 <Vorpal> my desktop because mdraid
19:55:43 <elliott> ais523: more than trying
19:55:48 <ais523> settled on?
19:55:53 <elliott> Vorpal: it looked like: "special types" at the top level (ok, this is a kind of hieracrhy, but a tolerable one; lowercase is fine too): ~/Code, ~/Music, etc.; but then: ~/Downloads, for /anything/ that comes from an external source; this has to be wiped every two days or so for the system to work; and finally, the most important place, ~/Keep/YYYY-MM
19:56:09 <Vorpal> elliott, heh
19:56:11 <elliott> you move things from Downloads to the appropriate Keep so that they don't get mercilessly wiped out
19:56:18 <elliott> it's pretty good at forcing you to decide what to do with a file
19:56:29 <ais523> elliott: I keep both Downloads and Documents relatively clean
19:56:30 <elliott> and no files other than config and the like go in ~/
19:56:42 <ais523> I can't remember the difference between them offhand, but they're both small enough that I can typically remember which a file is in
19:56:43 <Vorpal> elliott, I have ~/music ~/videos and so on. Every so often I clean out ~ and move stuff I want to keep but don't know where it should go into ~/other
19:56:54 <Vorpal> ~/other is a mess
19:57:03 <elliott> hmm, is there a way to get yaourt to use the PKGBUILD in a current directory rather than looking at aur... :)
19:57:04 <ais523> I create a new top-level directory whenever I have something that can't reasonably be classified into the existing ones
19:57:10 <elliott> Vorpal: you should try ~/keep :P
19:57:13 <elliott> I can assert it's THE BEST.
19:57:15 <ais523> if something ends up important enough, it gets a top-level directory of its own
19:57:24 <Vorpal> <elliott> hmm, is there a way to get yaourt to use the PKGBUILD in a current directory rather than looking at aur... :) <-- no need, the command to build directly is trivial
19:57:28 <Vorpal> just makepkg -c
19:57:32 <elliott> Vorpal: yes, but I need to install the deps
19:57:38 <Vorpal> elliott, ah
19:57:39 <ais523> elliott: do you download to /tmp by default? because I do, and it saves a lot of trouble about download clutter
19:57:41 <elliott> Vorpal: if I do it explicitly, it'll count as an explicit install
19:57:54 <elliott> I'd rather keep the explicit install list only be things I actually wanted to install as a top-level goal
19:57:59 <Vorpal> elliott, then sudo pacman -U foo.whatever.is.the.current.compression.format
19:58:00 <elliott> hmm... maybe makepkg -s will do it
19:58:08 <ais523> in fact, even more commonly, if I want to open a file that's online, I copy-paste the URL into the viewing application
19:58:10 <Vorpal> elliott, --asdeps?
19:58:11 <elliott> nope, it's an AUR dependency
19:58:19 <Vorpal> hm
19:58:19 <elliott> Vorpal: oh, that exists?
19:58:19 <monqy> someone sad my name while i was gone (i was gone)
19:58:20 <elliott> thanks
19:58:25 <Vorpal> elliott, for pacman, not sure for yaourt
19:58:26 <monqy> (((bacck now)))))
19:58:34 <monqy> )hi(
19:58:35 <Vorpal> elliott, might be asdep too, check exact spelling
19:58:52 <elliott> hi monqy
19:59:06 <Vorpal> elliott, upload any generally useful PKGBUILD you create to AUR.
19:59:09 <elliott> monqy: yaourt -S noidentd-git... do you DARE.............
19:59:13 <elliott> Vorpal: ALREADY DONE
19:59:23 <elliott> Vorpal: but this one is just an auto-generated newer version of a haskell lib
19:59:28 <elliott> 0 creative input from me at all
19:59:29 <Vorpal> elliott, I will update the ick one tomorrow unless something unexpected happens
19:59:31 <elliott> I can't replace the AUR evrsion
19:59:36 <elliott> s/ev/ve/
19:59:44 <Vorpal> elliott, flag the existing one as outdated
19:59:51 <elliott> planning to
20:00:08 <elliott> does that notify the maintainers?
20:00:13 <elliott> not sure how that works, since it's maintained by the arch-haskell group
20:00:16 <monqy> im bad at dareing...
20:00:18 <Vorpal> elliott, can be done for normal packages from the front page btw, search for the package and mark it
20:00:27 <Vorpal> elliott, and it notifies by email iirc
20:00:41 <elliott> monqy: do you know how whenever you connect to freenode it waits for a few seconds before giving the motd.......
20:00:45 <Vorpal> elliott, and no idea if it is maintained by a group
20:00:53 <elliott> monqy: do you know how that evil ~ is infesting the start of your username in whois.........
20:00:55 <Vorpal> elliott, I would assume it does, otherwise what use would it be
20:00:56 <monqy> oh yeah and then it puts a squiggle on my username yeah that
20:01:06 <Vorpal> elliott, I wasn't even aware a group could maintain an AUR package
20:01:10 <elliott> monqy: noidentd.... solves this...... with elliott hird quality code
20:01:13 <elliott> Vorpal: it's a separate team account
20:01:17 <monqy> teMPTING
20:01:21 <Vorpal> elliott, hm. No idea how that works
20:01:26 <elliott> monqy: only one ... config option...
20:01:34 <elliott> rc.d....... support...........
20:01:36 <monqy> but before i try it: i amg oing to get aurget (unlesss it's: bad)
20:01:40 <Vorpal> elliott, identd thingy won't work because of NAT
20:01:43 <Vorpal> for me at least
20:01:49 <elliott> monqy: i dunno it... felt kinda unreliable to me
20:01:51 <elliott> that might be my bad impressions
20:01:52 <monqy> oh
20:01:56 <elliott> i have trust issues with software
20:01:57 <monqy> is yaourt better
20:01:57 <elliott> by all means try it
20:02:03 <elliott> it was certainly sleek-feeling
20:02:08 <monqy> because i already have yaourt so
20:02:10 <elliott> Vorpal: i am sure monqy has the power... of nat..................... or something
20:03:17 <elliott> the problem with these aur helpers is that they're so obviously thin wrappers over other tools
20:03:22 <elliott> they feel so shoddy :p
20:03:31 <elliott> or not so thin wrappers in the case of yaourt
20:03:36 <monqy> thick wrappers
20:05:07 <nooga> uh
20:05:55 <Vorpal> elliott, yaourt works quite nicely I found. Never really had any problems with it, except when pacman ABI broke and I had to reinstall yaourt by hand
20:08:08 <elliott> monqy: have you...enjoyed....the magiceke.,
20:08:42 <elliott> Vorpal: I hate you, now I feel like having a go at writing that configuration manager. :/
20:08:48 <CakeProphet> wow
20:09:00 <CakeProphet> 12 hours in, and my latest and greatest markov model generator
20:09:00 <Vorpal> elliott, err, what did I say?
20:09:02 <monqy> i've been letting yaourt do its thing over there becase ut's slow and forgot about it
20:09:05 <monqy> remembering now:
20:09:06 <CakeProphet> has not even finished the first 4 datasets....
20:09:13 <elliott> Vorpal: YOU ASKED ME QUESTIONS
20:09:16 <Vorpal> elliott, oh okay
20:09:18 <elliott> CakeProphet: this is because perl sucks
20:09:38 <CakeProphet> elliott: I'm not really sure what's so different about this one to make it this much slower...
20:09:46 <CakeProphet> the regex is even precompiled this time. :P
20:10:10 <elliott> monqy: (the config file... is /etc/conf.d/noidentd...)
20:10:18 <elliott> (the code... is https://github.com/ehird/noidentd/blob/master/noidentd.c...)
20:10:34 <CakeProphet> ehird: noitdentd blog master
20:10:45 <elliott> thankey ou
20:11:25 <monqy> instaled it (loeking at config nwo)
20:11:39 <CakeProphet> I wonder if I could write a C program to do this correctly
20:11:43 <CakeProphet> before this script finishes
20:11:46 <CakeProphet> and then that program
20:11:48 <monqy> so i guess i put monqy in there eh
20:11:50 <CakeProphet> finishes before this script finishes.
20:12:20 <monqy> do i do anything else or just let it do its magic now
20:12:25 <monqy> next time i connect, I mean
20:12:26 <elliott> monqy: well you are "swell"
20:12:31 <monqy> oh swell
20:12:34 <elliott> so you would put swell in there toget the same thing now
20:12:35 <elliott> but monqy
20:12:36 <elliott> is fine too
20:12:39 <elliott> and you would then be monqy
20:12:41 <elliott> pick your favourite...
20:12:41 <monqy> hm
20:12:43 <Vorpal> CakeProphet, what sort of regex? Any backrefs?
20:12:51 <monqy> i'll be swell
20:12:53 <monqy> or i could change it
20:12:56 <monqy> i used to be chap
20:13:04 <elliott> oh i thought swell was your name or something
20:13:04 <monqy> there was another one i wanted to try but i forget it
20:13:13 <elliott> ok this fan is worrying m
20:13:13 <Vorpal> CakeProphet, http://swtch.com/~rsc/regexp/regexp1.html
20:13:14 <elliott> e
20:13:16 <monqy> swell is a good name but not mine
20:13:17 <elliott> it starts like full blast
20:13:21 <elliott> then half a second later cuts immediately
20:13:24 <elliott> linux what are you doing
20:13:44 <elliott> oh, ghc is hogging cpu
20:13:53 <CakeProphet> Vorpal: no it's just a character class followed by a +
20:13:54 <elliott> Vorpal: he's using perl so he can hardly just switch regexp engines
20:14:15 <CakeProphet> Vorpal: should be linear time, with single words (thus very small n's)
20:14:16 <Vorpal> elliott, you could implement a different regexp engine as a perl package!
20:14:22 <Vorpal> elliott, thought that isn't what I meant.
20:14:26 <elliott> monqy: anyway once you save that you need to start it
20:14:34 <Vorpal> elliott, what I meant with that link was: "maybe this would explain your issue"
20:14:36 <elliott> monqy: add @noidentd to your DAEMONS array is the best idea
20:14:44 <elliott> and "sudo rc.d start noidentd" until reboot........
20:14:46 <elliott> that starts it
20:14:51 <elliott> (it uses no resources ever)
20:14:56 <elliott> (constant memory and time always)
20:15:00 <CakeProphet> well the main difference is that I switched from
20:15:14 <CakeProphet> $word =~ $not_this_character_class
20:15:15 <CakeProphet> to
20:15:19 <monqy> startd
20:15:29 <CakeProphet> $word =~ $this_character_class_one_or_more_times
20:15:48 <elliott> monqy: and then.........
20:15:51 <CakeProphet> which I would think should be exactly the same or maybe a bit faster?
20:15:52 <elliott> monqy: reconeocneocetecte
20:15:55 <Vorpal> CakeProphet, why even use perl for this...
20:15:55 <monqy> righte..
20:15:58 <elliott> notice faster connect... happier life
20:16:01 <elliott> happier world
20:16:03 <elliott> happier oisdjf
20:16:06 <CakeProphet> Vorpal: not sure, it's what I started with. :P
20:16:12 -!- monqy has quit (Quit: hello).
20:16:16 <elliott> hello monqy
20:16:27 -!- monqy has joined.
20:16:31 <elliott> bye monqy oh
20:16:33 <elliott> it didn't work
20:16:35 <monqy> crys
20:16:37 <elliott> monqy: do you have a fierierweall
20:16:45 <monqy> perhaps
20:16:53 <elliott> monqy: can you... forward port 113.......
20:16:53 <monqy> probably
20:17:05 <monqy> i;ll try
20:18:33 <CakeProphet> maybe I should rewrite this part in Haskell or something, which would force me to not use a horrible format.
20:18:38 <CakeProphet> for storing the data.
20:18:47 <elliott> CakeProphet: haskell n-gram (c) me
20:18:59 <elliott> although mine is about ~999999% more advanced so GO AHEAD I GUESS
20:19:10 <monqy> oh no i actually can't because someone did password changeing and did not tell me
20:19:25 <elliott> monqy: that person is...mean tell them of,e
20:19:35 <elliott> tell them, stop change paswioerd
20:19:41 <CakeProphet> elliott: it is?
20:19:53 <monqy> the best part is he probably forgot the new password too
20:19:55 <monqy> so we have to reset it
20:19:56 <monqy> again
20:19:59 <monqy> crys in hole
20:20:04 <CakeProphet> I thought yours wasn't quite so advanced, or is this a new thing?
20:20:05 <Vorpal> monqy, ask him to not change the password?
20:20:11 <Vorpal> monqy, or change it before he does
20:20:46 <elliott> monqy: im sit in hole
20:20:50 <CakeProphet> oh wait I bet I know why this is going slower.
20:20:51 <elliott> creying in symphony
20:20:55 <CakeProphet> there's a reverse lookbehind.
20:21:02 <Vorpal> CakeProphet, why did you do that
20:21:10 <Vorpal> CakeProphet, of course that is going to be slow
20:21:14 <elliott> cake "clever" prophet
20:21:23 <CakeProphet> cake "just woke up" prophet :P
20:21:33 <elliott> monqy: you might want to... remove from daemons array... except it literally takes something like fifty bytes of ram so maybe you don't care
20:21:38 <Vorpal> CakeProphet, you didn't code it when you just woke up
20:21:39 <Vorpal> so duh
20:21:48 <elliott> it tries very hard to use no resources :P
20:21:52 <CakeProphet> uh, well, in English I want to avoid 's at the end of words
20:22:01 <CakeProphet> Vorpal: I wasn't thinking about efficiency at the time. :P
20:22:05 <Vorpal> elliott, 50 bytes? Including libc?
20:22:11 <elliott> Vorpal: that's shared
20:22:13 <CakeProphet> Vorpal: ISN'T PREMATURE OPTIMIZATION BAD OR SOMETHING?
20:22:20 <CakeProphet> DONALD KUHNUTH?
20:22:30 <elliott> valgrind said like 30 bytes still reachable on exit, anyway :P
20:22:34 <elliott> so add like twenty on that because
20:22:37 <Vorpal> elliott, right
20:22:43 <elliott> well it's actually more than that, it's at least...
20:22:53 <Vorpal> so say, a few kB
20:23:00 <elliott> ...at least 240 because of the buffers
20:23:08 <elliott> plus ten times struct pollfd
20:23:19 <elliott> plus like six pointer-sized values :P
20:23:25 <elliott> but yeah, barely anything
20:23:26 <Vorpal> elliott, plus some hidden buffers in libc.
20:23:27 <CakeProphet> I'm not really sure how to restrict words that end with 's without making it a negative lookbehind
20:23:31 <CakeProphet> but it's probably possible.
20:23:32 <elliott> Vorpal: uh, doubt it
20:23:36 <Vorpal> elliott, hm okay
20:23:38 <elliott> Vorpal: for stdio i guess
20:23:41 <Vorpal> yep
20:23:46 <elliott> Vorpal: but i'm using berkeley sockets/poll/recv/send
20:23:48 <elliott> so not for the sockets
20:23:57 <Vorpal> elliott, but stdin/stdout will be open and initialised
20:24:01 <Vorpal> and have buffers
20:24:07 <CakeProphet> well, of course it's possible, but it has to fit into my awesome command line option to pass arbitrary regex. :P
20:24:07 <Vorpal> even if you don't use them
20:24:12 <elliott> maybe i should close stdio, i don't use them after startup
20:24:20 <elliott> i could rewrite that stuff to use write() :)
20:24:31 <Vorpal> elliott, maybe you should use newlib
20:24:42 <elliott> musl :p
20:25:05 <Vorpal> elliott, bare metal. as a TSR hidden from linux. Somehow
20:25:19 <elliott> what's that above the kernel debugging thing
20:25:20 <elliott> SMI?
20:25:22 <CakeProphet> guys what would happen if GNU merged with Donald Knuth
20:25:22 <Vorpal> (note: above statement made no sense)
20:25:27 <elliott> or below the kernel i guess
20:25:32 <CakeProphet> and crerates the unstopeaable DONALD GNUTH
20:25:33 <elliott> yeah I think SMM
20:25:35 <Vorpal> elliott, hm... yeah System Management Mode
20:27:17 <monqy> CakeProphet: let 's do its thing
20:27:21 <monqy> CakeProphet: 's is great
20:27:36 <monqy> `macro
20:27:41 <HackEgo> UH
20:27:55 <monqy> `macro
20:27:59 <HackEgo> CESIUM'S
20:28:02 <monqy> yes good
20:28:29 <elliott> uh cesium's
20:30:09 -!- oerjan has joined.
20:30:26 <Phantom_Hoover> So what does macro do?
20:30:28 <Phantom_Hoover> `macro
20:30:29 <Phantom_Hoover> `macro
20:30:30 <Phantom_Hoover> `macro
20:30:36 <HackEgo> Mmacro: <stdout>: commitBuffer: invalid argument (Invalid or incomplete multibyte or wide character)
20:30:36 <HackEgo> JFK'S
20:30:43 <Deewiant> `wacro
20:30:44 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: wacro: not found
20:30:45 <HackEgo> UPTON'S
20:31:22 <elliott> Mmacro: <stdout>: commitBuffer: invalid argument (Invalid or incomplete multibyte or wide character)
20:31:23 <elliott> good word
20:31:34 <elliott> HEY OERJAN CAN I INTEREST YOU IN- dammit you already have an identd.
20:31:43 <oerjan> fancy that.
20:31:54 <elliott> oerjan that is immoral.
20:32:02 <oerjan> wat
20:32:08 <elliott> immoral.
20:32:15 <elliott> Patriots use noidentd.
20:33:03 <oerjan> and a bouncer and a cloak, i presume
20:33:12 <oerjan> *MWAHAHAHA*
20:33:51 <elliott> NO BOUNCER HERE
20:33:54 <elliott> https://github.com/ehird/noidentd/blob/master/noidentd.c
20:33:55 <elliott> NOIDENTD
20:33:58 <elliott> SOFTWARE OF PATRIOTS
20:34:13 <Vorpal> oerjan, was that a dagger and cloak pun?
20:35:26 -!- azaq23 has quit (Quit: Leaving.).
20:37:02 <olsner> derpa derpa
20:37:05 <oerjan> ...no.
20:37:37 <Vorpal> oerjan, IT COULD HAVE BEEN!
20:37:38 <copumpkin> olsner: I have a lbirary called derpa
20:37:43 <Vorpal> DARPA
20:37:49 <copumpkin> https://github.com/copumpkin/derpa
20:38:05 <Vorpal> copumpkin, no that is a library
20:38:09 <elliott> is it a library if nobody uses it OH SNAEPEPPEPEPE
20:38:11 <copumpkin> derp
20:38:13 <elliott> SPNEAPNEPNWEPFWEFPEPF
20:38:13 <Vorpal> not a lbirary as you stated above
20:38:14 <elliott> EPRJOETJG
20:38:14 <elliott> H
20:38:22 <olsner> copumpkin: that is awesome
20:38:26 <elliott> the joke is nobody uses agda
20:38:26 <monqy> eprjoetjgh
20:38:29 <copumpkin> thank you!
20:38:44 <oerjan> <CakeProphet> guys what would happen if GNU merged with Donald Knuth
20:38:50 <elliott> dfgd
20:38:50 <oerjan> gnothing good, i predict
20:38:53 <olsner> copumpkin: or did you just upload it now because I mentioned it?
20:39:04 <copumpkin> olsner: nope, check the dates on it
20:39:09 * oerjan declares the logs too long to read today
20:39:46 <olsner> copumpkin: I would need, like, proof that it was called derpa before today
20:39:53 <copumpkin> olsner: lol
20:40:06 <Vorpal> elliott, I just realised why DDG will never be a success.
20:40:25 <olsner> proof seems to be slightly lacking though, afaik you just uploaded this half a minute ago
20:40:38 <elliott> https://github.com/copumpkin
20:40:40 <Vorpal> elliott, try saying it as a verb. Very awkward: "ddging" or "duckduckgoing"?
20:41:19 <elliott> copumpkin updated gist: 1286093 October 14, 2011
20:41:19 <elliott> There is no largest prime
20:41:20 <elliott> cutting-edge mathematical research
20:41:29 <copumpkin> elliott: STFU
20:41:31 <copumpkin> that was difficult :P
20:41:36 <elliott> the joke is that nobody uses Agda :D
20:41:43 <copumpkin> FUCK YOU
20:41:44 <Vorpal> * oerjan declares the logs too long to read today <-- but... but... there is AWESOME stuff in it!
20:42:05 <monqy> nobody uses agda?
20:42:31 <Vorpal> <elliott> There is no largest prime <-- where did copumpkin prove that?
20:42:44 <copumpkin> elliott's been stalking me again
20:42:47 <elliott> https://gist.github.com/1286093
20:42:47 <Vorpal> I want to see this front edge of the science of mathematics
20:42:58 <elliott> copumpkin: no, olsner mentioned derpa's upload time :P
20:43:05 <elliott> I PROVED YOU INNOCENT
20:43:12 <elliott> and then went in search for agda-mocking material ofc
20:43:18 <copumpkin> :'(
20:43:27 <Vorpal> copumpkin, elliott, come on, that proof is huge
20:43:35 <olsner> elliott: is that gist based on derpa?
20:43:39 <elliott> yeah copumpkin is stupid go do some booklearning from euclid
20:43:42 <copumpkin> Vorpal: it's euclid's proof
20:43:55 <copumpkin> it's just that the usual statement of euclid's proof doesn't go into the details
20:44:02 <copumpkin> agda forces us to
20:44:06 <copumpkin> which is both good and bad, I guess
20:44:09 <olsner> (afaict it isn't)
20:44:19 <copumpkin> it isn't based on derpa, no
20:44:21 <Vorpal> copumpkin, well of course, it assumes a human is reading it and can think
20:44:51 <elliott> burrrrrrn
20:44:54 <monqy> maybe i should learn agda
20:44:55 <copumpkin> Vorpal: well, sure, but it invokes a limited form of the fundamental theorem of arithmetic
20:45:00 <copumpkin> that most people don't mention
20:45:02 <elliott> monqy: then you will become nobody
20:45:08 <monqy> an exciting prospect
20:45:12 <copumpkin> so it's interesting to see what things it actually needs
20:45:47 <copumpkin> it's like how most presentations of category theory completely gloss over what equality/equivalence means
20:46:13 <Vorpal> copumpkin, because it is in the standard library of maths basically.
20:46:27 <Vorpal> there is no /need/ for it when talking to a human
20:46:34 <copumpkin> Vorpal: you still need to call standard library functions ;)
20:46:42 <copumpkin> you can't just leave them out and hope the compiler figures them out
20:46:46 <Vorpal> copumpkin, yes, we do that by saying "="
20:46:49 <Vorpal> that is how we call it
20:46:55 <elliott> copumpkin: why are you wasting your time
20:46:55 <copumpkin> huh?
20:47:11 <copumpkin> I mean invoke, not name
20:47:12 <Vorpal> copumpkin, or rather, writing "=" and saying "equals"
20:47:45 <Vorpal> copumpkin, that is how we invoke them. Example. "5 = 4+1", there, I invoked the standard library of arithmetics.
20:47:55 <elliott> Vorpal: this is really stupid
20:47:56 <copumpkin> yes, you invoked addition by writing addition
20:48:01 <Vorpal> elliott, yes.
20:48:04 <copumpkin> you wrote the symbol +
20:48:05 <monqy> congratulationse
20:48:09 <Vorpal> copumpkin, exactly what I was saying. :P
20:48:16 <copumpkin> where does euclid's proof mention the fundamental theorem of math?
20:48:16 <elliott> = = + --vorpal
20:48:18 <oerjan> <Vorpal> elliott, try saying it as a verb. Very awkward: "ddging" or "duckduckgoing"? <-- just call it "quacking" and a day.
20:48:19 <monqy> where is this going. why is this going.
20:48:19 <copumpkin> arithmetic
20:48:25 <copumpkin> it doesn't
20:48:26 <Vorpal> oerjan, awesome
20:48:27 <elliott> `addquote <monqy> where is this going. why is this going.
20:48:29 <HackEgo> 698) <monqy> where is this going. why is this going.
20:48:32 * shachaf likes "the fundamental theorem of math"
20:48:33 <copumpkin> people are implicitly invoking it because it doesn't work otherwise
20:48:39 <copumpkin> that'd be like me writing x = 4 7
20:48:46 <copumpkin> and hoping the compiler can figure out that a + belongs there
20:48:47 <monqy> 698 quotes? wow
20:48:49 <shachaf> I don't know if there was any context, but I hope not.
20:48:54 <monqy> `quote 697
20:48:57 <HackEgo> 697) <elliott> Magnetic butterfly is slower than cat and restarting if you make a mistake is slower than vi is slower than mind-reading.
20:49:27 <Vorpal> copumpkin, it assumes that it is defined in the context of the theory used for the proof. You start the proof with the meaning of the basics already available normally. Of course agda needs more
20:49:32 <elliott> oerjan: hey which one in the logs was which :P
20:51:19 <copumpkin> Vorpal: I'm saying it wasn't obvious to me that that the proof needed it, until I sat down and worked through the details of the proof
20:51:29 <copumpkin> leaving things implicit increases perceived clarity
20:51:30 <Vorpal> copumpkin, ah okay
20:51:32 <copumpkin> because it's a one-line proof
20:51:43 <oerjan> elliott: what?
20:51:45 <copumpkin> but decreases actual clarity, because you don't know what's actually being used behind the scenes
20:51:56 <copumpkin> of course, agda takes it to the other extreme
20:51:57 <elliott> 01:12:38: <oerjan> goDown x <|> goRight x <|> (goUp >>= goNext)
20:51:57 <elliott> 01:16:23: <oerjan> (goRight x >>= goBottom) <|> goUp x
20:52:03 <elliott> oerjan: which one of those does parents first :P
20:52:22 <oerjan> the former
20:52:28 <elliott> thx
20:53:09 -!- ive has quit (Ping timeout: 258 seconds).
20:53:43 <oerjan> copumpkin: i presume it is used when you conclude that there is a prime dividing p1...pn+1
20:53:51 <copumpkin> yep
20:54:35 <oerjan> that's a pretty trivial induction compared to the full theorem though, i think
20:55:56 <oerjan> *full fundamental theorem
20:56:46 <oerjan> also it's the fundamental theorem of arithmetic, i think, not math. there is also a different fundamental theorem of algebra.
20:57:11 <oerjan> (which says that every non-constant complex polynomial has a root)
20:57:34 <oerjan> and there may be others in other fields
20:58:03 <oerjan> also, one of calculus
20:58:35 <elliott> `quote fundamental
20:58:37 <HackEgo> 567) <Phantom_Hoover> I didn't realise nickel apparently can't be shaped into a screw because of some fundamental feature of dwarven physics. \ 663) <oklopol> but i guess (x + y)^n = (x^2 + 2xy + y^2)(x^2 + 2xy + y^2)...(x^2 + 2xy + y^2) if n is even, (x + y)^n = (x^2 + 2xy + y^2)(x^2 + 2xy + y^2)...(x^2 + 2xy + y^2)(x + y)
20:58:44 <elliott> `quote 663
20:58:46 <HackEgo> 663) <oklopol> but i guess (x + y)^n = (x^2 + 2xy + y^2)(x^2 + 2xy + y^2)...(x^2 + 2xy + y^2) if n is even, (x + y)^n = (x^2 + 2xy + y^2)(x^2 + 2xy + y^2)...(x^2 + 2xy + y^2)(x + y) is as good a fundamental theorem as any
20:58:51 <oerjan> (that's the one which says essentially that differentiation and integration are opposites)
20:59:31 <oerjan> http://en.wikipedia.org/wiki/Fundamental_theorem has quite a list :P
21:00:08 <oerjan> "fundamental theorem of poker" :P
21:01:49 -!- GreaseMonkey has joined.
21:03:23 <elliott> oerjan: sigh, infinite loop :(
21:04:38 <oerjan> what, with one of my suggested goNexts?
21:05:04 <oerjan> the one with parents first is likely too, if you can change a node to have a child which itself matches the test
21:05:13 <elliott> goNext x = goDown x <|> goRight x <|> (goUp x >>= goNext)
21:05:13 <elliott> where goDown (Node tag (x:xs) :> up) = Just (x :> Branch tag [] xs up)
21:05:13 <elliott> goDown _ = Nothing
21:05:13 <elliott> test xx = case goNext xx' of Nothing -> xx'; Just go -> test go
21:05:13 <elliott> where xx' = test' xx
21:05:14 <elliott> test' (Text s :> up) = Text "bork bork bork" :> up
21:05:16 <elliott> test' x = x
21:05:18 <elliott> test infinite loops here on my document
21:05:35 <elliott> *Main Text.Groom> test (toCtx (Node (Tag "abc" []) []))
21:05:35 <elliott> Node (Tag "abc" []) [] :> Top
21:05:35 <elliott> *Main Text.Groom> test (toCtx (Node (Tag "abc" []) [Text "x"]))
21:05:35 <elliott> [hang]
21:05:37 <oerjan> eek. hm.
21:06:51 <olsner> elliott: bug!
21:07:04 <elliott> oerjan:
21:07:06 <elliott> *Main Text.Groom> goNext (Node (Tag "abc" []) [Text "x"] :> Top)
21:07:06 <elliott> Just (Text "x" :> Branch (Tag "abc" []) [] [] Top)
21:07:06 <elliott> *Main Text.Groom> goNext (Node (Tag "abc" []) [Text "x"] :> Top) >>= goNext
21:07:06 <elliott> Just (Text "x" :> Branch (Tag "abc" []) [] [] Top)
21:07:08 <elliott> bug :)
21:07:20 <oerjan> elliott: will you stop bloody spamming while i'm trying to read :P
21:09:54 <oerjan> elliott: oh i see
21:10:05 <oerjan> yes goNext is wrong when going up
21:11:05 <elliott> hm
21:11:22 <oerjan> it needs a goRight, which may itself fail
21:11:42 <elliott> hm
21:11:52 <elliott> not as simple as (go Up x >>= goRight >>= goNext)? :)
21:11:56 <oerjan> no.
21:12:00 <elliott> didn't think so :P
21:12:10 <elliott> oerjan: if it helps I already have
21:12:15 <elliott> goLeft = moveLeft >=> selectLeft
21:12:15 <elliott> goRight = moveRight >=> selectRight
21:12:18 <elliott> where
21:12:22 <elliott> selectLeft :: Cursor -> Maybe TreeCtx
21:12:22 <elliott> moveLeft :: TreeCtx -> Maybe Cursor
21:12:34 <elliott> selectLeft (Branch name (l:ls) rs up) = Just (l :> Branch name ls rs up)
21:12:34 <elliott> moveLeft (r :> Branch name ls rs up) = Just (Branch name ls (r:rs) up)
21:12:39 <elliott> and analoguously for right
21:12:53 <oerjan> we need climbRight x = goRight x <|> (goUp x >>= climbRight)
21:12:57 <elliott> ok
21:13:00 <elliott> makes sense
21:13:04 <olsner> hmm, random thought, we have no danes here do we?
21:13:41 <olsner> (well obviously not, everyone here is finnish, norwegian, swedish or from hexham)
21:14:01 <oerjan> and then goNext x = goDown x <|> climbRight, maybe
21:14:27 <oerjan> *and then goNext x = goDown x <|> climbRight x, maybe
21:14:40 <Phantom_Hoover> olsner, excuse me there is only one person from Hexham here.
21:14:43 <elliott> *Main Text.Groom> goNext (Node (Tag "abc" []) [Text "x"] :> Top)
21:14:43 <elliott> Just (Text "x" :> Branch (Tag "abc" []) [] [] Top)
21:14:43 <elliott> *Main Text.Groom> goNext (Node (Tag "abc" []) [Text "x"] :> Top) >>= goNext
21:14:43 <elliott> Nothing
21:14:44 <elliott> looks good
21:14:47 <elliott> time to try it on the larger tre
21:14:48 <elliott> tree
21:14:59 <olsner> Phantom_Hoover: all of you are the same person!?
21:15:02 <elliott> yay
21:15:04 <elliott> oerjan: works :)
21:15:34 <oerjan> i assume climbRight will fail if it reaches the top, which is probably what you want
21:15:50 <elliott> oerjan: that would correspond to reaching the end of the tree
21:15:55 <oerjan> yeah
21:17:23 <elliott> oerjan: what I don't like is how the goNext has to be done outside of the "transformation" operation so that the end Nothing case can be handled...
21:17:35 <elliott> it feels like the kind of thing you should be able to abstract into a loop only involving the one function
21:18:46 <elliott> oerjan: maybe forcing goNext is the right thing though :P
21:20:38 -!- pumpkin has joined.
21:22:08 <oerjan> <olsner> hmm, random thought, we have no danes here do we? <-- i thought we had one recently, but i may be confused as i don't quite recall who it is
21:22:39 <olsner> could've been a swede from scania?
21:22:59 <oerjan> O_o
21:23:01 <elliott> oerjan: hm I wonder how you remove nodes this way
21:23:05 <elliott> I'm trying to remove all text nodes but
21:23:06 -!- copumpkin has quit (Ping timeout: 244 seconds).
21:23:12 <elliott> test' (Text s :> up) = select{Left,Right} up
21:23:13 <elliott> both fail
21:23:20 <elliott> (i.e. yield Nothing as soon as Text is hit)
21:23:45 <oerjan> elliott: oh right a removal tends to leave you on a Cursor in spirit...
21:23:59 <oerjan> which might not have anything either before or after it, or even both
21:24:00 <elliott> oerjan: oh wait, what we need is goNext for /Cursors/, i think
21:24:09 <oerjan> yeah
21:24:26 <elliott> it seems like most operations on TreeCtxs involve stuffing them back into a Cursor then performing an operation on the Cursor which unpacks it into a context again :)
21:24:31 <elliott> ok, so moveNext :/
21:24:36 <elliott> this is a tricky one
21:24:38 <oerjan> elliott: well actually that's just your moveRight isn't it
21:24:48 <elliott> I don't think so
21:24:49 <oerjan> or hm
21:24:52 <elliott> moveRight :: TreeCtx -> Maybe Cursor
21:24:52 <elliott> moveRight (l :> Branch name ls rs up) = Just (Branch name (l:ls) rs up)
21:24:52 <elliott> moveRight _ = Nothing
21:24:54 <elliott> look ma, no ascension
21:25:16 <elliott> ok so what's needed is
21:25:19 <elliott> Cursor -> Maybe TreeCtx
21:25:23 <elliott> so it's actually selectNext
21:25:26 <oerjan> elliott: you want an edit to always end on a Cursor, which may be just next to what was handled or even deleted
21:25:34 <elliott> hm
21:25:37 <elliott> selectRight is downwards movement
21:25:51 <elliott> oerjan: oh so I actually want (TreeCtx -> Cursor), not (TreeCtx -> TreeCtx)?
21:25:56 <oerjan> and _then_ the main loop can to the goNext :: Cursor -> Maybe TreeCtx
21:26:12 <elliott> misnaming >:E
21:26:14 <elliott> that's moveNext
21:26:19 <oerjan> ok
21:26:34 <elliott> goFoo :: TreeCtx -> Maybe TreeCtx -- looks like moveFoo >=> selectFoo at least for left/right
21:26:39 <elliott> selectFoo :: Cursor -> Maybe TreeCtx
21:26:42 <elliott> moveFoo :: TreeCtx -> Maybe Cursor
21:26:55 <elliott> ok so I need to write moveNext
21:27:03 <elliott> well I think the eqivalent of goDown is just moveRight
21:27:07 <elliott> erm
21:27:08 <elliott> selectRight
21:27:11 <elliott> selectRight (Branch name ls (r:rs) up) = Just (r :> Branch name ls rs up)
21:27:19 <oerjan> elliott: goNext = moveRight >=> selectNext
21:27:37 <elliott> I agree, I'll define selectNext first though
21:27:54 <oerjan> the point there is that the edit itself has enough information to do the moveRight, and it doesn't even need to know whether or not you do parents first
21:28:12 <oerjan> ...oops
21:28:19 <elliott> oerjan: ?
21:28:25 <oerjan> yes it does, darn
21:28:37 <elliott> ok i can't figure out selectNext
21:28:42 <elliott> because I don't know what climbRight should be
21:29:20 <oerjan> i think...
21:29:40 <oerjan> you actually need a moveNext, which just goes to the next _Cursor_
21:30:08 <elliott> moveNext :: TreeCtx -> Maybe Cursor -- are you sure you mean this?
21:30:08 <oerjan> moveNext = moveDown <|> climbRight
21:30:31 <elliott> ok, but what does climbRight look like here :P
21:30:42 <oerjan> *+x /g
21:31:21 <elliott> wat
21:31:31 <oerjan> climbRight x = moveRight <|> (goUp >>= climbRight)
21:31:34 <oerjan> argh
21:31:40 <oerjan> climbRight x = moveRight x <|> (goUp x >>= climbRight)
21:32:04 <oerjan> oh wait hm
21:32:12 <elliott> also, there isn't a moveDown.
21:32:12 <oerjan> a moveRight cannot actually fail
21:32:17 <elliott> there can be though
21:32:23 <elliott> oerjan: um sure it can
21:32:27 <elliott> moveRight :: TreeCtx -> Maybe Cursor
21:32:27 <elliott> moveRight (l :> Branch name ls rs up) = Just (Branch name (l:ls) rs up)
21:32:27 <elliott> moveRight _ = Nothing
21:32:27 <elliott> .
21:32:30 <elliott> consider (l :> Top)
21:32:44 * elliott thinks oerjan has completely muddled up the naming scheme.
21:33:05 <oerjan> oh. but in that case yo don't need to try anything further.
21:33:27 <oerjan> so climbRight = moveRight, simply
21:33:30 <elliott> move is like pressing the right arrow button while text is selected, going from it to a /cursor/; select is shift-arrow key in one direction from a cursor, producing a selection (TreeCttx)
21:33:33 <elliott> oerjan: oh, huh
21:33:41 <oerjan> no wait hm
21:33:44 <elliott> >_<
21:34:00 <oerjan> Top is actually tricky
21:34:39 <oerjan> if it has a non-Tag as its element
21:35:06 <elliott> oerjan: that can never happen in reality :)
21:35:07 <oerjan> because then there doesn't actually _exist_ a Cursor for inserting it
21:35:09 <elliott> if that reassures you
21:35:14 <elliott> there is _always_ a root tag
21:35:22 <elliott> I would express this in the types if I could think of a non-ugly way to do it
21:35:49 <oerjan> ok in that case moveRight cannot fail for our use case
21:36:06 <oerjan> well the edit part
21:36:34 <oerjan> moveNext = moveDown <|> moveRight
21:36:58 <oerjan> if there isn't a down direction, you're not at the root tag, so the moveRight must succeed
21:37:12 <elliott> you realise that moveNext can fail?
21:37:16 <elliott> e.g. being at the root tag
21:37:17 <elliott> but ko
21:37:33 <elliott> ok
21:37:33 <oerjan> but you never apply it to the root tag when parents are done first
21:37:42 <elliott> um
21:37:43 <elliott> what is moveDown
21:38:00 <elliott> <oerjan> but you never apply it to the root tag when parents are done first
21:38:04 <elliott> you apply it to the root tag first thing...
21:39:02 <elliott> oerjan: if I come back tomorrow will you have the answers :P
21:42:08 <oerjan> moveDown (Node tag children :> up) = Just (Branch tag [] children up)
21:43:06 <oerjan> i think.
21:43:51 <oerjan> elliott: oh hm moveNext cannot fail at the root tag, because it has children.
21:44:02 <elliott> yeah, I'm gonna sleep on this :P
21:44:03 <elliott> sorry
21:47:01 -!- pumpkin has quit (Quit: Computer has gone to sleep.).
21:48:43 -!- elliott has quit (Ping timeout: 276 seconds).
21:51:51 -!- boily has quit (Quit: WeeChat 0.3.6).
21:56:56 -!- ais523 has quit (Remote host closed the connection).
22:00:24 -!- augur has quit (Remote host closed the connection).
22:09:29 -!- Patashu has joined.
22:11:28 -!- ive has joined.
22:18:35 -!- sllide has quit (Read error: Connection reset by peer).
22:26:10 -!- zzo38 has quit (Remote host closed the connection).
22:42:18 -!- augur has joined.
22:50:18 -!- augur has quit (Remote host closed the connection).
22:50:54 -!- augur has joined.
22:55:40 -!- augur has quit (Ping timeout: 276 seconds).
22:56:34 -!- Ngevd has joined.
22:56:55 <Ngevd> Hello!
22:57:06 -!- nooga has quit (Ping timeout: 252 seconds).
22:57:17 <oerjan> good evening
22:59:42 -!- augur has joined.
23:17:21 -!- nooga has joined.
23:17:49 -!- ive has quit (Ping timeout: 252 seconds).
23:23:32 -!- ive has joined.
23:24:28 -!- Ngevd has quit (Ping timeout: 240 seconds).
23:27:43 -!- nooga has quit (Ping timeout: 255 seconds).
23:30:19 * Phantom_Hoover → sleep
23:30:20 -!- Phantom_Hoover has quit (Quit: Leaving).
23:59:26 -!- augur has quit (Remote host closed the connection).
23:59:45 -!- augur has joined.
2011-10-29
00:00:30 -!- Ngevd has joined.
00:00:56 <Ngevd> I still think there are a severe deficiency of esoteric markup languages
00:01:48 -!- Ngevd has quit (Read error: Connection reset by peer).
00:02:02 <Slereah_> That's because esoteric languages are historically a lot of turing tarpits
00:05:15 <tiffany> I should write an esoteric markup language
00:05:43 <oerjan> based on smileys, no doubt
00:05:54 <tiffany> .. that's an awesome idea
00:05:55 <Madoka-Kaname> :3
00:06:00 <Madoka-Kaname> I like this idea~
00:06:13 * tiffany hugs madoka-kaname <3
00:09:22 * Madoka-Kaname hug ^_^
00:26:31 -!- Vorpal has quit (Ping timeout: 244 seconds).
00:32:17 -!- Sgeo|web has joined.
00:42:41 -!- augur has quit (Ping timeout: 240 seconds).
00:56:14 -!- augur has joined.
00:59:20 -!- copumpkin has joined.
01:00:37 -!- augur has quit (Remote host closed the connection).
01:28:09 -!- zzo38 has joined.
02:20:56 -!- tiffany has quit (Quit: Leaving).
02:24:02 -!- zzo38 has quit (Remote host closed the connection).
02:49:42 -!- zzo38 has joined.
02:55:36 <CakeProphet> ..
02:55:52 <CakeProphet> Madoka-Kaname: tiffany: NO JOY ALLOWED
02:56:36 <Madoka-Kaname> :<
02:56:41 * Madoka-Kaname slaps CakeProphet with a heart
02:57:21 <CakeProphet> okay... I feel better now.
03:00:24 <CakeProphet> my source of transportation is once again
03:00:24 <CakeProphet> dead
03:00:28 <CakeProphet> $2500 later.
03:00:48 <oerjan> bad carma
03:01:16 <CakeProphet> .. -_-
03:01:36 <CakeProphet> where's that flyswatter?
03:01:44 <oerjan> right here
03:02:21 * CakeProphet slaps oerjan with a saucepan instead ==\__/
03:02:33 <oerjan> ouch
03:08:20 <CakeProphet> I think it's something simple though
03:08:26 <CakeProphet> involving not correctly putting in the CV axle.
03:11:40 <CakeProphet> (that's the thing that goes from the transmission to the wheels to make them turn in a front-wheel drive car)
03:14:10 -!- augur has joined.
03:19:34 <CakeProphet> what version of internet explorer works best in wine?
03:22:08 <oerjan> the older the better, right?
03:22:13 * oerjan cackles evilly
03:25:22 -!- pikhq_ has quit (Read error: Operation timed out).
03:28:14 -!- Nisstyre has left ("Leaving").
03:46:08 <quintopia> I have a present for you oerjan: ======[]
03:46:21 <quintopia> feel free to get cakeprophet back
03:47:45 <oerjan> fancy
03:48:29 <quintopia> yeah i don't think i've ever seen you use a sledge-o-matic, so i went out and got one just for you
03:51:09 -!- MDude has changed nick to MSleep.
04:08:10 -!- Patashu has quit (Ping timeout: 244 seconds).
04:08:27 -!- Patashu has joined.
04:27:25 -!- GreaseMonkey has quit (Quit: The Other Game).
04:33:39 -!- ive has quit (Quit: leaving).
04:43:11 -!- Darth_Cliche has joined.
05:01:14 <zzo38> allValues = h allValues allValues where { f 0 x _ = x; f n x y = liftM2 (:) y $ f (n - 1) x y; g x y = maybe undefined id $ lookup y x; h x y = g . zip x <$> f (length x) [[]] y; };
05:01:55 <zzo38> This appears to work to make a list of all functions between two types, I think.
05:04:06 <oerjan> assuming the types are finite, perhaps
05:04:29 <zzo38> Yes, the types are finite.
05:05:23 <zzo38> It even works for functions between function types, since I defined a Eq instance for those types.
05:05:40 <zzo38> instance (Eq y, AllValues x) => Eq (x -> y)
05:07:41 <CakeProphet> :t flip const const
05:07:42 <lambdabot> forall b. b -> b
05:07:59 <CakeProphet> @pl (\a b c -> b)
05:07:59 <lambdabot> const const
05:08:23 <oerjan> :t flip const undefined
05:08:24 <lambdabot> forall b. b -> b
05:12:42 <CakeProphet> @src sequence
05:12:43 <lambdabot> sequence [] = return []
05:12:43 <lambdabot> sequence (x:xs) = do v <- x; vs <- sequence xs; return (v:vs)
05:12:43 <lambdabot> -- OR: sequence = foldr (liftM2 (:)) (return [])
05:14:54 <Sgeo|web> TIL that unicode strings may be difficult to search through
05:15:13 <oerjan> hm yes
05:15:36 <Sgeo|web> !!! at topic :(
05:16:49 <quintopia> what, the part about tearing up mr. mccarthy's exquisite corpse?
05:17:09 <oerjan> :t let f 0 x _ = x; f n x y = liftM2 (:) y $ f (n - 1) x y in f
05:17:09 <lambdabot> forall t (m :: * -> *) a1. (Monad m, Num t) => t -> m [a1] -> m a1 -> m [a1]
05:17:42 <oerjan> :t let f n x y = sequence $ replicate n y ++ [x] in f
05:17:43 <lambdabot> forall (m :: * -> *) a. (Monad m) => Int -> m a -> m a -> m [a]
05:17:54 <oerjan> hm not quite
05:18:04 <zzo38> Due to the instance I have, it is that, like in mathematics $0^0=1$ and that seem very reasonable to me.
05:18:16 <Sgeo|web> > 0 ^ 0
05:18:18 <lambdabot> 1
05:18:40 <oerjan> oh hm
05:19:10 <zzo38> To me it is correct although some people disagree.
05:19:11 <oerjan> :t let f n x y = sequence $ replicate n y ++ [[x]] in f
05:19:11 <lambdabot> forall a. Int -> a -> [a] -> [[a]]
05:19:15 <oerjan> bah
05:19:25 <zzo38> Maybe in specific fields you might not want $0^0=1$ but in general I think it is correct.
05:19:31 <oerjan> oh
05:19:37 <oerjan> :t let f n x y = sequence $ replicate n y ++ [return x] in f
05:19:38 <lambdabot> forall a (m :: * -> *). (Monad m) => Int -> a -> m a -> m [a]
05:19:57 <oerjan> still not the same :(
05:21:10 <oerjan> :t let f n x y = foldr (liftM2 (:)) x $ replicate n y in f
05:21:10 <lambdabot> forall (m :: * -> *) a1. (Monad m) => Int -> m [a1] -> m a1 -> m [a1]
05:21:33 <oerjan> ok now that is right i think
05:21:46 <oerjan> :t let f n x y = foldr (liftM2 (:)) x $ genericReplicate n y in f
05:21:47 <lambdabot> forall i (m :: * -> *) a1. (Integral i, Monad m) => i -> m [a1] -> m a1 -> m [a1]
05:50:45 <zzo38> Can the solar time be an Arabic Part?
06:10:52 -!- zzo38 has quit (Quit: This pyramid-shaped ball is a mad house!!!).
06:22:51 -!- Darth_Cliche has quit (Quit: You are now graced with my absence.).
06:28:56 <Madoka-Kaname> @hoogle IO a -> a
06:28:57 <lambdabot> Foreign unsafePerformIO :: IO a -> a
06:28:57 <lambdabot> Data.ByteString.Internal inlinePerformIO :: IO a -> a
06:28:58 <lambdabot> System.IO.Unsafe unsafePerformIO :: IO a -> a
06:30:05 -!- oerjan has quit (Quit: Good night).
06:45:32 -!- kmc has quit (Ping timeout: 248 seconds).
06:48:06 -!- kmc has joined.
06:58:35 -!- Ngevd has joined.
07:01:10 <Ngevd> Hrllo!
07:03:07 <fizzie> Hellc.
07:09:53 <fizzie> Or, to make it more dynamic, wipeout_text("Hello", 3, 0) or something. (See: http://p.zem.fi/ka4r )
07:11:53 -!- Ngevd has quit (Ping timeout: 240 seconds).
07:12:12 -!- kmc_ has joined.
07:15:41 -!- kmc has quit (Ping timeout: 258 seconds).
07:23:00 -!- pikhq has joined.
07:26:21 -!- copumpkin has changed nick to pumpkin.
07:27:02 -!- pumpkin has changed nick to c0w.
07:27:37 -!- kmc_ has changed nick to kmc.
07:40:50 -!- derrik has joined.
07:51:34 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
07:53:43 -!- monqy has quit (Quit: hello).
07:58:27 -!- CakeProphet has quit (Quit: Lost terminal).
08:05:03 -!- Jafet has joined.
08:20:15 -!- nooga has joined.
08:26:42 <Sgeo|web> Control.Monad.Omega is cool
08:55:13 -!- Phantom_Hoover has joined.
08:55:14 -!- CakeProphet has joined.
08:55:21 -!- CakeProphet has quit (Changing host).
08:55:21 -!- CakeProphet has joined.
08:55:26 <CakeProphet> hi gaiz.
08:57:45 <CakeProphet> so in a orthogonally persistent system, it makes more sense to explicitly delete than it does to explicitly save.
08:58:12 <CakeProphet> in a word processor, for example, you never save, but instead delete untitlted / scratch documents when they're no longer wanted.
09:00:28 <CakeProphet> maybe to help people who aren't familiar with that paradigm, it could by default have untitlted documents in an auto-delete mode, so that they disappear without the user thinking about it whenever it's appropriate for them to disappear. Once they're named then they continue as persistent denizens of memory.
09:05:25 <CakeProphet> also, since there's no traditional hierarchical filesystem I suppose each individual program would have a component that manages its (what would usually be called) files and allows them to be "opened" (not really much of an open anymore; requesting better nomenclature) for use.
09:05:58 <CakeProphet> I like visit instead of open.
09:07:27 <CakeProphet> for most programs that would be as simple as maintaining some sort of associative structure with a UI to browse it.
09:08:08 <CakeProphet> the only problem I can see is that programs could easily become possessive about their various documents, which would typically have free access by any other program but now must be explicitly shared.
09:08:19 <CakeProphet> good for security, I guess.
09:11:15 <CakeProphet> without a system-wide component to make these "files" available to other programs, you basically end up having to reinvent data sharing over and over instead of serialization/persistence.
09:14:23 <CakeProphet> fungot: isn't that right?
09:14:24 <fungot> CakeProphet: actually,,,it could operate on compiled code instead of having the nn's weights emulate the convolution signal ( well, not sure whether absent-optional? is almost always going to be
09:19:43 -!- Vorpal has joined.
09:20:53 <CakeProphet> also, instead of saving things
09:21:03 <CakeProphet> you could commit versions.
09:45:52 -!- Ngevd has joined.
09:46:14 <Ngevd> Hello!
09:48:58 <CakeProphet> hey
09:54:33 <Ngevd> I've just worked out why my Pietbot isn't assembling correctly
10:01:40 <Ngevd> It's almost there!
10:02:20 <CakeProphet> Ngevd: what language?
10:02:24 <Ngevd> Piet
10:02:39 <Ngevd> Really, Piet Assembler
10:03:06 -!- CakeProphet has quit (Quit: Page closed).
10:03:18 <Ngevd> CakeProphet is scared of Piet
10:06:12 -!- CakeProphet has joined.
10:06:12 -!- CakeProphet has quit (Changing host).
10:06:12 -!- CakeProphet has joined.
10:11:49 <Vorpal> @tell elliott I tried to download the last c-intercal today, but the download link timed out. So I'm currently unable to update the Arch Linux package.
10:11:50 <lambdabot> Consider it noted.
10:21:59 -!- derrik has quit (Quit: well done.. bowing out).
10:31:17 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
10:31:35 <oklopol> CakeProphet: programs are so 60's though
10:31:40 -!- Ngevd has quit (Ping timeout: 248 seconds).
10:31:47 <CakeProphet> oklopol: I.... no.
10:31:57 <oklopol> they are a retarded idea
10:32:11 <CakeProphet> I think programs are... a good idea?
10:32:14 <oklopol> from a user's perspective
10:32:20 <oklopol> you would be wrong
10:32:24 <CakeProphet> from a programmer's perspective programs make perfect sense.
10:32:34 <oklopol> who the fuck cares?
10:32:39 <CakeProphet> programmers.
10:32:43 <oklopol> ...
10:32:47 <oklopol> fuck programmers
10:32:49 <CakeProphet> in any case how do you logically divide code.
10:33:13 <oklopol> err functions and shit?
10:33:35 <oklopol> just like i always do when i program
10:34:06 <oklopol> what i don't do is write multiple programs that interface each other clumsily just to have a nice logical division
10:34:15 <oklopol> programs are a retarded idea
10:34:21 <oklopol> and fuck programmers
10:34:24 <oklopol> and i'm leaving
10:34:31 <CakeProphet> lolokay
10:38:39 -!- Madoka-Kaname has quit (Ping timeout: 258 seconds).
10:41:08 -!- Ngevd has joined.
10:45:21 -!- Phantom_Hoover has joined.
10:48:56 -!- hagb4rd2 has joined.
10:52:05 -!- hagb4rd has quit (Ping timeout: 240 seconds).
10:53:48 <Ngevd> If I knew what I was doing, Pietbot would be in this channel
10:58:23 <CakeProphet> Ngevd: what do you not know.
10:58:32 <CakeProphet> Piet? IRC?
10:58:48 <Ngevd> IRC
10:58:52 <Ngevd> Also Netcat
10:59:21 <Ngevd> When Pietbot is ran, it outputs:
10:59:56 <Ngevd> NICK Pietbot
10:59:56 <Ngevd> USER Pietbot 0 * :Pietbot
10:59:56 <Ngevd> PRIVMSG nickserv :identify [password]
10:59:56 <Ngevd> JOIN #esoteric
11:00:00 <Ngevd> But when I plug it into netcat, nothing happens
11:00:57 <CakeProphet> how are you invoking netcat
11:01:04 <Ngevd> nc.traditional -e ./bot irc.freenode.net 6667
11:02:45 <CakeProphet> why nc.traditional
11:02:48 <Ngevd> I get:
11:02:49 <Ngevd> exec ./bot failed : Exec format error
11:03:17 <CakeProphet> problem with the assembler?
11:03:50 <Ngevd> It seems to run fine when not connected
11:04:03 <Ngevd> If I just type in ./bot
11:04:29 <CakeProphet> try using regular nc with a pipe.
11:04:44 <CakeProphet> I don't really know anything about nc.traditional
11:05:01 <CakeProphet> and the Ubuntu package has no documentation.
11:05:18 <Ngevd> It's just nc, compiled so it has the -e option
11:05:42 <CakeProphet> yeah try piping instead.
11:06:01 <CakeProphet> since using -e gives you the exec format error thing.
11:07:11 -!- Pietbot has joined.
11:07:15 <Ngevd> Yay!
11:07:27 <Ngevd> )df iiisso
11:08:00 <Ngevd> Hmm...
11:10:33 <Ngevd> That should make it say "R"
11:10:33 <Ngevd> )q
11:11:17 -!- Pietbot has quit (Ping timeout: 240 seconds).
11:11:21 <Ngevd> Damn
11:11:26 <Ngevd> I know what the problem is
11:13:24 <Ngevd> Could someone please kick Pietbot?
11:15:58 -!- Pietbot has joined.
11:16:07 <Ngevd> Let's try this again
11:17:29 <Ngevd> )df iiisso
11:17:48 <Vorpal> * Pietbot has quit (Ping timeout: 240 seconds) <Ngevd> Could someone please kick Pietbot? <-- sorry?
11:18:24 <Ngevd> Oh god the mistake I made this time is so stupid
11:18:24 <Ngevd> It's doing a line break instead of a hash symbol
11:18:24 <Ngevd> )q
11:18:28 -!- Pietbot has quit (Remote host closed the connection).
11:19:33 <hagb4rd2> hey! someone familiar with the IRC protocol? im tryin to create an IRC bot, but can't get it elnet
11:19:42 <Vorpal> elnet?
11:20:03 <Vorpal> what is that even...
11:20:07 <hagb4rd2> oops
11:20:08 <hagb4rd2> :)
11:20:10 <hagb4rd2> to run
11:20:35 <Vorpal> I'm quite familiar with the protocol, but you have to be more specific than that
11:20:53 <hagb4rd2> heres the code
11:20:54 <hagb4rd2> http://pastebin.com/1RVj3DHN
11:21:14 <Vorpal> that isn't even an esolang
11:21:42 <Vorpal> anyway where does it fail, you forgot such info
11:21:56 <hagb4rd2> "USER CSharpBot 8 * :I'm a C# irc bot" is a valid USER command
11:21:56 -!- jix_ has quit (Quit: leaving).
11:22:01 <hagb4rd2> thats true
11:22:04 <Ngevd> Pietbot's almost there
11:22:08 <hagb4rd2> but you guys are my last hope
11:22:15 -!- jix has joined.
11:22:24 <Vorpal> hagb4rd2, anyway the format of that line looks wrong?
11:22:35 <Vorpal> I don't remember it off the top of my head
11:22:39 <hagb4rd2> the USER line?
11:22:47 <Vorpal> but shouldn't it be like USER something * * :something
11:23:09 <hagb4rd2> according to RFC: USER <ident> <localhost> <remotehost> :<realname>
11:23:19 <hagb4rd2> ok i'll try this
11:23:27 <Ngevd> Doesn't 8 mean invisible?
11:23:27 <Ngevd> Try using 0
11:23:34 <hagb4rd2> ah!
11:24:05 <hagb4rd2> i tried to ask the guys in ##csharp but the results were horrible :(
11:24:19 <hagb4rd2> thanks..brb
11:24:55 <Vorpal> from an irc bot I wrote in bash ages ago:
11:24:57 <Vorpal> send_raw_flood "USER $config_ident 0 * :${config_gecos}"
11:25:06 <Vorpal> so yeah
11:26:05 <Ngevd> RFC 1459 does it Vorpal's way
11:26:05 <Ngevd> RFC 2812 does it mine
11:26:05 <Ngevd> Pietbot uses the latter
11:26:07 <Ngevd> And can at least connect
11:26:10 <CakeProphet> maybe I should continue with this trend of esolang IRC bots.
11:26:22 <hagb4rd2> hehe
11:26:23 <Ngevd> Deadfishbot
11:26:28 <Vorpal> Ngevd, only IRCNet actually uses RFC 2812
11:26:29 <CakeProphet> HomeSpring bot...
11:26:55 <Vorpal> but sure, it might work. It is a bit like html, everyone tries to handle weird stuff
11:26:56 <Ngevd> Pietbot can connect
11:27:01 <Vorpal> even if it makes no sense
11:27:15 <hagb4rd2> there are differen RFCs?
11:27:37 <Vorpal> hagb4rd2, yes, and none of the RFCs reflect what everyone actually does
11:27:43 <hagb4rd2> hm
11:27:48 <CakeProphet> MalebolgeBot -- a Malbolge IRC bot,
11:27:52 <hagb4rd2> I LOVE YOU
11:27:53 <hagb4rd2> :D
11:28:06 <Vorpal> hagb4rd2, there are all sorts of non-"official" but widely supported extensions
11:28:08 <CakeProphet> I think...
11:28:10 <CakeProphet> this is what I'll do.
11:28:15 <CakeProphet> attempt to write a Malbolge IRC bot. :P
11:28:20 <CakeProphet> and probably fail miserably.
11:29:10 <CakeProphet> yeah... probably not going to happen.
11:29:20 <Vorpal> hagb4rd2, like most of the channel modes. Like the ISUPPORT line (005 iirc), which everyone but IRCNet does. IRCNet uses a different meaning for 005.
11:29:56 <hagb4rd2> yea.. i thought the chanmode might be a problem
11:29:57 <Vorpal> hagb4rd2, you want to parse the ISUPPORT line if you are doing a non-trivial bot, it will tell you how to parse stuff like which modes takes parameters. Allowing proper parsing of channel modes
11:30:11 <hagb4rd2> but also the order of the COMMANDS
11:30:30 <hagb4rd2> im just experimenting for now
11:30:47 <hagb4rd2> just to understand the way how it goes
11:30:50 <Vorpal> doing /quote version on this server dumps you the ISUPPORT line as well
11:30:50 <Vorpal> * ircd-seven-1.1.1(20110910-0f177e0ec620, Charybdis 3.4-dev). asimov.freenode.net :eHIKMpSZ6 TS6ow 64M
11:30:51 <Vorpal> * CHANTYPES=# EXCEPTS INVEX CHANMODES=eIbq,k,flj,CFLMPQcgimnpstz CHANLIMIT=#:120 PREFIX=(ov)@+ MAXLIST=bqeI:100 MODES=4 NETWORK=freenode KNOCK STATUSMSG=@+ CALLERID=g :are supported by this server
11:30:51 <Vorpal> * CASEMAPPING=rfc1459 CHARSET=ascii NICKLEN=16 CHANNELLEN=50 TOPICLEN=390 ETRACE CPRIVMSG CNOTICE DEAF=D MONITOR=100 FNC TARGMAX=NAMES:1,LIST:1,KICK:1,WHOIS:1,PRIVMSG:4,NOTICE:4,ACCEPT:,MONITOR: :are supported by this server
11:30:51 <Vorpal> * EXTBAN=$,arx WHOX CLIENTVER=3.0 SAFELIST ELIST=CTU :are supported by this server
11:30:54 <hagb4rd2> and where the problems are
11:31:10 <hagb4rd2> and hooray.. we got some ;)
11:31:14 <Vorpal> that tells you quite a bit about the widely supported but non-official extensions
11:31:42 <Vorpal> I forgot where you can find docs on parsing that
11:31:46 <hagb4rd2> ok..will check it out
11:31:50 <hagb4rd2> thanks a lot
11:32:04 <hagb4rd2> this will keep me busy for a while ;)
11:32:20 <Vorpal> hagb4rd2, ah this seems useful: http://wiki.inspircd.org/RPL_ISUPPORT_Tokens
11:32:28 -!- c0w has quit (Ping timeout: 248 seconds).
11:32:36 <Vorpal> I probably used that when I wrote envbot, since I was running a network with inspircd back then
11:33:03 -!- c0w has joined.
11:34:54 <Vorpal> probably charybdis (and thus freenode-seven) have a slightly different set of ISUPPORT tokens
11:38:08 <Ngevd> Well, Pietbot has stopped working
11:38:15 <Ngevd> I say "stopped"
11:38:25 <Ngevd> I mean "now works even less"
11:41:34 -!- Madoka-Kaname has joined.
11:41:34 -!- Madoka-Kaname has quit (Changing host).
11:41:34 -!- Madoka-Kaname has joined.
11:45:28 <Ngevd> As far as I am aware, netcat has stopped working
11:49:38 <Ngevd> Hang on.
11:49:38 <Ngevd> Is freenode up?
11:50:51 <Ngevd> fungot, am I here?
11:50:51 <fungot> Ngevd: it's also gpl, not lgpl. :p going really strong though. don't think it is
11:51:08 <Ngevd> That, while good, wasn't what I wanted
11:56:00 -!- derdon has joined.
11:56:31 <Vorpal> Ngevd, heh
12:06:36 -!- Ngevd has quit (Ping timeout: 248 seconds).
12:06:43 <Vorpal> @tell elliott I updated the AUR package for tup-git, it now builds and works.
12:06:44 <lambdabot> Consider it noted.
12:17:58 -!- Ngevd has joined.
12:41:20 -!- Pietbot has joined.
12:41:34 <Phantom_Hoover> <Ngevd> As far as I am aware, netcat has stopped working
12:41:34 <Phantom_Hoover> <Ngevd> Hang on.
12:41:34 <Phantom_Hoover> <Ngevd> Is freenode up?
12:41:34 <Phantom_Hoover> <Ngevd> fungot, am I here?
12:41:35 <fungot> Phantom_Hoover: ( 2) change everything behind it to *make* it fast, make the optimizing pass a bit nicer
12:41:54 <Phantom_Hoover> I had a similar problem once, in that I couldn't make new connections, but existing ones worked fine.
12:44:14 <Ngevd> Should I restart, or what?
12:44:24 <Phantom_Hoover> It was a router issue last time, IIRC.
12:44:31 <Phantom_Hoover> Or a modem issue.
12:44:40 <Phantom_Hoover> It was upstream from me, whatever it was.
12:45:30 -!- Pietbot has quit (Ping timeout: 240 seconds).
12:46:18 <Ngevd> Wow, Pietbot was here
12:46:38 -!- Pietbot has joined.
12:46:53 <Ngevd> When Pietbot's df and q commands work, I'll make it respond to pings
12:50:42 -!- Pietbot has quit (Ping timeout: 240 seconds).
12:52:30 -!- Pietbot has joined.
12:52:30 <Ngevd> I keep getting distracted and miss it...
12:52:30 <Ngevd> When Pietbot joins, would someone say ")df iiisso" for me, please?
12:52:38 <Phantom_Hoover> )df iiisso
12:53:13 <Ngevd> Thanks
12:53:26 <Ngevd> Now we wait and see
12:53:38 <Phantom_Hoover> `quote
12:53:46 <HackEgo> 435) <ais523_> meanwhile, I've been running a program for over 24 hours (getting close to 48 now) which is calculating digits of pi, in binary <ais523_> so far, it has found four digits <ais523_> I hope it will find the fifth some time this week
12:54:08 <Ngevd> That's a good one
12:56:42 -!- Pietbot has quit (Ping timeout: 240 seconds).
12:57:41 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
12:57:47 -!- tiffany has joined.
13:00:12 <Ngevd> This problem is tricky to solve...
13:00:38 <Ngevd> The mysterious case of the bot in the esolang...
13:01:53 -!- Phantom_Hoover has joined.
13:04:54 <Vorpal> Ngevd, debug it?
13:05:26 <Ngevd> Okay, npiet seems to be telling me the colour of every single pixel.
13:05:51 <Ngevd> In a 581.3 KB image
13:10:36 <Vorpal> Ngevd, does the program look artistic?
13:10:47 <Ngevd> Not especially
13:10:51 <Ngevd> That may be the problem
13:10:58 <Vorpal> yes, a very grave one
13:11:42 <Ngevd> It looks kind of like a backwards `
13:11:44 <Ngevd> *
13:12:09 <Vorpal> Ngevd, this (upscaled image) http://www.dangermouse.net/esoteric/piet/Piet-4.gif is how piet programs should look
13:17:05 -!- Ngevd has quit (Ping timeout: 260 seconds).
13:17:56 -!- Taneb has joined.
13:19:33 <Vorpal> Taneb, <Vorpal> Ngevd, this (upscaled image) http://www.dangermouse.net/esoteric/piet/Piet-4.gif is how piet programs should look
13:20:05 <Phantom_Hoover> )df iiisso
13:23:01 <Taneb> Vorpal, I wholeheartedly agree
13:23:29 <Taneb> Also, I just saw today's IWC
13:23:33 * Taneb sad
13:24:32 <Phantom_Hoover> I never actually noticed that all of the plot lines had been resolved.
13:24:47 <Taneb> The channel's topic is now extra appropriate
13:24:49 <Phantom_Hoover> I suppose it's conditioned me never to expect any progression in the story.
13:27:40 -!- Slereah_ has quit (Ping timeout: 248 seconds).
13:28:54 <Phantom_Hoover> Oh well. My primary source for terrible puns is now gone.
13:29:05 <Vorpal> The parentheses in the topic are unbalanced. Argh
13:29:16 <Phantom_Hoover> And elliott never actually got around to reading it. Heh.
13:29:29 <Vorpal> Phantom_Hoover, I assume D&D will continue until it is done. I seen no indication of anything else
13:30:18 -!- Slereah_ has joined.
13:32:50 <Phantom_Hoover> Vorpal, he explicitly said that mezzacotta and D&D won't be affected.
13:34:20 <Vorpal> Phantom_Hoover, right, I hadn't read the entire annotation when I said that
13:35:11 <Vorpal> and well, it is obvious mezzacotta will continue. Unless there are bugs or limitations (such as not using bignums for dates) I see no reason it couldn't continue forever.
13:38:39 -!- Jenny23 has joined.
13:38:51 -!- Jenny23 has quit (Remote host closed the connection).
13:41:44 <Taneb> Well, Irregular Webcomic is now a /very/ Irregular Webcomic
13:41:48 <Taneb> It doesn't have a comic
13:44:33 -!- Jenny23 has joined.
13:44:59 <hagb4rd2> hi jenny
13:44:59 <Jenny23> May the force be with you!
13:45:15 <hagb4rd2> yess.. i finally made it :)
13:45:35 <hagb4rd2> thx vorpal, ngevd
13:45:51 <Taneb> :D
13:46:02 <Taneb> I've had less luck, 'm afraid
13:47:59 <hagb4rd2> IRC is such a crap! ..the first reason it didn't work out is you have to wait till the server completes the host ident verification before sending USER blah
13:49:01 <hagb4rd2> the second: on some servers you need to respond to the PING :token with a PONG :token before "registered" (not so on irc.freenode.net)
13:50:42 <hagb4rd2> but the crap is, i didn't found out if there is any char or string signifying that server is ready to go
13:51:33 <hagb4rd2> but for the USER command it seems always to send 4 lines of text
13:53:34 <hagb4rd2> here the working (experimental) code: http://cxg.florianbuetow.de/_e7fab7.htm
13:56:56 <Taneb> Pietbot take 2 so far outputs "NIC"
13:58:15 <hagb4rd2> there must be a way to make comfortable on all severs. i know its ugly, but at least it works that way :>
13:59:10 <hagb4rd2> maybe there really is a special char..now back to those RFCs ;)
14:04:14 <Vorpal> <hagb4rd2> the second: on some servers you need to respond to the PING :token with a PONG :token before "registered" (not so on irc.freenode.net) <-- there is a good reason for that
14:04:28 <Vorpal> the reason is that it prevents using a http proxy to spam irc
14:04:37 <Vorpal> lifthrasiir, yes
14:05:05 <lifthrasiir> it's so strange that freenode (still) does not implement such measures
14:05:16 <Vorpal> indeed
14:08:01 <hagb4rd2> i agree. altough it blocks some clients like mibbit.com
14:09:36 -!- MSleep has changed nick to MDude.
14:17:34 -!- Taneb has quit (Quit: Goodbye).
14:28:35 -!- FireFly has quit (Changing host).
14:28:35 -!- FireFly has joined.
14:32:36 -!- Jenny23 has quit (Read error: Connection reset by peer).
14:37:32 -!- pikhq has quit (Ping timeout: 245 seconds).
14:37:34 -!- pikhq_ has joined.
14:46:23 <Phantom_Hoover> http://www.cracked.com/article_19510_the-7-most-questionable-haunted-items-ebay.html
14:46:31 <Phantom_Hoover> This is the funniest article to come out of Cracked in a long time.
14:47:25 <fizzie> Vorpal: If you write "GET / HTTP/1.1" to freenode's ircd, it treats it as a QUIT.
14:47:38 <Vorpal> fizzie, heh
14:47:57 <Vorpal> fizzie, does it do that for other GET commands? Like GET /foo ...
14:48:17 <fizzie> Probably all GET, and maybe other HTTP methods too.
14:48:22 <Vorpal> heh
14:48:27 <fizzie> Didn't test more than the one.
14:53:39 -!- fizziet has joined.
14:53:46 <fizziet> let's try a HEAD.
14:54:13 <fizziet> just "unknown command", and GET did nothing.
14:54:28 <fizziet> maybe it's special-cased to only do a thing at connection initiation time.
14:54:46 -!- fizziet has quit (Client Quit).
14:55:23 <fizzie> At connection start, HEAD does nothing, GET insta-quits.
14:55:36 <hagb4rd2> em..y http?
14:56:34 <hagb4rd2> use case?
14:57:40 -!- hagb4rd2 has changed nick to hagb4rd.
15:04:56 <Vorpal> fizzie, and POST?
15:06:39 <fizzie> POST /funnyform.cgi HTTP/1.1
15:06:40 <fizzie> ERROR :Closing Link: 127.0.0.1 (Client Exit)
15:06:48 -!- ive has joined.
15:07:40 -!- Jafet has quit (Quit: Leaving.).
15:09:31 <Vorpal> heh
15:10:59 -!- nooga has quit (Quit: Lost terminal).
15:17:30 -!- pikhq has joined.
15:17:46 -!- pikhq_ has quit (Ping timeout: 252 seconds).
15:22:07 -!- kmc_ has joined.
15:25:20 -!- kmc has quit (Ping timeout: 255 seconds).
15:27:24 -!- kmc__ has joined.
15:30:44 -!- kmc_ has quit (Ping timeout: 256 seconds).
15:31:16 <Vorpal> @tell ais523 It seems that the http download server for c-intercal (overload.intercal.org.uk) is down (at least over IPv6, trying anything else is somewhat annoying). I don't know who can fix that, but maybe you do?
15:31:17 <lambdabot> Consider it noted.
15:35:41 -!- hagb4rd has quit (Ping timeout: 240 seconds).
15:38:23 <Vorpal> hm I doubt ipv6 is relevant here, since I can connect just fine. I simply get no HTTP headers back from the server.
15:45:17 -!- derrik has joined.
15:52:39 -!- Ngevd has joined.
15:54:52 <Ngevd> Hello!
16:08:44 -!- c0w has changed nick to copumpkin.
16:08:44 -!- copumpkin has quit (Changing host).
16:08:44 -!- copumpkin has joined.
16:16:41 <Ngevd> Trivia: the first esolang I created was an Ook! derivative
16:16:51 <Ngevd> It introduced the keyword "Eek"
16:23:45 -!- ive has quit (Ping timeout: 260 seconds).
16:23:52 <Vorpal> Ngevd, that did what=
16:23:54 <Vorpal> s/=/?/
16:24:03 <Ngevd> I can't remember
16:24:14 <Ngevd> I seem to remember a variable that stuck to the pointer
16:24:44 <Ngevd> And there were instructions for more advanced arithmetic than increment and decrement
16:25:11 <Ngevd> fizzie, I found what I was thinking of the other day
16:25:38 <Ngevd> It was npiet-foogol
16:26:23 <Ngevd> Disappointed in that it wasn't an esolang
16:27:19 <fizzie> How goes the piebott?
16:27:23 <Ngevd> Poorly
16:27:30 <Ngevd> It can connect now
16:27:33 <Ngevd> But not much else
16:27:58 <Ngevd> Not entirely sure why
16:28:54 <Ngevd> Thought of something...
16:28:55 <Ngevd> Hmm..
16:29:10 <fizzie> Are you "writing" it with an image editor, or the presumably-much-easier-but-cheaty piet-assembler way?
16:29:23 <Ngevd> Switching between the two
16:29:41 <Ngevd> I have to go now
16:29:43 <Ngevd> Goodbye
16:29:45 -!- Ngevd has quit (Quit: Leaving).
16:30:11 -!- monqy has joined.
16:30:39 -!- elliott has joined.
16:34:51 -!- zzo38 has joined.
16:35:24 <zzo38> What are you going to use the shreds for?
16:40:18 -!- ive has joined.
16:40:49 <CakeProphet> fizzie: real programmers use MS paint.
16:41:30 <Phantom_Hoover> No, that's just ais.
16:42:33 <monqy> the only real programmer
16:42:53 <elliott> 07:09:53: <fizzie> Or, to make it more dynamic, wipeout_text("Hello", 3, 0) or something. (See: http://p.zem.fi/ka4r )
16:42:53 <lambdabot> elliott: You have 2 new messages. '/msg lambdabot @messages' to read them.
16:42:55 <elliott> waht
16:43:08 <elliott> monqy: it's funny because you haven't seen ais' ms paint ai
16:44:09 <monqy> now i want to see it
16:44:25 <elliott> CakeProphet: so, should I bother reading this stuff about orthogonal persistence you wrote; I suppose what I'm really asking is, did you begin understanding how it works between last time and writing this
16:45:10 <Vorpal> elliott, strange that lambdabot didn't tell you that you had messages when you spoke
16:45:24 <Vorpal> oh wait, it did
16:45:29 <elliott> <lambdabot> elliott: You have 2 new messages. '/msg lambdabot @messages' to read them.
16:45:31 <elliott> Really strange.
16:45:33 <Vorpal> I need to clean these glasses
16:45:35 <Vorpal> elliott, ^
16:46:04 <Vorpal> elliott, anyway, BFS doesn't work with systemd according to the arch linux wiki page about systemd.
16:46:13 <elliott> who gives a shit about systemd
16:46:27 <elliott> eh, it's cgroup shit
16:46:30 <Vorpal> yeah
16:46:32 <elliott> nobody uses cgroup shit
16:46:36 <elliott> except systemd i guess :P
16:46:36 <Vorpal> except systemd
16:46:39 <Vorpal> snap
16:46:47 <elliott> well, good, now yo don't have to modify ini files
16:46:49 <elliott> bfs saved you
16:46:52 <Vorpal> hah
16:47:25 <Vorpal> elliott, I don't use bfs though. Why not just list the daemons in /etc/inittab hm... Oh wait it doesn't do deps does it?
16:47:41 <elliott> one runlevel per dependency
16:47:41 <Vorpal> right
16:47:42 <elliott> :D
16:47:51 <Vorpal> elliott, yeah and isn't there like 6 max?
16:48:16 <elliott> i find it kind of annoying how -git packages can'tbe updated normally
16:48:19 <Vorpal> if it was less limited you could probably pre-compute the run levels by a tool from dependency info
16:48:21 <elliott> s/'t/'t /
16:48:27 <Vorpal> elliott, well, I don't know any way around that.
16:48:40 <elliott> I also find it annoying how they have a pkgver, rather than just a pkgrel :)
16:49:08 <Vorpal> elliott, anyway, I messaged ais about the server issue. It connects fine, and my client send the HTTP headers, but the server never replies.
16:49:17 <Vorpal> quite a strange way of breaking
16:49:25 <elliott> it worked for me yesterday :)
16:49:37 <elliott> anyway how did you update tup-git, I thought the maintainer had to stand down or something, or did thy
16:49:38 <elliott> they
16:49:48 <Vorpal> elliott, he had done that. It was abandoned
16:49:52 <elliott> ah
16:49:55 <Vorpal> there was this button saying "adopt"
16:50:08 <Vorpal> so I check the PKGBUILD, decided it wasn't too much work, and fixed it
16:50:08 * elliott doesn't think something like the aur should have owners anyway
16:50:17 <CakeProphet> elliott: I understand the basic principle, sure.
16:50:25 <elliott> i'm not sure what to have instead, but it's not like the current model is trustworthy at all
16:50:42 <elliott> it should either look more like ubuntu ppas, with the username used to install and the ability for multiple people to package the same package name
16:50:49 <elliott> or more like a "normal" repo
16:50:50 <Vorpal> hm
16:50:56 <elliott> probably the former is preferable
16:51:03 <elliott> since it avoids a lot of trust issues
16:51:04 <CakeProphet> I can't say it matches what you have in mind, as you haven't really explained that completely, and you're probably still figuring it out.
16:51:17 <elliott> CakeProphet: no, what I have in mind is the standard definition
16:51:20 <Vorpal> elliott, do you have ipv6? Also check if you can reach the c-intercal download page...
16:51:29 <elliott> i can't now, and no why?
16:51:34 <CakeProphet> elliott: I understand stood well before the end of the last time we talked about it.
16:51:39 <CakeProphet> :P
16:51:48 <elliott> CakeProphet: well, you were wrong a lot
16:51:53 <CakeProphet> it happens.
16:51:53 <Vorpal> elliott, right, I was worried it was a failure for ipv6 service only. Except with the way it failed it would have been really strange
16:52:14 <elliott> it might run on that dd/sh httpd
16:52:20 <elliott> (this isn't a joke)
16:52:21 <Vorpal> heh
16:52:24 <CakeProphet> elliott: I hadn't fully considered what the adustment entailed in terms of the rest of the system.
16:52:29 <elliott> (seriously, not a joke)
16:52:38 <elliott> CakeProphet: ok i'll read it.
16:52:42 <elliott> 08:57:45: <CakeProphet> so in a orthogonally persistent system, it makes more sense to explicitly delete than it does to explicitly save.
16:52:42 <elliott> yes, this is correct
16:52:48 <Vorpal> elliott, hm, dd/sh... Wait, no netcat? How does dd+sh allow sockets?
16:52:56 <elliott> Vorpal: it used netcat i think
16:53:01 <elliott> or maybe bash's /dev/tcp
16:53:02 <Vorpal> elliott, so dd/sh/netcat
16:53:03 <elliott> 09:00:28: <CakeProphet> maybe to help people who aren't familiar with that paradigm, [...]
16:53:10 <Vorpal> elliott, I don't think /dev/tcp allows listening
16:53:11 <elliott> CakeProphet: not interested in the rest of this line :)
16:53:17 <Vorpal> unless I misremember, or they changed that
16:53:24 <elliott> "auto-delete mode, so that they disappear without the user thinking about it whenever it's appropriate for them to disappear"
16:53:27 <elliott> CakeProphet: this is the worst idea ever
16:53:37 <elliott> "Once they're named then they continue as persistent denizens of memory."
16:53:40 <zzo38> I write a gopher client using bash
16:53:42 <elliott> like, this is the literal opposite of what you want
16:53:55 <elliott> the whole point is that things don't get deleted without asking
16:54:13 <CakeProphet> elliott: okay, how about this: aren't there some bits of "user data" (what would typically be files) that are in fact intended to be temporary, where it would be more natural for them to implicitly delete themselves upon some condition? I suppose this could be handled by garbage collection.
16:54:22 <elliott> i mean, this isn't even about orthogonal persistence, even apple have figured this out, try and get rid of an untitled document in TextEdit without explicitly closing it
16:54:30 <elliott> including by crashing the computer
16:54:32 <elliott> you can't
16:54:52 <Vorpal> elliott, what, how can it not be lost if the computer crashes at that point?
16:54:57 <elliott> if you have ever had your computer crash and thought "fuck, I just lost data", then you understand
16:55:21 <elliott> <CakeProphet> elliott: okay, how about this: aren't there some bits of "user data" (what would typically be files) that are in fact intended to be temporary, where it would be more natural for them to implicitly delete themselves upon some condition? I suppose this could be handled by garbage collection.
16:55:22 <CakeProphet> elliott: I suppose the case where I record of information with the intention of not saving is rare. indeed.
16:55:28 <elliott> the computer isn't a mind reader
16:55:29 <Vorpal> Anyway there /is/ temporary data. Most of that is not directly user-visible though.
16:55:32 <elliott> it cannot tell when you no longer care about data
16:55:52 <Vorpal> elliott, I guess he means stuff like .pid files?
16:55:58 <elliott> Vorpal: "user data"
16:56:01 <Vorpal> hm okay
16:56:03 <elliott> he is talking about word processors
16:56:05 <elliott> or was in the logs
16:56:07 <Vorpal> ah...
16:56:54 <CakeProphet> elliott: in the case of some programs you can tell when I start to care about it. This is how the traditional model works. Before you make the first save, it assumes you don't care. For a word processor in an orthogonally persistent system, this could be the "first commit" (assuming the word processor uses version control, which it totally should)
16:56:59 <Vorpal> elliott, anyway are you saying you won't lose an unsaved file in TextEdit should the computer crash before you save it?
16:57:07 <Vorpal> elliott, I'm quite interested in learning how
16:57:20 <CakeProphet> elliott: yes, I'm going top-down, starting from how the user interacts with the system.
16:57:28 <CakeProphet> in various situations.
16:57:32 <CakeProphet> this is one of those situations.
16:57:35 <elliott> Vorpal: unsaved = the user hasn't saved it
16:58:02 <elliott> CakeProphet: yeah, no, the experience of someone working on something for ages without saving then losing it is ubiquitous and shared by everyone except probably Vorpal
16:58:11 <CakeProphet> elliott: and what I mean by "first commit" is more like "first major revision", or tag, or whatever.
16:58:26 <elliott> i would get tons of citations for this and have in the past but don't have them now so you'll just have to accept i'm right :)
16:58:31 <elliott> 09:05:25: <CakeProphet> also, since there's no traditional hierarchical filesystem I suppose each individual program would have a component that manages its (what would usually be called) files and allows them to be "opened" (not really much of an open anymore; requesting better nomenclature) for use.
16:58:31 <elliott> application-centric interfaces are completely obsolete, in an orthogonal environment this is made explicit in the code if you try it
16:58:34 <Vorpal> elliott, indeed. But I'm referring to what you said above: "<elliott> i mean, this isn't even about orthogonal persistence, even apple have figured this out, try and get rid of an untitled document in TextEdit without explicitly closing it <elliott> including by crashing the computer"
16:58:44 <elliott> (because you have to emulate a ton of pointlses bullshit)
16:58:48 <elliott> Vorpal: yes, I answered
16:58:54 <elliott> Vorpal: ok, you answer: how can it lose the data?
16:59:23 <CakeProphet> elliott: right, that's what I mean.
16:59:30 <Vorpal> elliott, by power loss (assume a desktop, so no battery) or a system bug causing the normal execution to end in an unintended place
16:59:41 <elliott> CakeProphet: you talked about a "program"
16:59:42 <CakeProphet> elliott: the code implements its own filesystem without trying, more or less.
16:59:57 <elliott> Vorpal: ok, why would that cause it to not be able to access the data after a reboot?
16:59:59 <Vorpal> elliott, unless it saves to a temporary place after every keypress (oh my think of the SSDs!) you can't avoid that
17:00:13 <CakeProphet> elliott: yes I still am holding on to this concept because I don't yet how it's sane to not logically divide code into... something. I usually call these things programs.
17:00:16 <CakeProphet> even a function is a kind of program.
17:00:24 <Vorpal> elliott, and even then, there will be a tiny delay between a key press and it actually writing it out to disk where it could fail
17:00:33 <elliott> CakeProphet: oh. so you _don't_ actually understand still
17:00:53 <CakeProphet> not that particular part.
17:01:00 <elliott> Vorpal: oh! I see, we're going based on the assumption that you have the necessary reflexes to crash a computer milliseconds after typing something
17:01:19 <Vorpal> elliott, no, but accidents like power losses can happen at any time.
17:01:54 <CakeProphet> elliott: perhaps if you could explain how this works without programs, or point me to an author who has already volunteered his/her precious time on the subject.
17:01:54 <elliott> Vorpal: you can't type anything worthwhile in a hundred milliseconds
17:02:00 <Vorpal> elliott, so while triggering it manually would be hard, it doesn't protect against the unintentional case always. Even if we (sensibly) ignore such things as the disk dying.
17:02:08 <elliott> CakeProphet: get off my back for a minute i'm busy dealing with Vorpal
17:02:13 <CakeProphet> sure.
17:02:23 <CakeProphet> no rush. I'm a patient person.
17:02:35 <Vorpal> elliott, right, but does it actually save the file all the time? What are the SSD wear implications of that. You have to write a full block every time
17:02:55 <CakeProphet> SSDs usually handle their own wear pretty well.
17:03:10 <elliott> people need to stop being paranoid about ssds
17:03:17 <Vorpal> yes, but this causes quite a lot of strain on the SSD, not on the level of swap on ssd, but still
17:03:34 <CakeProphet> depends on what kind of SSD we're talking about of course.
17:03:39 <CakeProphet> SDRAM SSD has no problem with any of that.
17:03:57 <Vorpal> CakeProphet, NAND-based SSD?
17:04:10 <Vorpal> as in, flash
17:04:35 <Vorpal> battery backed ram (which I think is what you suggested above?) is rather uncommon
17:05:02 <CakeProphet> they handle their own wear, like I said. Though there are more writes in this kind of system, it's not really much more than what a regular system does.
17:05:11 * CakeProphet watches the occasional spikes on his disk usage meter.
17:05:14 <elliott> 09:08:08: <CakeProphet> the only problem I can see is that programs could easily become possessive about their various documents, which would typically have free access by any other program but now must be explicitly shared.
17:05:15 <elliott> 09:08:19: <CakeProphet> good for security, I guess.
17:05:15 <elliott> 09:11:15: <CakeProphet> without a system-wide component to make these "files" available to other programs, you basically end up having to reinvent data sharing over and over instead of serialization/persistence.
17:05:15 <elliott> application model is obsolete, etc. etc., of course it sucks
17:05:35 <elliott> 10:31:35: <oklopol> CakeProphet: programs are so 60's though
17:05:35 <elliott> 10:31:47: <CakeProphet> oklopol: I.... no.
17:05:35 <elliott> 10:31:57: <oklopol> they are a retarded idea
17:05:35 <elliott> 10:32:11: <CakeProphet> I think programs are... a good idea?
17:05:35 <elliott> 10:32:14: <oklopol> from a user's perspective
17:05:36 <elliott> 10:32:20: <oklopol> you would be wrong
17:05:42 <elliott> oklopol is correct as always
17:05:51 <elliott> 10:32:24: <CakeProphet> from a programmer's perspective programs make perfect sense.
17:05:51 <elliott> s/a programmer's/my/
17:06:05 <elliott> 10:32:49: <CakeProphet> in any case how do you logically divide code.
17:06:05 <elliott> 10:33:13: <oklopol> err functions and shit?
17:06:05 <elliott> 10:33:35: <oklopol> just like i always do when i program
17:06:05 <elliott> 10:34:06: <oklopol> what i don't do is write multiple programs that interface each other clumsily just to have a nice logical division
17:06:05 <elliott> 10:34:15: <oklopol> programs are a retarded idea
17:06:07 <elliott> oklopol remains correct
17:06:27 <CakeProphet> elliott: I suppose the main problem I'm having with this system is how do I pass around control flow? continuations?
17:06:32 <Vorpal> elliott, what model are you suggesting instead of programs? Something like the squeak vm?
17:06:38 <elliott> 11:05:42: <CakeProphet> yeah try piping instead.
17:06:39 <elliott> 11:06:01: <CakeProphet> since using -e gives you the exec format error thing.
17:06:40 <Vorpal> (with a different language of course)
17:06:53 <CakeProphet> elliott: that's totally unrelated to this topic. :P
17:06:54 <elliott> CakeProphet doesn't realise that pipes aren't bidirectional, and Ngevd isn't here but just needs a wrapper shell script
17:07:24 <CakeProphet> you're not allowed to just grill all of my statements, only the relevant ones.
17:07:34 <elliott> CakeProphet: this is called logreading
17:07:53 <Vorpal> elliott, or some completely different model?
17:08:15 <elliott> 11:23:09: <hagb4rd2> according to RFC: USER <ident> <localhost> <remotehost> :<realname>
17:08:15 <elliott> this is obsolete
17:08:25 <elliott> Vorpal: CakeProphet: I'll answer after I finish the more important task
17:08:27 <elliott> i.e. logreading
17:08:32 <Vorpal> .
17:08:33 <CakeProphet> elliott: I believe, now that I've basically removed the concept of application, I now see how this might work.
17:08:41 <elliott> 11:26:28: <Vorpal> Ngevd, only IRCNet actually uses RFC 2812
17:08:47 <elliott> Vorpal: everyone supports the newer USEr command though
17:08:56 <Vorpal> elliott, well yeah
17:09:01 <Vorpal> elliott, but in full I mean
17:09:02 <elliott> s/r/R/
17:09:05 <elliott> well sure
17:09:09 <CakeProphet> elliott: something involving continuations I imagine. your code bits can communicate via functions, or, well, any other data they want.
17:09:13 <elliott> 11:45:28: <Ngevd> As far as I am aware, netcat has stopped working
17:09:14 <elliott> 11:49:38: <Ngevd> Hang on.
17:09:14 <elliott> 11:49:38: <Ngevd> Is freenode up?
17:09:14 <elliott> 11:50:51: <Ngevd> fungot, am I here?
17:09:14 <elliott> no
17:09:14 <fungot> elliott: the only type is the type of brainfuck cells is not specified where this delimiter is! nothing to churn the rest of the java framework in linj because i found the schemewiki.
17:09:44 <zzo38> My IRC client when I design, I try making it closely as possible to the RFC.
17:09:50 <Vorpal> ^style
17:09:50 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot homestuck ic irc* jargon lovecraft nethack pa sms speeches ss wp youtube
17:10:06 <zzo38> Although a lot of things are by macros anyways
17:10:10 <CakeProphet> elliott: the difficult part is still.. understanding how the entire system coherently fits together. But, then again, I'm not really sure I completely understand how that works in a typical system. :P
17:10:12 <Vorpal> hm, typed brainfuck.
17:10:33 <elliott> 13:23:29: <Taneb> Also, I just saw today's IWC
17:10:33 <elliott> 13:23:33: * Taneb sad
17:10:36 <elliott> HAHAHAHAHAHAHAHA I WAS RIGHT
17:10:38 <elliott> I WAS RIGHT
17:10:40 <elliott> ALL ALONG
17:10:42 <elliott> AHAHAHHAHAAHAHAHHAAHHAA
17:10:51 <zzo38> I think someone on this channel once tested it and found that my client is the only one following the RFC?
17:10:57 -!- Pietbot has joined.
17:11:01 <Vorpal> elliott, it will continue, in a different form
17:11:08 <elliott> Vorpal: not as a /webcomic/
17:11:11 -!- Ngevd has joined.
17:11:13 <Vorpal> elliott, true :(
17:11:14 <CakeProphet> elliott: so is preemptive multi-tasking even a thing here?
17:11:21 <Ngevd> Brilliant
17:11:23 <Vorpal> elliott, I think it is sad. I liked iwc.
17:11:24 <elliott> CakeProphet: god i just told you that i was logreading first
17:11:27 <Ngevd> )iiisso
17:11:28 <elliott> Ngevd: CakeProphet is wrong, a pipe won't work
17:11:31 <elliott> you need a wrapper shell script
17:11:37 <Vorpal> Ngevd, you want to read the log. netcat doesn't work like CakeProphet suggested
17:11:48 <elliott> don't bother reading the log
17:11:49 <Ngevd> TO THE INTERNET!
17:11:51 <elliott> Ngevd: put this in a file:
17:11:53 <elliott> #!/bin/sh
17:11:56 <elliott> pietinterpreter ./bot
17:12:01 <elliott> then chmod +x that file
17:12:07 <elliott> and nc.traditional -e ./thatfile irc.freenode.net 6667
17:12:28 <Vorpal> anyway you could make it work with fifos.
17:12:34 <elliott> 13:29:05: <Vorpal> The parentheses in the topic are unbalanced. Argh
17:12:35 <elliott> do you know who mccarthy is
17:12:46 <zzo38> And apparently the fact that my IRC client follows the RFC annoys some people?
17:12:48 <Vorpal> elliott, Lisp inventor?
17:12:50 <CakeProphet> the ) is symbolic of the ending of an era etc.
17:12:53 <Vorpal> ah
17:12:54 <Vorpal> I see
17:12:54 -!- Pietbot has quit (Read error: Connection reset by peer).
17:13:09 <CakeProphet> dunno why there are two )'s though.
17:13:14 <CakeProphet> a bit of a mixed metaphor if you ask me.
17:13:22 <Vorpal> nc ... <fifo1 >fifo2, and then pietbotwhatever < fifo2 > fifo1. Something like that should work
17:13:27 <elliott> CakeProphet: Gregor added that stupid thing
17:13:32 <elliott> Vorpal: fifos are hideous
17:13:34 <elliott> 14:53:46: <fizziet> let's try a HEAD.
17:13:34 <elliott> 14:54:13: <fizziet> just "unknown command", and GET did nothing.
17:13:34 <elliott> 14:54:28: <fizziet> maybe it's special-cased to only do a thing at connection initiation time.
17:13:41 <elliott> fizzie goes lowercase in nc conditions
17:13:43 <Vorpal> elliott, okay you could do it with bash fd magic I think too
17:13:56 <elliott> Vorpal: or -e
17:14:00 <Vorpal> elliott, sure
17:14:02 <CakeProphet> when I die I want a close parenthesis on my tombstone.
17:14:02 <elliott> or tie(1)
17:14:03 <CakeProphet> nothing else.
17:14:04 <elliott> (preferable)
17:14:06 <CakeProphet> it'll be all artsy.
17:14:09 <Vorpal> elliott, but then you need a wrapper script (for -e)
17:14:18 <Vorpal> elliott, anyway you could use socat I think
17:14:20 <elliott> Vorpal: so tie(1) :)
17:14:26 <Vorpal> but that is so flexible that it is hard to use
17:14:38 <zzo38> When I die I don't want a tombstone.
17:14:49 <CakeProphet> shoot zzo into outer space!
17:14:59 <Ngevd> I don't want to die
17:15:05 <zzo38> No! Reuse the body.
17:15:07 <elliott> Vorpal: tie(1)
17:15:11 <Ngevd> Sometimes I wish I never was born at all
17:15:17 <elliott> deep
17:15:28 <CakeProphet> I wouldn't mind dying right now.
17:15:29 <CakeProphet> why not.
17:15:31 <Vorpal> elliott, err:
17:15:32 <Vorpal> NAME
17:15:32 <Vorpal> tie - merge or apply WEB change files
17:15:36 <Vorpal> what?
17:15:49 <Vorpal> $ tie
17:15:50 <Vorpal> This is TIE, CWEB Version 2.4. (TeX Live 2009/Debian)
17:15:50 <Vorpal> Copyright (c) 1989,1992 by THD/ITI. All rights reserved.
17:15:50 <Vorpal> Usage: tie -[mc] outfile master changefile(s)
17:15:50 <CakeProphet> tie is totally a Perl thing, the word can be used for NO OTHER PURPOSE.
17:15:51 <elliott> Vorpal: that's a dumb tie, remove it
17:15:56 <CakeProphet> tie (c) Perl
17:16:05 <Vorpal> elliott, no, it is from TeX
17:16:12 <elliott> dumbe
17:16:27 <CakeProphet> elliott: let me know when you logread to the point of our latest conversation, so we can continue our conversation.
17:16:28 <zzo38> It can be useful if you have multiple change file for a WEB program
17:16:31 <Vorpal> elliott, well, it would likely break stuff. Which tie do you refer to
17:16:46 <CakeProphet> elliott: actually, once you reach the end of the log, you could probably just continue logreading, quote what I say, and reply
17:16:54 <elliott> Vorpal: tie p === fix (p |) -- with sharing
17:16:55 <CakeProphet> by the time you reply I will probably have more material for you to logread.
17:17:08 <zzo38> The format of change files is the same for WEB and CWEB
17:17:11 <elliott> Vorpal: ergo (tie 'nc host port | bot') = (tie 'bot | nc host port') = bot | nc host port | bot | nc host port | bot | ... with sharing
17:17:28 <Ngevd> My way of getting Pietbot to work was nc irc.freenode.net 6667 < botpipe | ./bot > botpipe
17:17:30 <Ngevd> It worked
17:17:39 -!- pikhq has quit (Ping timeout: 244 seconds).
17:17:45 <elliott> Ngevd: -e is nicer, also botpipe has to be a fifo there
17:17:45 -!- pikhq has joined.
17:17:52 <Ngevd> It is
17:18:28 <Vorpal> hm
17:18:31 <elliott> ok, now back to arguing
17:18:38 <elliott> <CakeProphet> elliott: I suppose the main problem I'm having with this system is how do I pass around control flow? continuations?
17:18:44 <CakeProphet> elliott: I totally have no intention to argue, but okay.
17:18:46 <elliott> what do you mean by "pass around control flow"
17:18:47 <Ngevd> I'll try -e again
17:18:52 <elliott> <Vorpal> elliott, what model are you suggesting instead of programs? Something like the squeak vm?
17:18:53 <Vorpal> Ngevd, with a wrapper script
17:18:55 -!- Pietbot has joined.
17:18:55 <Ngevd> Tell me when five minutes have happened
17:19:00 <Ngevd> Ooh, there we go
17:19:05 <Ngevd> )df iiisso
17:19:06 <elliott> Vorpal: i suppose it will pretty inevitably become clear as i try and figure out wtf CakeProphet is on about, so...
17:19:08 <Vorpal> Ngevd, 5 minutes? why?
17:19:15 <Ngevd> Doesn't matter now
17:19:23 <Vorpal> elliott, so not that then.
17:19:26 <Ngevd> That was when I would give up on Pietbot
17:19:52 <monqy> hi pietbot
17:20:12 <monqy> it doesn't say stupid things when you say its name does it :(
17:20:17 <Ngevd> No
17:20:20 <elliott> monqy: is that
17:20:23 <elliott> monqy: a jab
17:20:25 <elliott> monqy: against fungot
17:20:25 <fungot> elliott: that's intended. the idea is simple: merge-pathnames is a good idea,
17:20:30 <Ngevd> It should have a deadfish interpreter
17:20:32 <Ngevd> )q
17:20:35 <monqy> it's not against fungot!!!
17:20:36 <fungot> monqy: to go off and do their own thing, here. bf is too slow for it to use
17:20:38 <Ngevd> That should make it quit
17:20:44 <monqy> it's uh
17:20:46 <Vorpal> Ngevd, well, it isn't working
17:20:52 <monqy> fungot friendship
17:20:52 <fungot> monqy: computer in what manner to combine them.
17:21:02 <CakeProphet> elliott: okay so one chunk of code lets the user edit text files, another chunk probably plays music, another probably loads and displays web pages, etc. There are a lot of unrelated bits of code that are probably not cooperating in any way. How are they scheduled to run with the semblance of simultaneity.
17:21:02 <Ngevd> Vorpal, you've identified the main problem
17:21:08 <Vorpal> Ngevd, heh
17:21:24 <elliott> CakeProphet: I see! when you said you'd stripped away the concept of program, you meant: I haven't
17:21:26 <Vorpal> anyway fungot is the only esolang irc bot I know of that doesn't depend on nethack or a similar helper
17:21:27 <fungot> Vorpal: http://www.frikateers.com/ bilder/ sr/ 001/ hw1.html here's the assignment, contains the picture is all black.
17:21:54 <CakeProphet> elliott: so there is no such thing as multitasking? that is not a thing anymore?
17:22:09 -!- Pietbot has quit (Remote host closed the connection).
17:22:11 <fizzie> Vorpal: Nethack?-)
17:22:34 <elliott> CakeProphet: so are you just gonna say "so what you mean is Y" for every X that I say
17:22:34 <monqy> catnet
17:22:38 <elliott> where X is totally unrelated to Y
17:22:39 <zzo38> If the entire system is one functional Haskell program or something like that, then you don't need individual program you can just compose the functions you need.
17:22:59 <fizzie> fungot: Do you "depend" on nethack in the sense that you stop working if you can't play every now and then?
17:22:59 <fungot> fizzie: these kids today, with their long hair, dope, and silly abbreviations...) and how it works.
17:23:00 <elliott> `addquote
17:23:02 <elliott> oops
17:23:02 <HackEgo> No output.
17:23:04 <elliott> `addquote <Vorpal> anyway fungot is the only esolang irc bot I know of that doesn't depend on nethack or a similar helper
17:23:05 <fungot> elliott: i like the wiki and is at http://ll1.ai.mit.edu/ shriram-talk.pdf the
17:23:06 <HackEgo> 699) <Vorpal> anyway fungot is the only esolang irc bot I know of that doesn't depend on nethack or a similar helper
17:23:15 <CakeProphet> elliott: I was under the impression that that's what you were doing, but anyway...
17:23:15 <elliott> `addquote <fungot> fizzie: these kids today, with their long hair, dope, and silly abbreviations...) and how it works.
17:23:16 <fungot> elliott: what do you expect to know the name, trying to install drscheme 207 i get an ordered list of counts of messages/ day each area gets. it's tolerable, though.
17:23:18 <HackEgo> 700) <fungot> fizzie: these kids today, with their long hair, dope, and silly abbreviations...) and how it works.
17:23:28 <CakeProphet> elliott: regardless of whether you call them programs or not, any modern operating system is going to manage the execution of code that performs these kinds of tasks for the benefit of a user. no?
17:23:37 <CakeProphet> they can be organized differently, sure.
17:23:46 <monqy> 700 wow
17:23:50 <elliott> CakeProphet: what you say is technically true, but you're about to make unwarranted assumptions based on it being true
17:23:51 <CakeProphet> but they still exist. or should, anyway. otherwise your wonderful perfect system does absolutely nothing useful.
17:23:55 <monqy> `quote long hair, dope, and silly abbreviations
17:23:58 <HackEgo> 700) <fungot> fizzie: these kids today, with their long hair, dope, and silly abbreviations...) and how it works.
17:24:08 <monqy> no others?
17:24:14 <monqy> ^style
17:24:14 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot homestuck ic irc* jargon lovecraft nethack pa sms speeches ss wp youtube
17:24:14 <elliott> `pastelogs long hair, dope, and silly abbreviations
17:24:40 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.32223
17:24:45 <CakeProphet> elliott: no, I am seeking answers, not trying to make assumptions. when you don't provide answers but instead take what I say and make it sound irrelevant to the system, I learn absolutely nothing and must rely on assumptions. Do you see how this works?
17:25:17 <elliott> i can't give you answers if you keep blankly asserting "X must be done and therefore" for various X
17:25:35 <Ngevd> You can say how the assumptions are wrong
17:26:28 <CakeProphet> elliott: basically I suppose I'm asking: how does multitasking exist without processes.
17:26:49 <elliott> Cake "threads are processes" Prophet
17:27:02 <elliott> Ngevd: not when they're of the not-even-wrong form
17:27:10 <CakeProphet> Cake "threads and processes are programs which don't exist anymore apparently" Prophet.
17:27:43 <monqy> monqy "help whats happening this is stupid" monqy
17:27:46 <elliott> Cake "threads [...] are programs" "I'm not actually putting words into his mouth any more at this point" Prophet
17:27:49 <CakeProphet> monqy "monqy" monqy
17:28:19 <Ngevd> elliott "I'm being tricky and perverse" hird
17:28:31 * elliott tricky and perverse
17:28:42 <monqy> hird
17:29:07 <CakeProphet> ...I.. don't know where to go from here.
17:29:18 <monqy> elliott too tricky and perverse for you?
17:29:45 <Ngevd> elliott, you should go work for GNU. Then you can say "Well, HURD may not be my middle name, but HIRD is my last name"
17:29:49 <Vorpal> <elliott> `addquote <Vorpal> anyway fungot is the only esolang irc bot I know of that doesn't depend on nethack or a similar helper <-- gah the typo
17:29:49 <fungot> Vorpal: brainfuck program taking too long.
17:29:53 <Vorpal> netcat of course
17:30:15 <Ngevd> fungot, don't all brainfuck programs
17:30:15 <fungot> Ngevd: kuribas pasted " sqlite3 fnord" at http://paste.lisp.org/ display/ fnord)? conceptually, at least afaik
17:30:18 <CakeProphet> the situation is similar to trying to peek around to the other side of a large infinite brick wall that reaches up to the ceiling of an infinite room. I can only walk along its side until I find a door, but I haven't found it yet.
17:30:31 <elliott> <Ngevd> elliott, you should go work for GNU. Then you can say "Well, HURD may not be my middle name, but HIRD is my last name"
17:30:33 <CakeProphet> I have no jackhammer or explosives.
17:30:39 <elliott> Ngevd: i don't think gnu is a corporation
17:30:46 <elliott> CakeProphet: deep.
17:30:49 <Ngevd> You should make it a corporation
17:30:53 <CakeProphet> those kinds of things are allowed in this metaphor.
17:30:56 <CakeProphet> *aren't
17:30:58 <Ngevd> And then go to press conferences
17:32:03 <Phantom_Hoover> elliott, oh, you know how you were putting off reading IWC?
17:32:10 <Ngevd> Or possibly get Canonical to make Ubuntu HURD, and then work for them
17:32:10 <elliott> Phantom_Hoover: Wait.
17:32:11 <elliott> Wait
17:32:12 <elliott> Let me guess
17:32:17 <elliott> He's only doing annotations now?
17:32:21 <Phantom_Hoover> You heard?
17:32:28 <elliott> No I'm just a genius.
17:32:58 <Phantom_Hoover> Anyway, you have MISSED YOUR CHANCE now.
17:33:17 <CakeProphet> elliott: I'm basically just not finding a distinction.
17:33:18 <Vorpal> <Phantom_Hoover> You heard? <-- yes, he log read above
17:33:22 <elliott> Phantom_Hoover: FSVO missed your chance.
17:33:33 <elliott> Vorpal: Dude, I read new IWC strips, I just haven't bothered binging yet.
17:33:47 <Vorpal> ah
17:34:00 <Vorpal> elliott, how does it make any sense that way
17:34:02 <elliott> CakeProphet: forkIO (threadDelay 1000000 >> putMVar foo "abc") -- this is a thread so it must be an application
17:34:16 <elliott> Vorpal: because the plot didn't advance for years? :P
17:34:23 <Vorpal> hm true
17:34:35 <Phantom_Hoover> Vorpal, because until around two weeks ago IWC was a gag-a-day strip.
17:34:50 <CakeProphet> elliott: in "there are no programs but instead these sequences of code that do unrelated tasks and execute concurrently" and "there are programs and they exist as sequences of code that do unrelated tasks and execute concurrently"
17:34:58 <elliott> Phantom_Hoover: You forgot the universe-blowing-up plotlines.
17:35:11 <Phantom_Hoover> elliott, plotline, singular.
17:35:21 <elliott> Phantom_Hoover: Fair enough.
17:35:23 <Vorpal> Phantom_Hoover, yeah good point, the plot was going forward when I began reading it. It was around when the fantasy theme first went through that portal thingy between the two villages.
17:35:40 <Phantom_Hoover> You mean well over a year ago?
17:35:45 <CakeProphet> elliott: it's not an application, but if you put a "main =" in front of that you have defined a program.
17:35:46 <Phantom_Hoover> More, even?
17:35:52 <Vorpal> Phantom_Hoover, yeah
17:36:10 <elliott> CakeProphet: You use program to strictly mean "concurrently-running sequence of code", and then switch to "something like a typical GNOME application"
17:36:11 <Phantom_Hoover> And the plots all moved forwards without actually getting anywhere.
17:36:14 <Ngevd> I registered my account on the forums in 2007
17:36:19 <Vorpal> anyway I feel that the fantasy theme got a somewhat abrupt ending. Got through that swap way to quick
17:36:23 <CakeProphet> elliott: I do?
17:36:27 <elliott> CakeProphet: So because I assert that there are concurrently-running sequences of code, you insist that "oh there have to be text editor applications".
17:36:42 <elliott> "okay so one chunk of code lets the user edit text files, another chunk probably plays music, another probably loads and displays web pages"
17:36:46 <Phantom_Hoover> Oh god don't tell me you're trying to explain @ to CakeProphet.
17:36:47 <elliott> earlier, you talked about a word processor
17:36:53 <CakeProphet> elliott: not at all. Rather, there must be a program that edits text, or as least part of the process of editing text.
17:36:56 <elliott> so yeah, I can't prove you wrong because you're conrtadicting yourself!
17:37:03 <elliott> CakeProphet: woot, you just switched back over to the other definition
17:37:12 <CakeProphet> elliott: I've been using the first definition the entire time.
17:37:20 <CakeProphet> elliott: because it is a meaningless distinction..
17:37:25 <elliott> hahaha
17:37:26 <CakeProphet> in the first place.
17:37:31 <elliott> concurrent running sequence of code == WIMP application
17:37:38 <elliott> this is why <elliott> CakeProphet: forkIO (threadDelay 1000000 >> putMVar foo "abc")
17:37:45 <elliott> is an application
17:37:58 <elliott> look at that UI. look at those menus.
17:38:11 <CakeProphet> I never really mentioned applications. I've been talking about programs. concurrent running sequence of code == program
17:38:18 <CakeProphet> text editor == program
17:38:22 <CakeProphet> possibly a composition of many programs.
17:38:23 <Phantom_Hoover> CakeProphet, OK, look, you know Jade's OS in Homestuck?
17:38:27 <CakeProphet> Phantom_Hoover: sure.
17:38:32 <Phantom_Hoover> That's @.
17:38:33 <elliott> Phantom_Hoover: That has applications, you dolt.
17:39:04 <Phantom_Hoover> elliott, are you saying @ doesn't have applications or is CakeProphet.
17:39:10 <elliott> Phantom_Hoover: I am.
17:39:19 <monqy> @ innovation
17:39:19 <CakeProphet> why the fuck would I be saying what @ has
17:39:20 <elliott> The application-centric model has been obsolete for approximately ever.
17:39:26 <CakeProphet> when I don't even completely get what elliott is talking about.
17:39:57 <monqy> i want @
17:39:59 <Ngevd> Stand back, I have an idea.
17:40:01 <Vorpal> elliott, I can several ways it can drop the concept of applications. Which way do you do it? Please don't make the entire OS like a huge mathematica notebook with everything insertable everywhere in it. Actually do it, it would be quite amusing
17:40:13 <Ngevd> elliott, say I'm from the future, and use @, and want to chat on IRC.
17:40:15 -!- derdon has quit (Remote host closed the connection).
17:40:18 <Ngevd> How would I do that?
17:40:29 <CakeProphet> definitely not with an application.
17:40:32 <CakeProphet> I can say.
17:40:33 <CakeProphet> for sure.
17:40:34 <monqy> in the future, all problems have been solved
17:40:45 <monqy> "thanks @"
17:40:55 <elliott> Ngevd: In the future we use telepathy but I GUESS I can pretend the future is totally inferior as soon as I respond to Vorpal???
17:40:58 <elliott> monqy: Shut up @ is the best.
17:41:15 <Phantom_Hoover> elliott, I assume some functions will be bundled together into something resembling a conventional application?
17:41:17 <Ngevd> elliott, maybe I'm a history buff
17:41:27 <elliott> Phantom_Hoover: Nope! I thought you understood @.
17:41:27 <monqy> i know it's the best ;_; this is why it has solved all problems ;_;
17:41:32 <Vorpal> elliott, well there are a few other obvious way to drop the concept of applications, probably quite a few non-obvious as well.
17:41:42 <elliott> Vorpal: That just makes me think of Archy zoom UI stuff.
17:41:46 <elliott> Re: Notebook.
17:41:50 <Vorpal> err?
17:41:56 <Phantom_Hoover> elliott, nononono, I mean purely conceptually.
17:42:00 <Vorpal> elliott, what is "Archy zoom UI"?
17:42:17 <elliott> Phantom_Hoover: Eh?
17:42:19 <CakeProphet> I wasn't aware we were discussing anything other than concepts... -_-
17:42:19 <Vorpal> guess I'll DDG it
17:42:19 <Phantom_Hoover> Like, you'd never use some of them without others.
17:42:32 <elliott> Vorpal: It's like Canon Cat but newer.
17:42:37 <Phantom_Hoover> Also dinner.
17:42:39 <elliott> I guess that only works if you know what the Canon Cat is.
17:42:42 <Ngevd> Is there any pretty pictures that anyone can see of concept for @?
17:42:45 <Vorpal> elliott, alas I'm not familiar with that either
17:42:55 <elliott> Ngevd: OK give me a minute and I'll answer your question.
17:43:53 <Vorpal> elliott, anyway there is one thing that always seems to end up like an application to my mind. And that is games. If @ gets big people will want to play 3D RPG/FPS/racing/whatever games on it.
17:44:28 <CakeProphet> perhaps I just have a loose definition of what a program is.
17:46:13 <CakeProphet> in my mind a function is a program. a function can invoke an entire application. in my mind application means "a program that computes things relevant to a particular human-oriented task"
17:46:27 <elliott> Ngevd: @'s UI, as I've previously stated, isn't actually fully decided yet; there are a great many directions it could go in and I need to narrow the field after I've worked out some details about the internals. But note that the original subject of this "discussion" wasn't actually @, so I'll just pick one possible non-application-centric UI: something similar to Emacs. Here's one way it could go: You would press some shortcut key for "open", typ
17:46:27 <elliott> e in irc://irc.freenode.net/esoteric, and it would load up a buffer containing the channel, which would then be interacted with by writing into it (if you've used ERC, similar to that). You could then open other channels in other buffers and manage them with screen-splitting and the like just like with regular Emacs. (This probably isn't what @'s UI will look like, but it's one possible non-application-centric orthogonal-persistence-supporting UI.)
17:47:14 <Vorpal> better than the notebook at least
17:48:30 <Vorpal> elliott, anyway, what about a full-screen 3D FPS game for @. Would that not qualify as an application in some senses of the word application?
17:49:06 <CakeProphet> I'd like to know elliot's definitions of program and application. they are apparently different from mine.
17:49:17 <elliott> Vorpal: Only with a bad definition of application. Some aspects I could imagine changing, e.g. you would probably create and manage Minecraft worlds outside of Minecraft, and simply open them when relevant, but that's a very minor distinction.
17:49:32 <Vorpal> hm
17:49:57 <elliott> CakeProphet: I don't think that's your definition of application, because you react with incredulity whenever I suggest that there is no such thing as a word processor as you know it.
17:50:45 <CakeProphet> I don't believe you ever made that suggestion.
17:51:00 -!- evincar has joined.
17:51:07 <Vorpal> elliott, so assuming you wanted WYSIWYG editing of a letter for printing. What would you do on @? Just out of pure interest.
17:53:14 <CakeProphet> elliott: removing old concepts without replacing them doesn't suddenly make everything clear. it just leaves a void to be filled.
17:53:15 <elliott> Vorpal: WYSIWYG is overrated. It'd be possible, but I'm disinclined to work out how, as it probably doesn't fit too strongly into the @ model of things.
17:53:25 <elliott> CakeProphet: Sure it does.
17:53:48 <CakeProphet> it's honestly not that difficult to explain something in terms that someone with a slightly different perspective can understand.
17:53:57 <elliott> CakeProphet: If there was a decades-old operating system principle that every OS had a big picture of a cow in the top-left corner of every system, removing that would be an obvious improvement with no need to be replaced.
17:53:57 <Vorpal> elliott, well, if we drop the WYSIWYG requirement then? I would need some sort of editor for writing LaTeX code or some other system in
17:54:03 <CakeProphet> without demanding they already understand it in order to proceed, essentially.
17:54:24 <Phantom_Hoover> elliott, erm, anyway, re applications.
17:54:34 <elliott> If there was a principle that every text box is split into subboxes of five words long, and it was impossible for them to interact without manually moving between them, removing that would be an obvious improvement. (Hint: This is a metaphor for the application-centric model.)
17:54:41 <monqy> pictures of cows in the top left would be great
17:54:45 <monqy> the improvement would be adding more cows
17:54:46 <Phantom_Hoover> Let us suppose one wants to browse the web. How would one go about this?
17:54:49 <elliott> monqy: Yes but CakeProphet is awful and would not agree.
17:55:00 <Vorpal> elliott, yes you would replace it with something. Be it black pixels or extra area available to display other stuff.
17:55:24 <elliott> Phantom_Hoover: I'm really bored of these sorts of questions since this is the third one I've been asked in the last five minutes. Especially since the web basically contains a bad implementation of several of @'s principles, so it's a fairly ugly mapping. (But a possible one.)
17:55:26 <CakeProphet> elliott: okay we have not really been talking about different things this entire time.
17:55:43 <Vorpal> <elliott> If there was a principle that every text box is split into subboxes of five words long, and it was impossible for them to interact without manually moving between them, removing that would be an obvious improvement. (Hint: This is a metaphor for the application-centric model.) <-- sounds like entering CD-key on Windows 9x
17:55:54 <CakeProphet> elliott: in CakeProphetLand applications can have absolutely no barriers between them and still be applications.
17:55:55 <elliott> Vorpal: heh
17:55:56 <Phantom_Hoover> elliott, browsing the web is irrelevant. Use IRC instead.
17:55:57 <CakeProphet> it's an exciting place to be.
17:56:09 <elliott> Phantom_Hoover: I literally just answered that, so logread or whatever.
17:56:29 -!- Ngevd has quit (Ping timeout: 240 seconds).
17:56:40 <elliott> CakeProphet: No, they have the restriction of being applications. Applications are boxes that neccessarily restrict functionality into operating within their confines.
17:57:13 <CakeProphet> bah, in any case, I didn't even want to talk about applications
17:57:19 <CakeProphet> I was talking about programs until applications were mentioned.
17:57:22 <evincar> But, isn't that a good thing? Modularity, composability through uniform interfaces, etc.?
17:57:47 <CakeProphet> you can have all of those things without applications.
17:58:38 -!- ais523 has joined.
17:58:47 <evincar> elliott, I think you're being unnecessarily hand-wavey about @ and the user experience of it.
17:59:26 <CakeProphet> elliott: in a system where applications no longer communicate in streams of encoded character data, but with data structures, I'm not really sure there's a restriction there.
17:59:36 <Vorpal> elliott, anyway, what is your definition of an application. To me it is a set of code designed to display (on some output device, such as a screen or a Braille display) some arrangement of pixels (or whatever said display uses, obviously not pixels for a Braille display) that the user can interact with using input devices in a meaningful way to perform some action that has a meaning in the human world.
18:00:00 <evincar> People ask "how do you do X?" and the response is "well, you don't, at least not that way" with nothing substantive afterward.
18:00:29 <Vorpal> ais523, download for c-intercal is down.
18:00:58 <ais523> Vorpal: your fault?
18:00:58 <lambdabot> ais523: You have 1 new message. '/msg lambdabot @messages' to read it.
18:01:01 <Vorpal> ais523, ... no
18:01:02 <ais523> @messages
18:01:02 <lambdabot> Vorpal said 2h 29m 46s ago: It seems that the http download server for c-intercal (overload.intercal.org.uk) is down (at least over IPv6, trying anything else is somewhat annoying). I don't know who
18:01:02 <lambdabot> can fix that, but maybe you do?
18:01:10 * ais523 is a rebel
18:01:21 <ais523> Vorpal: intercal.org.uk is run by Claudio Calvelli
18:01:30 <Vorpal> ais523, right, you presumably know who to contact then?
18:01:35 <Vorpal> I don't know his email or anything
18:01:56 <Vorpal> it has been down all day
18:02:12 <ais523> Vorpal: clc@intercal.org.uk
18:02:36 -!- pikhq has quit (Ping timeout: 244 seconds).
18:02:44 -!- pikhq has joined.
18:02:49 <Vorpal> ais523, you don't care enough to mail yourself? Anyway elliott confirmed it was unreachable over ipv4 too
18:03:30 <ais523> Vorpal: no, I don't care enough
18:03:34 <ais523> the development source is still around
18:03:37 <Phantom_Hoover> evincar: would you please shut up, or haven't you cottoned onto the fact that nobody wants to talk to you?
18:03:40 <ais523> and it even has tags so you could get specific versions
18:03:57 <Vorpal> ais523, not easy for making a package
18:04:27 <evincar> Phantom_Hoover: I don't really mind. As far as I'm concerned, you're just text on a screen.
18:04:27 <CakeProphet> anyway, I don't think it's reasonable to demand complete and detailed answers about an operating system that's in very very early stages of development.
18:04:38 <elliott> evincar: I think you joined about ten minutes ago in the middle of this, know almost nothing about @, and are also intolerable to talk to, so... I guess we both have problems. Also related to the first statement there, you don't actually realise that this was never actually about @ in the first place because you have missed about 90 percent of it, so responding to what you said would basically be a painful trainwreck.
18:04:44 <elliott> So I'll answer Vorpal instead.
18:05:35 <elliott> <Vorpal> elliott, anyway, what is your definition of an application. To me it is a set of code designed to display (on some output device, such as a screen or a Braille display) some arrangement of pixels (or whatever said display uses, obviously not pixels for a Braille display) that the user can interact with using input devices in a meaningful way to perform some action that has a meaning in the human world.
18:05:49 <elliott> Vorpal: "Application" is basically universally used to mean "WIMP-style application", even by those who claim to have a more broad view of it :)
18:06:00 <elliott> Vorpal: Unless you consider wc an application.
18:06:12 <CakeProphet> elliott: I, don't use that definition.
18:06:14 <CakeProphet> really, I don't.
18:06:16 <Vorpal> elliott, yes.
18:06:28 <elliott> Vorpal: What about
18:06:28 <Phantom_Hoover> I stand by my definition of a program (obviously this needs tweaking for @) which requires direct human interaction for normal function.
18:06:29 <elliott> :t id
18:06:30 <lambdabot> forall a. a -> a
18:06:32 <elliott> Vorpal: ?
18:07:07 <Vorpal> elliott, that is a different meaning of application, if you are talking about applying a function to something. It doesn't interface with an user unless you run it from ghci or similar.
18:07:08 <CakeProphet> elliott: I think I see our miscommunication now, and perhaps understand a little better what you mean by a lack of applications.
18:07:21 <elliott> Vorpal: wc :: String -> (Integer, Integer, Integer)
18:07:33 <ais523> elliott: do you consider Emacs an application?
18:07:34 <elliott> Vorpal: wc is exactly as much of an application as id is.
18:07:40 <elliott> Vorpal: (With your definition.)
18:07:41 <Vorpal> elliott, sure, if ghci is the user interface then wc is an application, and so is id
18:07:59 <elliott> ais523: I don't know which definition of application we're using; Vorpal has one far more general than most people's.
18:08:12 <Phantom_Hoover> Use mine, it is the best </plug>
18:08:17 <olsner> oh how interesting, are we discussing the definition of the word application?
18:08:18 <ais523> elliott: neither do I, that's why I'm asking questions to try to find out
18:08:37 <elliott> olsner: No.
18:08:40 <zzo38> I think the solar time is really an Arabic Part formula! (but with equatorial coordinates rather than ecliptic)
18:08:46 <olsner> elliott: Good.
18:08:59 <Vorpal> elliott, but if you mean WIMP application, yes indeed, it might not be there. That said, WIMP style application could be appropriate to some situations I guess, I haven't seen any evidence that it can't be.
18:09:04 <elliott> olsner: CakeProphet decided to use two definitions simultaneously (one of which I have no idea what it is) and now everyone else is on a journey to self-discovery to figure out which definition they use.
18:09:10 <Vorpal> but a lot of stuff is shoehorned into that
18:09:23 <CakeProphet> elliott: that's not true.
18:09:34 <CakeProphet> I have used exactly one definition of application.
18:09:37 <elliott> olsner: Relatedly, CakeProphet has been saying things are not true a lot.
18:09:55 <zzo38> It seem to me that it must be, even though I can find nothing about it in anything about sidereal time, solar time, Arabic Parts, or whatever.
18:10:32 <olsner> Relatedly, I think I'll go watch DS9 instead
18:10:50 <elliott> olsner: Spoiler: Bashir's hands are magnetic.
18:11:07 <CakeProphet> olsner: typically involving claims elliott has made involving me. (Is it okay if I speak indirectly through you?)
18:11:20 <CakeProphet> it is? cool.
18:11:51 <Phantom_Hoover> elliott, well, it was revealed early in season 2, so it's not a huge spoiler.
18:12:09 <Vorpal> elliott, anyway while wc may not end up as a /program/ (running in a separate memory space, if that concept is even relevant in your model), there has to be some sort of separation between, say, a piece of code that has login information loaded and minecraft-for-@
18:12:35 <zzo38> Does oerjan know about Arabic Parts?
18:12:39 <elliott> Yes.
18:12:42 <elliott> Ask him about them.
18:13:49 <Vorpal> elliott, anyway, I still fail to see how something like a game would not end up as an application in the sense that you are using. Or are you saying that just because a game doesn't have a menubar on the top it isn't an application already?
18:13:52 <Phantom_Hoover> Incidentally, I did find the panel with Jade's OS and it has conventional applications; I retract my objection to elliott's objection.
18:14:07 <Vorpal> besides I know games that have menu bars. Freeciv iirc is an example of that
18:14:07 <zzo38> At what time is oerjan on?
18:14:11 <elliott> Phantom_Hoover: thank god
18:14:16 * elliott salutes america
18:14:36 * Phantom_Hoover plays "God Save The Queen".
18:14:47 <Vorpal> elliott, so, how do you figure a game is not an application in your sense of the word?
18:14:48 <Phantom_Hoover> Except I always confuse God Save The Queen with the wedding march.
18:15:05 <elliott> Vorpal: games don't act much like applications anyway, outside of their main menu interface (which is erratic by normal os statements), anyway it's stupid because you're just doing the thing wher you latch on to a specific case and generalise it to the whole thing :)
18:15:17 <elliott> "games are KIND OF SORT OF KIND OF like WIMP applications, therefore @ is impossible"
18:15:21 <CakeProphet> Vorpal: conceptual and time separation, sure, but not actual system separation, I think? as in, they're just code sequences that aren't really barred from communicating between each other in ways that components of an application do.
18:15:38 <Phantom_Hoover> elliott demonstrates again his "I hate you die :)" tendency.
18:15:45 <CakeProphet> if I understand correctly, the entire operating system sort of acts as the only real application.
18:15:45 <zzo38> It would depend on the game, I think.
18:15:50 <Vorpal> bbl food
18:16:17 <monqy> @: the wimpiest os
18:16:17 <lambdabot> Maybe you meant: . ? @ v
18:16:24 <monqy> yes lambdabot thank you
18:16:38 <elliott> Phantom_Hoover: lol
18:16:53 <CakeProphet> elliott: please stop me whenever you want.
18:18:52 <zzo38> If you have a system that is really a Haskell program that you install various modules, and then compose functions, and the typeclasses can also be used to make one function work with another, and so on.....
18:19:40 <monqy> a beautiful system
18:19:43 <monqy> until it isn't
18:19:45 <elliott> Vorpal: btw you can remove the !makeflags thing
18:20:08 <elliott> and that sh dependency looks dubious
18:20:10 <CakeProphet> elliott: how many programming languages do you estimate @ will obsolete upon its fierce yet magnanimous inception.
18:20:17 -!- cheater has joined.
18:20:25 <elliott> depends what you mean by obsolete
18:20:53 <CakeProphet> make all of their application-centric stuff no longer making of sense.
18:21:51 <CakeProphet> I imagine a Haskell function calling a Perl subroutine and my brain kind of explodes. I guess.
18:22:27 <elliott> @ won't support most programming languages as natively as @lang, if that's what you mean.
18:22:46 <CakeProphet> I suppose.
18:23:10 <CakeProphet> not what I meant, but it clarifies my question.
18:23:52 <Vorpal> back
18:24:13 <Vorpal> <elliott> Vorpal: btw you can remove the !makeflags thing
18:24:14 <Vorpal> <elliott> and that sh dependency looks dubious
18:24:15 <Vorpal> in what?
18:24:18 <Vorpal> c-intercal?
18:24:24 <elliott> yes
18:24:26 <Vorpal> elliott, I think the sh dep was because of -F
18:24:30 <Vorpal> which generates a shell script
18:24:33 <CakeProphet> elliott: also some of the stuff I said earlier: I noticed you didn't really refute anything I said. Is that because I'm correct or because you got tired of me being wrong? :P
18:24:34 <Vorpal> that produces the same output
18:24:37 <ais523> elliott: there's a dependency on some shell
18:24:41 <ais523> that's sh-compatible
18:24:45 <ais523> also, I think there's a dependency on cat
18:24:45 <elliott> Vorpal: that's not a dependency
18:24:58 <elliott> Vorpal: otherwise a gcc cross compiler would depend on the target cpu :)
18:24:58 <Vorpal> elliott, anyway I can't update it until the site is up
18:25:09 <Vorpal> elliott, I think it was a dep not a makedep?
18:25:14 <elliott> ais523: what is the sh dependency for?
18:25:18 <elliott> Vorpal: you're confused about what a makedep is
18:25:23 <elliott> Vorpal: this is a /compiler/
18:25:28 <elliott> Vorpal: the dependencies on the output code are irrelevant
18:25:29 <Vorpal> elliott, one that is needed when building ick
18:25:32 <Vorpal> hm
18:25:49 <elliott> Vorpal: like, if you packaged an intercal program, c-intercal would be a makedep
18:25:52 <elliott> and sh would be a dep
18:25:55 <elliott> if it was compiled with -F
18:26:06 <Vorpal> elliott, anyway I won't touch the thing until the download is up again
18:26:07 <ais523> elliott: sh is needed while compiling the program too, IIRC
18:26:25 <elliott> ais523: hmm, why?
18:26:37 <ais523> because it uses a wrapper script during the test run, I think
18:26:41 <Vorpal> anyway sh could be removed because it is implied by base I think
18:26:42 <ais523> perhaps it doesn't, I can't really remember
18:26:45 * elliott is curious about the cat dependency too :P
18:27:04 <CakeProphet> no use reinventing the wheel.
18:27:21 <CakeProphet> might as well depend on an incredibly trivial piece of code.
18:28:56 <Vorpal> ais523, what did you say the email was again?
18:29:03 <Vorpal> I have time to send one now
18:30:10 <Vorpal> actually, never mind, I'm getting a headache... bbl
18:30:25 <ais523> elliott: because the shellscript calls cat
18:30:37 <elliott> including the wrapper one? :P
18:30:52 <ais523> no
18:30:54 <ais523> well, probably
18:30:59 <ais523> for all I know it calls diff
18:31:05 <ais523> wait, no it doesn't, that would be stupid
18:31:07 <ais523> it possibly calls grep, though
18:31:19 <olsner> hmm, sisko on a space sailing ship talking about how it's absolutely quiet ... but they're still playing that background hum
18:32:10 <elliott> olsner: The ship doesn't make that hum.
18:32:11 <elliott> Sisko does.
18:32:18 <Phantom_Hoover> It's all the fuming.
18:32:27 <olsner> elliott: oh, ok
18:32:54 <Phantom_Hoover> olsner, have I ever mentioned that that was the episode that led to me concluding that the Cardassian Occupation was basically DF in space.
18:32:54 <olsner> hmm, but how can he be making that hum on ds9 when he's out space sailing?
18:33:38 <elliott> olsner: you have no idea how loud the hum truly is.
18:34:11 <olsner> Phantom_Hoover: if you have mentioned that, I wouldn't know you were speaking about this episode as I have not yet seen it
18:34:16 -!- cheater has quit (Read error: Connection reset by peer).
18:34:32 <Phantom_Hoover> olsner, the hum on DS9 is caused by Bashir's hands.
18:34:33 <olsner> plus I ignore everything about dwarf fortress (if that's what DF stands for)
18:35:10 -!- cheater_ has joined.
18:35:28 <elliott> Phantom_Hoover: Ah.
18:35:30 <CakeProphet> elliott: you should definitely call off @ in favor of a totally more awesome text-based game than df.
18:35:40 <elliott> EC is more awesome than DF.
18:35:45 <Phantom_Hoover> DF isn't text-based, you dunce.
18:35:51 <CakeProphet> so we can argue about minute conceptual differences for hours.
18:36:00 <CakeProphet> (such as what a text-based game is, apparently)
18:36:15 <monqy> what is a "text-based"
18:36:37 <monqy> as in textual IF?
18:36:45 <CakeProphet> monqy: "help what is english"
18:36:55 <monqy> do you know?
18:37:08 <CakeProphet> depends on what IF stands for.
18:37:26 -!- cheater_ has quit (Excess Flood).
18:37:43 <elliott> CakeProphet: "help what is english"
18:38:00 -!- cheater_ has joined.
18:38:29 <Phantom_Hoover> elliott, it's Sollux.
18:38:40 <elliott> Phantom_Hoover: Ah, yes.
18:38:50 <monqy> CakeProphet: if as in interactive fiction
18:38:54 <monqy> CakeProphet: the only if
18:38:57 <CakeProphet> sorry can't expand arbitrary sequences of characters into non-ambiguous phrases.
18:39:28 <CakeProphet> monqy: no being interactive fiction has nothing to do with also being text-based.
18:39:38 <CakeProphet> interactive fiction can have pictures.
18:39:42 <monqy> hence textual
18:40:17 <CakeProphet> I suppose interactive fiction is text-based, but there are plenty of other kinds.
18:40:34 <CakeProphet> essentially where text/characters are used in favor of, well, "graphics"
18:40:59 <monqy> what makes something text/characters instead of "graphics"
18:41:03 <CakeProphet> MUDs, rogue-likes, some interactive fiction, dwarf fortress.
18:41:09 <monqy> I would consider roguelikes, for example, to be graphical
18:41:19 <CakeProphet> monqy: being composed of text and characters instead of other things that are made of pixels but aren't those
18:41:30 <monqy> what a dumb distinction
18:41:47 <CakeProphet> okay
18:42:35 -!- cheater_ has quit (Excess Flood).
18:44:11 <CakeProphet> how else could I distinguish between Dwarf Fortress and Grand Theft Auto or Solitaire in a way that specifically refers to the type of graphics.
18:44:28 -!- ive has quit (Ping timeout: 248 seconds).
18:45:32 <Phantom_Hoover> Tile-based.
18:46:44 -!- Darth_Cliche has joined.
18:46:48 <CakeProphet> I suppose that works.
18:46:57 <CakeProphet> but it's also heavily text-based.
18:47:07 <Phantom_Hoover> Not if you use a graphics set.
18:47:18 <CakeProphet> in a way that checkers and minesweeper are not.
18:47:41 <CakeProphet> I suppose with a graphics set is becomes half and half.
18:47:44 <CakeProphet> *it
18:47:44 <monqy> please don't distinguish between games based on graphical representation
18:47:49 <Phantom_Hoover> That the default tiles are drawn from CPwhatever.
18:47:59 <Phantom_Hoover> *is irrelevant.
18:48:06 <CakeProphet> monqy: it's a pretty valid distinction, dude.
18:48:13 <elliott> No, it's not.
18:48:19 <elliott> C437 contains tons of non-textual gaphics.
18:48:20 <elliott> graphics.
18:48:29 <elliott> It's just a fairly minimal graphical tileset that happens to use alphabetics and punctuation for many things.
18:48:35 <CakeProphet> not what I meant.
18:48:44 <CakeProphet> 14:47 < monqy> please don't distinguish between games based on graphical representation
18:48:50 <CakeProphet> has nothing to do with C437
18:49:20 -!- coppro has quit (Ping timeout: 258 seconds).
18:50:01 <CakeProphet> 2D, 3D, graphical, text-based, isometric, top-down, sidescroller, first person, third person. these are all graphical distinctions.
18:50:20 <monqy> games can be essentially the same (hereby refered to as equivalent) yet have multiple graphical representations
18:50:38 <CakeProphet> anyway I think we've argued enough semantics for today. I'm going to go do something else now.
18:50:47 -!- elliott has quit (Quit: Leaving).
18:50:48 -!- coppro has joined.
18:50:58 <monqy> so you'd want to distinguish graphical representations of a game, not distinguish between games based on grahpical representations
18:51:00 <Phantom_Hoover> He shouldn't've clicked that link.
18:51:01 <monqy> ok
18:51:30 -!- Siebenzack has joined.
18:51:50 -!- Siebenzack has left.
18:51:56 <CakeProphet> monqy: I see what you're saying.
18:51:57 <monqy> hi bye
18:52:20 <CakeProphet> even with different graphics sets DF is still pretty textual.
18:52:36 <CakeProphet> with all the information, and heavy use of menus. it's probably half of the game.
18:52:53 <CakeProphet> the style reminds me of other strictly text-based games I've played.
18:52:56 <monqy> then you njeed a better definition of textual
18:52:58 <CakeProphet> that use only ASCII.
18:53:19 -!- elliott has joined.
18:53:20 <elliott> hi monqy hi
18:53:22 <monqy> hi
18:54:10 <monqy> I'd only consider things strictly text-based if they were just that. they use only text. no characters acting as graphics or anything. pretty much just natural language. like textual IF.
18:54:40 <monqy> if using graphics may be considerably text-based too
18:54:48 <monqy> depending on how the graphics are used
18:57:58 <CakeProphet> I still believe a game like DF would highly benefit from a command-line interface similar to a MUD but more featureful.
18:58:13 <CakeProphet> in conjunction with the menu system.
18:58:36 <ais523> monqy: what about an IF game that occasionally shows an ASCII-art map?
18:58:41 <ais523> I know a couple of those
18:58:58 <monqy> hm
18:59:17 <monqy> if the map doesn't dominate the game or anything I think it would still be text-based
18:59:35 <ais523> yep, it's a case of you do "x map"
18:59:43 <ais523> and it shows you what the map looks like
18:59:49 <ais523> and everything else is text-based
19:00:09 <zzo38> I do have many text-adventure games in my computer.
19:03:14 -!- Ngevd has joined.
19:04:20 -!- cheater has joined.
19:04:35 <Ngevd> Hello!
19:04:46 <evincar> Hello Ngevd.
19:04:53 <elliott> Vorpal: btw, systemd gets a few things right, but I disagree with it on several points even beyond it using ini files
19:08:56 -!- cheater has quit (Excess Flood).
19:09:48 -!- cheater has joined.
19:11:31 <Vorpal> elliott, indeed
19:12:06 -!- cheater has quit (Excess Flood).
19:12:10 <elliott> Vorpal: e.g. I don't buy the argument that double-forking processes are a reason to use cgroups; services should be written to account for these things
19:12:16 -!- cheater has joined.
19:12:24 <elliott> and I find the "create sockets and pass them to the daemons" thing ugly
19:12:29 <elliott> because it depends on daemon-specific support for it
19:13:26 <elliott> Vorpal: I do agree that shell scripts are the wrong mechanism -- this actually makes me think that more that configuration management system might be suitable for the job, since you would use the build script language to write services in, and that would be the package language, not shell.
19:16:07 -!- cheater has quit (Excess Flood).
19:17:02 <Vorpal> elliott, the language in question need relevant constructs to support stuff like "monitor this process I just started and restart it if it dies"
19:17:37 <elliott> Vorpal: No?
19:17:42 <Vorpal> no?
19:17:46 <elliott> That's the service manager's job, not the job of individual services.
19:17:46 <Vorpal> someone needs to do that
19:17:51 <Vorpal> of course
19:18:01 <Vorpal> but you have to tell that the process is not supposed to exit
19:18:07 <Vorpal> or if it is, then it needs to know that
19:18:08 <elliott> Vorpal: That's like saying systemd can't work because ini files can't do that.
19:18:27 <Vorpal> elliott, for example, if you run mount(1) you don't want to restart it when it exits :P
19:19:04 <elliott> That's just the difference between a daemon and a startup script.
19:19:05 <Vorpal> elliott, no? I'm just saying that you need relevant stuff in there. Something that is just a build script for package management doesn't have the right tools to deal with daemons. Close yes, but not quite
19:19:45 <elliott> I'm talking about the model, of course the implementation needs support for it.
19:19:56 <Vorpal> elliott, anyway sockets for a daemon could make sense. For example, something like postgresql allows connection to it over unix sockets. IIRC it is slightly more efficient than tcp/ip over loopback.
19:20:02 <elliott> Vorpal: But anyway, no, you're still wrong.
19:20:10 <elliott> run = exec "apache"
19:20:15 <elliott> Zomg no waitpid!
19:20:21 <elliott> (assuming "apache" here doesn't daemonise)
19:20:26 <Vorpal> I think it does
19:20:41 <elliott> It's an example.
19:21:36 <Vorpal> elliott, you mean every package needs to be patched to not daemonise? Seems like quite a lot of work for the package maintainer, especially if it is set up with closing stdio and opening logfiles and so on. And no there is no sensible way apache could log over only stdio. access.log vs. error.log, and that might be per vhost
19:22:02 <elliott> Vorpal: Come on, this is patently stupid. It was AN EXAMPLE, and most packages support not daemonising too.
19:22:05 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
19:22:08 <Vorpal> yeah
19:22:10 <elliott> (And daemonising =/= just using stdio, shockingly.)
19:22:29 <elliott> brb
19:23:11 <Vorpal> elliott, anyway what about daemons that actually consist of a bunch of different processes. Typical IPsec daemons consist of a bunch of different daemons started together. Would you split that up as several scripts (or whatever you decide to call these descriptions of services)
19:24:08 <Vorpal> elliott, oh I guess I was thinking of daemontools. It does logging for the services running under it using their stdio iirc
19:24:15 <Vorpal> which is quite nice when it works
19:30:30 <elliott> back
19:30:43 <Ngevd> wb
19:31:14 <elliott> <Vorpal> elliott, anyway what about daemons that actually consist of a bunch of different processes. Typical IPsec daemons consist of a bunch of different daemons started together. Would you split that up as several scripts (or whatever you decide to call these descriptions of services)
19:31:29 <elliott> probably, a service description can be pretty lightweight; but anyway it's not hard to add waitpid :P
19:31:36 <elliott> <Vorpal> elliott, oh I guess I was thinking of daemontools. It does logging for the services running under it using their stdio iirc
19:31:42 <elliott> Vorpal: it's nice but can be implemented on top of existing stuff
19:32:30 <Vorpal> I wonder when the hardware clock in PCs will roll over
19:33:45 <elliott> http://0pointer.de/blog/projects/why.html good god look at that comparison
19:33:50 <elliott> i'm surprised there aren't a few rows of "is systemd"
19:34:38 <elliott> Vorpal: another cool thing with my system: you could use the package manager ui to control services :)
19:34:54 <Vorpal> mhm
19:35:08 -!- cheater has joined.
19:35:10 <elliott> that could actually be nice, if the manager is designed for it
19:35:18 <Vorpal> elliott, anyway, I'm unable to find info on how many bits a PC hardware clock has
19:35:20 <elliott> no need to prompt for stopping a service, for instance
19:36:00 <elliott> oh my lol
19:36:04 <elliott> Vorpal: scroll down on that page I linked
19:36:04 <elliott> SCM
19:36:10 <elliott> sysvinit [red] Subversion
19:36:14 <elliott> upstart [red] Bazaar
19:36:17 <elliott> systemd [green] git
19:36:20 <Vorpal> eh
19:36:24 <Vorpal> wtf
19:36:28 <Vorpal> what a joke
19:36:31 <elliott> poettering is so full of shit
19:36:51 <Vorpal> yes
19:37:10 <Deewiant> bazaar is simply a PITA for hackers who work on all sides of the OS, because it is not just much less usable than git, but also yet another tool to deal with. Quite frankly, I don't want to care about VCSes, they should just work, and not get in my way. And git is pretty good at that. bzr not, and it requires me to learn even more stuff. But anyway, this story is not about bzr, but it's fun to see how easily people are to tick of with a little
19:37:16 <Deewiant> colour. Before I posted this we actually bet that this would be the first thing people would comment on -- and they did! Consider it candy for the trolls...
19:37:26 <elliott> Deewiant: "bazaar is simply a PITA for hackers who work on all sides of the OS"
19:37:30 <elliott> So much sensemaking.
19:37:48 <elliott> Vorpal: One thing I don't like about the early-socket thing is that it breaks if the buffer overflows :/
19:37:59 <Vorpal> elliott, yes that is nasty
19:38:03 <Ngevd> A Parent-Italian teacher association?
19:38:11 <elliott> Ngevd: pain in the arse :P
19:38:15 <Vorpal> elliott, really, all I want is upstart with deps instead of events
19:38:31 <Ngevd> Wasn't far off
19:38:47 <elliott> Vorpal: Meh. Writing shell scripts isn't much fun.
19:39:00 <Vorpal> elliott, upstart isn't really shell scripts, it is a custom language
19:39:03 <Vorpal> and fairly easy
19:39:05 <olsner> ooh, "Specialized professional consulting and engineering services available"
19:39:06 <Deewiant> elliott: I took that as referring to how most things seem to be in git these days
19:39:11 -!- Phantom_Hoover has joined.
19:39:15 <elliott> Vorpal: Well, yeah, but there's shell scripts in the body I think
19:39:17 <Vorpal> elliott, I mean, they tend to be less than 10 lines including any comments
19:39:21 <elliott> I've never really looked at upstart because its design is stupid
19:39:27 <Ngevd> I've got a Piet IDE and I don't know what it is
19:39:50 <elliott> Deewiant: Apart from everything Canonical does, such as upstart :P
19:39:55 <elliott> Deewiant: And, uh, Mozilla.
19:39:56 <zzo38> I like text-adventure game
19:40:04 <Vorpal> elliott, oh btw, I don't really care about boot time that much. From grub to login prompt (I use startx) takes less than 10 seconds on my desktop anyway. And that was before switching to the SSD for the system
19:40:07 <elliott> Deewiant: And Python.
19:40:10 <Ngevd> It's installed on my Windows partition, but is otherwise really good
19:40:22 <Vorpal> elliott, now it takes like 7, because almost all that time is spent waiting for DHCP
19:40:36 <elliott> Vorpal: Start network asynchronously :P
19:40:40 -!- cheater has quit (Ping timeout: 252 seconds).
19:40:47 <Deewiant> elliott: And darcs; why are we talking about this?
19:40:51 <Vorpal> elliott, yeah well there is where arch model breaks. Deps for starting in background
19:40:55 <elliott> Deewiant: Nobody uses darcs
19:41:02 <elliott> Deewiant: My point is that no way is everything in git these days
19:41:07 <Deewiant> elliott: I didn't say everything
19:41:17 <elliott> Well, shrug
19:41:23 <ais523> elliott: I hope that was an approximate nobody
19:41:23 <Deewiant> elliott: And I'm not defending him, just interpreting what he said :-P
19:41:26 <elliott> Vorpal: What daemon do you actually have that needs to connect to the network at bootup
19:41:42 <elliott> Deewiant: Fair enough... but the VCS is still irrelevant in every way :P
19:41:43 <Vorpal> elliott, hell, button to grub is like half a minute for me. Due to having three of those add-in bioses loading. And quite a lot of disks
19:42:13 <elliott> Vorpal: Boot time doesn't matter much to me but the higher it is, the more likely it is that time is being wasted at boot
19:42:14 <Vorpal> elliott, ipv6 tunnel. ntp. And iptables needs to load after network or the rules won't find the stuff to apply to
19:42:24 <Deewiant> elliott: Well, it's "yet another tool", so not quite in every way, but in practice it should be fairly irrelevant
19:42:27 <elliott> Which means your service manager is bad :)
19:42:28 <Ngevd> brb
19:42:31 -!- Ngevd has quit (Quit: Leaving).
19:42:43 <elliott> Deewiant: Yet another tool for all ~0% of people who will check it out :P
19:42:45 <Vorpal> elliott, yes indeed. I'm just saying that 10 seconds is a non-issue. Sure, even faster would be nice. But it is pointless optimisation as it is.
19:42:58 <Deewiant> elliott: Yep
19:43:01 <Vorpal> now my laptop has a slower disk and takes quite a bit more to boot. That would be nice to have it boot faster.
19:43:08 <Vorpal> but most of that time is spent reading from the disk
19:43:10 <elliott> Vorpal: Well, it's not irrelevant in the server space; minimising downtime and all that
19:43:48 <Vorpal> elliott, yes indeed. But why aren't you using a cluster anyway so you can reboot some of the stuff without affecting the whole
19:43:54 <elliott> Anyway, I guess I'm probably going to end up implementing this packaconfigurservice manager after all...
19:45:29 <Vorpal> elliott, hm does daemontool do dependencies? It doesn't does it...
19:46:00 <elliott> No.
19:46:38 <Vorpal> elliott, I still think that an init supporting lots of runlevels and precomputing /etc/inittab would be the most awesome solution
19:46:54 <Vorpal> at the very least, the most silly
19:47:12 <elliott> That only does upstart-style, not dependencies :)
19:47:28 <Vorpal> hm
19:47:30 <Vorpal> true
19:48:01 * elliott wonders if PCSM might be implementable as a Haskell DSL...
19:48:04 <elliott> I assumed no, but I might be wrong.
19:48:05 -!- Ngevd has joined.
19:48:14 <Vorpal> elliott, that said, upstart style makes sense for some stuff. Example: no need to start a daemon for printing until you get an event about that a printer is connected
19:48:20 -!- hagb4rd has joined.
19:48:41 <elliott> Vorpal: Well, that's another thing Lennart is right about: That's better expressed as an available service, rather than instantaneous events
19:48:48 <Vorpal> hm
19:48:48 <elliott> printer-is-plugged-in
19:49:00 <elliott> Because it starts, "runs" (the printer stays plugged in), and then stops
19:49:04 <Vorpal> well actually it doesn't work for printer, there are network printers that the user might want to access
19:49:16 <elliott> When printer-is-plugged-in is running, you want printer-daemon to be running
19:49:47 -!- evincar has quit (Read error: Connection reset by peer).
19:49:51 <Deewiant> How is printer-is-plugged-in different from printer-daemon itself
19:50:19 <elliott> Deewiant: The former comes from whatever manages devices
19:50:19 <Deewiant> Or why, I guess
19:50:23 <elliott> The latter is some kind of multiplexer on top of it
19:50:38 <elliott> Deewiant: Consider printer-is-plugged-in vs. gnome-printer-magic and kprinterwoot
19:50:38 <Vorpal> you could have multiple instances of printer-is-plugged-in I guess
19:50:47 <elliott> Both of the latter probably should be started
19:50:50 <elliott> Assuming you use both gnome and kde programs
19:51:00 <Vorpal> elliott, I was considering cups here
19:51:06 <Vorpal> as the daemon to be started
19:51:18 <elliott> Vorpal: Well, the latter two probably depend on cups :)
19:51:25 <Vorpal> elliott, anyway I'm an xfce user, don't we get anything? :(
19:51:39 <elliott> I think there's exo-print or whatever but I don't have it installed here
19:51:45 <elliott> I just use the core xfce4 stuff
19:51:47 <elliott> Plus some extra
19:52:05 <elliott> Which comes down to the setting manager, the panel, the WM, exo-open, Thunar, and a terminal :P
19:52:15 <Vorpal> elliott, hm printing from firefox works without any magic but cups installed as far as I remember.
19:52:27 <Vorpal> unless firefox starts that itself
19:52:43 <elliott> Without being root?
19:52:47 <Vorpal> yeah
19:53:05 <Vorpal> elliott, why would you need root to print using cups?
19:53:14 <elliott> Well, fair enough
19:53:15 <Vorpal> what sort of crazy setup do you have
19:53:18 <elliott> I thought you had to be root to run the daemon
19:53:22 <elliott> I don't use printers
19:53:32 <Vorpal> elliott, you need to be root to start cups yes.
19:53:38 <Vorpal> but not to talk to cups
19:53:53 <elliott> Vorpal: Did I mention that PCSM does user-local installed packages trivially, while still sharing the disk storage for identical packages installed by multiple users??? SO GOOD
19:54:02 <Vorpal> PCSM?
19:54:12 <elliott> Packaconfigurservicemanager!
19:54:13 <Vorpal> elliott, anyway nixos does that
19:54:18 <elliott> Yes, it does.
19:54:20 <elliott> BUT
19:54:21 <Vorpal> and so does tiny core iirc
19:54:37 <elliott> Can NixOS run daemons in the right overlay FS so they only see their dependencies and config file???
19:54:45 <elliott> (As well as whatever else they're specified to need)
19:54:45 <Vorpal> maybe?
19:54:56 <elliott> Vorpal: No it can't, 'cuz NixOS just uses upstart :P
19:54:59 <Vorpal> and that weird distro I forgot the name of. That does one directory per package
19:55:04 <Vorpal> elliott, well okay
19:55:04 <elliott> Gobo.
19:55:11 <elliott> I don't know that Gobo can do per-user packages.
19:55:12 <Vorpal> right
19:55:19 <Vorpal> elliott, I thought it could? oh well
19:55:22 <Vorpal> never used it
19:55:26 <elliott> Maybe it can.
19:55:27 <Vorpal> so don't trust me on that
19:55:51 <elliott> I think this actually generalises to per-user services... e.g. your "login" service would depend on xfce4-sesion
19:55:53 <Vorpal> elliott, but nixos could potentially do it. Do per user stuff and have one user per daemon
19:55:58 <elliott> Well, x-login I guess
19:56:04 <elliott> And your .xinitrc would just start that
19:56:06 <elliott> Just an idea
19:56:13 <Vorpal> I admit this runs into a bit of a problem with "how the hell do we deal with this thing needing root"
19:56:32 <elliott> Daemons probably shouldn't ever run as root anyway :P
19:56:41 <elliott> Apart from init... or pcsmd :P
19:56:51 <Vorpal> elliott, well, cron need to be able to execute jobs as root
19:56:54 <elliott> Although even with init it can run almost always at lower privileges.
19:57:03 <Vorpal> if that is what you wrote in the system crontab
19:57:09 <elliott> Vorpal: True.
19:57:40 <Vorpal> elliott, and a few more need it in practise. Like ntp. Maybe it could be converted to use those fancy new linux capabilities thingies. Not sure.
19:57:50 <Vorpal> and anyway, I don't know how the per-user stuff under nixos works.
19:57:57 <Vorpal> so it might be tricky doing it for daemons
19:58:09 <Vorpal> if it is done with PATH magic in the profile for example
19:58:20 -!- cheater has joined.
19:58:20 -!- cheater has quit (Excess Flood).
19:58:42 <elliott> Sigh @ people with broken clients flooding the channel.
19:58:48 <elliott> "systemd has a minimal transaction system. Meaning: if a unit is requested to start up or shut down we will add it and all its dependencies to a temporary transaction. Then, we will verify if the transaction is consistent (i.e. whether the ordering via After/Before of all units is cycle-free). If it is not, systemd will try to fix it up, and removes non-essential jobs from the transaction that might remove the loop. Also, systemd tries to suppress
19:58:48 <elliott> non-essential jobs in the transaction that would stop a running service. Non-essential jobs are those which the original request did not directly include but which where pulled in by Wants type of dependencies. Finally we check whether the jobs of the transaction contradict jobs that have already been queued, and optionally the transaction is aborted then. If all worked out and the transaction is consistent and minimized in its impact it is merge
19:58:48 <elliott> d with all already outstanding jobs and added to the run queue. Effectively this means that before executing a requested operation, we will verify that it makes sense, fixing it if possible, and only failing if it really cannot work."
19:58:55 <elliott> Wow, Poettering must have some really broken systems.
19:59:21 -!- oerjan has joined.
19:59:29 <Vorpal> heh
19:59:45 <Vorpal> elliott, he started out writing a db engine, then didn't want to throw away the code
20:00:07 <elliott> :D
20:00:24 <oerjan> sunken costs sank the code
20:00:52 <Vorpal> elliott, anyway init, cron, ssh and kdm/gdm/whatever are examples that need to be able to switch to any other user. Which in practise means they need to be root.
20:01:10 <elliott> Heyyy, pcsm makes a pretty nicely-typeable executable name; maybe I should actually call it that.
20:01:19 <oerjan> <elliott> Sigh @ people with broken clients flooding the channel.
20:01:23 <Ngevd> TOO MANY THOUGHTS
20:01:26 <Ngevd> AAAAH
20:01:33 -!- Ngevd has quit (Quit: brain on fire).
20:01:36 <Vorpal> huh
20:01:37 <oerjan> how could @ people have broken clients? that's platonically impossible!
20:01:44 <elliott> oerjan: Har har har.
20:01:47 <Vorpal> hehe
20:02:25 <zzo38> oerjan: Do you know if solar time can be an Arabic Part formula (in equatorial coordinates)? It seem to me it is the same kind of things.
20:02:36 <zzo38> Do you even know about solar time or about Arabic Parts?
20:03:07 <Vorpal> root 2104 0.0 0.0 37224 864 ? Ss Oct23 0:01 /usr/lib/postfix/master
20:03:21 <Vorpal> I guess it needs root to deliver to mailboxes?
20:03:22 <Vorpal> eww anyway
20:03:31 <Vorpal> udevd of course needs root
20:03:53 <elliott> Vorpal: postfix is like ten million daemons though
20:03:53 <oerjan> zzo38: i have no idea what an Arabic Part formula is.
20:03:59 <elliott> of which only one runs as root, I presume
20:04:10 <Vorpal> elliott, master seems to be its own supervisor
20:04:12 <Vorpal> kind of
20:04:46 <Vorpal> elliott, anyway if you plan on making your own linux distro, good luck getting away without udev. I think it will be quite a pain if you want stuff like gnome, kde or xfce to work. Especially with automounting usb sticks and such
20:05:05 <Vorpal> root 1859 0.0 0.0 28360 1340 ? S Oct23 0:01 /sbin/wpa_supplicant -u -s <-- why on earth is this root
20:05:18 <olsner> linux automounts usb sticks?
20:05:30 <Vorpal> olsner, yes, distros like ubuntu do anyway
20:05:32 <elliott> Vorpal: Nahhhh, udev only took over recently.
20:05:40 <Vorpal> my desktop doesn't. It runs arch. Never bothered setting that up
20:05:47 <elliott> Vorpal: Anyway I can have udev without udevd; BusyBox has an implementation.
20:05:54 <Vorpal> elliott, heh!
20:05:57 <olsner> I guess my ubuntu is broken in some way then, haven't seen it do that
20:06:04 <elliott> Vorpal: (With its own config file)
20:06:16 -!- Ngevd has joined.
20:06:16 <Vorpal> elliott, I see. Well good luck with that.
20:06:26 <elliott> Vorpal: I'll probably just use udev
20:06:33 <Vorpal> root 25249 0.0 0.0 5088 1584 ? Ss Oct27 0:00 acpid -c /etc/acpi/events -s /var/run/acpid.socket <-- well I guess that might need root
20:06:37 <oerjan> Vorpal: i think mail clients like postfix usually change user to the recipient and drop all privileges as soon as possible?
20:06:41 <elliott> Vorpal: pcsm can manage it *shrug*
20:06:48 <Vorpal> heh
20:06:53 <elliott> Not a joke
20:07:02 <Vorpal> elliott, except it is usually started from the initramfs or some stuff like that iirc
20:07:12 <Vorpal> why does my dhcp client run as root?
20:07:24 <elliott> Vorpal: I mean, pcsm can manage the actual device stuff
20:07:31 <oerjan> isn't that why the global mail directory (if there is one) is supposed to be sticky
20:07:41 <Vorpal> hm I think I see a pattern here. There are quite a few things running as root because they need to do stuff like raw sockets or similar
20:07:56 <elliott> Vorpal: That's one advantage of early-socket stuff
20:08:02 <elliott> Hmm
20:08:10 <elliott> Assuming you can do everything on a raw socket opened by someone else that passes it to you
20:08:14 <Vorpal> elliott, eh? How does early-socket help dhcp client?
20:08:20 <elliott> Vorpal: It helps raw sockets
20:08:27 <Vorpal> doubtful, but hm
20:08:34 <zzo38> oerjan: Haven't you used Astrolog though? An Arabic Part formula is the angles of three objects, two of them added together and one subtracted.
20:08:43 <elliott> Vorpal: pcsmd opens raw socket, passes to daemon
20:08:45 <Vorpal> and then there is the hardware access class of daemons. cups, acpid, udev, wpa_supplicant.
20:09:09 <Vorpal> actually wpa_supplicant needs both hardware access to configure the wlan card and raw sockets I think
20:09:13 <elliott> oerjan: so did you decide whether it should be selectNext or moveNext
20:09:14 <Deewiant> dhcp client needs to write into /etc/resolv.conf
20:09:21 <zzo38> However, Astrolog does not allow the user to define their own Arabic Parts.
20:09:22 <Vorpal> smartd needs root because of hardware too
20:09:37 <Vorpal> Deewiant, not on my system.
20:09:44 <Vorpal> Deewiant, local dns server.
20:10:13 <zzo38> If I make a program I would include the feature to define your own Arabic Parts, for ecliptic as well as equatorial coordinates.
20:10:14 <Deewiant> Where does the DNS server get its remote DNS servers
20:10:16 <Vorpal> /usr/lib/upower/upowerd /usr/lib/policykit-1/polkitd udisks-daemon: polling /dev/sr0 <-- what are these anyway
20:10:22 <Vorpal> a lot of u<whatever> things
20:10:35 <Vorpal> Deewiant, it is a recursive resolver. It has a list of the root servers.
20:10:38 <Vorpal> Deewiant, it seems to work
20:10:47 <Vorpal> Deewiant, and a lot better than using my ISP for resolving
20:11:20 <Deewiant> Fair enough
20:11:33 <Vorpal> Deewiant, but sure, most often /etc/resolv.conf has to be written by the dhcp daemon
20:11:47 <Vorpal> nothing that couldn't be handled quite easily by permissions though
20:12:56 * elliott thinks almost every file owned by root should at least have a different group and be group-writable
20:13:09 <elliott> e.g. /etc/resolv.conf might be root:dns 664
20:13:12 <oerjan> zzo38: i used astrolog to make that agora-horoscope and its automatic interpretation. i didn't delve that much deeper into it, i think.
20:14:10 <elliott> Vorpal: oh wow, the biggest bullshit was from the top of the post
20:14:12 <elliott> "The first big distribution with systemd by default will be Fedora 15, due end of May. It is expected that the others will follow the lead a bit later (with one exception)."
20:14:14 <Vorpal> elliott, yeah. Still dhcp needs raw sockets and ability to mess around with interface config
20:14:15 <elliott> Vorpal: with one exception links to ubuntu
20:14:17 <zzo38> oerjan: And obviously (as far as I can see) you did not change any of the settings from the defaults.
20:14:35 <Vorpal> elliott, and routing tables
20:14:36 <Vorpal> and so on
20:15:04 -!- cheater has joined.
20:15:59 <Vorpal> anyway, does anyone know when the IBM PC clock will roll over? And if it still the same on modern PC compatible hardware.
20:16:07 <Vorpal> that is, the hardware clock
20:16:23 <oerjan> elliott: well obviously selectNext :: Cursor -> Maybe TreeCtx and moveNext :: TreeCtx -> Maybe Cursor, used wherever appropriate
20:16:40 <elliott> oerjan: oh good. and what's the implementation of one of those :P
20:16:59 <Vorpal> what is the context for this?
20:17:34 <elliott> trees
20:17:52 <quintopia> r/trees?
20:17:54 <zzo38> For example, it has three ways to display the angles (zodiac positions (the default), hours/minutes, or 360 degrees), can work with ecliptic (the default) or equatorial coordinates, can display a horizon view, can display solar system view (with no zoom, unfortunately), animate to real time, timed exposure, a globe of the Earth, ability to change the glyphs for Uranus and Pluto, and more.
20:17:55 -!- cheater has quit (Excess Flood).
20:19:26 <oerjan> elliott: well i also got thinking about that Top thing.
20:19:41 <elliott> oerjan: hmm, what about it?
20:20:23 <elliott> sigh, I really don't think pcsm can work as a haskell dsl :(
20:20:32 <elliott> i was hoping i could avoid writing my own language :)
20:21:01 <Vorpal> zzo38, no radians?!
20:21:40 <Vorpal> elliott, writing a bison grammar is quite easy
20:22:01 <elliott> Vorpal: why the hell would I subject myself to a yacc derivative, let alone C?
20:22:19 <oerjan> what if we made data Cursor = Branch { left :: [Tree], right :: [Tree], tag :: Tag, up :: Cursor } | Top { left :: [Tree], right :: [Tree] }
20:22:26 <zzo38> Vorpal: Yes, it does not support radians display. If you want, make a wiki page of the kind of features you would want and if I make up my own program, based on Swiss Ephemeris, I might consider some of the things listed there (although there are some things I would deliberately omit, and some which I might or might not want or not know how or have time to implement at first)
20:22:33 <Vorpal> elliott, well be happy then
20:22:40 <oerjan> so that the top can be a list of trees
20:22:40 <elliott> oerjan: um what would that mean
20:22:44 <Vorpal> or be parsec I guess.
20:22:49 <elliott> Vorpal: still means I have to implement a functional programming language
20:22:58 <elliott> oerjan: ok, but that isn't the case in reality..
20:22:59 <zzo38> The Swiss Ephemeris library does support radians, however.
20:23:00 <Vorpal> yeah, true
20:23:17 <elliott> Vorpal: ...including lots of things like exec and waitpid and other grossness that is No Fun(tm0
20:23:19 <elliott> *tm)
20:23:25 <fizzie> Vorpal: At least the standard RTC interface "rolls over" every century, since it only stores a two-decimal-digit year. (It's byte 0x09 in the "CMOS" memory region, either in BCD 0x00..0x99 or just a byte with value 0x00..0x63 depending on bit 2 of byte 0x0B.)
20:23:28 <Vorpal> zzo38, ... I don't really care about that software... Where did I indicate I did?!
20:23:29 <oerjan> elliott: well the thing is that then you don't need an exception to handle going right from the top
20:23:39 <Vorpal> fizzie, ah
20:23:41 <oerjan> well, moving
20:23:47 <zzo38> Vorpal: You didn't.
20:23:53 <Vorpal> fizzie, is that offset from 1900? Or did it rollover at 2000?
20:24:11 <elliott> oerjan: there's nothing to the right of (l :> Up)?
20:24:18 <elliott> as far as I can tell :P
20:24:26 <zzo38> But if anyone does, please indicate list of what kind of feature you would think is good idea and so on.
20:24:47 <Vorpal> fizzie, from what I remember there are 4 digit dates in the BIOS settings of all modern clocks. I guess I could check what hwclock(8) reports...
20:25:40 <fizzie> Vorpal: It's a single byte in the original and it's not supposed to go >99. I'd suppose the four digits are just an interface thing.
20:26:02 <oerjan> elliott: but you need some way for an edit to return a cursor when it has handled the very last node
20:26:03 <Vorpal> fizzie, hm.... Is the same hw interface still used?
20:26:15 <Vorpal> fizzie, speaking of which, is there any place all this stuff is documented.
20:26:31 <oerjan> hm well
20:26:36 <elliott> oerjan: well, perhaps. shouldn't moving next be separated from the edit?
20:26:38 <fizzie> Vorpal: For the CMOS-memory-area clock, anyway. It could be that there's some other interface (BIOS interrupt driven, or ACPI) that you can use to get more digits.
20:26:39 <Vorpal> or is it just a mix of various standards. With no single official source for it
20:26:40 <elliott> oerjan: that's part of the traversal
20:26:46 <Vorpal> fizzie, hm
20:26:48 <elliott> oerjan: consider: you can't go "backwards" even if the edit does handle it
20:26:51 <elliott> because you start at the first node anyway
20:27:05 <fizzie> Vorpal: You can find the CMOS data area documented at http://bochs.sourceforge.net/techspec/CMOS-reference.txt
20:27:15 <elliott> oerjan: now, what about
20:27:17 <oerjan> elliott: no, the edit does the moveNext, so that it can return a cursor.
20:27:23 <Vorpal> fizzie, that is hardly official. But hm.
20:27:28 <elliott> oerjan: yes, but maybe it _shouldn't_
20:27:48 <elliott> oerjan: data Cursor = Branch Tag [Tree] [Tree] Cursor | Top Tree
20:27:50 <elliott> What about that?
20:27:54 <elliott> oh, hmm
20:27:57 <elliott> oerjan: data Cursor = Branch Tag [Tree] [Tree] Cursor | Top (Maybe Tree)
20:27:57 <Vorpal> elliott, why does this remind me of sql cursors...
20:28:02 <oerjan> elliott: if it doesn't return a cursor it has nothing sensible to return if it is _deleting_ something
20:28:22 <elliott> oerjan: it can return a different cursor
20:28:31 <elliott> the select{Left,Right} one, for instance
20:28:33 <elliott> probably selectRight
20:28:41 <oerjan> argh
20:28:59 <elliott> erm
20:29:01 <elliott> moveRight :)
20:29:09 <elliott> oerjan: well I don't see what you're complaining about, if it deletes something then moveRight always succeeds
20:29:13 <elliott> oerjan: unless it deletes the root node
20:29:15 <elliott> which isn't possible
20:30:38 <Vorpal> fizzie, anyway those bytes in the CMOS won't fit the config data in the BIOS on a modern system.
20:30:51 <Vorpal> so I guess there must be more elsewhere
20:31:03 <Vorpal> heck, my desktop even has EFI
20:31:19 <fizzie> Vorpal: Sure, there's all those EDID tables and whatnot too.
20:31:34 <Vorpal> fizzie, wait... isn't EDID for displays?
20:31:45 <fizzie> Uh, the other acronym.
20:31:50 <Vorpal> fizzie, which other one?
20:31:51 <fizzie> What the foo was it.
20:32:01 <Vorpal> ACPI?
20:32:15 <oerjan> elliott: why isn't deleting the root node possible?
20:33:08 <oerjan> i guess if it isn't, then perhaps deleting just fails naturally when going next from it
20:33:16 <fizzie> Vorpal: No, there's a thing for the system information tables. The DMI ones, at leas.
20:33:23 <Vorpal> fizzie, ah
20:33:49 <oerjan> er i mean, deleting fails naturally because there is no cursor to construct
20:33:54 <fizzie> Vorpal: Anyway, the BIOS interrupt 0x1a returns also the century, according to the Interrupt List, and presumably current BIOSes track four digits.
20:34:17 <Vorpal> right
20:34:25 <fizzie> Vorpal: And of course EFI's different, and I'd suppose it has an RTC interface too.
20:34:42 <Vorpal> fizzie, well, I'm using the bios emulation of the EFI, because that is easiest
20:35:10 <Vorpal> fizzie, so why does it track decimal digits (implying BCD?) as opposed to a decimal number
20:35:16 <Vorpal> err binary number
20:35:18 <Vorpal> not decimal
20:36:31 -!- cheater has joined.
20:38:28 <fizzie> Vorpal: I would guess the original clock chips provided a BCD interface, but that's just a guess, and I wouldn't know why. Anyway, the get-time interrupt returns in BCD too.
20:38:51 <Vorpal> ouch
20:39:01 -!- cheater has quit (Excess Flood).
20:39:23 <Vorpal> fizzie, any idea if linux exports the physical memory map anywhere?
20:39:31 <Vorpal> it would be interesting to look at it
20:40:32 <Vorpal> hm there is /proc/iomem
20:42:04 <Vorpal> The CMOS memory exists outside of the normal address space and cannot
20:42:05 <Vorpal> contain directly executable code.
20:42:06 <Vorpal> oh right
20:42:11 <fizzie> Vorpal: ACPI provides interfaces to the wake-up alarm functions, at least; maybe also to the RTC.
20:42:14 <Vorpal> I forgot that x86 has a separate IO bus
20:42:19 <Vorpal> the stupidity of that....
20:43:12 <fizzie> Vorpal: Most of the stuff is memory-mapped; biosdecode/dmidecode go digging in /dev/mem, for example.
20:43:13 -!- Pietbot has joined.
20:43:18 <Vorpal> hm how did PCs power off before ACPI?
20:43:20 <Ngevd> )df test
20:43:38 <oerjan> yay new bot
20:43:43 <olsner> Vorpal: the power switch
20:43:46 <Ngevd> Not finished bot
20:44:05 <olsner> or APM
20:44:11 <Vorpal> ah APM of course
20:44:12 <Vorpal> right
20:44:35 -!- Pietbot has quit (Remote host closed the connection).
20:44:46 <Ngevd> That narrows down where the problem is, for sure
20:44:48 <fizzie> Vorpal: Also hwclock apparently has code to read that CMOS stuff with direct I/O to those ports if /dev/rtc is not available.
20:45:36 <Vorpal> http://sprunge.us/eDPR (laptop) and http://sprunge.us/URYN (desktop). Quite interesting /proc/iomem
20:45:56 <Vorpal> fizzie, yes and it doesn't work on anything but 32-bit x86 iirc
20:45:59 <olsner> but before APM I think there just was no way for software to turn a PC off unless you built it a mechanical power switch switcher yourself
20:46:10 -!- Pietbot has joined.
20:46:11 <Vorpal> olsner, heh
20:46:15 <Ngevd> )
20:46:54 -!- Pietbot has quit (Remote host closed the connection).
20:46:56 <fizzie> Vorpal: I think it also works on some Alphas.
20:47:00 <Ngevd> Hmm...
20:47:14 <Vorpal> fizzie, oh right, the man page says so
20:47:18 <Vorpal> fizzie, anything with ISA
20:47:21 <Ngevd> Would someone who knows the IRC protocol better than me tell me this:
20:47:33 <fizzie> Also I wouldn't be surprised if there were some pre-APM/almost-APM-but-not-quite poweroff hacks.
20:47:35 <Vorpal> fizzie, I think x86 systems will have an ISA bus long after the PCI bus is gone
20:47:48 <fizzie> And the powerpc apple PMU can turn a system off, too.
20:47:49 <Vorpal> just because of backward compatiblity
20:48:05 <Ngevd> If a message is sent to the channel, would my bot be able to pick it up as "...PRIVMSG #esoteric :<message>"?
20:48:06 <Vorpal> compatibility*
20:48:18 <Vorpal> Ngevd, no?
20:48:19 <elliott> Ngevd: yes. ... contains the user info
20:48:26 <Vorpal> Ngevd, you forgot the user info
20:48:35 <Ngevd> See what elliott said
20:48:46 <Vorpal> hm
20:49:03 <fizzie> "..." here being ":nick!user@host ", apparently.
20:49:10 <Vorpal> right
20:49:49 <fizzie> It's called the "prefix" in the grammar, IIRC. At least I tend to call it that.
20:50:01 <Ngevd> Hmm...
20:50:11 <Vorpal> heh
20:50:25 <zzo38> Clients do not receive messages themself send to a channel.
20:50:41 <elliott> ?hoogle a -> (a -> Maybe a) -> a
20:50:42 <lambdabot> Data.IntMap update :: (a -> Maybe a) -> Key -> IntMap a -> IntMap a
20:50:42 <lambdabot> Data.Maybe mapMaybe :: (a -> Maybe b) -> [a] -> [b]
20:50:42 <lambdabot> Data.IntMap mapMaybe :: (a -> Maybe b) -> IntMap a -> IntMap b
20:50:43 <Vorpal> that too
20:50:51 <zzo38> But yes the message on a channel is received like that
20:51:11 <elliott> :t liftA2 fromMaybe
20:51:12 <lambdabot> forall a (f :: * -> *). (Applicative f) => f a -> f (Maybe a) -> f a
20:51:23 <elliott> hmph.
20:51:28 <elliott> :t \x -> liftA2 fromMaybe (pure x)
20:51:29 <lambdabot> forall a (f :: * -> *). (Applicative f) => a -> f (Maybe a) -> f a
20:51:41 <elliott> :t \f -> liftA2 f . pure
20:51:42 <lambdabot> forall a b c (f :: * -> *). (Applicative f) => (a -> b -> c) -> a -> f b -> f c
20:51:44 <Vorpal> :t pure
20:51:45 <lambdabot> forall a (f :: * -> *). (Applicative f) => a -> f a
20:51:47 <elliott> ?hoogle (a -> b -> c) -> a -> f b -> f c
20:51:48 <lambdabot> Control.Applicative liftA2 :: Applicative f => (a -> b -> c) -> f a -> f b -> f c
20:51:48 <lambdabot> Control.Monad liftM2 :: Monad m => (a1 -> a2 -> r) -> m a1 -> m a2 -> m r
20:51:48 <lambdabot> Prelude zipWith :: (a -> b -> c) -> [a] -> [b] -> [c]
20:51:51 <Vorpal> ah, applicative thingy
20:51:53 <elliott> oh well.
20:52:03 <Vorpal> elliott, what are you searching for?
20:52:10 <zzo38> Is the Kleisli category of Maybe monad similar to a category of partial functions?
20:52:18 <elliott> Vorpal: a -> (a -> Maybe a) -> a
20:52:24 <Vorpal> elliott, doing what?
20:52:33 <Vorpal> elliott, because:
20:52:35 <Vorpal> <lambdabot> Data.IntMap update :: (a -> Maybe a) -> Key -> IntMap a -> IntMap a
20:52:35 <Vorpal> <lambdabot> Data.Maybe mapMaybe :: (a -> Maybe b) -> [a] -> [b]
20:52:35 <Vorpal> <lambdabot> Data.IntMap mapMaybe :: (a -> Maybe b) -> IntMap a -> IntMap b
20:52:35 <elliott> \x f -> fromMaybe x (f x)
20:52:37 <Vorpal> those did it
20:52:43 <elliott> none of those have that type
20:52:44 <elliott> can you read?
20:52:45 <Vorpal> (kind of)
20:52:51 <elliott> ?hoogle (a -> Maybe a) -> a -> a
20:52:51 <lambdabot> Data.IntMap update :: (a -> Maybe a) -> Key -> IntMap a -> IntMap a
20:52:52 <lambdabot> Data.Maybe mapMaybe :: (a -> Maybe b) -> [a] -> [b]
20:52:52 <lambdabot> Data.IntMap mapMaybe :: (a -> Maybe b) -> IntMap a -> IntMap b
20:52:53 <Vorpal> elliott, well, why did it return them then
21:01:07 <elliott> Vorpal: because hoogle does a fuzzy search
21:01:11 <Vorpal> ah
21:03:24 <elliott> gah
21:03:28 <elliott> this is annoying
21:04:12 <oerjan> :t ap fromMaybe
21:04:13 <lambdabot> forall b. (b -> Maybe b) -> b -> b
21:04:55 <elliott> oh thanks
21:04:57 <elliott> does that... work/
21:05:03 <elliott> > ap fromMaybe (const Nothing) 99
21:05:04 <lambdabot> 99
21:05:08 <elliott> > ap fromMaybe (Just . succ) 99
21:05:09 <lambdabot> 100
21:05:12 <elliott> thx
21:05:19 <Deewiant> ?unpl ap fromMaybe
21:05:19 <lambdabot> (\ e -> fromMaybe >>= \ b -> e >>= \ a -> return (b a))
21:05:26 <elliott> lol
21:05:28 <Deewiant> ...
21:05:29 <Vorpal> heh
21:05:37 <Vorpal> how crazy
21:05:45 <oerjan> ?unpl doesn't recognize that fromMaybe is a function
21:05:52 <Vorpal> yeah it isn't even valid
21:06:01 <oerjan> sure it is
21:06:07 <Vorpal> oh?
21:06:13 <Deewiant> ?unpl ap id
21:06:14 <lambdabot> (\ f -> (\ a -> a) >>= \ c -> f >>= \ b -> return (c b))
21:06:15 <oerjan> :t (\ e -> fromMaybe >>= \ b -> e >>= \ a -> return (b a))
21:06:16 <lambdabot> forall a. (a -> Maybe a) -> a -> a
21:06:30 <Deewiant> oerjan: I'm pretty sure it just doesn't care, whether it recognizes or not :-P
21:06:37 <oerjan> _maybe_
21:06:42 <elliott> ?unpl ap ap
21:06:42 <lambdabot> (\ e -> (\ j k -> j >>= \ h -> k >>= \ g -> return (h g)) >>= \ b -> e >>= \ a -> return (b a))
21:06:42 <Vorpal> augh
21:06:45 <elliott> so hot
21:06:47 <Vorpal> :t ap ap
21:06:49 <lambdabot> forall (m :: * -> *) a b. (Monad m) => (m (a -> b) -> m a) -> m (a -> b) -> m b
21:06:55 <Vorpal> gnh
21:06:56 <elliott> Deewiant: try (<*>)
21:06:57 <elliott> maybe
21:07:04 <elliott> ?unpl (<*>) fromMaybe
21:07:04 <lambdabot> (<*>) fromMaybe
21:07:06 <elliott> oh
21:07:17 <Vorpal> :t (<*>)
21:07:17 <Deewiant> pl doesn't know about Applicatives :-P
21:07:18 <lambdabot> forall (f :: * -> *) a b. (Applicative f) => f (a -> b) -> f a -> f b
21:08:04 <elliott> Deewiant: Someone needs to write a better pl :)
21:08:18 -!- Pietbot has joined.
21:08:21 <Deewiant> Feel free
21:08:22 <Ngevd> )
21:09:00 <Ngevd> )df iiisso
21:09:11 <oerjan> is Pietbot written in Piet?
21:09:15 <Ngevd> Yes
21:09:16 <Ngevd> Badly
21:09:22 <Ngevd> May start from scratch
21:09:24 <oerjan> figures :P
21:09:25 <elliott> oerjan: no, it's written in piet-assembler :(
21:09:26 <Madoka-Kaname> Can we see the code?
21:09:29 <Ngevd> No
21:09:32 <elliott> oh
21:09:34 <elliott> oerjan: so hey
21:09:37 <elliott> oerjan: remember what i said about iwc endnig
21:09:38 <elliott> ending
21:09:41 <Ngevd> Because then you would know the password
21:09:44 <Madoka-Kaname> (see, literally)
21:09:52 <oerjan> argh i haven't read iwc yet
21:09:59 <elliott> HAHAHA
21:10:09 <elliott> oh, Ngevd was saying no to Madoka-Kaname
21:10:22 <Vorpal> oerjan, yeah go do so now. You need to.
21:10:24 <Vorpal> it is very sad
21:10:28 <fizzie> Vorpal: Heh, if no PM information (such as ACPI) is available, the Linux fallback is to try Intel "Trusted Execution Technology" poweroff. Anyway, there are (x86-relevantly) specific poweroff methods for at least ACPI, IPMI, APM, OLPC XO1, SGI Visual Workstation and lguest. (Okay, the last one might not quite count.)
21:10:33 <elliott> oerjan: the mythbusters die
21:10:35 <elliott> rip ;______;
21:10:39 <Ngevd> The assembler isn't much good, gonna rewrite it from scratch
21:10:40 <elliott> then dmm dies
21:10:41 <elliott> and ends up dying
21:10:43 <elliott> IN REAL LIFE............
21:10:44 <Vorpal> and DMM had a car accident
21:10:46 <Vorpal> in real life
21:10:51 <Vorpal> elliott, snap, you beat me to it
21:10:51 <elliott> yes and died.
21:10:51 <Ngevd> brb
21:10:53 <elliott> his ghost now writes iwc
21:11:04 <Vorpal> no it was a coworker who did it
21:11:07 <Vorpal> don't be silly
21:11:33 <Vorpal> fizzie, oh wait, what about tripple fault
21:11:37 <Vorpal> fizzie, that halts doesn't it?
21:12:02 <fizzie> Vorpal: No, it just reboots.
21:12:07 <Vorpal> oh
21:12:27 <Vorpal> fizzie, anyway wtf is "Trusted Execution Technology"
21:12:30 <elliott> <fizzie> Vorpal: Heh, if no PM information (such as ACPI) is available, the Linux fallback is to try Intel "Trusted Execution Technology" poweroff. Anyway, there are (x86-relevantly) specific poweroff methods for at least ACPI, IPMI, APM, OLPC XO1, SGI Visual Workstation and lguest. (Okay, the last one might not quite count.)
21:12:39 <elliott> iirc linux actually does it in various non-standard ways
21:12:43 <elliott> there was a post about it on reddit a while back
21:12:53 <elliott> turning a computer off is very grotty, it seems :)
21:12:55 <fizzie> Vorpal: I think a triple-fault might be a reboot fallback, though. Incidentally, IPMI does have a RTC interface too.
21:13:37 <Vorpal> fizzie, yeah I only ever seen server boards have IPMI. Kind of sad, since the IPMI sensor interface actually reports what the damn sensors actually mean
21:13:46 <fizzie> Those were the machine_power_off/pm_power_off methods I could find by quick grepping; well, the x86-relevant ones, anyway.
21:14:28 <fizzie> Wouldn't be surprised if there were some more quirks for laptops, at least some pre-ACPI invented ones.
21:14:35 <Vorpal> heh
21:14:40 <elliott> oerjan: there there
21:14:47 <Vorpal> fizzie, what does it do if none of them work?
21:14:58 <Vorpal> fizzie, does it print "please turn off your computer now" or some such?
21:17:01 <elliott> Vorpal: i think oerjan may be dead.
21:18:09 <fizzie> Vorpal: I think it just stays halted (at least this 2.6.37 I had uncompressed), if tboot_shutdown (the trusted-execution thing) isn't enabled. It probably prints "system halted" or something before trying the poweroff at all, but I don't think I'll bother trying to find that. Might even be just init which does that.
21:18:19 <Vorpal> dmidecode is confused about my desktop CPU. It reports it as core 2 duo. It is a core i7 quad
21:18:51 <fizzie> ISTR the "System halted" behaviour from machines that were unable to turn themselves off.
21:18:56 <Vorpal> ah
21:20:16 -!- evincar has joined.
21:20:24 <Vorpal> hm, max speed 3800 MHz? I guess it is that turbo mode. As far as I know it is 3.3 GHz normally
21:20:46 <Vorpal> the CPU serial number is "To Be Filled By O.E.M."
21:21:52 <fizzie> "Version: AMD Athlon(tm) 64 X2 Dual Core Processor 5600+; Max Speed: 3200 MHz; Current Speed: 2800 MHz" -- well, it's mostly correct, though I don't know where the 3.2 GHz comes from; 2.8 is what the 5600+ is nominally at, and the "actual" current speed is just 1 GHz, thanks to cpufreq.
21:21:58 <evincar> Those of you not fond of me may enjoy laughing at my expense: my laptop display is fucked and I have to replace it.
21:22:46 <Phantom_Hoover> I'd reply, but you wouldn't be able to read it.
21:23:06 <Vorpal> evincar, not liking you doesn't mean the same as gloating over someone else broken laptop.
21:23:19 <Phantom_Hoover> I'd insult you behind your back, but I don't care which side of your back I insult you on.
21:23:20 <Vorpal> s/you/someone/
21:23:25 <elliott> `addquote <Phantom_Hoover> I'd insult you behind your back, but I don't care which side of your back I insult you on.
21:23:28 <HackEgo> 701) <Phantom_Hoover> I'd insult you behind your back, but I don't care which side of your back I insult you on.
21:23:30 <fizzie> Vorpal: Heh, dmidecode from the laptop: "Version: Intel(R) Core(TM) i7-2720QM CPU @ 2.20GHz; Voltage: 0.0 V". It seems I've gotten one of those rare does-not-use-electricity-at-all processors.
21:23:41 <elliott> fizzie: Reversible computing!
21:23:57 <Vorpal> fizzie, nice. My desktop CPU apparently uses 1.0 V. Which I don't think is correct either
21:24:27 <evincar> Phantom_Hoover: Why wouldn't you assume I have multiple computers? Otherwise I'd be a lot more bent out of shape about this.
21:24:49 <Phantom_Hoover> evincar, it was, in fact, a joke.
21:24:51 <evincar> Vorpal: Right, you don't want to insult the laptop.
21:25:12 <evincar> Phantom_Hoover: I know, I'm just being a dick.
21:25:22 <fizzie> Vorpal: The Athlon is reporting 1.4V. That might even be close to correct; I think it's 1.35V officially but it could be rounded.
21:25:49 <Vorpal> evincar, come on...
21:25:54 <fizzie> (Laptop) "Board is replaceable"... well, I *guess*... for some values of "replaceable".
21:26:01 <Vorpal> evincar, I might want to insult it. Depends on the brand.
21:26:09 <fizzie> "Number Of Power Cords: 1"
21:26:23 <fizzie> There's no end to the values they've bothered to put here.
21:26:24 <evincar> Heh, just an IdeaPad netbook.
21:26:25 -!- Pietbot has quit (Read error: Connection reset by peer).
21:26:45 <fizzie> "Chassis Information: Contained Elements: 0". Uh, right.
21:26:53 <Vorpal> evincar, go for thinkpads. They are better. Still not as good as during the IBM times
21:26:57 <evincar> Lenovo is the one laptop manufacturer I could find that didn't quite utterly fuck up their keyboards...then I went and bought a netbook anyway, because I like pain.
21:27:03 <Vorpal> fizzie, it says the same for my desktop
21:27:29 <Vorpal> fizzie, my chassis info just says to be filled in by OEM basically
21:27:56 <fizzie> Vorpal: The base board on the desktop is version "x.x". I'm not sure if it's trying to be a dead-guy smiley. (Probably not.)
21:28:26 <Ngevd> Maybe it's Roman Numerals?
21:28:26 <Vorpal> Handle 0x0038, DMI type 28, 22 bytes
21:28:26 <Vorpal> Temperature Probe
21:28:26 <Vorpal> Description: LM78A
21:28:26 <Vorpal> Location: <OUT OF SPEC>
21:28:26 <Vorpal> Status: <OUT OF SPEC>
21:28:28 <Vorpal> wow
21:28:30 <Vorpal> that is.... weird
21:28:53 <Ngevd> We know we have one, we know what it is, but where it is or how it is? Pfff.
21:29:11 <Vorpal> heh
21:29:34 <Vorpal> Cooling Device
21:29:34 <Vorpal> Temperature Probe Handle: 0x0038
21:29:34 <Vorpal> Type: <OUT OF SPEC>
21:29:34 <Vorpal> Status: <OUT OF SPEC>
21:29:56 <Vorpal> it lists several cooling devices like that
21:30:05 <Vorpal> I guess it could be optional fans not connected to the mobo?
21:30:09 <olsner> hmm, the location of the probe is "out of spec"? where have you put that probe Vorpal?
21:30:16 <Vorpal> olsner, XD
21:30:34 <Vorpal> System Power Supply
21:30:34 <Vorpal> Power Unit Group: 1
21:30:34 <Vorpal> Location: To Be Filled By O.E.M.
21:30:34 <Vorpal> Name: To Be Filled By O.E.M.
21:30:34 <Vorpal> Manufacturer: To Be Filled By O.E.M.
21:30:35 <Vorpal> Serial Number: To Be Filled By O.E.M.
21:30:36 <Vorpal> Asset Tag: To Be Filled By O.E.M.
21:30:38 <Vorpal> Model Part Number: To Be Filled By O.E.M.
21:30:40 <Vorpal> Revision: To Be Filled By O.E.M.
21:30:42 <Vorpal> Max Power Capacity: Unknown
21:30:44 <Vorpal> Status: Not Present
21:30:46 <Vorpal> Type: <OUT OF SPEC>
21:30:48 <Vorpal> fizzie, I have a zero power computer too
21:30:53 <Vorpal> my power supply is not present
21:31:06 <Vorpal> however, it is plugged
21:31:08 <Vorpal> Input Voltage Range Switching: <OUT OF SPEC>
21:31:08 <Vorpal> Plugged: Yes
21:32:09 <Vorpal> any info not directly concerning the mobo is completely useless in there. I guess that is a result of home-built system
21:32:23 <Vorpal> okay it does seem to know the memory modules too
21:32:29 <fizzie> The laptop DMI tables also have all kinds of ports it doesn't physically have. "Internal Reference Designator: J2A1, External Reference Designator: TV Out, External Connector Type: Mini Centronics Type-14". There's nothing like that; nor is there the "J2A2A; COM A; DB-9 male" serial port, unless they've hidden it really well. Ditto for the DB-15 female (presumably VGA) video, and... uh, well; then there's a pile of strange-sounding internal-only ports. (J9C1 -
21:32:30 <fizzie> PCIE DOCKING CONN. J9E3 - LPC HOT DOCKING. J9E1 - SCAN MATRIX. J9G1 - LPC SIDE BAND.)
21:32:57 <Vorpal> heh
21:33:11 <fizzie> The non-existing ports are compensated by the lack of the ports it does have, though.
21:33:12 <Vorpal> Handle 0x0063, DMI type 13, 22 bytes
21:33:12 <Vorpal> BIOS Language Information
21:33:12 <Vorpal> Language Description Format: Abbreviated
21:33:13 <Vorpal> why
21:33:16 <Vorpal> on earth
21:33:25 <Vorpal> does it list the languages the BIOS menus are available in?
21:33:29 <Vorpal> why would the OS *care*
21:33:44 <Vorpal> (it is eng, fra, ger, chs, chi, jpn)
21:33:56 <fizzie> I have three languages: n|US|iso8859-1, n|US|iso8859-1 again, and r|CA|iso8859-1.
21:34:07 <Vorpal> I have up to handle 0x64 on my desktop btw
21:34:28 <fizzie> Hah, the best: "Portable Battery ... Location: Location of the battery"
21:34:33 -!- copumpkin has quit (Ping timeout: 258 seconds).
21:34:35 <fizzie> I have to admit it is a true statement.
21:34:37 <Vorpal> I'll check my laptop next
21:34:43 <Ngevd> "chs"?
21:34:50 <fizzie> But "the battery is where the battery is" is not so incredibly useful.
21:34:51 <Vorpal> Ngevd, no clue
21:34:51 <elliott> fizzie: :D
21:34:59 -!- copumpkin has joined.
21:35:04 <Vorpal> sounds like modern macs
21:35:16 <Vorpal> the battery is where the battery is and don't you dare touch it
21:35:24 <Vorpal> well, at least my laptop has correct vendor info
21:35:49 <fizzie> Vorpal: Also for the battery: "Manufacturer: Battery Manufacturer", "Serial Number: Serial Number", "Name: Battery Name", "SBDS Version: SBDS Version Number", "OEM-specific Information: 0x12345678".
21:36:00 <Vorpal> oh come on, my laptop CPU family is "Other"
21:36:10 <Vorpal> my desktop had core 2 duo listed. My desktop actually has an i7
21:36:16 <Vorpal> while my laptop has a core 2 duo
21:36:19 <Vorpal> yet it can't list that
21:36:20 <Vorpal> wtf
21:36:27 <fizzie> Vorpal: All my probes are <OUT OF SPEC> too.
21:36:34 <Vorpal> heh
21:36:53 <Vorpal> and a voltage of 1.1 V for my laptop
21:37:00 <Vorpal> I really would like the zero volt thingy there
21:37:07 <fizzie> dmidecode's main purpose is amusement, I think. (Okay, it *can* usually list memory slot/module details too reasonably well.)
21:37:37 <elliott> So who knows a decent overlay-style fs?? Like unionfs except better.
21:37:39 <Vorpal> Handle 0x0017, DMI type 126, 9 bytes
21:37:39 <Vorpal> Inactive
21:37:43 <elliott> Actually, uh, cunionfs is pretty much what I want.
21:37:43 <Vorpal> I have loads of ones like that
21:37:45 <elliott> Hey Gregor, how's cunionfs.
21:37:46 <Vorpal> on my laptop
21:38:00 <fizzie> elliott: I think someone used aufs, but it might well sukc.
21:38:13 <Vorpal> Handle 0x0029, DMI type 13, 22 bytes
21:38:13 <Vorpal> BIOS Language Information
21:38:13 <Vorpal> Installable Languages: 1
21:38:13 <Vorpal> enUS
21:38:13 <Vorpal> Currently Installed Language: enUS
21:38:14 <Vorpal> right
21:38:29 <elliott> fizzie: Well, there's that and unionfs itself (I understand there's quite the flamewar between the two), but I kind of want something per-process.
21:38:40 <elliott> fizzie: Because e.g. a user should see their installed packages on the system.
21:38:42 <Vorpal> Portable Battery
21:38:42 <Vorpal> Location: Rear
21:38:42 <Vorpal> Manufacturer: Panasonic
21:38:49 <Vorpal> fizzie, aww, my laptop has boring accurate info
21:39:00 <elliott> Panapsionic.
21:39:00 <fizzie> Vorpal: I guess it's made by a real manufacturer. :p
21:39:00 <Vorpal> fizzie, everything about the CPU family seems boringly accurate
21:39:10 <Vorpal> fizzie, yes. It is a Lenovo Thinkpad
21:39:40 <Vorpal> fizzie, what brand is your laptop
21:40:34 <Vorpal> strange thing on my desktop. It only lists 6 SATA ports + 1 eSATA port. I have 8 internal physical SATA ports and two external eSATA ports
21:40:39 <Vorpal> I wonder what is going on there
21:40:55 <fizzie> Vorpal: It's... vaguely defined. I mean, I bought it from some small shop in Germany, and they constructed it out of a skeleton made by Clevo. I also asked them to leave all logos off. So it's sort of a no-name.
21:41:05 <Vorpal> heh
21:41:15 <elliott> fizzie: That sounds super-reliable.
21:41:31 <elliott> I know _I_ trust small German shops with all my computer needs.
21:41:38 <elliott> What's the name of the shop? We'll call it that.
21:41:54 <fizzie> I forget exactly who it was, since there were so many to choose from.
21:41:54 <Vorpal> my thinkpad just have two logos, A discrete "lenovo" on the top of the lid. It is black on black. Just a shift in depth of the surface really
21:42:01 <Vorpal> and the usual thinkpad logo on the palmrest
21:42:03 <fizzie> People(tm) said reasonable things about Clevo parts, though.
21:42:29 <elliott> Vorpal: And the Windows sticker it came with.
21:42:31 <elliott> Presumably.
21:42:43 <Vorpal> elliott, nope. I had to get a replacement palmrest.
21:42:46 <Vorpal> it lacked those
21:42:52 <elliott> Heh.
21:43:14 <Vorpal> elliott, originally there was a small core 2 duo and a small windows vista business sticker as well
21:43:25 <Vorpal> elliott, which I removed anyway
21:43:52 <Vorpal> elliott, anyway I have nothing against the thinkpad logo. And the lenovo logo is discrete enough to not bother me
21:44:00 <Vorpal> oh wait, it says thinkpad on the lid too
21:44:02 <Vorpal> forgot that
21:44:07 <Vorpal> same logo as on the palmrest
21:44:13 <Vorpal> well that doesn't bother me either
21:44:23 <elliott> My main laptop has... one name on it.
21:44:28 <elliott> "MacBook Air" below the screen.
21:44:32 <Vorpal> yeah
21:44:34 <elliott> Also an Apple logo on the back, but who ever looks there?
21:44:39 <elliott> This Toshiba has many(tm).
21:44:51 <Vorpal> elliott, why are you on a toshiba atm
21:44:52 <elliott> Toshiba below the screen, on the back, "Satellite" to the left of the trackpad,
21:45:02 <elliott> "Intel Pentium Inside", "Windows 7", "Toshiba Easy Media" stickers.
21:45:11 <Vorpal> elliott, did you finally send the macbook off to get fixed?
21:45:18 <Vorpal> elliott, pentium, ouch
21:45:24 <elliott> It's the Core 2 Pentiums.
21:45:32 <elliott> Vorpal: My MacBook Air turned itself off, and then refused to turn back on again, approximately ~3 minutes before I intended to watch EOA5.
21:45:35 <Vorpal> oh, right
21:45:40 <elliott> I suppose the idea of a thirteen minute Flash video was just too much for it to bear?
21:45:42 <Vorpal> elliott, EOA5?
21:45:51 <Vorpal> elliott, anyway did you send it to apple finally then?
21:45:52 <elliott> Vorpal: You know. Hamsteaks. The one that crashed Newgrounds.
21:46:01 <elliott> Have you even _read_ a single page since binging?
21:46:17 <Vorpal> elliott, nope.
21:46:20 <Vorpal> elliott, haven't had time
21:46:50 <Vorpal> elliott, I'll do a second binge next year of the rest of it
21:47:05 <Vorpal> elliott, that is the same way I read freefall. Next binge should be around xmas of that iirc
21:47:13 <elliott> If it's done by next year.
21:47:18 <elliott> Anyway, get speakers that time.
21:47:32 <Vorpal> elliott, headphones you mean
21:47:36 <Vorpal> I don't like speakers
21:47:37 <elliott> (Unless you want to sit through a 13 minute silent film, which I suppose is possible if uninteresting.)
21:48:50 <Vorpal> ooh, 2 new videos on yogscast. bbiab
21:49:07 <elliott> --Vorpal "Doesn't Have Time For Homestuck" Vorpal
21:49:16 <Vorpal> elliott, it is about priorities
21:49:26 <Vorpal> elliott, I prefer yogscast over homestuck
21:52:19 <Ngevd> Next version of Pietbot now outputs "NICK P"
21:52:22 <Ngevd> It's a start
21:53:07 <fizzie> What's the current resolution of the source code?
21:53:22 <Ngevd> 10x10px per codel
21:54:13 <fizzie> I was hoping for the total width x height in codels; I just couldn't pass the opportunity to use "resolution of the source code" there, even if it's a bit wrong.
21:54:27 <Ngevd> 2 by 50 codels
21:54:35 <Ngevd> Actually, 50 by 2
21:55:03 <fizzie> That is weirdly small. Oh, or was that just for the NICK P thing?
21:55:08 <Ngevd> Yes
21:55:34 <elliott> Why does Arch even have groups as opposed to just empty packages?
21:55:51 <fizzie> How about the one which connected and all?
21:56:14 <Vorpal> elliott, buggered if I know. They are annoying to deal with too. I have no idea where they are defined
21:56:37 <fizzie> elliott: There's some sort of a "never metapackage I didn't" pun-portunity lurking in here somewhere.
21:57:39 <Ngevd> "NICK Pi"
21:59:05 <zzo38> How should the namespace for a Haskell program to deal with DVI files be called?
21:59:26 <elliott> Graphics.DVI.*?
22:00:49 <fizzie> Vorpal: Can you run vpddecode on your laptop? It's supposed to work on most IBM/Lenovo machines. (Probably won't return anything very interesting, though it should tell the model.)
22:02:06 <Vorpal> fizzie, just BIOS build id, box serial number, mobo serial, and machine model code
22:02:30 <Ngevd> Okay, I've made a small mistake
22:02:35 <Ngevd> It now outputs "NICK Pim"
22:02:45 <fizzie> Right, but it did work. Was just curious; it's all "No VPD structure found, sorry" for everything I have.
22:02:51 <elliott> Vorpal: I'm half-tempted to make inst work on KDE.
22:02:58 <fizzie> Ngevd: It's trying to become a PimpBot.
22:03:17 <elliott> Oh no, there isn't a big "all of KDE" package any more.
22:05:50 <Ngevd> I will now show you what it outputs.
22:05:56 <Ngevd> > cycle "NICK pie"
22:05:57 <lambdabot> "NICK pieNICK pieNICK pieNICK pieNICK pieNICK pieNICK pieNICK pieNICK pieNI...
22:06:06 -!- kmc__ has changed nick to kmc.
22:06:11 <Ngevd> Thanks, lambdabot
22:06:45 <zzo38> OK, I could use Graphics.DVI
22:07:04 <fizzie> Vorpal: Also upon close inspection, the laptop in fact has two "Portable Battery"s. Both batteries have a location of "Location of the battery", but one is called "Battery Name" while the other is named "BATT 1". (Both are also NiCd batteries, which I strongly doubt.)
22:07:09 <zzo38> Although font metrics might should be different module??
22:07:58 -!- derrik has quit (Quit: byezz).
22:07:59 <zzo38> What should its package name be?
22:12:29 -!- Patashu has joined.
22:13:00 <elliott> pikhq: You know a lot about multilib right???
22:13:40 <zzo38> What should the package name be for Haskell library to read/write/process DVI files?
22:13:55 <elliott> whatever you want to call it
22:14:12 <elliott> zzo38: dvi-processor?
22:14:16 <zzo38> OK
22:14:26 -!- Phantom__Hoover has joined.
22:15:19 <Deewiant> elliott: Sounds like a program, not a library
22:15:46 <elliott> Deewiant: ?
22:15:49 <elliott> Oh
22:16:08 <Vorpal> fizzie, heh, nice batteries
22:16:17 <Vorpal> fizzie, my battery info is completely accurate :/
22:16:29 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
22:16:41 <Vorpal> hm should check if it lists any second ultrabay battery as being installed
22:17:38 <zzo38> Deewiant: Do you mean the dvi-processor?
22:17:47 <Deewiant> zzo38: Yep
22:18:01 <elliott> zzo38: dvi-processing?
22:18:06 <zzo38> elliott: OK.
22:28:40 -!- ais523 has quit (Remote host closed the connection).
22:35:42 -!- ive has joined.
22:44:03 -!- Darth_Cliche has quit (Quit: You are now graced with my absence.).
22:44:39 -!- Darth_Cliche has joined.
22:51:11 <Phantom__Hoover> OK, Two Steps From Hell has colonised the BBC.
22:51:34 <Ngevd> What, Hexham?
22:51:46 <Phantom__Hoover> (Even *knowing* about Two Steps From Hell has completely ruined watching any kind of advertisement.)
22:54:27 <elliott> http://en.wikipedia.org/wiki/Two_Steps_From_Hell
22:54:29 <elliott> Phantom__Hoover: this is so bad
22:54:34 <elliott> who would buy those two albums
22:55:03 <Phantom__Hoover> elliott, people who need epic music for a backing track.
22:55:19 <Phantom__Hoover> This includes 50% of all YouTube videos for some reason.
22:55:27 -!- zzo38 has quit (Remote host closed the connection).
23:00:36 -!- TeruFSX has quit (Read error: Connection reset by peer).
23:01:22 <olsner> not surprisingly, their own promotional videos have the same epic music
23:03:36 <oerjan> Phantom__Hoover: you can fix that youtube problem by simply asking them to vigorously maintain their copyright right? >:P
23:04:27 <oerjan> s/asking them/subtly suggesting for them/
23:04:55 <olsner> I would think they'd rather have their music promoted so that more movie trailers use their music and pay for it
23:05:24 <Vorpal> heh
23:05:32 <Vorpal> what is so bad about it?
23:05:38 <Vorpal> note: I haven't listened to it yet
23:05:46 <Vorpal> nor will I unless someone gives me a link
23:06:10 <olsner> ... there was a link
23:06:21 <olsner> ... also you can google
23:06:37 <Vorpal> there was a wp link
23:07:19 <olsner> well done, you've found the link! :)
23:07:34 <Vorpal> olsner, I see no youtube link there though
23:08:00 <olsner> me neither
23:08:16 <Vorpal> so that is what I asked for a link to...
23:08:23 <Vorpal> <olsner> not surprisingly, their own promotional videos have the same epic music
23:08:30 <Vorpal> olsner, which one in particular did you mean?++++++++
23:08:33 <Vorpal> gah
23:08:36 <Vorpal> synergy broke
23:08:39 <Vorpal> and spammed keys
23:08:42 <Vorpal> fuck synergy
23:08:44 <olsner> that was not on youtube
23:08:53 <Vorpal> oh, well where is that then?
23:09:02 <Vorpal> if it is flash and not youtube, don't bother
23:09:04 <Vorpal> can't watch that
23:09:11 <olsner> ok, it was flash and not youtube
23:09:31 <Vorpal> oh it is on youtube, at least the trailers they link
23:09:34 <Phantom__Hoover> Vorpal, how large a rock do you live under if you think there are web videos left that don't use Flash?
23:09:37 <Vorpal> for some of them
23:09:46 <Vorpal> Phantom__Hoover, html5 man
23:09:52 <Vorpal> one of them was anyway
23:10:21 <Vorpal> Phantom__Hoover, and Bethesda used HTML5 videos for their skyrim gameplay footage
23:10:22 <Phantom__Hoover> olsner, I can't find the video in question, though.
23:10:51 <olsner> the one I found was http://www.twostepsfromhell.com/dynastypromo.php
23:11:11 <Vorpal> the twilight one at the top is html5 from youtube for me
23:11:40 <Phantom__Hoover> XD, the choir has lyrics sheets.
23:11:41 <Vorpal> under the video tab
23:12:06 <elliott> <Phantom__Hoover> Vorpal, how large a rock do you live under if you think there are web videos left that don't use Flash?
23:12:10 <elliott> the same one I live under
23:12:17 <Vorpal> elliott, indeed
23:12:42 <olsner> Vorpal: the video tab seems to have all the stuff that other people have made using their music
23:12:44 <elliott> Vorpal: which is none.
23:12:53 <Vorpal> hey there is an embedded .mov here
23:12:54 <elliott> you live under a different rock, because the premise is false
23:13:05 <Phantom__Hoover> Help now I am confused.
23:13:16 <Vorpal> elliott, well there are some embedded .movs still. And some HTML5 videos are starting to show up
23:13:18 <elliott> Phantom__Hoover: html5 is pretty common.
23:13:34 <Phantom__Hoover> elliott, well OK, but only recently, so I forgot about it.
23:13:51 <elliott> recently as in "past few years" :)
23:15:04 <Vorpal> oh god, live actors for a skyrim trailer. How does that even make sense.
23:15:16 <olsner> hmm, the episode starts with sisko being relieved of command... this can only mean that the rest of the episode is about him getting it back somehow
23:15:22 <Vorpal> (front page video on http://www.elderscrolls.com/ after you selected language)
23:15:31 <olsner> or maybe it'll be a cliffhanger! I'm already looking forward to the next season
23:15:32 * Phantom__Hoover → sleep
23:15:54 <elliott> olsner: what season are you on>
23:15:55 <elliott> ?
23:16:21 <elliott> oh god
23:16:25 <olsner> elliott: just started watching the final episode of season 3
23:16:29 <elliott> one of the two steps from hell guys
23:16:34 <elliott> oerjan: is from trondheim
23:16:42 <elliott> olsner: that's about when the good starts :)
23:16:46 <elliott> olsner: skip profit and lace btw
23:16:53 <olsner> and the other one is from hexham?
23:19:10 <olsner> hmm, where did I get the idea that two steps from hell was exactly two guys?
23:19:43 -!- Phantom___Hoover has joined.
23:19:45 <Phantom___Hoover> <elliott> olsner: that's about when the good starts :)
23:19:51 <elliott> I SAID "ABOUT"
23:19:53 <Phantom___Hoover> No it's not, that's the end of season 2.
23:19:56 <elliott> Yes yes yes.
23:20:01 <elliott> But it takes about a season to amp up to full goodness.
23:20:16 <Phantom___Hoover> 'About' gives you a few episodes' leeway.
23:20:26 <elliott> Phantom___Hoover is actually sleeping as we speak.
23:20:33 <Phantom___Hoover> (When was the last monster of the week episode anyway?)
23:21:11 <olsner> "about" gives you "a few" something of whatever unit you are using, could be seasons in this case
23:21:50 <Vorpal> hey, the first elderscrolls game is available as a free download next to a dosbox link nowdays
23:21:53 <Vorpal> kind of nice
23:22:05 -!- Phantom__Hoover has quit (Ping timeout: 240 seconds).
23:22:27 <Vorpal> same for the second one
23:30:18 -!- Ngevd has quit (Ping timeout: 252 seconds).
23:38:28 -!- Phantom___Hoover has quit (Quit: Leaving).
23:51:04 -!- evincar has quit (Remote host closed the connection).
23:56:08 -!- augur has quit (Remote host closed the connection).
2011-10-30
00:10:32 -!- Madoka-Kaname has quit (Ping timeout: 252 seconds).
00:16:02 -!- Darth_Cliche has quit (Quit: You are now graced with my absence.).
00:18:17 <oerjan> 01:15 elliott> one of the two steps from hell guys
00:18:17 <oerjan> 01:16 elliott> oerjan: is from trondheim
00:18:32 <oerjan> well hell _is_ only a half hour drive from trondheim.
00:27:18 <elliott> Date: Fri, 28 Oct 2011 17:15:33 +0100
00:27:18 <elliott> To: elliott
00:27:18 <elliott> User-Agent: Heirloom mailx 12.5 7/5/10
00:27:18 <elliott> MIME-Version: 1.0
00:27:18 <elliott> Content-Type: text/plain; charset=us-ascii
00:27:18 <elliott> Content-Transfer-Encoding: 7bit
00:27:21 <elliott> Subject: editor saved ``.git/COMMIT_EDITMSG''
00:27:23 <elliott> You were editing the file ".git/COMMIT_EDITMSG"
00:27:25 <elliott> at <Fri Oct 28 17:15> on the machine ``dinky''
00:27:27 <elliott> when the editor was killed.
00:27:29 <elliott> You can retrieve most of your changes to this file
00:27:31 <elliott> using the "recover" command of the editor.
00:27:33 <elliott> An easy way to do this is to give the command "vi -r .git/COMMIT_EDITMSG".
00:27:35 <elliott> This method also works using "ex" and "edit".
00:27:37 <elliott> -- ~/dead.letter
00:37:42 <Vorpal> elliott, ~/dead.letter is there because you don't have a MTA setup
00:37:50 <Vorpal> and something tried to mail
00:37:58 <elliott> i know what dead.letter is
00:38:12 <oerjan> elliott has killed many a letter
00:38:15 <Vorpal> so why did you paste it?
00:38:23 <elliott> because the letter is funny
00:38:27 <Vorpal> okay
00:39:29 -!- augur has joined.
00:46:13 <Vorpal> night
00:46:28 <oerjan> nave
00:50:53 -!- Vorpal has quit (Ping timeout: 248 seconds).
01:06:54 <elliott> hmm
01:07:20 <oerjan> And time is running backwards. And so is the bride.
01:16:18 <elliott> oerjan: hey i was just /wondering/ about the dst when i said hmm
01:16:31 <elliott> s/just \/wondering\//\/just wondering\//
01:18:29 <oerjan> hack & slash
01:20:13 <elliott> assuming oerjan is referring to dst.
01:20:45 <oerjan> yes hack & slash is _so_ connected with dst
01:24:50 <CakeProphet> elliott: hi what is EC
01:24:55 <elliott> ec
01:25:27 <CakeProphet> ah yes, I suppose it is.
01:25:44 <oerjan> ec is ec
01:26:00 <oerjan> if you look at it objectivistically
01:27:16 <CakeProphet> I generally object to objectivistic.
01:31:26 <oerjan> how subjective of you
01:34:21 <CakeProphet> if a tree falls on an objectivist and no one else hears it: does anyone else care?
01:34:55 <oerjan> depends where you buried the body.
01:36:37 -!- Sgeo|web has quit (Ping timeout: 265 seconds).
01:39:51 <elliott> !logs
01:40:40 <oerjan> `logs
01:40:44 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: logs: not found
01:40:50 <oerjan> @logs
01:40:51 <lambdabot> http://haskell.org/ghc/docs/latest/html/libraries/index.html
01:40:52 <elliott> oerjan: try it yourself
01:40:55 <oerjan> ^logs
01:40:55 <elliott> !logs, that is
01:41:01 <oerjan> oh hm
01:41:03 <oerjan> !logs
01:41:56 <oerjan> !sh echo hi
01:42:07 <oerjan> rip
01:44:06 <elliott> rip
01:44:09 <elliott> oerjan: it worked
01:44:12 <elliott> !logs, that is
01:44:15 <oerjan> i know
01:44:15 <elliott> you're just not looking in the right place
01:44:19 <elliott> oh
01:44:36 <oerjan> but that doesn't help poor EgoBot
01:49:32 -!- sllide has joined.
01:52:33 <oerjan> astonishing spam
01:53:23 <elliott> heh
01:59:48 -!- kmc_ has joined.
02:02:53 -!- kmc has quit (Ping timeout: 248 seconds).
02:04:40 -!- kmc_ has quit (Ping timeout: 260 seconds).
02:12:04 <CakeProphet> do C++ templates make C++ kind of sort of dependently typed?
02:12:51 * oerjan looks worried at elliott
02:12:55 <copumpkin> CakeProphet: no
02:12:58 <elliott> no.
02:13:02 <CakeProphet> okay.
02:16:52 <CakeProphet> it's more like macro expansion than dependent types.
02:17:47 -!- madbr has joined.
02:20:20 -!- kmc_ has joined.
02:22:32 -!- kmc_ has changed nick to kmc.
02:23:05 <madbr> whee doing ARM assembly at work
02:26:38 <CakeProphet> you madbr o?
02:28:26 <madbr> speed optimizing sound code :3
02:33:06 <monqy> CakeProphet:.....:(
02:33:45 <madbr> doing a reverb atm and it's a challenge :3
02:34:30 <CakeProphet> monqy: .... ?
02:35:29 <CakeProphet> I'm sorry I've never dealt with dependent types so I don't know much about them. T<A, B, C, 4> looked kind of like dependent types.
02:35:33 -!- elliott has quit (Read error: Connection reset by peer).
02:36:08 -!- elliott has joined.
02:36:43 <monqy> CakeProphet: you know perfectly well what you did
02:36:49 <monqy> CakeProphet: do you feel no shame
02:37:19 <elliott> monqy mad./
02:37:22 <elliott> s/\/$//
02:38:34 <monqy> :(
02:41:00 <CakeProphet> monqy: er, I don't know what I did.
02:41:14 <monqy> 19:26:08 < CakeProphet> you madbr o?
02:41:22 <CakeProphet> oh. yeah, no shame.
02:41:24 <madbr> eh?
02:42:01 -!- sllide has quit (Read error: Connection reset by peer).
02:42:55 <oerjan> CakeProphet: i suppose C++ templates would be dependently typed if they actually _had_ types.
02:43:56 <oerjan> wait why am i even speaking, i don't know c++ templates.
02:46:24 <CakeProphet> oerjan: right thus more like macro expansion
02:46:47 <CakeProphet> but kind of like dependent types if you think of templates as a kind of parametric type (which I think is a pretty reasonable analogy)
02:48:08 <CakeProphet> see: http://en.wikipedia.org/wiki/Template_metaprogramming
02:50:35 <CakeProphet> but unless you store the value parameters in a struct or something you don't really have access to the value at runtime.
02:51:56 <oerjan> phantom values!
02:52:39 <copumpkin> templates do allow you to do most of the things you can do in haskell's type system
02:52:46 <copumpkin> but that doesn't mean it's dependent
02:52:52 <CakeProphet> not at all
02:53:02 <CakeProphet> considering, uh, Haskell is not dependently typed. :P
02:53:15 <copumpkin> well, haskell approaches dependent types with GADTs
02:53:25 <copumpkin> they give you pseudo type-depending-on-value behavior
02:53:30 <copumpkin> if you jump through enough hoops
02:54:14 <CakeProphet> anyway, I must go kill brain cells.
02:54:22 <CakeProphet> later.
02:56:01 <copumpkin> :)
03:12:31 <elliott> monqy: as soon as https://github.com/pbrisbin/aurget/pull/4 is merged you should switch over to aurget :p
03:13:58 <monqy> once I need an aur, sure
03:15:12 <madbr> wonder if it would be possible to make an efficient dataflow oriented VLIW processor :D
03:15:26 -!- MDude has changed nick to MSleep.
03:16:01 <oerjan> copumpkin: zzo38's recent logic experiments made me wonder - while haskell isn't dependently typed, is haskell's _type system_ dependently typed, with all the extensions heaped up so far...
03:16:38 <oerjan> as in, if you just ignore the values and look at the types as values
03:16:49 <copumpkin> then you'd have to see the types influencing kinds
03:16:58 <copumpkin> which they don't, because we don't even have kind polymorphism yet
03:17:02 <elliott> monqy: everyone always needs an aur
03:17:14 <copumpkin> but as far as values and types, it sort of already is dependently typed already
03:17:17 <copumpkin> -already
03:17:33 <oerjan> copumpkin: well someone is adding it, i think i saw...
03:17:38 <copumpkin> yeah
03:17:54 <copumpkin> not sure how the GADT equivalent will work at the kind level
03:27:36 <oerjan> is this intended to allow things like making Data and Typeable kind polymorphic?
03:30:15 <copumpkin> yep, among other things
03:35:19 -!- Jafet has joined.
03:35:23 <elliott> fun to see someone discussing your bug report minutes after you make it on IRC :P
03:35:33 <elliott> (without knowing you're there)
03:49:13 <elliott> Zero-Analogy Monad Tutorial (unknownparallel.com)
03:49:13 <elliott> no get it away from me
03:52:38 <coppro> elliott: hum?
03:52:51 <elliott> hum to what?
03:53:20 <oerjan> monads are like elliott-eating monsters
03:53:38 <elliott> monads are like monads
03:53:48 <Patashu> monads are like things that are difficult to explain
03:54:47 <elliott> not really
03:55:14 <coppro> elliott: I don't see a ZAMT there
03:55:20 <monqy> monads are like things that are easy to explain
03:55:22 <monqy> (thumbs up)
03:55:29 <elliott> coppro: it was a paste from a reddit.com line
03:55:34 <elliott> "<elliott> no get it away from me" was my reaction
03:55:38 <coppro> oh
03:55:51 <elliott> anything i post that looks like a title and a domain in parens is me being snarky at programming reddit links :P
03:57:19 <coppro> ah
04:09:55 -!- hagb4rd has quit (Quit: Nettalk6 - www.ntalk.de).
04:19:57 <elliott> I can safely say that Vorpal was completely right about #archlinux and it is beyond even the wildest dreams of people who dream about really bad IRC channels.
04:20:08 <Patashu> how bad is it really
04:20:17 <elliott> <ZipSplat> I typed: sudo rc.d start webmin -x
04:20:17 <elliott> <ZipSplat> And got nothing
04:20:17 <elliott> <zendeavor> lol
04:20:17 <elliott> <zendeavor> stop trying to use webmic
04:20:17 <elliott> <ZipSplat> "getopt: invalid option -- 'x'"
04:20:18 <elliott> <zendeavor> webmin
04:20:20 <elliott> <zendeavor> just quit.
04:20:22 <elliott> <lstarnes> you don't want that
04:20:24 <elliott> <ZipSplat> Why does everything suck?
04:20:26 <elliott> <lstarnes> sudo bash -x /etc/rc.d/webmin start
04:20:28 <elliott> <zendeavor> you suck
04:20:39 <elliott> THANKS ZENDEAVOR, I'M SURE ZIPSPLAT REALLY APPRECIATES YOUR HELP
04:21:04 <Patashu> blah blah one bad apple
04:21:12 <elliott> Patashu: this guy literally talks all the time
04:21:34 <elliott> like there hasn't been a five minute stretch when (a) I've been in #archlinux (b) he isn't talking every tenth line
04:21:56 <Patashu> clearly investigative journalism is required
04:21:59 <elliott> admittedly this ZipSplat guy is super annoying too :P
04:23:30 <oerjan> well neither is an op, it seems
04:23:57 <elliott> yeah, you should kline them. you're an ircop as well as a wiki admin, right?
04:25:02 <oerjan> obviously
04:25:49 <elliott> good.
04:47:10 -!- zzo38 has joined.
04:50:48 <elliott> <JCDenton> You know, I just came in here to say NetBeans had a sexy preloader, and now it's been half an hour
04:50:48 <elliott> <JCDenton> ffs
04:50:49 <elliott> <JCDenton> http://i.imgur.com/eRCu6.png That is seriously sexy though. Or maybe that's just because I love that shade of blue.
04:51:04 <elliott> Patashu: no seriously, any channel that allows more than three (there were earlier) messages of netbeans preloader praise is the worst
04:51:12 <Patashu> LOL
04:53:04 <elliott> <JCDenton> Why are so many IDE's Java powered anyways?
04:53:16 <elliott> netbeans is java??? so weird
05:03:37 <zzo38> The only effective control structure in the SQL reporting program I made is the for-each structure. It seem to be able to do most computations needed, but maybe there is something missing. Would it be needed? A virtual table that has an infinite number of records with values 0 for the first row, and then 1, 2, 3, 4, 5, 6, and so on... do you think it would help at all?
05:04:57 <Patashu> sometimes I wonder why that doesn't exist
05:04:59 <Patashu> it would be really useful
05:16:12 -!- kmc_ has joined.
05:16:53 -!- augur has quit (Remote host closed the connection).
05:18:36 -!- kmc has quit (Disconnected by services).
05:18:37 -!- kmc_ has changed nick to kmc.
05:24:40 -!- tiffany has quit (Quit: Leaving).
05:26:34 <elliott> Gregor: Ping
05:31:18 -!- zzo38 has quit (Remote host closed the connection).
05:36:57 <elliott> pikhq: Wake Gregor up :)
05:37:32 -!- hagb4rd has joined.
05:42:14 -!- derrik_ has joined.
05:43:25 -!- derrik_ has changed nick to derrik.
05:48:12 -!- Madoka-Kaname has joined.
05:49:45 -!- madbr has quit (Quit: Radiateur).
05:57:44 -!- ive has quit (Ping timeout: 256 seconds).
06:11:23 <fizzie> @tell Vorpal Re the triple fault, http://p.zem.fi/v6ll
06:11:23 <lambdabot> Consider it noted.
06:35:13 -!- ive has joined.
06:36:33 -!- ive has quit (Client Quit).
06:44:44 -!- augur has joined.
06:57:03 <elliott> fizzie: I like the not-in-the-usage "force".
06:57:06 <elliott> I wonder where it goes??
07:12:18 -!- Ngevd has joined.
07:15:44 -!- elliott has quit (Remote host closed the connection).
07:22:27 <Ngevd> Hello!
07:22:36 -!- oerjan has quit (Quit: Good night).
08:03:58 -!- monqy has quit (Quit: hello).
08:19:53 -!- kmc_ has joined.
08:23:42 -!- kmc has quit (Ping timeout: 255 seconds).
08:25:27 -!- kmc__ has joined.
08:29:24 -!- kmc_ has quit (Ping timeout: 276 seconds).
08:39:02 -!- derrik has quit (Quit: no reason).
08:44:30 -!- derrik has joined.
08:49:44 -!- Vorpal has joined.
08:57:27 <Ngevd> @pl \x -> b ++ [x]
08:57:28 <lambdabot> (b ++) . return
08:57:42 <Ngevd> :t return
08:57:43 <lambdabot> forall a (m :: * -> *). (Monad m) => a -> m a
08:58:45 -!- Ngevd has quit (Quit: Leaving).
09:16:03 -!- sebbu2 has joined.
09:16:03 -!- sebbu2 has quit (Changing host).
09:16:03 -!- sebbu2 has joined.
09:18:45 -!- sebbu has quit (Ping timeout: 258 seconds).
09:19:45 -!- Ngevd has joined.
09:33:04 <Ngevd> Hello!
09:36:44 -!- Phantom_Hoover has joined.
09:37:11 -!- kmc__ has quit (Remote host closed the connection).
09:37:41 -!- kmc has joined.
09:39:08 <Vorpal> Does anyone know a proper (as in, POSIX conforming) cat(1) in an esolang apart from the one I wrote in befunge98? I was cleaning up $HOME and just found it.
09:39:08 <lambdabot> Vorpal: You have 1 new message. '/msg lambdabot @messages' to read it.
09:40:37 <Vorpal> fizzie, " kbd Use the keyboard controller. cold reset (default)" <-- how does that even work
09:40:47 <Vorpal> I'm scared to look
09:44:21 <CakeProphet> just my luck.
09:44:24 <CakeProphet> someone stole money from me.
09:44:27 <CakeProphet> assholes.
09:44:29 <Vorpal> ouch
09:44:38 <CakeProphet> $120
09:44:42 <CakeProphet> oh well.
09:45:01 * CakeProphet gets his baseball bat.
09:45:05 <CakeProphet> time to fuck some bitches up.
09:45:21 <CakeProphet> (Note: not really)
10:02:39 -!- kmc_ has joined.
10:06:01 -!- kmc has quit (Ping timeout: 252 seconds).
10:09:16 -!- kmc has joined.
10:11:39 -!- kmc_ has quit (Ping timeout: 258 seconds).
10:14:02 -!- kmc_ has joined.
10:17:17 -!- kmc has quit (Ping timeout: 248 seconds).
10:20:06 -!- kmc__ has joined.
10:23:32 -!- kmc_ has quit (Ping timeout: 258 seconds).
10:28:03 -!- kmc_ has joined.
10:31:09 -!- kmc__ has quit (Ping timeout: 248 seconds).
10:31:41 -!- Ngevd has quit (Ping timeout: 248 seconds).
10:35:07 -!- kmc_ has quit (Ping timeout: 240 seconds).
10:35:40 -!- kmc_ has joined.
10:39:19 -!- Ngevd has joined.
10:44:25 -!- kmc_ has quit (Ping timeout: 260 seconds).
10:58:31 <CakeProphet> I like how the language shootout has benchmarks on CINT
10:58:42 <CakeProphet> a good way to demonstrate the importance of implementation over language.
10:58:43 <Vorpal> CakeProphet, ?
10:58:49 <Vorpal> CINT?
10:58:50 <CakeProphet> CINT = some C interpreter
10:58:52 <Vorpal> ah
10:58:59 <CakeProphet> it's apparently really fucking slow.
10:59:11 <CakeProphet> slower than Perl, by a huge amount.
10:59:38 <Vorpal> heh
10:59:48 <CakeProphet> I wonder why.
11:00:02 <CakeProphet> it's not like C has complex semantics when interpreted.
11:00:14 <CakeProphet> Perl does all kinds of wasteful things.
11:00:43 <CakeProphet> especially when carelessly coded... which is... often.
11:00:52 <Vorpal> C doesn't have complex semantics? Seriously?
11:01:08 <CakeProphet> I mean compared to perl I don't see what would slow it down so much at runtime
11:01:31 <CakeProphet> perhaps CINT is implemented in some poorly chosen language.
11:01:38 <CakeProphet> and is just a poorly implemented interpreter.
11:02:31 <CakeProphet> The language interpreted by CINT is actually something of a hybrid between C and C++, covering about 95% of ANSI C and 85% of C++. The syntax, however, is a bit more forgiving than either language. For example, the operator -> can be replaced by . with only an optional warning. In addition, statements on the command line do not need to end with a semi-colon, although this is necessary for statements in macros.
11:02:37 <CakeProphet> oh, okay. so its not really C.
11:02:41 <CakeProphet> but some weird C-like scripting language.
11:03:41 -!- derdon has joined.
11:04:03 <CakeProphet> welcome Tyler Derdon.
11:04:29 <derdon> oh, thanks for welcoming me :)
11:05:03 <CakeProphet> I haven't seen you before. Are you new and stuff?
11:05:11 <CakeProphet> !welcome (I think)
11:05:16 <CakeProphet> no...
11:05:17 <CakeProphet> `welcome
11:05:22 <CakeProphet> :( nevermind.
11:05:33 <CakeProphet> fungot: please welcome derdon.
11:05:34 <fungot> CakeProphet: why would he have attempted?! decide!" on the floor tonight
11:05:35 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: welcome: not found
11:06:07 <derdon> CakeProphet: I'm not really new, just a lurker in this channel ;)
11:08:17 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
11:10:25 -!- sebbu2 has changed nick to sebbu.
11:18:27 <derrik> some channels hate lurkers too
11:18:47 <Vorpal> not this one
11:19:06 <derrik> i got my first kick on irc with message "lurking"
11:19:11 <Vorpal> huh
11:19:55 <derrik> i.e. for joining a channel and saying nothing for 15 minutes, while everybody else was also silent
11:20:48 <Vorpal> what was the transfer speed of a typical PC floppy drive btw? Anyone happens to know?
11:21:29 <Vorpal> must have been around a few kb/s
11:21:36 <olsner> it was slow, yes
11:22:01 <Vorpal> olsner, yes but I'm looking for numbers here. Are we talking, say, 1 kb/s, 10 kb/s or 20 kb/s
11:22:11 <Vorpal> talking about*
11:22:29 <olsner> ISTR it took a few minutes to read (or format) the whole floppy
11:22:35 <Vorpal> hm
11:23:04 <Vorpal> formatting could have involved operations that took a different time than normal reading or writing
11:23:14 <Vorpal> but yeah, something like that
11:24:03 <olsner> so... 1440kB divided by something between 60s and 240s
11:24:58 <Vorpal> so between 6 and 24 kb/s approx?
11:25:10 <Vorpal> hm
11:28:30 <olsner> or look it up in the big table of storage device transfer speeds
11:28:44 <Vorpal> olsner, huh, where?
11:28:48 <Vorpal> oh wait, wikipedia?
11:28:58 <Vorpal> (who else would compile such a list?)
11:29:15 <olsner> I dunno, I haven't seen the list yet
11:29:38 <Vorpal> oh I thought you referred to some specific list you knew existed
11:30:00 <Vorpal> yeah wikipedia doesn't seem to have one
11:30:53 -!- Ngevd has quit (Ping timeout: 245 seconds).
11:31:09 <CakeProphet> Amount an unemployed Utah man is charging for the opportunity to hunt and kill him : $10,000
11:32:00 <Vorpal> ...
11:37:25 -!- derrik has quit (Quit: done).
11:47:52 <Phantom_Hoover> I know, he should be charging way more.
11:47:52 <lambdabot> Phantom_Hoover: You have 3 new messages. '/msg lambdabot @messages' to read them.
11:57:45 <fizzie> Vorpal: The keyboard controller had an extra output pin they hooked up into the reboot like way back then, to provide a programmatic reset. Much like they did with the A20 gate.
11:58:27 -!- Jafet has quit (Quit: Leaving.).
12:00:35 <fizzie> (And the PC speaker.)
12:01:01 <fizzie> (Though I suppose the beep is a kinda-sorta keyboard-related thing.)
12:06:23 <Vorpal> fizzie, ah
12:09:40 -!- Trista has joined.
12:22:41 -!- Ngevd has joined.
12:35:21 <Ngevd> Hello!
12:36:44 -!- MSleep has changed nick to MDude.
12:39:36 <Ngevd> I've got a tuple of ([Int],[Char])
12:39:51 <Ngevd> Actually, I've got a bunch of those
12:40:22 <Ngevd> And I want to get rid of the ones with equal [Int] parts so it is unique
12:44:45 -!- Trista has quit (Quit: Leaving.).
12:46:27 -!- Trista has joined.
12:48:25 <Ngevd> Any idea how?
12:48:32 <Ngevd> In haskell, btw
12:52:02 <Deewiant> ?ty nubBy ((==) `on` fst)
12:52:02 <lambdabot> forall a b. (Eq a) => [(a, b)] -> [(a, b)]
12:53:14 <fizzie> > let l = [(1, "foo"), (2, "bar"), (1, "baz"), (3, "quux")] in nubBy ((==) `on` fst) l
12:53:15 <lambdabot> [(1,"foo"),(2,"bar"),(3,"quux")]
12:53:21 <Ngevd> :D
12:53:22 <Ngevd> Thanks
12:53:25 <fizzie> I was just going to do that.
12:53:38 <Phantom_Hoover> [Int], fizzie, not Int.
12:53:38 <fizzie> Deewiant is such a spoilamator.
12:53:59 <fizzie> Phantom_Hoover: Why would that matter?
12:54:00 <Phantom_Hoover> :t nubBy
12:54:01 <lambdabot> forall a. (a -> a -> Bool) -> [a] -> [a]
12:54:23 <Phantom_Hoover> fizzie, it doesn't, it's just hardly the best demonstration.
12:55:34 <fizzie> > let l = [([1], "foo"), ([2], "bar"), ([1], "baz"), ([3], "quux")] in nubBy ((==) `on` fst) l -- much improved.
12:55:35 <lambdabot> [([1],"foo"),([2],"bar"),([3],"quux")]
12:56:17 <Phantom_Hoover> Also, he said that he wanted to get rid of those with equal [Int] parts, not pick only one of them.
12:56:42 <fizzie> Well, I interpreted a bit.
12:57:24 <fizzie> Mostly from the "so it is unique" part, though admittedly completely removing multiple things would also match that.
12:58:33 <Ngevd> fizzie is right
12:58:42 <Ngevd> But it's not Phantom_Hoover's fault
12:58:44 <Ngevd> It's mine
12:58:49 <Ngevd> Also, I will go now
12:58:50 -!- Ngevd has quit (Quit: Goodbye).
12:59:58 -!- Trista has quit (Read error: Connection reset by peer).
13:27:34 -!- copumpkin has quit (Ping timeout: 252 seconds).
13:28:09 -!- copumpkin has joined.
14:28:05 -!- tiffany has joined.
14:38:11 -!- ais523 has joined.
14:38:50 <ais523> ooh, spam claiming to be from Microsoft
14:38:55 <ais523> I thought that died out years ago
14:44:46 <olsner> hmm, they broke the theme.. it sounds like they took the old theme and just added another theme on top of (or under) it
15:08:30 -!- Slereah_ has quit (Ping timeout: 276 seconds).
15:09:48 -!- Slereah_ has joined.
15:37:29 -!- Slereah_ has quit (Ping timeout: 258 seconds).
15:39:15 -!- Slereah_ has joined.
15:40:55 -!- Slereah_ has quit (Client Quit).
15:41:13 -!- Slereah_ has joined.
15:45:13 -!- derrik has joined.
15:45:42 -!- Slereah_ has quit (Ping timeout: 260 seconds).
15:47:38 -!- Slereah_ has joined.
15:49:46 -!- zzo38 has joined.
16:01:51 -!- monqy has joined.
16:06:57 -!- ive has joined.
16:37:18 -!- Slereah_ has quit (Ping timeout: 240 seconds).
16:40:46 <zzo38> Is this a proper way of representing a TFM font in Haskell? data Font = Font { fontName :: ByteString, fontChecksum :: Word32, atSize :: Word32, designSize :: Word32, fontDimen :: [Int32], firstChar :: Word8, leftBoundChar :: [LigKern], rightBoundChar :: Word8, characters :: [FontChar] } deriving (Eq, Show);
16:41:25 <zzo38> data FontChar = FontChar { charWidth :: Int32, charHeight :: Int32, charDepth :: Int32, charItalCorr :: Int32, charLarger :: Maybe Word8, charLigKern :: [LigKern], charExten :: Maybe Extensible } deriving (Eq, Show);
16:42:48 <zzo38> data LigKern = Kerning { lkChar :: Word8, kernDist :: Int32 } | Ligature { lkChar :: Word8, ligChar :: Word8, ligDelCur :: Bool, ligDelNext :: Bool, ligSkip :: Int } deriving (Eq, Show);
16:43:08 <zzo38> data Extensible = Extensible { extTop :: Word8, extMid :: Word8, extBot :: Word8, extRep :: Word8 } deriving (Eq, Show);
16:43:12 <ais523> do Americans really pronounce "buoy" as "booey"?
16:43:20 <ais523> or is it just this one particular American being crazy?
16:43:28 <ais523> (the UK pronunciation is "boy")
16:43:43 <zzo38> ais523: Probably it is more than one, and not only necessarily American.
16:43:52 -!- Ngevd has joined.
16:44:03 <Ngevd> Hello!
16:44:49 <ais523> hi
16:45:52 <Ngevd> I've written a crappy program to help me write Pietbot
16:46:26 <Ngevd> It's essentially a version of Dijkstra's algorithm, over the space of Piet programs that only use push 1, add, sub, mult, and dup
16:46:46 <Ngevd> It doesn't really work very well
16:47:42 <monqy> ais523: yeah I've only ever heard "booey"
16:48:15 <ais523> American English is bizarre sometimes
16:48:23 <ais523> but thanks for letting me know
16:48:32 <ais523> (I suppose British English is bizarre sometimes too)
16:49:51 <ais523> it's not like the word has a sensible spelling for either pronunciation
16:50:14 <Ngevd> Which word are we talking about?
16:50:18 <ais523> "buoy"
16:50:36 <Ngevd> Definitely homophonic to "boy"
16:50:59 <Ngevd> Should be pronounce "boo-oi" if language was logical
17:11:14 -!- evincar has joined.
17:13:14 <evincar> Working on Even has given me a good idea for that other language I was working on, Very.
17:13:37 <evincar> I also found out that Unicode doesn't have a lot of the arrow symbols I want. :(
17:13:41 <monqy> :(
17:15:03 <Ngevd> Meanwhile, since IWC ended, I'm bingeing on Gunnerkrigg Court
17:16:29 <evincar> So, for a stack-based language, a good set of basic combinators is dup, swap, drop, quote, apply, compose.
17:16:53 <evincar> The problem with restricting it to stack-based operation is that you have to make a lot of unnecessary guarantees about sequence.
17:17:57 <evincar> If you make those (or any minimal set of) combinators into composition operations, then in, say, "x dup f g", you can perform f and g in parallel.
17:18:20 <evincar> You go from just composition into building a Big Damn DAG.
17:18:34 <evincar> I'm not even entirely sure it needs to be acyclic.
17:20:03 <Ngevd> I'm not too sure what you are on about
17:23:21 -!- elliott has joined.
17:25:25 <Ngevd> Hey elliott
17:25:29 <elliott> hi
17:25:38 <Ngevd> How are you?
17:25:58 <elliott> 09:40:37: <Vorpal> fizzie, " kbd Use the keyboard controller. cold reset (default)" <-- how does that even work
17:25:58 <elliott> 09:40:47: <Vorpal> I'm scared to look
17:26:04 <elliott> Vorpal: x86 does everything through the keyboard
17:26:05 <elliott> Ngevd: good
17:27:52 <elliott> 11:31:09: <CakeProphet> Amount an unemployed Utah man is charging for the opportunity to hunt and kill him : $10,000
17:27:59 <elliott> amount CakeProphet is gullible: 100%
17:28:36 <Ngevd> There's an objective measure of gullibility now?
17:28:50 <elliott> yep!
17:28:54 <elliott> hey Ngevd ROSYARROW
17:30:36 <olsner> Ngevd: it's measured in CakeProphets
17:31:10 <elliott> olsner++
17:39:37 <elliott> MERGE MY PULL REQUEST DAMMIT :|
17:39:45 <elliott> Also
17:39:47 <elliott> Ngevd: ROSYARROW
17:41:42 <monqy> i always misread rosyarrow as roysarrow
17:42:07 <monqy> and it makes no sense
17:43:07 <elliott> Gregor: Yooooooooooooooooooooooooooooooooooooooo
17:43:23 <elliott> Targets (8): glibc-2.14.1-1 gcc-libs-4.6.2-1 gcc-4.6.2-1 libltdl-2.4.2-2
17:43:23 <elliott> libpurple-2.10.0-3 libtool-2.4.2-2 pidgin-2.10.0-3
17:43:23 <elliott> sudo-1.8.3.p1-1
17:43:38 <elliott> How do core system packages even get upgraded this often.
17:43:54 <monqy> arch mysteries
17:44:39 <elliott> I wish Nix was actually pcsm instead so I could use NixOS.
17:45:34 <Vorpal> <elliott> Vorpal: x86 does everything through the keyboard <-- yeah, I forgot that
17:45:43 <Vorpal> elliott, it reminded me of the horrible A20 line
17:45:46 <elliott> Precisely.
17:46:13 <Vorpal> elliott, and what scares me more is that it is still the default way of rebooting!
17:46:27 <elliott> Vorpal: You should have seen that reddit post.
17:46:31 <Vorpal> elliott, which one?
17:46:42 <elliott> The one I can't find, about how Linux reboots.
17:46:43 <elliott> It's really grotty.
17:46:46 <Vorpal> heh
17:46:53 <Vorpal> elliott, is that with or without kexec?
17:47:06 <Vorpal> elliott, anyway what does "grotty" mean?
17:47:09 <elliott> kexec doesn't actually involve a reboot.
17:47:12 <Vorpal> I seen you using it recently
17:47:23 <elliott> http://en.wiktionary.org/wiki/grotty
17:47:36 <Vorpal> ah
17:55:13 -!- GreaseMonkey has joined.
18:13:32 <evincar> I've just seen this: http://research.microsoft.com/en-us/people/dimitris/fc-kind-poly.pdf
18:13:35 <evincar> Interesting read.
18:14:46 -!- elliott has quit (Remote host closed the connection).
18:16:41 -!- elliott has joined.
18:22:31 -!- hagb4rd has quit (Ping timeout: 240 seconds).
18:30:41 <elliott> I like how using GNOME apps in Xfce is now ultra-painful because of GTK3 themes.
18:30:47 <elliott> SORRY I MISSPELLED HATE
18:31:32 <Vorpal> elliott, yes it sucks. I can live with it though, only eog and evince that have that issue for me. Don't use many gnome programs
18:31:36 <Vorpal> I use more KDE ones in fact
18:31:45 <Vorpal> or QT at least
18:31:47 <elliott> For me it's file-roller and evince.
18:32:01 <Vorpal> ah, well I open file-roller sometimes
18:32:02 <elliott> Adwaita is in fact uglier than the Raleigh-esque "no theme" that it uses by default.
18:32:03 <Vorpal> not often
18:32:10 <Vorpal> heh
18:32:17 <Vorpal> elliott, Raleigh being?
18:32:25 <elliott> You know, the one that looks like Windows 95.
18:32:28 <Vorpal> oh
18:32:29 <Vorpal> right
18:32:44 <Vorpal> elliott, and Adwaita is the weird GTK3 theme?
18:32:50 <Vorpal> that it defaults to normally
18:32:53 <Vorpal> or?
18:33:08 <elliott> It's the "standard" one. And, well, didn't default to it here; gnome-themes-standard isn't pulled in by the (tiny) xfce4 group.
18:33:15 <Vorpal> I forgot how that looked. I gave up on GNOME 3 after about half an hour of trying to get anything saneö.
18:33:16 <elliott> Although both gtk2 and gtk3 are.
18:33:17 <Vorpal> sane*
18:33:19 <Madoka-Kaname> Because of some weird bug, I'm using a recolored Mist.
18:33:24 <Madoka-Kaname> Because most other things lag everything to hell.
18:33:26 <elliott> Madoka-Kaname: Grey Mist.
18:33:31 <elliott> It's the only acceptable colouration of Mist.
18:33:42 <Vorpal> I'm a clearlooks fan myself
18:33:42 <Madoka-Kaname> Gray with pink highlights.
18:33:42 <Madoka-Kaname> Doh.
18:33:50 <Vorpal> Madoka-Kaname, ouch
18:33:52 <Madoka-Kaname> Vorpal, clearlooks lags to crap too... :(
18:33:59 <Phantom_Hoover> elliott, given that Grey Mist only exists in your mind, apparently...
18:34:01 <Vorpal> Madoka-Kaname, what sort of computer?
18:34:04 <elliott> Phantom_Hoover: What.
18:34:07 <Madoka-Kaname> Laptop, pretty current.
18:34:11 <elliott> Phantom_Hoover: People have used Grey Mist for years.
18:34:12 <Vorpal> huh
18:34:14 <Madoka-Kaname> Before I updated, everything worked fine.
18:34:15 <Madoka-Kaname> But...
18:34:16 <Madoka-Kaname> Something broke.
18:34:23 <Vorpal> so downgrade!
18:34:24 <Madoka-Kaname> It's a known problem.
18:34:27 <Vorpal> easy with a proper OS
18:34:29 <Phantom_Hoover> elliott, ISTR asking for a link, whereupon you told me it should be on my system, which it wasn't.
18:34:31 <Vorpal> such as NixOS
18:34:33 <Madoka-Kaname> Vorpal, =p
18:34:36 <Madoka-Kaname> Yeah, uh..
18:34:37 <elliott> Phantom_Hoover: grep -r
18:34:43 * Madoka-Kaname hits Debian with a giant sledgehammer
18:34:59 <elliott> Vorpal: NixOS doesn't let you roll back service state.
18:35:00 <Vorpal> Madoka-Kaname, just select old config in the grub menu and it will magically be back where it was before, modulo bootloader, which is quite a special case
18:35:07 <Vorpal> elliott, oh?
18:35:12 <Vorpal> elliott, that is wrong then.
18:35:14 <elliott> Vorpal: This is because it is not pcsm.
18:35:24 <Vorpal> elliott, still it is better than most other distros currently available
18:35:26 <Madoka-Kaname> Vorpal, I don't think it's a kernel problem.
18:35:29 <elliott> (You can rollback /default/ service state, I would think, but definitely not running service state.)
18:35:31 <Madoka-Kaname> Xorg, I think.
18:35:43 <Vorpal> Madoka-Kaname, I think it lets you rollback that too?
18:35:48 <Vorpal> Madoka-Kaname, it is not just kernel
18:35:50 <Madoka-Kaname> Dunno.
18:35:56 -!- GreaseMonkey has quit (Quit: The Other Game).
18:36:00 <Vorpal> Madoka-Kaname, it lets you rollback the system configuration because it is crazy awesome.
18:36:01 <Madoka-Kaname> Bootloader entries only do kernel, I think.
18:36:07 <Vorpal> Madoka-Kaname, not in nixos
18:36:07 <Madoka-Kaname> Or are you talking NixOS?
18:36:08 <Madoka-Kaname> Ah.
18:36:10 <Vorpal> Madoka-Kaname, yes
18:36:11 <Phantom_Hoover> elliott, Grey Mist is not an option I can see.
18:36:16 <elliott> Anyway, what hopefully will happen is Clearlooks or whatever will be ported to GTK3 and then GTK2 will die.
18:36:36 <Vorpal> Madoka-Kaname, of course I'm a nixos fan. I'm not switching from arch just yet because of catalyst issues.
18:36:39 <elliott> Phantom_Hoover: Are you deliberately wasting my time?
18:36:48 * Madoka-Kaname liked Shiki a lot, but it lags too.
18:37:15 <Phantom_Hoover> elliott, you keep saying how fantastic it is and I can't find it for the life of me?
18:37:24 <elliott> [elliott@dinky esoteric]$ grep -r 'Grey Mist' . | grep sprunge
18:37:24 <elliott> THAT WAS SO FUCKING HARD
18:37:55 <Phantom_Hoover> Ah, you want me to grep the esoteric logs. This was completely clear from 'grep -r'.
18:38:15 <elliott> Nah, I leaked Grey Mist to #ubuntu and then never revealed it to any other channel again.
18:38:26 <elliott> It would be completely unreasonable to expect it to be in the logs of #esoteric.
18:38:55 -!- tiffany has quit (Ping timeout: 240 seconds).
18:38:59 <Phantom_Hoover> And it was also clear from 'grep -r' that you made the theme and distributed it here.
18:51:33 -!- tiffany has joined.
18:57:16 <Vorpal> Phantom_Hoover, Actually I seem to remember pikhq was involved in its creation too.
18:57:21 <Vorpal> I have a vague memory of it
18:57:55 <Vorpal> elliott, also... dinky as a hostname? heh
18:58:05 <Vorpal> are you going for cute or something?
18:58:11 <elliott> Vorpal: It's small!
18:58:17 <Vorpal> well sure
18:58:28 <Vorpal> elliott, is that the Toshiba?
18:58:41 <elliott> Yes. The Air is katia.
18:58:52 <Vorpal> I don't see any obvious meaning of that one
18:58:56 <elliott> My naming scheme is that I don't have a naming scheme.
18:58:59 <Vorpal> ah
18:59:05 <elliott> Vorpal: Prequel.
18:59:05 <Vorpal> katia meaning?
18:59:08 <Vorpal> hm
18:59:19 <elliott> (I had spent about two days trying to think of a name so I just picked one at random and stuck with it.)
18:59:50 <elliott> Yay, I've almost wrangled Adwaita into something tolerable.
19:02:54 <quintopia> what it is this
19:03:19 <Vorpal> quintopia, an irc channel named #esoteric
19:03:43 <quintopia> no, i mean this adwaita thing
19:03:50 <Vorpal> gtk3 theme
19:03:50 <quintopia> i haven't paid much attention here lately
19:03:52 <quintopia> ah
19:05:14 <Vorpal> elliott, btw don't you like the win95 style? You said it was better than the default Adwaita. But it sounded like it was "oh Adwaita is so bad even the win95 style lack of theme that gtk3 defaults to is better"
19:05:23 <elliott> It's uglier than Win95 :)
19:05:27 <Vorpal> well okay
19:05:39 <elliott> But I almost have Adwaita looking mostly like Clearloooks.
19:05:41 <elliott> So woo?
19:05:46 <Vorpal> elliott, I find it somewhat acceptable though somewhat jarring compared to everything else that I use, which either use gtk2 or qt with gtk2 backedn
19:05:49 <Vorpal> backend*
19:05:55 <elliott> I ujst have to make the scrollbars smaller and more tolerable and make the menus slightly less awful.
19:06:11 <Vorpal> elliott, cool. Show me the screenshots and upload the modified theme somewhere
19:06:29 <Vorpal> elliott, btw can you keep separate gtk2 and gtk3 themes? Otherwise I will prefer getting the gtk2 one right for now
19:06:36 <Vorpal> so few things use gtk3
19:06:38 <Vorpal> as of yet
19:06:42 <elliott> Vorpal: Yes, you can.
19:06:47 <elliott> You just dump shit into ~/.config/gtk-3.0.
19:06:53 <Vorpal> ah
19:07:02 <elliott> I should make a derived theme or w/e but I just copied all the Adwaita CSS and started hacking at it because I'm lazy :P
19:07:06 <Vorpal> elliott, it didn't seem to work out with a quick look at the GUI tools for it, but meh
19:07:16 <Vorpal> probably gnome's settings did something stupid
19:07:19 <Vorpal> like store it in gconf
19:07:21 <Vorpal> or whatever
19:07:29 <Vorpal> elliott, wait what, it is css!?
19:07:36 <elliott> Vorpal: Yes.
19:07:38 <Vorpal> I thought GTK themes used a custom format
19:07:43 <elliott> GTK 2 themes do.
19:07:45 <Vorpal> ah
19:07:48 <elliott> GTK 3 themes are an engine, like before, plus CSS.
19:07:49 <Vorpal> why oh why css
19:07:57 <elliott> Vorpal: Dude, shut up, the old format was about 90 billion times worse.
19:08:02 <elliott> At least I already _know_ CSS.
19:08:02 <Vorpal> well, sure
19:08:11 <elliott> Same goes for Mutter (= Metacity 3) themes.
19:08:19 <Vorpal> heh
19:08:46 <Vorpal> elliott, I'm just saying CSS doesn't make that much sense for formatting stuff like scrollbar handle decoration
19:08:55 <Vorpal> postscript, that is the way to go
19:10:02 <Vorpal> elliott, ^
19:10:22 <elliott> No :P
19:10:33 <Vorpal> elliott, a turing complete language for drawing windowing system, it makes perfect sense!
19:10:43 <elliott> Well, Quartz uses PDF...
19:10:48 <Vorpal> hell, lets do postscript + vector displays
19:10:51 <Vorpal> that should be cool
19:10:58 <elliott> Which is great because, in the first few OS X versions, screenshots were actually PDFs by default.
19:11:02 <elliott> Scalable PDFs.
19:11:06 <Vorpal> elliott, you told me before
19:11:12 <elliott> (OK, with embedded bitmaps for window buttons and the like but still :P)
19:11:24 <Vorpal> elliott, I know postscript has been used for display in several systems
19:11:28 <elliott> I think they even "layered" it properly so you could plausibly eliminate a single window from the front.
19:11:34 <Vorpal> and pdf in OS X
19:11:40 <elliott> Vorpal: Yes, Quartz is the successor to Display PostScript or whatever from NeXT :P
19:11:47 <Vorpal> indeed
19:12:50 <elliott> outline: 99px solid red;
19:12:53 <elliott> This had better show up.
19:13:35 <Vorpal> elliott, ouch. Just ouch
19:13:46 <elliott> It didn't :(
19:16:59 <elliott> I wonder if I can get a WebKit Inspector on the menus :P
19:17:27 <Madoka-Kaname> http://i42.tinypic.com/35ask5s.png < Too pink? =p
19:17:50 -!- Taneb has joined.
19:18:04 <elliott> barf
19:18:34 <Taneb> Hey look, I lost connection momentarily
19:18:47 -!- oerjan has joined.
19:21:08 <Phantom_Hoover> Madoka-Kaname, IT'S LIKE MY RETINAS STARTED HAEMORRHAGING
19:21:42 -!- Ngevd has quit (Ping timeout: 240 seconds).
19:23:34 <Madoka-Kaname> ;.;
19:27:23 <elliott> HOW THE FUCK DO I ADD BORDERS TO THIS MENU
19:35:56 <shachaf> <menu borders=1>
19:36:06 * shachaf has no context whatsoever about whatever's going on in this channel.
19:36:19 <shachaf> I just thought a bit of invalid XML would improve the mood.
19:39:15 <Taneb> I told you we need an esoteric markup language!
19:43:01 -!- Slereah_ has joined.
19:50:03 <monqy> whats an esoteric
19:51:16 <Vorpal> <Madoka-Kaname> http://i42.tinypic.com/35ask5s.png < Too pink? =p <-- ouch
19:51:35 <Vorpal> well, the colours are kind of matched at least
19:51:40 <Madoka-Kaname> (probs more of a lavender)
19:52:16 <Vorpal> Madoka-Kaname, personally I go for a blue-grey theme
19:52:30 <Vorpal> standard clearlooks + blue-grey solid colour desktop bg
19:52:32 <Vorpal> yeah
19:53:04 <Madoka-Kaname> http://i41.tinypic.com/i35l5e.png
19:53:09 <Madoka-Kaname> Think that icon set matches beter?
19:53:10 <Madoka-Kaname> better*
19:53:26 <Madoka-Kaname> Closer hue, I think, but it's a bit darker.
19:53:29 <Vorpal> ugh
19:53:41 <derrik> eewww
19:53:43 <Vorpal> Madoka-Kaname, I'm just not fond of pink
19:53:47 <Vorpal> or lavender
19:53:49 <Vorpal> or lilac
19:53:58 <Vorpal> I can do ultramarine.
19:54:29 <Vorpal> https://en.wikipedia.org/wiki/File:Ultramarinepigment.jpg <-- like that
19:54:45 <Madoka-Kaname> Way too strong of a color.
19:54:49 <Vorpal> doesn't look too good on this monitor
19:54:53 <Vorpal> looks better in real life
19:55:05 <Vorpal> I don't know, perhaps it is outside of sRGB?
19:56:41 <zzo38> Which is better: (\b -> if b == 0 then Nothing else Just (b, b-1)) or (\x -> guard (x /= 0) >> Just (x, x-1)) ?
19:58:00 <Madoka-Kaname> gnome-colors distrobution is a tarbomb
19:58:01 <Madoka-Kaname> :I
19:58:06 <zzo38> Or this: (\x -> (x, x-1) <$ guard (x /= 0))
19:58:12 <shachaf> zzo38: Whichever one you like more.
19:58:42 <zzo38> I happen to like the third one but what is your opinions of it?
19:59:07 <Deewiant> I'd use ($>) if such a thing existed
19:59:20 <elliott> Deewiant: Another one for "combinators"? :-)
19:59:41 <evincar> I think there ought to be a standard function (I'm not creative with names) of type Bool -> a -> Maybe a that returns Nothing if its first argument false, otherwise Just its second argument.
19:59:45 <zzo38> Deewiant: You can write one then, if you want that one
19:59:45 <evincar> If such a thing exists, use that.
19:59:47 <Deewiant> elliott: Should be in base, given that the flipped one exists
19:59:49 <evincar> Otherwise write it.
20:00:01 <Deewiant> elliott: (Control.Applicative is in base right?)
20:00:03 <elliott> Deewiant: Everything in combinators should probably be in base.
20:00:05 <elliott> And yes.
20:00:11 <Deewiant> elliott: Yeah, but this even more so. :-P
20:00:39 <evincar> *is False
20:00:47 <elliott> I wonder if (<*) =/= flip (*>) bothers anyone but fax.
20:00:50 <shachaf> (\b -> listToMaybe [(b,b-1) | b /= 0])
20:01:05 <elliott> shachaf: Monad comprehensions eliminate the listToMaybe part, no?
20:01:14 <shachaf> elliott: Right.
20:01:24 <elliott> What it sounds like zzo38 needs is safeMinus :: Integer -> Integer -> Maybe Integer
20:01:24 <shachaf> I thought I've give a Haskell solution, though.
20:01:27 <shachaf> Not glasgow-exts
20:01:28 <elliott> safeMinus 0 _ = Nothing
20:01:33 <elliott> safeMinus m n = Just (m - n)
20:01:35 <elliott> Then it's
20:01:38 <zzo38> It does not have to be only for Maybe, it could be more general to use any MonadPlus (or Alternative, although it seem less useful with Alternative because of the lesser laws)
20:01:40 <elliott> \b -> (b,) <$> safeMinus b
20:01:45 <elliott> Booleans are evil, and whatnot.
20:01:49 <elliott> Erm
20:01:51 <elliott> \b -> (b,) <$> safeMinus b 1
20:01:59 <elliott> ?pl \b -> (,) b <$> safeMinus b 1
20:02:00 <lambdabot> liftM2 (<$>) (,) (flip safeMinus 1)
20:02:03 <elliott> There you go.
20:02:12 <monqy> what's so safe about safe minus
20:02:14 <elliott> liftM2 (<$>) (,) $ safeSubtract 1
20:02:20 <elliott> monqy: It's safe if you think Integer = Natural.
20:02:30 <monqy> safeminus 1 100
20:03:45 <monqy> if n was always 1 it would work as a safepred though
20:04:19 <zzo38> Well, I prefer (\x -> (x, x-1) <$ guard (x /= 0)) rather than using list comprehensions and that stuff, but I suppose you can use whatever
20:05:18 <zzo38> Why does (<*) =/= flip (*>) bother anyone? It is supposed to be different (with some (not all) Applicatives); it useful both ways with parsing, for example.
20:08:57 <zzo38> Things such as Data.ByteString and Data.List and Data.Set have many common functions; why aren't these functions a class?
20:11:43 <elliott> <zzo38> Why does (<*) =/= flip (*>) bother anyone?
20:11:50 <elliott> flipped operator almost always means = fliped version of the non-flipped one
20:11:56 <elliott> (visually)
20:12:01 <elliott> e.g. (<<) and (>>)
20:12:05 <shachaf> @ty (<<)
20:12:06 <lambdabot> Not in scope: `<<'
20:12:10 <elliott> (*>) = (>>) also so it's quite surprising that (<*) =/= (<<)
20:12:11 <elliott> ?hoogle (<<)
20:12:12 <lambdabot> Text.Html (<<) :: HTML a => (Html -> b) -> a -> b
20:12:12 <lambdabot> Text.XHtml.Frameset (<<) :: HTML a => (Html -> b) -> a -> b
20:12:12 <lambdabot> Text.XHtml.Strict (<<) :: HTML a => (Html -> b) -> a -> b
20:12:14 <elliott> huh
20:12:16 <elliott> it's somewhere :P
20:12:18 <elliott> well there's =<<
20:12:24 <shachaf> elliott: No it ain't.
20:12:24 <oerjan> elliott: i don't think << exists
20:12:24 <elliott> which is THE SAME
20:12:33 <shachaf> THE SAME ONLY DIFFERENT
20:12:35 <elliott> just pretend I said (=<<)
20:12:43 <shachaf> (=<<) is different.
20:12:52 <shachaf> There's no way it could work like <*
20:12:57 <shachaf> Anyway, <* is actually useful.
20:13:23 <elliott> It is.
20:13:30 <elliott> fax wanted it to be called (*<), which is hideous.
20:14:28 <shachaf> <⁎
20:14:34 <shachaf> <⁑
20:14:49 <shachaf> <∗
20:15:14 <monqy>
20:16:14 <Vorpal> <☃
20:16:23 <Vorpal> (because, hey, why not)
20:23:36 -!- sebbu has quit (Read error: Connection reset by peer).
20:24:01 -!- sebbu has joined.
20:37:24 <fizzie> Re keyboard, I don't think there's much more than the keyboard itself, the rebooting, the A20 gate, and the PC speaker thing.
20:37:44 <fizzie> Also, "<".
20:37:44 <oerjan> <ais523> (the UK pronunciation is "boy")
20:37:52 <oerjan> i sense great pun opportunities
20:38:06 <ais523> not really, it's actually quite hard to make a pun out of that
20:38:08 <ais523> although probably doable
20:38:13 <fizzie> oerjan: That's called a "pun-portunity".
20:38:16 <monqy> oh buoy here we go
20:38:22 <oerjan> something involving fishing, presumably
20:39:04 <oerjan> fizzie: a port-boyteau?
20:39:40 <fizzie> oerjan: Groan.
20:39:43 <elliott> oerjan: idgi
20:39:54 <Taneb> a port buoy tow?
20:40:06 <oerjan> elliott: a pun on portmanteau
20:40:15 <monqy> groan
20:40:41 <elliott> i dont like yuoe
20:40:48 <oerjan> ;_;
20:41:23 <fizzie> oerjan: Is the fact that you usually find buoys at ports part of the pun too?
20:41:34 <oerjan> ...maybe.
20:41:53 <fizzie> Puns upon puns upon puns.
20:42:07 <oerjan> P U N C E P T I O N
20:42:09 <fizzie> Within, not upon. I guess.
20:42:34 <monqy> upun
20:42:46 <fizzie> Up puns.
20:42:50 <elliott> fizzie: You know how to get this GTK 3 theming thing to work, right? I'm sure you're an expert.
20:42:51 <Taneb> Why do I deserve this pun ishment?
20:43:26 <elliott> ...
20:43:27 <elliott> oerjan: kickban
20:43:38 <monqy> Taneb: you retroactively deserve it for saying that
20:43:39 <fizzie> elliott: It used to be so that you just gtkrc and include and whatever and there was this thing to reload, but I suppose with three it's all so different.
20:43:42 <oerjan> elliott: i was about expecting to be kickbanned myself...
20:43:54 <elliott> fizzie: Yes. It's: CSS.
20:44:17 <fizzie> elliott: Oh, is it also HTML5 or 6 or 7 or so?
20:44:30 <elliott> fizzie: No, it's just CSS.
20:44:35 <fizzie> How rude.
20:44:37 <elliott> I guess they have some internal XML representation to make that work?
20:44:42 <elliott> But yeah, the tags are named after the widget classes.
20:44:56 <elliott> GtkTreeMenu.menu {
20:44:56 <fizzie> Sorry, I'm not exactly sobber. And I doubt I could help otherwise either.
20:44:56 <elliott> background-color: @theme_base_color;
20:44:56 <elliott> }
20:45:04 <elliott> Sobber.
20:45:54 <oerjan> finns never sob. they drown the tears in alcohol.
20:46:38 <olsner> they might sob if they ever got sobber though
20:46:52 <fizzie> elliott: Here's the useful. Perl, "use Gtk2; init Gtk2; my $ev = Gtk2::Gdk::Event->new('client-event'); $ev->message_type(Gtk2::Gdk::Atom->intern('_GTK_READ_RCFILES')); $ev->data_format(8);
20:46:59 <fizzie> $ev->data('burp');
20:46:59 <fizzie> Gtk2::Gdk::Event->send_clientmessage_toall($ev);
20:47:01 <fizzie> And so on.
20:47:07 <elliott> fizzie: What... what does that do.
20:47:11 <monqy> burp
20:47:11 <fizzie> Sorry, I was going to paste all that on one line but didn't manage.
20:47:14 <elliott> Reload themes in all open windows?
20:47:17 <fizzie> It refreshes a thing.
20:47:22 <fizzie> A thing that a thing.
20:47:27 <elliott> Ah.
20:47:35 <fizzie> You modify your .gtkrc2rc2rc2rc rc manually and then it refresh.
20:47:45 <elliott> You sure aren't very sobber.
20:48:02 <fizzie> Give me a break, it was like one litter of liter of tequila or something.
20:48:19 <oerjan> poor tequila pups
20:48:20 <fizzie> Also not just any but *Greek*.
20:48:31 <fizzie> It had lambdas and all.
20:48:41 <elliott> fizzie: How are you funnier when drunk nobody is ever funnier when drunk.
20:48:42 <oerjan> so it was functional tequila, i take
20:49:17 <fizzie> (In "τηλ"!)
20:49:24 <fizzie> A tellyphone number.
20:49:32 <fizzie> Oh no, a cat.
20:49:49 -!- sllide has joined.
20:49:54 <oerjan> the great keyboard hunter
20:50:29 <Phantom_Hoover> I'm just imagining fizzie staggering all over the channel.
20:50:33 -!- evincar has quit (Read error: Connection reset by peer).
20:50:45 <oerjan> a staggering thought
20:50:49 <fizzie> "Mee-eep", the cat said.
20:51:23 <oerjan> fizzie: IT'S A CATBOT
20:51:31 <elliott> This is like when fizzie started talking in lowercase but amazing instead of horrifying.
20:52:15 <Taneb> I'm pretty sure I'm "sobber"
20:52:43 * oerjan passes Taneb some kleenex
20:52:43 <monqy> im sobbrest
20:52:54 <monqy> most sobbre
20:55:23 <shachaf> <✱
20:56:17 <elliott> :>
20:56:33 <monqy> <:
20:58:37 <elliott> :>
20:58:51 <monqy> :>
20:59:00 <oerjan> <:>
20:59:26 <fizzie> elliott: It is the fault of ineiros I think I say.
20:59:33 <elliott> Isn't everything?
20:59:34 <Phantom_Hoover> <elliott> This is like when fizzie started talking in lowercase but amazing instead of horrifying.
20:59:45 <Phantom_Hoover> Oh god lay off the Halloween stories.
20:59:53 <elliott> Phantom_Hoover: He didn't use ANY PUNCTUATION.
21:00:00 <Phantom_Hoover> AUAHUGHGUAHGAU
21:00:07 <elliott> Phantom_Hoover: It wasn't like 2002.
21:00:12 <elliott> That was rational, punctuated, lowercase other-fizzie.
21:00:17 <elliott> This was HORRIFIZZIE.
21:00:34 <Phantom_Hoover> I wanted to sleep tonight.
21:00:56 <elliott> Is fizzie 30 yet.
21:01:24 <fizzie> elliott: Not quite yet; actually not even 29 until April next year. But I suppose it's NEAR.
21:01:40 <Phantom_Hoover> Humans live to 30?????
21:01:49 <Phantom_Hoover> I thought we died off around 26 or so.
21:01:57 <elliott> fizzie is just exceptionally long-lasting.
21:01:59 <Phantom_Hoover> Erm s/we/you/
21:01:59 <elliott> It'll be his time soon.
21:02:27 <Taneb> Damn
21:02:36 <fizzie> It is only musicians that die at 27.
21:02:37 <Taneb> I've caught up on Gunnerkrigg Court
21:03:42 <monqy> wow deja vu
21:03:43 <elliott> Taneb: After starting... this morning?
21:03:50 <Taneb> Yep
21:04:04 <elliott> What is it with comics that are short.
21:04:10 <elliott> I do not even comprehend how they exist any more.
21:04:32 <Taneb> No, I just time-travelled multiple times
21:04:39 <Taneb> So I can read while I can read
21:04:41 <elliott> s/^ //
21:05:03 <Taneb> That indent was important
21:05:21 <Phantom_Hoover> Taneb, how did you merge the parallel Tanebs into a single whole which read all of GK, rather than bits of it.
21:05:32 <Taneb> Careful planning
21:05:35 <zzo38> If you need a program to read Haskell file without an extension so it doesn't know .hs or .lhs format, you can make it treated as .lhs if the first character is one of > \ % because none of these character are valid as the first character of a Haskell program anyways
21:05:53 <Taneb> So, I'm a couple of weeks older than I was yesterday
21:06:11 <Taneb> Which means my birthday was today
21:07:00 <zzo38> Actually add < to that list as well
21:07:40 <Taneb> Okay, there is a sticker on my hand
21:07:55 <Taneb> It says "ENERGY STAR"
21:08:15 <elliott> X-D
21:08:33 <Taneb> Could have been worse
21:08:39 <Phantom_Hoover> Taneb, no your birthday can't be in two weeks we 16-year-olds need to stick together.
21:09:00 <Taneb> It's on Thursday, young Phantom_Hoover
21:09:03 <Phantom_Hoover> The 15-year-olds are beating at our doors!
21:09:05 <Phantom_Hoover> Nooooo!
21:09:22 <Taneb> Although I will be delaying the celebrations until Saturday for personal reasons
21:09:24 <Phantom_Hoover> OK, you get the infrastructure ready.
21:09:39 <Phantom_Hoover> I'll take over later while elliott covers the retreat.
21:11:06 <monqy> i don't want to be 16 ;_; it's going to be horrible
21:11:15 <monqy> rip monqy "old age"
21:11:32 <elliott> rip
21:11:33 <Taneb> monqy "old age" rip
21:11:39 <elliott> monqy: I can assure you it's awful
21:12:18 <Phantom_Hoover> monqy, yes, you deserve it for being 15 for so long.
21:12:29 <monqy> :(
21:12:38 <monqy> 15 is bad too
21:13:08 <Phantom_Hoover> Yes, which is why you must give penance for it.
21:13:10 <monqy> but I imagine 16 is worse
21:13:24 <Taneb> 15 is semiprime
21:13:29 <Taneb> 16 is a fourth power
21:13:36 <Taneb> It's 2^2^2
21:13:40 <Phantom_Hoover> Listen to Taneb, monqy.
21:13:46 <Phantom_Hoover> You're in the semiprime of your life.
21:14:07 <Phantom_Hoover> (He knows this because he is 16, thus wise.)
21:14:08 <monqy> 16 is a pretty okay number but there are just so many bad things that could happen
21:14:16 <elliott> You could die.
21:14:40 -!- evincar has joined.
21:14:41 <monqy> death by learning how to operate motor vehicles
21:14:48 <monqy> my biggest fear
21:14:49 <Phantom_Hoover> You can do that at 16?
21:14:55 <monqy> usa
21:15:22 <monqy> people start learning at 15 I think?? and can get a lisens at 16 / I just hope nobody notices me
21:15:24 <Phantom_Hoover> I'm planning to go insane when I'm allowed to get a driving licence.
21:16:02 <Taneb> It's going to go wrong, PH
21:16:07 <evincar> What variety of insane?
21:16:18 <elliott> monqy: Why would you even bother.
21:16:18 <zzo38> Is Chinese New Year when the Sun and Moon are near 315 degrees? I thought I read somewhere but am not entirely sure how it works.
21:16:20 <Phantom_Hoover> From school information on road safety I understand that driving in your teens basically consists of endless melodrama and tragedy.
21:16:28 <monqy> elliott: my hope is that I don't have to bother
21:16:28 <Taneb> You're going to have all the materials you need to make a llama bone bracelet studded with bismuthite
21:16:34 <monqy> elliott: but my fear is that i'll have to bother
21:16:37 <elliott> monqy: Move somewhere with a rail system that actually exists.
21:16:37 <Taneb> It will menace with spikes of maple
21:16:42 <elliott> (Amtrak is actually made of pixie dust.)
21:16:47 <zzo38> I have always refused the driving license
21:16:51 <monqy> rail system sounds nice
21:16:58 <Taneb> Come to Hexham!
21:17:06 <Phantom_Hoover> Taneb, no, if I was in a strange mood I would leave the bismuthinite alone.
21:17:23 <Phantom_Hoover> monqy, tram system is better.
21:17:38 <monqy> anything but me driving cars
21:17:45 <Phantom_Hoover> (Note: I am probably going to get lynched if anyone else from Edinburgh reads that.)
21:17:47 <Taneb> monqy, go to Sheffield!
21:17:57 <Taneb> Or Melbourne!
21:18:02 <Taneb> Or... Beamish!
21:18:04 <elliott> Sheffield is bad I can confirm.
21:18:08 <elliott> Yes move to Beamish.
21:18:16 <Phantom_Hoover> monqy, don't listen to his lies nobody goes to Sheffield voluntarily.
21:18:16 <Taneb> Be a Victorian!
21:18:18 -!- ais523 has quit (Remote host closed the connection).
21:18:27 <Taneb> You can do that with Melbourne /or/ Beamish!
21:18:29 <elliott> Phantom_Hoover: Yes Beamish is where it is at.
21:18:32 <monqy> I don't know what any of these places are :(
21:18:40 <elliott> monqy has never heard of Melbourne.
21:18:42 <monqy> are they important
21:18:46 <elliott> (You have heard of Melbourne right.)
21:18:47 <Phantom_Hoover> Come to Edinburgh we have a bus company with a really detailed WP article.
21:18:48 <monqy> I've heard of melbourne by name
21:18:55 <elliott> It is a place in Scotland.
21:18:55 <monqy> I don't know what it is though
21:18:58 <Taneb> It was almost called Batmania
21:19:02 <elliott> They drink beer there.
21:19:02 <monqy> is it a good place
21:19:04 <Taneb> After Batman
21:19:04 <elliott> Also coffee.
21:19:06 <Phantom_Hoover> monqy, do you, and I cannot overstress the importance of this question, know where Scotland is?
21:19:09 <elliott> Phantom_Hoover: Tell monqy about the delights of Melbourne, Scotland.
21:19:14 <monqy> scotland's over there
21:19:19 <Phantom_Hoover> elliott, no, that's Perth you're thinking of.
21:19:22 <monqy> I'm miserable at geography
21:19:23 <elliott> Phantom_Hoover: Oh, right.
21:19:26 <elliott> monqy: Perth, Scotland.
21:19:27 <monqy> and I hate geography
21:19:33 <Taneb> Maybe it's Inverness...?
21:19:42 <monqy> I don't even know how usa geography works
21:19:57 <elliott> Taneb: You used to live in Melbourne, Scotland, right?
21:20:01 <Phantom_Hoover> monqy, nobody does.
21:20:02 <elliott> Right below Wales.
21:20:06 <Taneb> elliott, nearby
21:20:10 <Taneb> In the suburbs
21:20:19 <elliott> (In the middle of London.)
21:20:29 <Phantom_Hoover> The South is in the southwest? WTF?
21:20:30 <elliott> London is of course part of Canada.
21:20:46 <Phantom_Hoover> Taneb, you're thinking of Inverness, Sweden.
21:20:52 <Taneb> Of course
21:21:02 <elliott> Daily reminder that British place names are so good.
21:21:13 <Phantom_Hoover> Or perhaps one of the nine Invernesses in the States.
21:21:18 <Phantom_Hoover> (Invernessi?)
21:21:35 <elliott> Phantom_Hoover: No, that's Mexico.
21:21:40 <elliott> Mexico, Iceland.
21:22:09 <elliott> (I refer, of course, to the supermarket.)
21:22:15 <Taneb> Oh dear god if all of civilization is lost and future archeologists find this channel's logs they are going to be so educated
21:22:25 <elliott> Yes.
21:22:29 <elliott> We are doing a public service.
21:22:46 <Phantom_Hoover> The USA also has 5 Edinburghs and two other places with misspellings of it.
21:22:50 <Taneb> Iceland is, of course, near Argos
21:22:51 <elliott> Archaeologists: This is in fact a mating ritual.
21:23:04 <Phantom_Hoover> Taneb seeks to mate with aloril.
21:23:06 <elliott> Taneb: Yes, the famous Aztec temple.
21:23:16 <zzo38> Do you like to make up lies that confuse future archaeologists?
21:23:25 <Taneb> Pfff
21:23:25 <elliott> zzo38: Such a joker!!!!!
21:23:30 <elliott> Archaeologists: zzo38 is a robot. Do not trust his lies.
21:23:42 <Taneb> We wouldn't bring ourselves down to the level of /cereal manufacturers/
21:23:47 <Taneb> i.e. farmers
21:23:51 <zzo38> Actually I asked a question.
21:23:53 <Taneb> We are a religious superclass
21:24:09 <zzo38> I am not trying to accuse anyone.
21:24:26 <zzo38> I am just saying something that I think I once saw some idea somewhere, I forget, was it on television?
21:24:40 <Phantom_Hoover> `addquote <zzo38> I am just saying something that I think I once saw some idea somewhere, I forget, was it on television?
21:24:43 <HackEgo> 702) <zzo38> I am just saying something that I think I once saw some idea somewhere, I forget, was it on television?
21:24:57 <monqy> `quote 701
21:24:59 <HackEgo> 701) <Phantom_Hoover> I'd insult you behind your back, but I don't care which side of your back I insult you on.
21:25:04 <monqy> ah yes
21:25:07 <Phantom_Hoover> `quote
21:25:07 <Phantom_Hoover> `quote
21:25:08 <Phantom_Hoover> `quote
21:25:08 <Phantom_Hoover> `quote
21:25:08 <Phantom_Hoover> `quote
21:25:11 <HackEgo> 450) <Phantom_Hoover> I go to clean up the shrapnel from a teabag and you're discussing the definition of god out of nowhere.
21:25:12 <Taneb> Television is of course, otherwise known has Mt Olympus
21:25:13 <HackEgo> 665) <fizzie> Spacegoat is the network-operations-optimized-for-latency-of-minutes-or-hours-due-to-light-speed-limits variant of scapegoat, to be used when you need to check out some code from the Mars colony. <fizzie> (I'm pretty sure we'll have established a Mars colony by the time scapegoat rolls out.)
21:25:24 <Phantom_Hoover> monqy, elliott is actually a sock I made to add quotes of me.
21:25:29 <HackEgo> 313) <Phantom_Hoover> elliott, incidentally, I started my explorations again after getting bored of the Himalayas.
21:25:29 <HackEgo> 290) <elliott> lol @ closed character set standard <elliott> "What does this codepoint represent?" "Nobody knows."
21:25:29 <HackEgo> 16) <fizzie after embedding some of his department research into fungot> Finally I have found some actually useful purpose for it.
21:25:40 <elliott> But those are all good. :/
21:25:44 <monqy> a sock given life
21:25:50 <monqy> or is he a robot sock
21:25:56 <elliott> Both.
21:26:01 <elliott> I am actually a wooden robot sock given life.
21:26:02 <Phantom_Hoover> 665 is perhaps a bit wordy, but not deleteworthily so.
21:26:10 <elliott> `quote
21:26:10 <elliott> `quote
21:26:10 <elliott> `quote
21:26:11 <elliott> `quote
21:26:11 <elliott> `quote
21:26:19 <HackEgo> 309) <fungot> elliott: there go my minutes of research!!
21:26:20 <HackEgo> 252) <elliott> in retrospect that wasn't even necessary, as communal readings of the Funge-98 spec do just a good job of getting rid of trolls
21:26:26 <elliott> 309... so good...
21:26:28 <HackEgo> 69) <fungot> i am sad ( of course by analogy) :) smileys)
21:26:31 <HackEgo> 187) <Vorpal> ais523, what is "MS Publisher"? <Phantom_Hoover> Vorpal, you don't want to know. <ais523> Vorpal: be glad that you don't know the answer <alise> Vorpal: "horrible"
21:26:31 <HackEgo> 462) * Sgeo mutters about broken toilets <Sgeo> #toilet is useless <monqy> is #toilet even a thing <Sgeo> I'm looking for help with toilets
21:26:39 <Phantom_Hoover> Oh man, 187.
21:26:53 <elliott> 187 and 252 are both not that good, but 187 is amusing in its simultaneejiaetity.
21:26:56 <elliott> So
21:26:57 <elliott> `delquote 252
21:26:58 <Phantom_Hoover> 462 is one of the funniest things I've ever seen.
21:27:00 <HackEgo> ​*poof*
21:27:16 <Phantom_Hoover> `quote
21:27:17 <Phantom_Hoover> `quote
21:27:17 <Phantom_Hoover> `quote
21:27:17 <Phantom_Hoover> `quote
21:27:17 <Phantom_Hoover> `quote
21:27:20 <HackEgo> 140) <Quas_NaArt> Because you're a Mac user. <lacota> I am! and proud of it to <lacota> My mouse has *no* buttons.
21:27:27 <HackEgo> 228) <elliott> oerjan: What, can girls aim their penises better?
21:27:30 <elliott> It'll be 140.
21:27:36 <HackEgo> 544) <Phantom_Hoover> Riots in Glasgow would probably be reported as a sudden drop in crime.
21:27:36 <HackEgo> 147) <fungot> ais523: killer bunnies can be harmed by domesticated canines only.
21:27:36 <HackEgo> 600) <elliott> well, oerjan has a lot of opinions on this, so I'll hand it over to him
21:27:38 <Taneb> I like 140
21:27:45 <elliott> Although it's sort of half amusing, it is practically my job to delete Sine quotes.
21:27:48 <Phantom_Hoover> These aren't even #esoteric quotes, are they?
21:27:50 <Phantom_Hoover> Yeah.
21:27:51 <olsner> I wonder what lead up to 228
21:28:03 <elliott> Ehh, none of them are that bad.
21:28:05 <elliott> Let's get something objectively bad.
21:28:06 <elliott> `quot
21:28:08 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: quot: not found
21:28:08 <elliott> ioops
21:28:10 <elliott> `quote
21:28:10 <elliott> `quote
21:28:10 <elliott> `quote
21:28:11 <elliott> `quote
21:28:11 <elliott> `quote
21:28:15 <HackEgo> 33) <augur> augur: pretty true.
21:28:19 <HackEgo> 333) <zzo38> elliott: I doubt water memory can last for even one second in a gravitational field (or even outside of a gravitational field), but other people think they can make water memory with telephones.
21:28:29 <HackEgo> 404) <fizzie> You make a fist, shake it at the sky, and shout "why, GNU, why?!" -- that is the standard reportig practice.
21:28:29 <HackEgo> 642) <oerjan> yes 5 is very infixr
21:28:29 <HackEgo> 530) <fungot> Phantom_Hoover: it is a hate so pure and... pumpkin seeds?
21:28:42 <elliott> `delquote v
21:28:43 <elliott> `delquote 33
21:28:44 <HackEgo> No output.
21:28:46 <HackEgo> ​*poof*
21:29:02 <zzo38> *poof*
21:29:41 <elliott> *poof*
21:30:03 <Phantom_Hoover> *foop*
21:30:13 <monqy> pof
21:31:54 <oerjan> <zzo38> Do you like to make up lies that confuse future archaeologists? <-- hey i just personally checked that london _is_ part of canada.
21:32:12 <zzo38> Yes there is a place called London in Canada.
21:32:28 <Taneb> It's in Ontario, I believe
21:32:33 <zzo38> Yes.
21:33:06 <Taneb> One webcomic I read for a bit then stopped and a character called something like "The Werewolf of London, Ontario"
21:33:43 <Phantom_Hoover> The famous song by Warren Zevon.
21:42:14 <elliott> oerjan: Did you ever actually react to IWC.
21:43:33 <oerjan> you mean post to the forum? no.
21:44:07 <elliott> oerjan: Yes that's totally what I said.
21:44:12 <elliott> I meant it ending :p
21:44:46 <oerjan> yes. yes i did. in a private message to you, as i recall.
21:45:23 <elliott> huh. i don't actually remember that. but then i was really tired
21:45:33 <elliott> Unless you mean the three hours of continual sobbing.
21:45:43 <oerjan> it did not actually mention the word "iwc".
21:45:48 -!- kmc_ has joined.
21:46:07 <oerjan> ah yes, must have been that.
21:52:46 <zzo38> Do you know how to play E-Card? I will tell you. One player get four water energy cards and one fire energy card, the other player get four water energy cards and one leaf energy card. Both players put one card face-down. And then reveal them. If both are water energy card then you put it aside and play another face-down card.
21:53:48 <zzo38> Otherwise you count whoever gets one point according to the card played, and then you switch the hand you start with the cards that your opponent started with before. Play several rounds a predetermined even number, and then count whoever has more points wins.
21:57:50 -!- kmc_ has changed nick to kmc.
21:59:44 <zzo38> I noticed that the DVI units specification used in TeX is not in lowest terms; I tried changing the numbers in the DVI file to lowest terms and it still works.
22:00:28 <zzo38> In lowest terms it would be 396875/7400448
22:04:57 <zzo38> data PageObject = Special ByteString | Box [(Coordinates, PageObject)] | Character Font Word32 | Text Font String | Rule Int32 Int32 deriving (Eq, Show);
22:05:40 <zzo38> But I think the constructor for Text should not be String, because it could include kerns and the characters beyond 0x10FFFF
22:07:07 <elliott> ByteString
22:07:38 <zzo38> But it could include kerns and it can include characters beyond 255
22:08:12 <elliott> what is the element type, then?
22:09:11 <zzo38> I don't know. Maybe it should be [Either Int32 Word32] which would be sufficient, but I don't know if there is better way
22:11:04 <zzo38> What do you think about this?
22:21:11 <Vorpal> Left for signed and Right for unsigned? Seems slightly awkward to me. I never really liked Either in haskell. It feels to me that it doesn't really document the purpose of how it is used in the name and the type
22:21:38 <Vorpal> compare to Maybe, which is good. Why not just use Either Nothing YourType
22:21:51 <Vorpal> well, not Nothing
22:22:01 <elliott> Either is good for error reporting.
22:22:09 <Vorpal> rather Either () YourType
22:22:38 <elliott> Either Void YourType.
22:22:41 <Vorpal> or that
22:22:52 <elliott> Or it's not isomorphic.
22:22:53 <Vorpal> elliott, or Either YourType Void I guess
22:23:00 <Vorpal> elliott, eh?
22:23:13 <Vorpal> :t Void
22:23:14 <lambdabot> Not in scope: data constructor `Void'
22:23:19 <Vorpal> hm
22:23:28 <oerjan> :k Void
22:23:29 <lambdabot> Not in scope: type constructor or class `Void'
22:23:33 <elliott> data Void
22:23:38 <Vorpal> hm
22:23:41 <Vorpal> well okay
22:23:59 <Vorpal> elliott, anyway, my point was not the exact translation between Either and Maybe, but that it feels awkward
22:24:15 <zzo38> No, Left for kerns and Right for characters.
22:24:44 <Vorpal> it is like those C system call APIs you run into sometimes: foo(int request, void *arg1, void *arg2, void *arg3)
22:25:02 <Vorpal> I think ioctl is actually varargs
22:25:03 <Vorpal> but yeah
22:25:10 <elliott> Either is useful for error reporting.
22:25:26 <Vorpal> elliott, as in Either Result ErrorDesc or such?
22:25:28 <Vorpal> hm I guess so
22:25:29 <elliott> parse :: String -> Either ParseError AST
22:25:30 <zzo38> Either () is like Maybe it is also a monad, doing some similar things.
22:25:51 <zzo38> But, Maybe can also be used for successor type
22:26:02 <elliott> try :: (Exception e) => IO a -> IO (Either e a)
22:27:30 <Vorpal> (oooh TB is doing a live stream first impression of "Cthulhu saves the world", I heard good thing about that game. Just in case anyone is interested. Find a link from yogscast to his channel)
22:27:33 <zzo38> The reason I have Left for signed and Right for unsigned is that the kerns can be negative or positive, but characters are only positive number
22:29:19 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
22:33:40 <zzo38> Some people complained that I have a "SUMMON CTHULHU" command on IRC, but now you are going to complain about a different feature of my IRC, isn't it?
22:42:22 -!- Taneb has quit (Ping timeout: 248 seconds).
22:42:46 -!- ive has quit (Ping timeout: 255 seconds).
22:47:08 -!- Taneb has joined.
22:49:41 <elliott> Taneb! It's so good to have you h- what am I saying.
22:50:26 <Taneb> In 4 days I will begin the preparations of 17-ness for you and Phantom_Hoover
22:50:52 <elliott> No you... can't become 17.
22:50:55 <elliott> It's not allowed.
22:51:32 <Taneb> Just because you have a birthday either very late or very early in the academic year
22:53:57 <zzo38> To prevent it they would have to be dead. However, I see no reason to disallow becoming 17 years
22:54:33 <oerjan> i noticed someone else already did a prime pun
22:55:10 <Taneb> I did a different one
22:55:28 <oerjan> well, semi-different
22:55:57 <Taneb> Semiprime and fourth power
22:56:13 <Taneb> ...Is 9 a semiprime?
22:56:40 <oerjan> no says wikipedia
22:56:41 <oerjan> er
22:56:48 <oerjan> *yes says wikipedia
22:57:56 -!- Taneb|Hovercraft has joined.
22:58:49 -!- evincar has quit (Quit: ChatZilla 0.9.87 [Firefox 7.0.1/20110928134238]).
22:59:39 -!- sllide has quit (Quit: Leaving).
23:00:04 <Taneb|Hovercraft> I think the Arecibo message will just become some other civilization's Wow! signal
23:01:25 <Taneb|Hovercraft> If anything at all
23:01:47 <zzo38> Well, possibly...
23:02:07 -!- Taneb has quit (Ping timeout: 255 seconds).
23:02:18 -!- derrik has quit (Quit: left).
23:02:47 <Taneb|Hovercraft> I need a better connection
23:03:09 <Taneb|Hovercraft> Or should I see if I can get all the way to Kindle?
23:04:50 <elliott> Taneb|Hovercraft: Arecibo is a bit more involved than Wow!... but also never going to get anywhere.
23:05:52 <Taneb|Hovercraft> If it's recieved at all, it would be just a blip on a needle
23:07:06 <Taneb|Hovercraft> It would be funny if the secret to FTL travel was accidently contained in the alternative layout of the Arecibo signal
23:09:37 <coppro> why aren't we broadcasting a repeating cycle of prime numbers yet?
23:10:09 <Taneb|Hovercraft> Because Carl Sagan made Astrophysics appealing to poets
23:11:28 <elliott> coppro: why?
23:11:43 <elliott> all our transmissions are just for show
23:13:39 <coppro> elliott: I said why not.
23:13:49 <elliott> coppro: uses money, power, equipment, ...
23:13:55 <elliott> ..., has no benefit, ...
23:14:02 <coppro> elliott: has more benefit than SETI
23:14:12 <elliott> it has exactly the same (none)
23:14:28 <Taneb|Hovercraft> Unless the aliens are religious types who view prime numbers as evil
23:14:36 <elliott> there are a lot of stupid things, doesn't mean we should do more of them
23:14:51 <coppro> also will provide a beacon for earth for when we invent faster-than-light travel and outpace our ability to communicate
23:15:06 <elliott> "when"
23:15:20 * coppro goes back under his bridge
23:15:22 <elliott> let's just send out prime numbers for a few billion years in anticipation for that :P
23:15:47 <Taneb|Hovercraft> With FTL travel it takes 4 years to get to Alpha Centauri
23:16:33 <elliott> I don't think I'm going to switch over to DST next year.
23:16:39 <elliott> Everyone else will just do things an hour off.
23:16:48 <elliott> Better than clocks changing.
23:16:53 <monqy> I wish I could make that choice
23:17:16 * oerjan hits Taneb|Hovercraft with the sledge-o-matic ======[]
23:17:26 <elliott> monqy: You can, as long as you're OK with other clocks being wrong.
23:17:40 <monqy> but other clocks are important :(
23:17:49 <oerjan> what part of _faster_ than light don't you understand
23:18:09 <elliott> oerjan: I was considering commenting on that, but thought that perhaps my grasp of physics was lacking :)
23:18:25 <Taneb|Hovercraft> oerjan, proxima centauri is 4.24 light years away
23:18:36 <elliott> Reddit can enable "occupy" movements to permanently shift power from corporations to people and move the world into a new era. Here's how: (self.politics)
23:18:36 <elliott> OK, my hate of /r/politics has turned into a love of its new comedic format.
23:18:39 <Taneb|Hovercraft> If we can get there within 4 years, we have FTL
23:18:48 <elliott> Taneb|Hovercraft: Why not 3 seconds?
23:18:59 <Taneb|Hovercraft> Because that would be stupid
23:19:16 <elliott> Ah.
23:19:28 <coppro> 'new comedic format'?
23:20:37 <oerjan> just open a permanent wormhole with exotic spices.
23:21:04 <Taneb|Hovercraft> oerjan, too expensive
23:21:22 <Taneb|Hovercraft> Have you seen the price of spices these days?
23:22:53 <oerjan> we'll just use homeopathic methods to thin them out while increasing their efficiency
23:23:41 <Taneb|Hovercraft> That could work...
23:23:44 <Taneb|Hovercraft> Hmm...
23:23:49 <coppro> I haven't been able to get decent melange in ages
23:23:59 <Taneb|Hovercraft> We'd have to get one of them closed timelike curves going
23:24:08 <Taneb|Hovercraft> I think IKEA sells them
23:24:18 <oerjan> Taneb|Hovercraft: well i hear dmm already fixed that for us
23:25:54 <elliott> <coppro> 'new comedic format'?
23:25:57 <elliott> observe: <elliott> Reddit can enable "occupy" movements to permanently shift power from corporations to people and move the world into a new era. Here's how: (self.politics)
23:27:00 <coppro> oh
23:27:03 -!- pikhq_ has joined.
23:27:07 -!- pikhq has quit (Ping timeout: 260 seconds).
23:27:35 -!- derdon has quit (Remote host closed the connection).
23:29:19 <zzo38> What is the most number of parameters you have used for a ... <$> ... <*> ... <*> ... <*> ... function?
23:29:34 <monqy> all of them
23:30:28 <zzo38> Like how liftA2 has two (like f <$> x <*> y) and liftA3 with three, what is the most you have used?
23:31:42 <zzo38> I started writing the TFM reading program and I realized I used eleven.
23:32:37 <oerjan> ...that requires the function before <$> to take that many parameters, as well...
23:33:12 <zzo38> Yes it does. It takes thirteen parameters (two of which are specified before <$> to make eleven more required)
23:33:48 <oerjan> sounds like a candidate for splitting things up...
23:34:35 <zzo38> The way the TFM format is specified it can use all of them at once.
23:35:30 <elliott> http://thestallmandialogues.com/
23:35:35 -!- derdon has joined.
23:38:46 <elliott> these are actually physically painful to read
23:40:46 <oerjan> well, then stop.
23:41:18 -!- derdon has quit (Remote host closed the connection).
23:41:23 <elliott> oerjan: i cant.......
23:41:35 <oerjan> i see. required reading.
23:42:57 -!- tiffany has quit (Quit: Leaving).
23:54:10 <elliott> so oerjan i hear that irregular webcomic is goign to start updating a regular rate... of...
23:54:11 <elliott> ZERO
23:54:12 <zzo38> Is string theory: science, philosophy, or mathematics?
23:54:15 <elliott> AHAHAAHAHAHAHAHAHAHAHAHA
23:55:02 -!- Ngevd has joined.
23:57:54 <Vorpal> elliott, don't you think it is sad?
23:58:03 <elliott> AHAHAHAHAHAHAHAHAHAHA
23:58:04 <Vorpal> heartless bastard
23:58:22 <Ngevd> Crap, I'm back to Ngevd
23:58:55 -!- Taneb|Hovercraft has quit (Ping timeout: 276 seconds).
2011-10-31
00:01:11 <Ngevd> Oh, that's right,
00:01:14 <Ngevd> I don't go to Kindle
00:01:35 <Ngevd> Kindle is reserved for when I'm, you know, on a Kindle
00:04:37 <Vorpal> Ngevd, try /nick Taneb|Hovercraft or whatever you want
00:04:51 <Ngevd> Nah
00:04:53 <Vorpal> Ngevd, you can renick once you ghosted the dead connection, or once it timed out
00:04:59 <Ngevd> It's Ngevd time now
00:05:05 <Vorpal> Ngevd, come on, you could just copy what I wrote
00:05:45 -!- Ngevd has changed nick to TheAstoundingVan.
00:05:51 <elliott> the astounding van
00:05:56 <Vorpal> no no, it is Ngevd time
00:06:01 <TheAstoundingVan> I didn't realise nicks had a maximum length
00:06:12 <Vorpal> TheAstoundingVan, what was it supposed to be?
00:06:19 <Vorpal> anyway of course there is a max length
00:06:22 <TheAstoundingVan> It should continue TheAstoundingVanDoorn
00:06:26 <monqy> I can't imagine TheAstoundingVan not being the intention
00:06:27 <Vorpal> it is right there in the irc protocol iirc
00:06:33 <TheAstoundingVan> Probably
00:06:46 <Vorpal> indeed your current nick is quite nice
00:06:55 <Vorpal> except it moved the nick column out quite a bit
00:06:58 <Vorpal> that is annoying
00:07:05 <Vorpal> (I have xchat style nick column)
00:07:21 <TheAstoundingVan> I have the Windows port of XChat
00:07:28 <TheAstoundingVan> I do not remember why I am using Windows
00:07:31 <Vorpal> (because, frankly it is a lot easier to read irc that way IMO)
00:07:47 <TheAstoundingVan> Oh, that thing on the left
00:07:54 <TheAstoundingVan> I was thinking of the one on the right
00:08:24 <Vorpal> TheAstoundingVan, I'm on mixed atm. Lets see, this is on ubuntu, a freebsd box is running on the other side of the room, and my desktop is on windows 7 atm waiting for bloody stupid steam to decide it doesn't need to install .NET for the fourth time.
00:08:46 <TheAstoundingVan> I have but one computer
00:08:53 <Vorpal> ah
00:09:08 <TheAstoundingVan> Well, one computer that I could feasibly chat on IRC with that is definitely in my possession
00:09:32 <Vorpal> I see
00:09:46 <TheAstoundingVan> My Kindle actually belongs to my dad
00:09:58 <TheAstoundingVan> And the family computer is... the family computer
00:10:08 <TheAstoundingVan> My brother's laptop is my brother's
00:10:25 <Vorpal> I see
00:10:28 <TheAstoundingVan> The 98SE computer doesn't have an internet connection
00:10:35 <Vorpal> the what....
00:10:38 <TheAstoundingVan> The Wii is shared between me and my brother
00:10:39 <Vorpal> you got to be kidding
00:10:42 <TheAstoundingVan> Windows 98SE
00:10:47 <Vorpal> ....
00:10:47 <Vorpal> what
00:11:14 <TheAstoundingVan> Seriously
00:11:21 <TheAstoundingVan> It's not turned on because it is rather loud
00:11:27 <TheAstoundingVan> I play Lego Loco on it mainly
00:11:29 <elliott> TheAstoundingVan: Upgrade it to 95.
00:12:39 <TheAstoundingVan> I don't think 95 can run Lego Loco
00:12:56 <TheAstoundingVan> It's also got Rollercoaster Tycoon
00:13:34 <Vorpal> heh
00:14:45 <elliott> god
00:14:49 <elliott> why don't i have rollercoaster tycoon
00:14:51 <elliott> does it work in wine
00:15:05 <elliott> looks like "sort of"
00:15:07 <TheAstoundingVan> I don't know
00:15:42 <TheAstoundingVan> Do you have Lego Loco?
00:16:27 <Vorpal> elliott, it is old enough to run okay in qemu I think...
00:16:33 <elliott> prolly
00:16:35 <Vorpal> so even if it doesn't work in wine
00:16:36 <elliott> i could just use virtualbox
00:16:50 <TheAstoundingVan> It was written almost entirely in assembly
00:16:54 <Vorpal> elliott, that too
00:20:02 <elliott> -frandom-seed=string
00:20:02 <elliott> This option provides a seed that GCC uses when it would otherwise
00:20:02 <elliott> use random numbers. It is used to generate certain symbol names
00:20:02 <elliott> that have to be different in every compiled file.
00:20:03 <elliott> Wait, seriously?
00:20:10 <elliott> gcc relies on random numbers not repeating over different runs?
00:20:13 <elliott> whoo boy
00:20:41 <TheAstoundingVan> That should cause some problems
00:20:53 <TheAstoundingVan> Unless the RNG is awful
00:21:10 <elliott> Eh?
00:21:23 <TheAstoundingVan> It could be "seed + 1"
00:21:47 <TheAstoundingVan> Also, lego Loco doesn't work on Wine
00:21:51 <TheAstoundingVan> I sad
00:21:57 <TheAstoundingVan> I very sobber
00:23:00 <TheAstoundingVan> NEITHER DOES LEGO FOOTBALL MANIA
00:23:42 <TheAstoundingVan> How am I going to get a simultaneous Lego, sport, and Linux fix now!
00:24:25 <TheAstoundingVan> NETHER DOES LEGO ALPHA TEAM :'(
00:24:38 <TheAstoundingVan> All my Lego games, worthless!
00:24:57 <TheAstoundingVan> I'll have to play with actual Lego now!
00:25:31 <elliott> wait.
00:25:37 <elliott> TheAstoundingVan: other people played lego alpha team?
00:25:53 <elliott> just... how
00:25:54 <elliott> are you me
00:25:58 <TheAstoundingVan> I wasn't much good at it
00:26:03 -!- ive has joined.
00:26:15 <TheAstoundingVan> ...
00:26:16 <elliott> yeah ditto
00:26:27 -!- TheAstoundingVan has changed nick to ettioll.
00:26:38 <oerjan> <elliott> are you me <-- i thought we had established that already.
00:26:48 <elliott> hi ettioll
00:26:52 <elliott> nice name actually
00:26:54 <ettioll> hi elliott
00:27:10 <elliott> hi
00:27:16 <ettioll> hi
00:28:40 <elliott> hi
00:28:49 <ettioll> hi
00:29:10 <monqy> hi
00:29:20 <ettioll> shut up, monqy
00:29:29 <monqy> im betrayd
00:30:35 <elliott> no monqy
00:30:35 <elliott> un
00:30:36 <elliott> shutup
00:30:38 -!- elliott has changed nick to moqny.
00:30:40 <moqny> hi
00:30:44 <monqy> hi
00:30:51 <ettioll> moqny, is "Elliott" an old family name for you?
00:30:59 <moqny> yes that's why it's my first name
00:31:02 <ettioll> also, do you speak in a fake London accent?
00:31:05 <moqny> family names go first
00:31:27 <Vorpal> moqny, on Iceland they do yes
00:31:31 <Vorpal> not in the rest of the world
00:31:46 <moqny> iceland doesnt have family names
00:31:53 <ettioll> My great-great-great grandmother was called Elliott
00:32:02 <moqny> so no Vorpal UR WRONGE,
00:32:42 -!- ettioll has changed nick to noqmy.
00:32:46 <noqmy> hi
00:32:46 -!- ive has quit (Ping timeout: 260 seconds).
00:32:49 <monqy> hi
00:33:10 <noqmy> monqy, move to Hexham and make this even more confusing
00:33:20 <noqmy> also, get older before Thursday
00:33:27 <noqmy> because
00:33:34 <monqy> I'm a minute older than I was a minute ago
00:33:40 <noqmy> NOT GOOD ENOUGH
00:33:43 <moqny> hi
00:33:46 <noqmy> hi
00:33:51 <monqy> hi
00:33:53 <noqmy> hi
00:33:56 <monqy> hi
00:33:58 <noqmy> hi
00:34:17 <monqy> hi
00:34:23 <noqmy> hi
00:34:31 <moqny> hi
00:34:39 <monqy> hi
00:34:47 <noqmy> hi
00:34:51 <moqny> hi
00:35:33 <noqmy> hi
00:35:37 <monqy> hi
00:35:41 <noqmy> hi
00:35:50 <moqny> hi
00:35:57 <noqmy> hi
00:36:00 <moqny> hi
00:36:11 <monqy> hi
00:36:12 <noqmy> hi
00:36:16 <moqny> hi
00:36:22 <monqy> hi
00:36:25 -!- oerjan has changed nick to nomqy.
00:36:27 <noqmy> hi
00:36:28 <nomqy> hi
00:36:31 <moqny> hi
00:36:31 <monqy> hi
00:36:34 <noqmy> hi
00:36:38 <moqny> hi
00:36:41 <nomqy> hi
00:36:44 <monqy> hi
00:36:47 <noqmy> hi
00:36:48 <moqny> hi
00:36:55 <pikhq_> SIX PIG
00:37:00 <moqny> NOOOOOOOO
00:37:04 <monqy> crys
00:37:11 <noqmy> sobber...
00:37:11 <pikhq_> >:D
00:37:24 <nomqy> you FIEND
00:39:32 <zzo38> HHHHIIIIIIII>>??;/, . .. ../ /
00:39:50 <noqmy> you are now Pietbot's arch enemy, pikhq_
00:39:56 <noqmy> I hope you are happy
00:40:10 <nomqy> Happy happy joy joy
00:40:16 <moqny> cry
00:40:43 <monqy> ;_; ;_;
00:40:48 <monqy> ;___;
00:40:55 <moqny> they merged
00:40:59 <nomqy> ;__;
00:41:02 <nomqy> darn
00:41:07 <moqny> i ruined
00:41:08 <moqny> sorey
00:41:19 <noqmy> ;_; ;__; ;___; ;_____;
00:41:47 <moqny> let's just always be monqy
00:42:24 <nomqy> \o/ \m/ \m/ \o/ \o/
00:42:40 <nomqy> argh
00:43:04 <monqy> nomqy's painful adjustment to a name shorter than myndzi\
00:44:15 <moqny> monqy: do you have a constraint solver free
00:44:38 <nomqy> don't be silly, how can it be constrained and free at the same time
00:45:16 <monqy> all my constraint solver costs big money
00:46:08 <moqny> monqy: I have biggest money
00:46:58 -!- Vorpal has quit (Read error: Operation timed out).
00:47:29 <noqmy> moqny, I have created more esolangs than you
00:47:34 <noqmy> How did this happen
00:47:45 <noqmy> Did this happen
00:47:50 <moqny> i have created more than is on my wiki page, i believe
00:48:00 <noqmy> Okay
00:49:30 <monqy> I have not designed many esolangs
00:50:13 <noqmy> That's interesting
00:50:31 <monqy> i have not designed many esolangs shame
00:50:32 <monqy> help
00:51:28 <monqy> hm, that might be a bit hard to parse
00:51:34 <monqy> properly, at least
00:52:06 <noqmy> Luigi is a language which only I believe to be Turing-complete
00:52:38 <nomqy> i shall now proceed to design ~ 40310 esolangs at once
00:52:43 <monqy> have you proven this
00:52:47 <monqy> these
00:52:51 <nomqy> > permutations "+-<>[].,"
00:52:51 <monqy> its turing completeness
00:52:52 <lambdabot> ["+-<>[].,","-+<>[].,","<-+>[].,","-<+>[].,","<+->[].,","+<->[].,","><-+[]....
00:52:52 <monqy> and
00:52:59 <noqmy> monqy, twice
00:53:03 <monqy> people other than you not believing in its turing completenes
00:53:05 <noqmy> Apparently neither of them count
00:53:05 <monqy> have you proven that
00:53:08 <monqy> oh no
00:53:15 <noqmy> Neither of the other people count
00:53:18 <monqy> did you bungle the proofs or is everyone just a jerk
00:53:28 <moqny> he bungled the proofs
00:53:29 <noqmy> I bungled the proofs
00:53:40 <monqy> bungle, a good word
00:53:41 <noqmy> I translated non-turing complete turing machines
00:53:50 <monqy> ahh
00:54:03 <noqmy> I can translate arbitrary turing machines to Luigi, but can't be bothered with long ones
00:54:16 <noqmy> With lots of states
00:54:27 <monqy> automation reasons
00:54:47 <monqy> if you can write a sound algorithm to perform the reduction, who needs manual translation?
00:54:54 <noqmy> If someone finds or creates a notation for expressing Turing-Machines, I will do so
00:55:07 <nomqy> that's why i post general translators instead
00:55:25 <noqmy> I did that for Nandypants and Noryshorts
00:55:31 <noqmy> Which were my first published esolangs
00:55:39 <monqy> lambda calculus (laughs)
00:55:43 <monqy> sk calculus (laughs)
00:55:46 <monqy> brainfuck (laughs)
00:55:49 <moqny> <noqmy> I can translate arbitrary turing machines to Luigi, but can't be bothered with long ones
00:55:58 <moqny> did you actually prove every tm can be translated though
00:56:07 <noqmy> No, but I am able to translate any one
00:56:15 <monqy> good proof
00:56:17 <noqmy> I just haven't bothered proving it
00:56:57 <moqny> proof by i hope taneb doesn't die
00:58:08 <noqmy> It's simple really
00:59:13 <noqmy> But annoyingly hard to describe
00:59:24 <monqy> oh?
00:59:53 <noqmy> For each cell, you put an "N" followed by a number representing its colour
01:00:24 <noqmy> Except for the one with the poor sod in the box, in which you put a letter representing the state of the poor sod in a box instead of the "N"
01:01:06 <noqmy> Then you put an expand left marker at the left end of the tape and an expand right marker at the right end of the tape
01:01:35 <noqmy> These can be any characters that aren't a semicolon or used to represent a pen state or a cell colour
01:01:44 <noqmy> That is the initial tape
01:02:30 <noqmy> Then you put ";L;LN0;R;N0R;", assuming L and R are the expand markers
01:02:48 <noqmy> And 0 is the default colour
01:03:05 <noqmy> Now comes the tedious bit
01:03:19 <noqmy> For each rule, first see if it moves left or right
01:04:41 <moqny> hi
01:04:45 <monqy> hi
01:07:31 <nomqy> hi
01:08:44 -!- noqmy has quit (Ping timeout: 240 seconds).
01:08:59 <monqy> bye
01:09:27 <moqny> bye
01:10:47 -!- ive has joined.
01:17:24 <moqny> it sucks being a hydrogen cat
01:41:23 -!- pikhq_ has quit (Ping timeout: 244 seconds).
01:41:34 -!- pikhq has joined.
01:52:13 <zzo38> I figured out how to use Astrolog to compute the date of Chinese New Year.
01:54:30 <zzo38> It is simple to do by using the Ephemeris chart and restricting everything except the Sun and Moon.
01:54:50 <zzo38> It is most likely to occur in January or February.
01:55:44 <zzo38> So that is the date you would look firts.
01:55:47 <zzo38> s/firts/first/
01:56:12 <zzo38> The longitude for Chinese would be 120:00E
02:04:51 <pikhq> Makes sense that that'd work.
02:05:13 <pikhq> I mean, Chinese holidays are on their old, lunar calendar.
02:07:53 <zzo38> Yes; it is the new moon before the sun reaches 330 degrees (also called Pisces). On the Ephemeris calendar you can see the red line for Sun and blue line for Moon (by default there are many more, but you can turn off whatever you want to omit). When the red and blue line cross is the new moon. You can pause animation and use !@#$%^&*( and -+ to advance the time. And then look the red line is to the left of the 330 degrees point, because it will
02:08:59 <nomqy> ... because it will
02:09:06 -!- nomqy has changed nick to oerjan.
02:09:35 <zzo38> ... because it will then reach that point in a few days or a month or so.
02:10:44 <zzo38> (Important Note: This "Pisces" has nothing to do with the constellation of the same name; in this context, "Pisces" is just another name for 330 degrees. I prefer to work directly in degrees.)
02:48:07 <moqny> http://en.wikipedia.org/wiki/Blissiness
02:48:11 <moqny> From Wikipedia, the free encyclopedia
02:48:11 <moqny> Blissiness is created with bliss and busy with makes blissiness. It is now the mark into internet for the websitecreator, former librarian:) .
02:48:11 <moqny> Blissiness rooted in bliss meaning not excited not the other side of excited, just in the neutral midst. Blissiness rooted in being busy and disappearing in, there is no doer and object, just a verb like there is only "singing", 'doing', 'creating' and so on '...... ing'. A realized way being without ego, just clear consciousness itsself, not the content of it thats something else. A realized one has no ego left and abide as pure consciousness. Its
02:48:12 <moqny> hard to tell, explain, just one knows as experience or not. The easiest way to explain is that one in the most difficult situations experience to be without ego just listening as pure consciousness with no interferention of mind itsself: sure this is not easy. Many realized let see that it happen in the world today.
02:48:17 <moqny> monqy: recent changes = best???
02:50:10 <monqy> hi
02:50:20 <monqy> yes best
03:06:42 <oerjan> that didn't last long :P
03:08:00 <oerjan> apparently i was just 1 minute too late
03:08:02 <moqny> rest in peace
03:08:16 <moqny> (cur | prev) 02:47, 31 October 2011‎ Skater (talk | contribs)‎ (931 bytes) (Requesting speedy deletion (CSD A1). (TW)) (undo)
03:08:16 <moqny> (cur | prev) 02:46, 31 October 2011‎ Blissiness (talk | contribs)‎ (914 bytes) (Explanation and meaning of 'blissiness' as mark on the internet.) (Tag: possible autobiography or conflict of interest)
03:08:17 <moqny> blissiness 2:46--3:05
03:57:38 -!- GreaseMonkey has joined.
04:01:25 <zzo38> Can you file for univorce if you are unmarried and don't like yourself anymore?
04:03:32 <zzo38> How common are golf balls with plutonium?
04:03:59 <oerjan> well the di- in divorce apparently comes from a preposition meaning apart, not two, so i think it would be a portmanteau
04:04:20 <zzo38> OK.
04:05:30 <oerjan> i suspect they are very rare.
04:05:46 <oerjan> why would you want an extremely heavy golf ball, anyhow.
04:05:55 <zzo38> I don't know.
04:06:08 <zzo38> I just read these things somewhere.
04:06:20 <moqny> `addquote <zzo38> Can you file for univorce if you are unmarried and don't like yourself anymore?
04:06:23 <HackEgo> 701) <zzo38> Can you file for univorce if you are unmarried and don't like yourself anymore?
04:08:32 <CakeProphet> zzo38: I think that's called suicide.
04:09:33 <zzo38> Yes, I suppose so. But someone was trying to write something else, probably to make a joke
04:12:06 <oerjan> now i'm reminded of that disembodied spirit in H2G2
04:12:16 <CakeProphet> zzo38: someone else?
04:12:24 <oerjan> which apparently had done _just_ that
04:23:11 <moqny> i loved that guy
04:33:04 -!- ive has quit (Quit: leaving).
04:40:57 <zzo38> oerjan: Yes it was Jyte claims I was looking at, I think.
04:42:34 <zzo38> What if you played Napoleon with aces low? I think that would affect the game a lot; while most games are unaffected by making aces low (as long as it is decided before the cards are dealt, that is).
04:43:05 <quintopia> whatis napoleon
04:43:31 <zzo38> A card game for five players.
04:44:15 <oerjan> some games have aces both high and low
04:45:02 <zzo38> Yes, some do.
04:45:36 <zzo38> But in trick taking games, aces are usually high only, and changing the rules such that aces are low won't affect anything.
04:48:01 <oerjan> yes, if only the order of ranks matters, then it's just a simple permutation
04:50:40 <zzo38> But Napoleon has some unusual rules, such as: the ace of spades beats everything, if five cards of the same suit are played then the two wins (if there is a two), you earn a point for a TJQKA of each suit (and if you collect all 20 without bidding 20, you lose due to the Siberian rule), etc
04:53:05 <zzo38> Actually, it is your team's cards collcted that count; the team is selected by a card the declarer names, whoever holds that card is the declarer's partner, but nobody else knows who it is until the named card is played (it is possible for the declarer to name a card he holds, playing alone, and earning more points at the end)
04:59:53 <zzo38> Have you ever played these kind of card game?
05:01:13 <quintopia> ive heard of a similar thing
05:16:11 <zzo38> If I make the program based on Swiss Ephemeris (not soon, though; probably later) what is it should be called????????????????????????????????
05:16:16 <moqny> q
05:21:10 <quintopia> i agree with misspelled monqy
05:21:19 <quintopia> q is an excellent name
05:21:56 <zzo38> Just q by itself?
05:22:30 <quintopia> yes
05:22:46 <quintopia> i dont think the name has been taken
05:23:14 <zzo38> I still disagree however
05:24:38 <quintopia> you asked for suggestions. you arent obligated to take them
05:24:47 <zzo38> OK
05:51:52 <zzo38> You try write such a program.
05:56:08 <moqny> no
05:56:41 <zzo38> OK
05:58:37 <coppro> hmm I could go to bed
06:00:57 <zzo38> Is string theory: science, philosophy, or mathematics?
06:03:21 <moqny> it's string theory
06:03:30 <moqny> monqy: should i change my nick back
06:03:39 -!- Vorpal has joined.
06:03:42 <monqy> im opinionless
06:04:31 <zzo38> I say yes but it is not up to me
06:14:55 <moqny> monqy: if you're gonna be opinionless at least write pcsm for me sheesh
06:15:20 <moqny> Vorpal: tup update btw, dunno if you're subscribed to tup-users
06:15:47 <Vorpal> moqny, no I didn't. Doesn't affect the arch package, it is a -git package.
06:16:05 <Vorpal> So unless git repo url or build/install steps change it doesn't really need changing
06:16:08 <moqny> no I "didn't"? anyway I know that, I was just saying you should reinstall it
06:16:09 <zzo38> Another fictitious object I want to include is the "ecclesiastical moon".
06:16:27 <Vorpal> moqny, "no I didn't subscribe to that list"
06:16:29 <monqy> moqny: whats pcsm :(
06:16:55 <zzo38> If that is possible.
06:17:02 <moqny> monqy: purely crystalline sex monsters (it is actually packaconfigurservice manager)
06:17:30 <Vorpal> bbl
06:19:07 <oerjan> zzo38: is that what they use to calculate easter?
06:20:35 <zzo38> oerjan: Yes.
06:21:25 <moqny> the ecclesiastical moon is real it's just really black so you can't see it
06:21:30 <moqny> (it's dirty because nobody cares about it)
06:21:32 -!- Vorpal has quit (Ping timeout: 240 seconds).
06:21:39 <zzo38> Swiss Ephemeris allows defining fictitious objects in external files. By default it includes the Uranians although you can add stuff.
06:22:51 <coppro> wow
06:23:29 <zzo38> You can add planets to the solar system as well as moons to the Earth.
06:24:01 <oerjan> moqny: sure they care, how would they otherwise know when to collect easter eggs?
06:24:10 <moqny> hi coppro
06:24:19 <moqny> oerjan: no they dont lov ie t
06:24:21 <moqny> ;___;
06:35:04 -!- Ngevd has joined.
06:35:44 -!- moqny has changed nick to elliott.
06:35:52 <elliott> Ngevd there is absolutely no justification for anyone to be up at this time ever at all.
06:35:55 <elliott> On that note,
06:35:57 -!- elliott has quit (Quit: Leaving).
06:36:08 <Ngevd> I couldn't sleep
06:36:13 <Ngevd> I feel awful
06:52:07 -!- jix has quit (Remote host closed the connection).
07:01:12 -!- zzo38 has quit (Remote host closed the connection).
07:09:54 -!- Taneb has joined.
07:12:03 -!- Ngevd has quit (Ping timeout: 244 seconds).
07:12:17 <Taneb> "a country that resembles the United Kingdom, identifiable from the grey skies and mandatory uniforms."
07:12:17 <Taneb> What have we become.
07:17:06 -!- monqy has quit (Quit: hello).
07:18:55 <CakeProphet> Taneb: citation needed.
07:22:23 -!- Taneb has quit (Ping timeout: 244 seconds).
07:33:29 -!- Ngevd has joined.
07:35:29 <Ngevd> I think, if we actually end up in a dystopia, it will not be Orwellian
07:35:36 <Ngevd> Nor will it be Huxleyis
07:35:37 <Ngevd> t
07:38:46 <Ngevd> It will be like that book I read once
07:38:58 <Ngevd> It was called... Framed? Traces? something like that...
07:46:11 -!- CakeProphet has quit (Ping timeout: 258 seconds).
07:47:18 -!- CakeProphet has joined.
07:47:18 -!- CakeProphet has quit (Changing host).
07:47:18 -!- CakeProphet has joined.
08:11:19 -!- Ngevd has quit (Ping timeout: 240 seconds).
08:19:40 -!- Ngevd has joined.
08:20:28 -!- jix has joined.
08:25:23 <coppro> apparently my typing speed is 95 wpm
08:25:42 <coppro> no wonder I can actually follow along writing notes in LaTeX
08:25:54 <coppro> (this is a bitch in linear algebra)
08:26:16 <Ngevd> Learn shorthand typing
08:26:20 <Ngevd> Save the world
08:29:40 <coppro> Ngevd: lol
08:35:19 -!- Ngevd has quit (Ping timeout: 259 seconds).
08:59:24 <myndzi\> i went and bothered to actually look up how wpm is defined the other day
08:59:29 <myndzi\> turns out i was calculating it wrong by removing spaces
08:59:31 -!- myndzi\ has changed nick to myndzi.
08:59:37 <myndzi> i actually type about 150 in bursts on irc ;)
09:01:41 <coppro> I'm not entirely surprised, I can certainly get much higher in bursts when I'm typing out my own thoughts than when I'm typing from text I'm reading as I go which is the standard testing method
09:01:59 <oklopol> 95 is not much for english
09:02:04 <oklopol> it's not little either
09:02:08 <oklopol> but it's not much
09:02:37 <oklopol> i prolly have much less
09:02:38 <oklopol> like 4
09:02:42 -!- hagb4rd has joined.
09:02:46 <oklopol> maybe i'll try
09:02:48 <coppro> oklopol: what? 95 is plenty
09:02:53 <coppro> like, professional plenty
09:04:42 -!- Phantom_Hoover has joined.
09:05:23 <oklopol> huh
09:05:50 <oklopol> perhaps i just know too many crazy people
09:06:05 <oklopol> it seems it's like the top 0%
09:06:11 <oklopol> 95
09:07:06 -!- Ngevd has joined.
09:07:53 <Phantom_Hoover> *Still* half-term, Ngevd?
09:07:53 <lambdabot> Phantom_Hoover: You have 1 new message. '/msg lambdabot @messages' to read it.
09:08:21 <Ngevd> Teacher training day
09:09:38 -!- Jafet has joined.
09:09:42 <oerjan> soon they'll be able to fetch and roll around
09:09:54 <oklopol> it seems the average is 36
09:15:03 -!- sebbu has quit (Read error: Connection reset by peer).
09:15:35 -!- sebbu has joined.
09:15:47 <augur> oerjan! you're norwegian!
09:15:52 <augur> oklopol: you're finnish!
09:16:06 <oklopol> totta
09:16:11 <augur> i need judgements :D
09:16:19 <Ngevd> I'm neither Norwegian nor Finnish
09:16:55 <Ngevd> I don't fit in your quaint little categories
09:17:02 <augur> oerjan: can i get judgments?
09:17:30 <oerjan> *sigh*, ok then
09:17:37 <augur> just a few!
09:17:42 <augur> first can you translate John has spoken with the boys, and Susan has spoken with the girls
09:18:06 <oerjan> John har snakket med guttene, og Susan har snakket med jentene
09:19:10 <augur> ahhhh no determiner!
09:19:13 <oklopol> seems you're still doing the same thing
09:19:15 <augur> ok how about
09:19:30 <augur> John has spoken with every boy and Susan has spoken with every girl
09:19:37 <augur> oklopol: same stuff, but different specifics :p
09:19:53 * oklopol predicts exact same word order
09:19:56 <oerjan> John har snakket med hver gutt og Susan har snakket med hver jente
09:20:12 <oklopol> did not expect them to align almost perfectly
09:20:21 <oerjan> augur: you can force a determiner on definite nouns by adding an adjective, btw.
09:20:25 <Ngevd> Ionus pueroris dixit, et Susanna puellis
09:20:39 <augur> oerjan: i see
09:20:40 <augur> interesting
09:20:58 <Ngevd> Ionus omnis pueroris dixit, et Susanna omnis puellis
09:21:16 <Ngevd> s/pueroris/pueris/
09:21:23 <augur> oerjan: good or bad: John har snakket med hver gutt og Susan har med hver jente
09:21:36 <oklopol> augur: that was the old stuff
09:21:39 <oerjan> heh i expected precisely that one from you :P
09:21:41 <augur> oklopol: ey?
09:21:44 <augur> oerjan: :)
09:21:47 <oerjan> somewhat bad
09:21:55 <oklopol> augur: basically exactly what oerjan just said
09:22:01 <oerjan> "har med" is an idiom meaning something else, too
09:22:08 <augur> ok and without "har"?
09:22:12 <augur> in the right side
09:22:16 <oerjan> then it's ok
09:22:26 <augur> ok, so you speak like i need to you
09:22:32 <augur> ok lets get to the real questions :)
09:22:43 <augur> (yay calibration)
09:23:02 <augur> John har snakket med hver gutt og Susan hver jente
09:23:32 <oerjan> ok, mostly
09:23:41 <augur> to mean the same as "John har snakket med hver gutt og Susan har snakket med hver jente" ?
09:23:43 <oklopol> i'm just gonna watch this and leave just before i'm needed (unless one was enough)
09:23:49 <oerjan> yes
09:23:54 <augur> ok :)
09:24:20 <augur> John har snakket med hver gutt og Susan med jente
09:24:25 <oerjan> no.
09:25:19 <augur> last one
09:25:24 <augur> John har snakket med hver gutt og Susan jente
09:25:37 <oerjan> still awful
09:25:41 <augur> thank you sir!
09:25:51 <oerjan> yw
09:25:53 <augur> thank you for being a perfect speaker of norwegian :D
09:26:23 <augur> oklopol: you willing? :x
09:26:55 <oklopol> you should probably talk to Deewiant or fizzie, i tend to find everything correct
09:26:59 <Ngevd> That reminds me of something I said once, augur
09:27:06 <Ngevd> "I need someone who's willing."
09:27:06 <augur> oklopol: :P
09:27:12 <augur> i think fizzie was my last informant anyway
09:27:21 <augur> but i think you gave me good judgments too, oklopol!
09:27:52 <oklopol> :o
09:27:54 <oklopol> cool stuff
09:27:58 <oerjan> oklopol thinks äkkyllä sitä toikolassa sounds correct
09:27:59 <oklopol> but the real reason i have to go is
09:28:01 <oklopol> i have to go
09:28:09 <augur> oklopol: aww ok
09:28:16 * augur rapes oklopol farewell
09:28:23 <oklopol> augur: kky is not a word i know
09:28:49 <oklopol> toikola is obviously a place, that means to hit someone with an kky in toivola
09:28:59 <oerjan> yay
09:29:10 <oklopol> erm oerjan
09:29:12 <oerjan> probably painful
09:31:47 <oklopol> the interesting part is where the allative form of kky is kkyll, it would usually be kyll
09:33:01 <oklopol> i have a hunch they do that in some dialect here
09:33:12 <oerjan> i haven't quite got those consonant modifications pat down yet.
09:33:14 <oklopol> i can't really speak in any dialect
09:33:55 <oklopol> except for using two words that are rare outside turku which i haven't been able to get rid of
09:34:05 <oerjan> although i actually had this sort of hunch the kk was wrong there
09:34:23 <augur> oerjan: wanna give my paper draft a read through, up to but not including section 3? :D
09:34:31 <oerjan> no.
09:34:34 <augur> :(
09:34:48 <oklopol> :)
09:34:49 <oklopol> bye
09:35:00 <augur> bye!
09:37:58 <oerjan> bye
09:42:55 -!- Ngevd has quit (Ping timeout: 258 seconds).
09:52:44 -!- Ngevd has joined.
09:54:19 -!- ais523 has joined.
10:11:53 <Ngevd> If it is possible to write a quine in Brook, Brook is more computationally powerful than a linear-bounded automaton
10:12:03 <Ngevd> ^^^ Taneb's conjecture
10:13:24 <oerjan> i don't know if the conclusion is true, but i don't think that's a sound argument...
10:20:20 <Ngevd> It is clear that the computational power of Brook is at least that of a Linear Bounded Automaton
10:20:44 <Ngevd> As indeed it is, if one discounts the commands 'c' and 'C'
10:27:36 <Ngevd> However, with the commands 'c' and 'C', if a quine is possible an infinite loop is possible
10:28:17 <Ngevd> Not the greatest of arguments, I'll admit
10:33:19 -!- hagb4rd has quit (Ping timeout: 240 seconds).
10:33:26 <oerjan> sounds better
10:36:17 <Ngevd> I just put my surname into Wolfram Alpha, because I'm bored
10:36:42 <Ngevd> Wolfram Alpha interpreted it as two words
10:36:48 <Ngevd> Which are both place names
10:38:02 <Ngevd> I got a better result than my friend's surname
10:38:07 <Ngevd> Which redirects to "Horse"
10:41:01 <oerjan> boringly enough, WA interprets my surname as a surname :P
10:41:09 <Ngevd> :P
10:41:57 <oerjan> and claims 1 in 28409 americans have it
10:42:32 <oerjan> or 9509 people
10:46:04 -!- GreaseMonkey has quit (Quit: The Other Game).
10:47:21 -!- Vorpal has joined.
10:47:29 <Ngevd> The third most common first name for my surname is apparently Jan
10:47:34 <Ngevd> Fourth is Heinz
10:47:40 <Ngevd> Fifth is Theodore
10:50:10 <fizzie> W|A redirects my surname into a location; Kalajoki, North Ostrobothnia, population 9278.
10:50:22 <fizzie> "Notable people born in Kalajoki: (none known)"
10:50:25 <fizzie> The most useful box.
10:50:39 <oerjan> fizzie: are your ancestors from there?
10:50:44 <fizzie> No.
10:51:02 <Ngevd> My ancestors are from a town near Utrecht, the Netherlands
10:51:04 <fizzie> They're from pretty much the opposite side of the country.
10:51:41 -!- ais523 has quit (Remote host closed the connection).
10:54:15 <fizzie> "Other tips for using Wolfram|Alpha: You can only get answers about objective facts. Try "highest mountain", not "most beautiful painting".
10:54:35 <fizzie> "most beautiful painting" ends up giving a comparison table between to periodical publications, Beautiful and Painting.
10:55:00 <fizzie> "Only what is known is known to Wolfram|Alpha
10:55:01 <fizzie> Ask "how many men in Mauritania", not "how many monsters in Loch Ness""
10:55:16 <Phantom_Hoover> fizzie, surely the most beautiful painting is one of Stephen Wolfram.
10:55:55 <fizzie> So I ask the latter. "Input interpretation: How many Loch Ness monsters are there?" "Result: 0 (For the most part, the scientific community considers evidence of the existence of such creatures to be a combination of misidentification and deliberate hoaxes.)"
10:58:51 <fizzie> You can type in "edge detect Abraham Lincoln image with radius 7" into W|A, and it will do input interpretation: EdgeDetect[ [Abraham Lincoln | Image], 7 (radius) ] and give the resulting image.
11:00:44 <fizzie> OTOH, if you ask it to "edge detect Abraham Lincoln" and don't mention the image, it will compare Abraham Lincoln and Edge, the wrestler.
11:01:18 <Ngevd> Not Edge, the U2 member?
11:01:20 <Ngevd> Dissapointing
11:02:11 <oerjan> indeed.
11:02:40 <Phantom_Hoover> fizzie, does it tell you who would win in a fight?
11:02:59 <oerjan> i assume you were thinking of http://www.irregularwebcomic.net/2049.html
11:03:04 <fizzie> Ngevd: If you ask it to "edge detect the edge image", it will edge-detect an image of the U2 guitarist.
11:03:27 <Ngevd> oerjan, yes I was
11:04:16 -!- Phantom_Hoover has quit (Quit: Leaving).
11:06:32 <fizzie> I asked it about "who would win in a fight" in general, but it just produced a dictionary-ish definition for the word "fight".
11:07:08 <Ngevd> Aww, now I've got Ultimate Showdown of Ultimate Destiny
11:14:45 -!- Jafet has left.
11:17:10 -!- oerjan has quit (Quit: Good night).
11:17:11 -!- ais523 has joined.
11:41:44 <CakeProphet> so how do I set myself as a postgres user?
11:43:07 <CakeProphet> nevermind I think I've got it.
11:45:53 <CakeProphet> uh what
11:46:01 <CakeProphet> I ran sudo -u postgres createdb db
11:46:11 <CakeProphet> could not change directory to "/home/adam/scripts/repos/aioseo/aiofront"
11:46:26 <CakeProphet> there's no db file, and now I try to run it again it says the db already exists.
11:58:06 <CakeProphet> nevermind I think I got it.
12:05:13 <coppro> 1/win 20
12:10:58 <CakeProphet> ?
12:22:56 -!- Nisstyre has quit (*.net *.split).
12:26:31 -!- glogbackup has joined.
12:26:37 -!- glogbackup has left.
13:25:26 -!- Ngevd has quit (Ping timeout: 258 seconds).
13:28:30 -!- Ngevd has joined.
13:28:32 <Ngevd> Hello!
13:29:27 <fizzie> Yello(w).
13:37:50 -!- ais523 has quit (Ping timeout: 255 seconds).
13:38:43 -!- ais523 has joined.
13:40:30 <Ngevd> I now have Banksy as my wallpaper
13:40:52 <Ngevd> To be precise, a work by Banksy </thompson>
14:08:22 -!- ais523 has quit (Ping timeout: 258 seconds).
14:09:03 -!- ais523 has joined.
14:11:36 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
14:24:17 -!- ais523_ has joined.
14:28:00 -!- ais523 has quit (Ping timeout: 245 seconds).
14:28:57 <Ngevd> I think the protests in London are bring down the corrupt capalist church
14:32:08 <CakeProphet> yaeh
14:33:13 <CakeProphet> corrupt protestant brainwashing corporations, man.
14:33:52 <Ngevd> Bring down this theocratic tyranny
14:34:13 -!- copumpkin has joined.
14:39:56 -!- Taneb has joined.
14:40:34 <Taneb> Oh dear
14:43:01 -!- Taneb has quit (Read error: Connection reset by peer).
14:43:30 -!- Taneb has joined.
14:44:28 -!- Ngevd has quit (Ping timeout: 260 seconds).
15:01:00 <Taneb> "Singing one song to the tune of another" does not seem to be a Wikipedia article
15:02:18 -!- Taneb has quit (Read error: Connection reset by peer).
15:02:38 -!- Taneb has joined.
15:06:42 -!- derdon has joined.
15:11:56 <Taneb> I regret introducing my friend to the Crazy World of Arthur Brown
15:13:36 -!- ive has joined.
15:42:18 -!- ais523_ has quit (Quit: Page closed).
15:56:30 -!- ais523 has joined.
15:58:21 -!- Phantom_Hoover has joined.
16:02:02 -!- monqy has joined.
16:32:42 <Phantom_Hoover> `quote
16:32:43 <Phantom_Hoover> hello
16:32:45 <Phantom_Hoover> do you read
16:32:48 <HackEgo> 226) <Sgeo> My quotes are boring
16:32:48 <Phantom_Hoover> me
16:33:03 <Phantom_Hoover> Oh damn, I was counting on the connection having dropped.
16:33:06 <ais523> haha
16:34:05 -!- Taneb has quit (Ping timeout: 276 seconds).
16:47:32 -!- NihilistDandy has joined.
16:58:43 -!- ais523 has changed nick to ais523\unfoog.
17:21:50 -!- NihilistDandy has quit (Quit: leaving).
17:24:05 -!- NihilistDandy has joined.
17:32:35 <Vorpal> Phantom_Hoover, he
17:32:38 <Vorpal> heh*
17:32:40 -!- aptennap has joined.
17:34:05 -!- NihilistDandy has quit (Quit: http://haskell.org).
17:37:35 -!- aptennap has quit (Client Quit).
17:38:59 -!- NihilistDandy has joined.
17:40:05 -!- augur has quit (Remote host closed the connection).
17:40:21 -!- Ngevd has joined.
17:48:13 -!- Ngevd has quit (Ping timeout: 256 seconds).
17:55:31 -!- sllide has joined.
17:57:08 -!- tiffany has joined.
17:57:56 -!- hagb4rd has joined.
18:05:30 -!- ais523\unfoog has quit (Remote host closed the connection).
18:06:14 -!- Ngevd has joined.
18:24:39 -!- augur has joined.
18:25:57 -!- hagb4rd has quit (Read error: No route to host).
18:26:45 -!- Ngevd has quit (Ping timeout: 256 seconds).
18:30:08 -!- NihilistDandy has quit (Quit: http://haskell.org).
18:33:00 -!- elliott has joined.
18:35:27 <elliott> happy australian mailman mailing list reminders day
18:44:05 <elliott> 08:25:23: <coppro> apparently my typing speed is 95 wpm
18:44:08 <elliott> coppro: god you're slow
18:44:39 <elliott> 09:02:48: <coppro> oklopol: what? 95 is plenty
18:44:39 <elliott> 09:02:53: <coppro> like, professional plenty
18:44:39 <elliott> professional slow
18:45:02 <elliott> `addquote <Ngevd> I'm neither Norwegian nor Finnish <Ngevd> I don't fit in your quaint little categories
18:45:05 <HackEgo> 702) <Ngevd> I'm neither Norwegian nor Finnish <Ngevd> I don't fit in your quaint little categories
18:46:38 <augur> fizzie: SYN
18:47:06 <Phantom_Hoover> elliott, professional slow typist?
18:47:24 <elliott> Yes.
18:50:41 -!- ais523 has joined.
18:51:03 -!- Ngevd has joined.
18:51:31 -!- ais523 has changed nick to ais523\unfoog.
18:55:01 -!- zzo38 has joined.
18:56:45 <elliott> ais523\unfoog: oh dear
18:56:57 <ais523\unfoog> /dev/null/nethack time!
18:57:02 -!- elliott has changed nick to elliott\unfoog.
18:57:04 * elliott\unfoog imposter
18:57:10 <elliott\unfoog> wait, ais523\unfoog is an op now
18:57:11 <elliott\unfoog> fuck
18:57:29 <Phantom_Hoover> http://www.youtube.com/watch?v=d_czxTedXpc
18:57:37 <Phantom_Hoover> 255 million... how... what...
18:57:41 <elliott\unfoog> also, /dev/null/nethack makes less than zero sense, as a name
18:57:50 <ais523\unfoog> elliott\unfoog: indeed, I didn't name it
18:57:55 <elliott\unfoog> Phantom_Hoover: It's thigh massage video!
19:10:40 <Phantom_Hoover> elliott\unfoog, the worldwide interest in thigh massage is not that high!
19:10:52 <elliott\unfoog> Phantom_Hoover: Wow, I've been doing it all wrong.
19:10:56 <elliott\unfoog> Life, that is.
19:10:59 <elliott\unfoog> I was completely unaware.
19:11:09 <elliott\unfoog> Phantom_Hoover: Anyway, it's not just thigh massage.
19:11:12 <elliott\unfoog> It's thigh massage VIDEO.
19:12:39 -!- Ngevd has quit (Ping timeout: 252 seconds).
19:19:11 -!- augur has quit (Remote host closed the connection).
19:24:45 <oklopol> plenty of slow
19:24:52 <oklopol> in his typing
19:25:55 -!- augur has joined.
19:28:07 <elliott\unfoog> Does anyone know a decent x86 emulator for people without fancy virtualising CPUs that doesn't taint your kernel with TAINT_CRAP like VirtualBox does
19:28:13 <elliott\unfoog> (qemu does not count as decent for reasons of being so fucking slow)
19:29:40 -!- Ngevd has joined.
19:30:41 -!- Ngevd has quit (Read error: Connection reset by peer).
19:31:01 <pikhq> Well, VMware only does tainting from being proprietary.
19:31:05 -!- Ngevd has joined.
19:31:53 <elliott\unfoog> pikhq: I... suppose that could work :P
19:32:03 <elliott\unfoog> pikhq: Is VMware actually decent these days
19:32:32 <elliott\unfoog> Oh, the package is out of date, so I won't bother :P
19:33:03 <elliott\unfoog> pikhq: OH WELL, VirtualBox it is.
19:33:10 -!- augur has quit (Remote host closed the connection).
19:33:42 <elliott\unfoog> pikhq: Have I mentioned that Kitten is probably going to happen soonish.
19:35:09 <elliott\unfoog> Sighh, gpasswd -G vboxusers elliott; modprobe vboxdrv vboxnetflt.
19:36:57 <ais523\unfoog> elliott\unfoog: wow that nick is annoying given you aren't in unfoog
19:37:08 <elliott\unfoog> <elliott> ais523\unfoog: oh dear
19:37:08 <elliott\unfoog> <ais523\unfoog> /dev/null/nethack time!
19:37:08 <elliott\unfoog> * You are now known as elliott\unfoog
19:37:08 <elliott\unfoog> * elliott\unfoog imposter
19:37:08 <elliott\unfoog> <elliott\unfoog> wait, ais523\unfoog is an op now
19:37:09 <elliott\unfoog> <elliott\unfoog> fuck
19:37:30 <elliott\unfoog> I have determined that this nick has some kind of special power which stops me from being kicked :P
19:37:30 <ais523\unfoog> surely having a misleading nick isn't a channel offence, but a server offence?
19:37:46 <elliott\unfoog> Ooh, maybe I can get K-lined over it?? :P
19:38:38 <ais523\unfoog> I've just sent a verbal patch for a /dev/null bug; seems krystal had added field to a structure /after/ the struct-hack field
19:38:51 <ais523\unfoog> which is one of the weirder mistakes to make in C that I've seen
19:39:10 -!- ive has quit (Quit: leaving).
19:39:59 <elliott\unfoog> ais523\unfoog: struct-hack field?
19:40:14 <ais523\unfoog> elliott\unfoog: you know the struct-hack, right?
19:40:26 <ais523\unfoog> you put a length-0/length-1/length-MAXINT/length-nullstring array at the end of a struct
19:40:26 <elliott\unfoog> nope :) well I vaguely recall /something/
19:40:30 <elliott\unfoog> oh, right
19:40:31 <ais523\unfoog> then allocate it to the size you actually want
19:40:44 <ais523\unfoog> adding fields after that one is obviously not going to work very well
19:40:45 <elliott\unfoog> (length-nullstring is C99 and isn't a hack)
19:40:48 <ais523\unfoog> indeed
19:40:48 <elliott\unfoog> (it's officially supported)
19:40:55 <ais523\unfoog> but "the struct hack" is the name for the technique
19:41:01 <ais523\unfoog> C99's length-nullstring is just legalizing it
19:41:25 <ais523\unfoog> length-0 is GNU; length-MAXINT I don't believe anyone actually uses but it's been suggested that it fits the letter of the standard better than length-1
19:41:26 <elliott\unfoog> well, I disagree :P but ok
19:41:37 <elliott\unfoog> if you do
19:41:43 <elliott\unfoog> int main(){int foo[MAXINT];}
19:41:47 <elliott\unfoog> it actually internal-errors gcc
19:43:10 <ais523\unfoog> really?
19:43:13 <ais523\unfoog> that's hilarious
19:43:18 <ais523\unfoog> also, it's INT_MAX
19:43:42 <elliott\unfoog> you said MAXINT :P
19:43:49 <elliott\unfoog> but yeah, gcc does not like too-big arrays on the stack.
19:44:02 <ais523\unfoog> it's called MAXINT except in C
19:45:03 <ais523\unfoog> /dev/stdin: In function ‘main’:
19:45:05 <ais523\unfoog> /dev/stdin:2: error: size of array ‘foo’ is too large
19:45:06 <ais523\unfoog> lies
19:46:07 <elliott\unfoog> ais523\unfoog: it did a couple of years ago, anyway
19:46:12 <elliott\unfoog> prseumably somebody noticed
19:46:32 <ais523\unfoog> yep, the error message looks a lot like they're specifically checking for implausibly large arrays
19:48:06 <Deewiant> $ echo 'int main(){int foo[1234567890123456789];}' | gcc -x c /dev/stdin && ./a.out # compiles and runs
19:48:54 <elliott\unfoog> Deewiant: Nice
19:49:00 <elliott\unfoog> Deewiant: That ... probably overflows?
19:49:23 <elliott\unfoog> Note to self: Undo all this VirtualBox shit and remove Qt once you're done with it.
19:49:24 <Deewiant> $ echo 'int main(){int foo[12345678901234567890];}' | gcc -x c /dev/stdin
19:49:24 <Deewiant> /dev/stdin: In function ‘main’:
19:49:24 <Deewiant> /dev/stdin:1:20: warning: integer constant is so large that it is unsigned [enabled by default]
19:49:27 <Deewiant> /dev/stdin:1:1: warning: this decimal constant is unsigned only in ISO C90 [enabled by default]
19:49:31 <Deewiant> /dev/stdin:1:16: error: size of array ‘foo’ is too large
19:50:07 <ais523\unfoog> "[enabled by default]"?
19:50:18 <ais523\unfoog> is there some sort of indication of warnings that appear even without -Wall nowadays?
19:50:25 -!- zzo38 has quit (Remote host closed the connection).
19:50:25 <Deewiant> Apparently!
19:50:28 <elliott\unfoog> ais523\unfoog: it tells you what flag enables what warning nowadays
19:50:31 <elliott\unfoog> so you can disable them
19:51:22 <elliott\unfoog> I wish you didn't have to login-cycle to get new groups
19:53:54 -!- elliott\unfoog has quit (Remote host closed the connection).
19:54:09 -!- elliott has joined.
19:59:33 <elliott> Hmm, annoying that syslinux doesn't do jsf.
19:59:35 <elliott> jfs.
20:03:22 <elliott> Wow, lilo is actually maintained now.
20:05:45 <oklopol> that's okay
20:10:26 <elliott> oklopol: but is it....
20:11:01 <oklopol> okay? that's what i said
20:11:27 <elliott> oho,e
20:11:30 <oklopol> are you mistaking me for someone who occasionally says something that makes sense or what is this all about
20:11:38 <elliott> Vorpal: You're wrong btw
20:11:42 <oklopol> he is
20:11:44 <oklopol> i checked
20:11:48 <elliott> But is he......
20:11:56 <oklopol> he is
20:12:03 -!- Ngevd has quit (Ping timeout: 252 seconds).
20:12:08 <elliott> but
20:12:09 <elliott> is he
20:12:12 <oklopol> yes
20:12:13 <oklopol> he is
20:12:40 <elliott> but
20:12:41 <elliott> is
20:12:41 <elliott> he......
20:13:00 <oklopol> :/ you're making me doubt myself
20:13:07 <elliott> me too :(
20:13:18 <monqy> :(
20:13:50 <oklopol> i made the mostest weirdest food
20:14:16 <elliott> whate is it
20:15:03 <oklopol> there's stuff and then an egg on top that's almost coagulated but not quite and looks a bit like ghost vomit
20:15:24 <elliott> wow
20:15:28 <elliott> what is it made of......
20:15:35 <monqy> egg
20:16:11 <monqy> btw what does ghost vomit look like...
20:16:34 <oklopol> well have you ever seen an egg that's almost coagulated but not quite?
20:17:01 <monqy> apparently ghost vomit is a band name
20:17:04 <elliott> :D
20:17:11 <elliott> monqy: what
20:17:12 <oklopol> :D
20:17:13 <elliott> now i can't use it
20:17:13 <elliott> :(
20:17:14 <oklopol> cool
20:17:26 <elliott> http://www.myspace.com/ghostvomitband
20:17:27 <elliott> http://www.myspace.com/ghostvomitmusic
20:17:30 <elliott> there are at least two band scalled ghost vomit
20:17:40 -!- NihilistDandy has joined.
20:17:56 <monqy> Metal / Psychedelic / Punk
20:18:04 <monqy> Genre: Ambient / Healing & EasyListening / Melodramatic Popular Song
20:18:11 <monqy> ghost vomit
20:18:14 <oklopol> ...healing?
20:18:20 <elliott> melodramatic popular song
20:18:37 <oklopol> h...ealing?
20:18:44 <monqy> eeling
20:22:10 <quintopia> sexual healing
20:31:51 <oklopol> i wonder if anyone ever comes up with a use for the internet
20:32:18 <elliott> no
20:34:49 -!- hagb4rd has joined.
20:35:03 <oklopol> or clothes
20:35:12 <monqy> what's a clothe
20:35:28 <oklopol> touche
20:35:38 <elliott> moare like
20:35:38 <elliott> douche?
20:35:41 <Vorpal> <elliott> Vorpal: You're wrong btw <-- wrt what?
20:35:55 <elliott> Vorpal: wrt /usr/bin/env being a problem
20:35:56 <monqy> of what use are touches
20:36:17 <Vorpal> elliott, oh? Well seeing stuff like #!/usr/bin/env perl isn't all that uncommon
20:36:18 <oklopol> touching is very important
20:36:34 <Vorpal> elliott, mostly because perl is in /usr/local/bin on freebsd for example
20:36:37 <elliott> Vorpal: indeed, and making it work does not at all rely on having a /usr/bin/env file
20:36:46 <Vorpal> oh?
20:36:55 <Vorpal> I guess #!perl might work, no idea
20:37:03 <elliott> binfmt_misc -> add magic "#!/usr/bin/env"
20:37:07 <elliott> and magic "#! /usr/bin/env"
20:37:09 <Vorpal> ah right
20:37:13 <elliott> write trivial program to read executable name after it, execute from path
20:37:14 <elliott> job done
20:37:28 <Vorpal> elliott, why didn't they do this for /bin/sh then btw in nixos?
20:37:37 <elliott> presumably they just didn't think of it
20:37:40 <Vorpal> heh
20:37:56 <elliott> Vorpal: although having a real /bin/sh is useful
20:37:59 <elliott> so you can do init=/bin/sh
20:38:02 <Vorpal> well yeah
20:38:12 <elliott> but you could just have that on the initramfs?
20:38:14 <Vorpal> elliott, #!/bin/bash is fairly common too
20:38:15 <elliott> and not on the real fs
20:38:19 <elliott> Vorpal: yeah but that's a bug
20:38:26 <elliott> actually /bin/sh is a bug too but ubiquitous, so
20:38:26 <Vorpal> elliott, not if the script is bash specific
20:38:31 <elliott> Vorpal: no
20:38:32 <elliott> it's a bug
20:38:35 <Vorpal> elliott, so what should it do instead
20:38:36 <elliott> #!/usr/bin/env bash is not a bug
20:38:38 <elliott> #!/bin/bash is a bug
20:38:40 -!- GreaseMonkey has joined.
20:38:41 <Vorpal> heh
20:38:52 <elliott> Vorpal: I believe bash is in /usr/bin in debian/ubuntu
20:39:07 <elliott> I guess /bin/sh is OK because /usr might not exist yet
20:39:09 <Vorpal> elliott, well afaik /usr/bin/env is not handled on nixos
20:39:12 <elliott> but /bin/bash isn't
20:39:14 <Vorpal> arvid@dragon ~ $ file /bin/bash
20:39:14 <Vorpal> /bin/bash: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, stripped
20:39:18 <Vorpal> this is a ubuntu system
20:39:18 <elliott> Vorpal: that's a nixos bug
20:39:29 <Vorpal> elliott, go suggest your solution to them
20:39:43 <elliott> nah, i'd prefer making my own thing instead, they suck
20:39:53 <Vorpal> elliott, because of the c++ thingy? yeah
20:40:14 <elliott> yes; also every other way in which it differs from kitten
20:40:34 <Vorpal> elliott, like actually being available today?
20:40:41 <elliott> yes
20:41:54 <elliott> I wonder how hard writing a binfmt is
20:42:00 <elliott> would be nice not to have to rely on binfmt_misc for it
20:43:05 -!- evincar has joined.
20:43:46 <pikhq> elliott: The *POSIX* way to do it is, of course, "command -v bash > /dev/null && bash <<_EOF [...] _EOF"
20:43:49 <pikhq> :P
20:44:09 <elliott> what the fuck is "command"
20:44:17 <elliott> i've never used that in my life
20:44:22 <elliott> oh it's the opposite of builtin
20:44:41 <elliott> pikhq: anyway fuck that :p
20:45:33 <elliott> pikhq: Anyway, you still haven't woken Gregor up. I'm disappointed.
20:48:14 <elliott> Oh my God I forgot how much unionfs/aufs drama there is.
20:48:23 <elliott> http://www.unionfs.org/ ;; this guy registered a domain literally just to tell people how much better aufs is.
21:01:23 <Vorpal> ....
21:01:35 <Vorpal> elliott, what is the difference in functionality=
21:01:38 <Vorpal> s/=/?/
21:01:55 <ais523\unfoog> is the MIME type text/csv or text/x-csv?
21:01:57 <elliott> Ask that guy :P
21:02:07 <Vorpal> elliott, anyway unionfs is in vanilla isn't it?
21:02:10 <elliott> ais523\unfoog: http://en.wikipedia.org/wiki/Comma-separated_values
21:02:23 <elliott> Vorpal: No, I don't think so.
21:02:32 <ais523\unfoog> thanks
21:02:32 <Vorpal> ais523\unfoog, what is up with the \unfoog? I saw elliott having that a while ago
21:02:38 <ais523\unfoog> Vorpal: elliott was lying
21:02:40 <elliott> :-D
21:02:41 <ais523\unfoog> it's a NetHack tournament clan
21:02:48 <Vorpal> ah I see
21:02:50 <elliott> ais523\unfoog: I can use whatever nick I want :{
21:02:55 <ais523\unfoog> I'd mention its channel, but it's German-speaking
21:03:16 <Vorpal> ais523\unfoog, so is there a major nethack tournament atm?
21:03:24 <elliott> yes
21:03:30 <Vorpal> which one?
21:03:44 <ais523\unfoog> Vorpal: /dev/null/nethack
21:03:45 <elliott> /dev/null/nethack
21:03:50 <Vorpal> ah...
21:03:51 <ais523\unfoog> /the/ NetHack tournament
21:03:56 <Vorpal> I know
21:04:04 <Vorpal> I just didn't remember what time of year it usually ran at
21:04:12 <Vorpal> ais523\unfoog, also how do clans even make sense for nethack?
21:04:26 <ais523\unfoog> just a collection of individual players
21:04:31 <ais523\unfoog> it's mostly to make a trashtalk opportunity
21:04:34 <Vorpal> ah
21:04:41 <ais523\unfoog> clan EIT sucks, etc
21:04:48 <Vorpal> heh
21:04:55 <Vorpal> ais523\unfoog, so anyone ascended yet this year?
21:05:05 <Vorpal> (and when did it start)
21:05:21 <ais523\unfoog> it starts in a few hours
21:05:30 <ais523\unfoog> [21:04] <ais523\unfoog> &time
21:05:31 <Vorpal> ah, quite hard to have ascended then already
21:05:31 <ais523\unfoog> [21:04] <oracle\devnull> The time remaining until the 2011 Tournament begins is '00-00-00:09-55-10'
21:05:38 <ais523\unfoog> about 10 hours
21:05:44 <Vorpal> what a strange date format that is...
21:05:48 * elliott ascends ahead of time
21:05:48 <ais523\unfoog> yep, indeed
21:06:03 <elliott> ais523\unfoog: More importantly, what an odd bot prefi.
21:06:04 <elliott> x.
21:06:21 <Vorpal> heh
21:08:11 <Vorpal> ais523\unfoog, the oracle bot is not in #nethack, where is it?
21:08:15 <ais523\unfoog> wow, it feels weird to be making directories from a Perl script
21:08:17 <ais523\unfoog> Vorpal: #devnull_nethack
21:08:20 <Vorpal> aha
21:08:28 <ais523\unfoog> the channel that's really quiet most of the year
21:08:32 <elliott> <ais523\unfoog> wow, it feels weird to be making directories from a Perl script
21:08:33 <elliott> wat
21:08:38 <ais523\unfoog> but moderately active in October and really active in November
21:08:51 <ais523\unfoog> elliott: basically, I'm trying to run a script I ran last year
21:09:11 <ais523\unfoog> but the input format is different, being a gmail account rather than a tarball containing a directory per student
21:09:21 <ais523\unfoog> so I'm doing it mathematician-style, and reducing it to a problem I've already solved ;)
21:09:49 <Vorpal> ais523\unfoog, well, it is last October today.
21:10:12 <ais523\unfoog> Vorpal: yes, and the tournament lasts all November, in the wrong timezone
21:10:30 <Vorpal> ais523\unfoog, which one do they use?
21:10:44 <ais523\unfoog> one of the US ones
21:10:50 <ais523\unfoog> whichever one makes it start in 9 hours 50 minutes
21:10:54 <Vorpal> anyway isn't US going back from DST like in a few weeks? Or did it do it a few weeks ago?
21:11:19 <ais523\unfoog> hmm, in which we discover that the tournament setup scripts only work on openBSD 4.8
21:11:24 <elliott> I feel like now is a good time to say: Fuck DST.
21:11:26 <ais523\unfoog> that would explain why there's such a high density of BSD servers there
21:11:28 <Vorpal> ais523\unfoog, ... ouch
21:11:36 <Vorpal> I... how?
21:11:43 <elliott> ais523\unfoog: 4.8 is pretty recent...
21:11:45 <ais523\unfoog> well, they're all VMs anyway
21:11:55 <elliott> they rewrote them a year ago and didn't make them portable?
21:11:58 <ais523\unfoog> elliott: apparently they were updated from last year, when they worked on 4.6 specifically
21:12:02 <elliott> heh
21:12:12 <elliott> ais523\unfoog: ...which was a year before 4.,8
21:12:16 <elliott> do they just fix them every year? :P
21:12:41 <ais523\unfoog> I think so
21:12:46 <ais523\unfoog> this is /dev/null we're talking about
21:12:57 <ais523\unfoog> you stop being incredulous after a while
21:13:03 <ais523\unfoog> and just assume the correct answer is the least sensible one
21:13:34 <Vorpal> ais523\unfoog, I really want to see these scripts now. Are they public?
21:13:41 <ais523\unfoog> oh dear I'm going to get quoted again, aren't I?
21:13:47 <ais523\unfoog> Vorpal: no; the game modifications are, but the scripts aren't
21:13:51 <Vorpal> ah
21:13:54 <ais523\unfoog> I think just because krystal is too lazy to put them online
21:13:58 <Vorpal> heh
21:14:11 <Vorpal> also if it was me, I wouldn't want to put such a broken script online
21:14:28 <Vorpal> ais523\unfoog, what modifications are used btw? menucolour and so on I presume?
21:14:34 <elliott> http://nethack.devnull.net/bragging/index.php
21:14:37 <elliott> ais523\unfoog: pro web serving
21:15:03 <ais523\unfoog> elliott: oh, that link?
21:15:11 <ais523\unfoog> it's been broken in various random ways for about three years now, not always consistent ones
21:15:18 <Vorpal> heh
21:15:22 <elliott> ais523\unfoog: it's showing phpbb3 source code
21:15:23 <Vorpal> ais523\unfoog, and he hasn't fixed it?
21:15:27 <ais523\unfoog> haha, I haven't seen /that/ one before
21:15:30 <ais523\unfoog> I just clicked the link
21:15:37 <Vorpal> ais523\unfoog, report the bug?
21:15:43 <elliott> AND ug.user_id = ' . $user->data['user_id'] . '
21:15:48 <ais523\unfoog> Vorpal: not a high priority right now…
21:15:52 <Vorpal> well okay
21:15:54 <elliott> phpbb, you so reassuring.
21:15:57 <ais523\unfoog> elliott: it's not SQL injection, because it's plain-text
21:16:12 <ais523\unfoog> even if it /looks/ like PHP, nothing's actually executing it
21:16:12 <Vorpal> uh
21:16:13 <elliott> ais523\unfoog: you're implying they use parametrised queries in every case except this
21:16:13 <Deewiant> At least config.php is read-protected
21:16:19 <elliott> oh, i see
21:16:24 <elliott> I was just commenting on the source it was showing :P
21:16:35 <ais523\unfoog> $l_total_user_s = ($total_users == 0) ? 'TOTAL_USERS_ZERO' : 'TOTAL_USERS_OTHER';
21:16:40 <Vorpal> actually that still looks unsafe
21:16:43 <ais523\unfoog> the quotes there are worrying me
21:17:01 <elliott> Vorpal: it isn't
21:17:04 <elliott> because user_id will be integral
21:17:23 <Vorpal> hm
21:17:35 <Vorpal> elliott, depends on the source of $user->data
21:17:43 <Vorpal> I just hope it isn't straight from a cookie
21:17:44 <Vorpal> or such
21:18:08 <elliott> Pretty sure someone would have noticed an exploit THAT obvious.
21:18:24 <Vorpal> $user->session_begin();
21:18:28 <Vorpal> hm
21:18:32 <Vorpal> so session data
21:18:47 <Vorpal> well, that would require analysing a lot of the stuff to figure that out
21:19:11 <ais523\unfoog> session data is typically not user-controllable, although it's hard to know
21:19:18 <Vorpal> indeed
21:19:32 <Vorpal> ais523\unfoog, you would have to check every point it was accessed in the system to figure it out
21:19:57 <ais523\unfoog> Vorpal: your ability to randomly make obvious comments in IRC as if they were profound is not a particularly useful one
21:20:10 <Vorpal> ais523\unfoog, very true.
21:20:44 <Vorpal> ais523\unfoog, I actually didn't intend doing that
21:46:04 -!- Nihilist_ has joined.
21:47:14 -!- NihilistDandy has quit (Ping timeout: 258 seconds).
21:49:12 -!- augur has joined.
21:52:20 -!- evincar has quit (Quit: ChatZilla 0.9.87 [Firefox 7.0.1/20110928134238]).
21:53:07 <ais523\unfoog> how's this for a CSV file: 2B!$8B!$7B!$9B!$3B!$4B!$5B!$6
21:53:17 <ais523\unfoog> should I interpret "B!$" as ","?
21:53:32 <ais523\unfoog> at least nobody submitted a PDF of the lecture notes this time
21:57:53 <ais523\unfoog> well, maybe they did, my script probably wouldn't have tried to parse it
21:58:47 <ais523\unfoog> ## Message from Gmail Team <mail-noreply@google.com> has unrecognised subject 'Customize Gmail with colors and themes'
21:59:01 <ais523\unfoog> at least my script's spam filter is working decently
21:59:59 <elliott> Dammit, I think I'm going to have to write a parser.
22:00:13 <elliott> Someone write my parser for me.
22:00:14 <ais523\unfoog> I wrote one last night, for Anarchy
22:00:21 <ais523\unfoog> so, umm, I can now parse Anarchy, yay
22:00:26 <ais523\unfoog> at least, the subset I'm working on first
22:00:30 <ais523\unfoog> ofc, typechecking is the hard part
22:00:43 <ais523\unfoog> this entire compiler is going to suck, as Anarchy is the only sensible language to write it in and I have to bootstrap somehow
22:01:08 -!- derdon has quit (Remote host closed the connection).
22:01:38 <elliott> "One day in September of 2011 — though I'm not sure precisely which one — marked Befunge-93's 18th birthday. That means that Befunge is now old enough to drink in its native land of Canada. To celebrate this, I thought I'd get Befunge-93 drunk to see what would happen."
22:01:45 -!- Nihilist_ has quit (Quit: http://haskell.org).
22:02:00 <ais523\unfoog> cpressey, right?
22:02:10 <elliott> yep; he has a new esolang out
22:02:10 <ais523\unfoog> it doesn't actually outright state that, nor does it logically imply that
22:02:19 <ais523\unfoog> but really, could it really be anyone else?
22:02:46 <elliott> He should have more time in the day and more patience for dealing with idiots so he could come here again.
22:03:34 <elliott> haha, someone accidentally did part of atehwa's Underload assignment in ():^
22:03:42 <elliott> ais523\unfoog: be proud
22:04:02 <ais523\unfoog> elliott: shouldn't that be "oerjan: be proud"? he did the reduction
22:04:10 <Deewiant> The esolang in question: http://catseye.tc/projects/flobnar/
22:04:11 <elliott> you made the language :P
22:04:23 <elliott> Deewiant: I assumed anyone even vaguely interested would be able to find out
22:04:25 <elliott> s/out/it/
22:04:41 <ais523\unfoog> ".falderal"?
22:04:50 <elliott> ais523\unfoog: http://catseye.tc/projects/falderal/
22:04:53 <Deewiant> elliott: I'd rather make it easy for people when there's almost no additional effort on my part involved :-P
22:05:56 <elliott> Deewiant: oh wow, it keeps funge-98 style bounding boxes
22:06:02 <elliott> chris why
22:06:27 -!- Darth_Cliche has joined.
22:06:41 <elliott> Not sure I like the built-in orientation of things like /
22:07:28 <ais523\unfoog> hey, did I ever put Shove on the wiki?
22:07:35 <ais523\unfoog> it's also a pseudo-functional 2D language
22:07:44 <elliott> http://esolangs.org/wiki/Shove
22:07:46 <elliott> No.
22:08:25 <elliott> Flobnar is prettier than Befunge-93, visually.
22:09:56 <ais523\unfoog> ah right, it isn't just a spec, but a literate test suite
22:10:00 <ais523\unfoog> that's quite an interesting idea, actually
22:10:14 <elliott> The spec is http://catseye.tc/projects/flobnar/src/Flobnar.hs :P
22:13:03 <ais523\unfoog> Flobnar is strict, right? It doesn't actually say that, but it implies it, and it's really relevant with the number of side-effects going on
22:13:33 <elliott> "The `/` term evaluates whatever is to the north of it (and we call that
22:13:33 <elliott> It evaluates to the quotient of dividing /a/ by /b/."
22:13:40 <elliott> That's strict semantics.
22:13:43 <elliott> erm
22:13:46 <elliott> fucking xchat
22:13:55 <elliott> "The `/` term evaluates whatever is to the north of it (and we call that
22:13:55 <elliott> /a/), then evaluates whatever is to the south of it (and we call that /b/).
22:13:55 <elliott> It evaluates to the quotient of dividing /a/ by /b/.
22:13:55 <elliott> "
22:16:44 <ais523\unfoog> oh, apparently Emacs understands the encoding on that "CSV" file as really mapping B!$ to ,
22:16:50 <ais523\unfoog> must be some weird unusual encoding
22:17:10 <elliott> ask emacs what encoding it is
22:17:40 <ais523\unfoog> I forgot, but it abbreviated it to "J"
22:17:46 <ais523\unfoog> so I'm guessing Shift-JIS or a variant thereof
22:17:57 -!- augur has quit (Remote host closed the connection).
22:18:10 <elliott> hmm, dunno about that but ok
22:19:07 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
22:19:15 <ais523\unfoog> also, bleh, why does Emacs not recognise utf-9 as a valid coding system name?
22:19:56 <ais523\unfoog> also, I finally figured out what the command to save a file in a different encoding is: set-buffer-file-coding-system
22:20:02 <ais523\unfoog> I'd always been accessing it via the menus up to now
22:20:48 <ais523\unfoog> Coding system for saving this buffer:
22:20:49 <ais523\unfoog> J -- iso-2022-7bit-unix
22:20:50 <ais523\unfoog> so now we know
22:21:39 <ais523\unfoog> oh, and apparently it's C-x RET f, which is even better than trying to type the name
22:23:26 * ais523\unfoog rmdir [0-9]*
22:23:31 <ais523\unfoog> that's a weird mistake to make…
22:23:57 <ais523\unfoog> also, has a different meaning in regex and wildmat, and both would match the set of files I wanted (in the case of a regex, if properly anchored)
22:24:02 <ais523\unfoog> *set of directories
22:24:32 <elliott> I'm the wildest mat.
22:24:48 <elliott> Maaaan, it is ridiculous how much I do not want to write a parser.
22:24:53 -!- NihilistDandy has joined.
22:26:19 <elliott> http://nixos.org/patchelf.html
22:26:21 <elliott> oh, brilliant
22:27:30 <elliott> oh for fuck's sake
22:27:35 <elliott> it had to be written in C++ didn't it
22:27:45 <elliott> I hate you, Nix guys, hate you
22:28:55 <ais523\unfoog> what insane situation are you in that makes you want to change those paths on ELF files?
22:30:45 <elliott> ais523\unfoog: a situation in which the RPATH of a proprietary executable is broken
22:30:53 <ais523\unfoog> OK, that is pretty insane
22:31:04 <elliott> ais523\unfoog: no, it's not
22:31:15 <elliott> or: when the ELF interpreter path of a proprietary executable is broken
22:31:26 <ais523\unfoog> I mean, that the executable is wrong
22:31:27 <monqy> propritary executables? whats that
22:31:36 <ais523\unfoog> surely such things should have standardised values, as it makes no sense to do it otherwise?
22:31:49 <ais523\unfoog> monqy: binaries that you can't recompile for legal or technical reasons, and also that you didn't write
22:32:00 <elliott> ais523\unfoog: what if your libraries aren't in /lib:/usr/lib:/usr/local/lib?
22:32:02 <monqy> crazy
22:32:14 <elliott> in NixOS, they're in /nix/store/sd8fusd9f35890uefd0wj90-libfoo-3.0/lib
22:32:14 <ais523\unfoog> elliott: then why aren't they there?
22:32:22 <elliott> and /nix/store/sdf09usdf0q934uasdn-libbar-495/lib
22:32:32 <elliott> ais523\unfoog: because that breaks all the key properties of Nix?
22:32:39 <elliott> and any similar system?
22:32:59 <ais523\unfoog> "Chromium's New Tab page has been remodeled. Switch between sections by clicking these labels. Chrome will remember your preference for next time. _Learn more_"
22:33:43 <ais523\unfoog> wow, a) why are they constantly changing the interface for no good reason, it's as bad as firefox, b) I don't care about either the new or old version, c) why does the mouse form a text selection cursor when I move the mouse pointer over the popup yet I can't select the text to copy-and-paste it so I had to retype all that?
22:34:04 <elliott> (b) sounds more like your problem than Chromium's
22:34:12 <ais523\unfoog> well, yes
22:34:21 <monqy> i wish my new tab page could be blank
22:34:24 <elliott> I mean, unless you think a UI update should be completely silent and not offer any kind of help at all to confuse people as much as possible
22:34:29 <monqy> fancy new tab pages make me sad
22:34:46 <monqy> I also wish I could control autocomplete
22:34:57 <pikhq> a) is because the browser devs seem to think that change is good, even when it's just change for the sake of change.
22:35:13 <ais523\unfoog> also, why is gmail telling me about changes to Google Buzz when this is a single-use account that hasn't used it ever?
22:35:24 <elliott> changes = it's being shut down
22:35:39 <ais523\unfoog> elliott: I think it's hilarious that Microsoft copies OS X and Linux even when they're full of bad rather than good ideas
22:36:00 <ais523\unfoog> (not actually more than vaguely related, but I'm in a non sequitur sort of mood)
22:36:37 <ais523\unfoog> also, why does Chromium switch to a new tab when I control-click it?
22:36:43 <ais523\unfoog> that completely defeats half the point of control-clicking
22:36:55 <elliott> Control-click what?
22:37:18 <ais523\unfoog> err, middle-click
22:37:19 <elliott> ais523\unfoog: ?
22:37:23 <elliott> Middle-click what?
22:37:25 <ais523\unfoog> a link
22:37:31 <elliott> ais523\unfoog: WFM
22:37:38 <elliott> You're doing something wrong
22:37:39 <ais523\unfoog> I use control-click rather than middle click normally as middle-clicking is awkward on a touchpad
22:37:45 <ais523\unfoog> elliott: probably it's gmail's fault, then
22:37:48 <ais523\unfoog> I absolutely hate gmail
22:37:55 <elliott> What did you middle-click, and everyone knows
22:37:57 <ais523\unfoog> now that I've been forced to use it for work
22:38:09 <ais523\unfoog> elliott: the linked subject of an email message, to open the message
22:41:48 <ais523\unfoog> "Be a master of efficiency. Combine the unread, important and starred inboxes. Power through what's important."
22:41:58 <ais523\unfoog> is Google always like this?
22:42:21 <ais523\unfoog> I thought they got their search lead in the first place by /not/ randomly annoying people
22:43:39 <elliott> ais523\unfoog: Are you just going to complain about Gmail minutiae for hours?
22:44:10 <ais523\unfoog> probably
22:44:14 <ais523\unfoog> because I'm /really annoyed/ at it
22:44:29 <ais523\unfoog> I think I know how Wooble feels constantly at the moment
22:44:37 <elliott> Hmm, does anyone know how to modify a process' environment variables?
22:44:43 <ais523\unfoog> it might be sensible to /ignore me until tomorrow
22:44:55 <elliott> I don't /ignore anyone.
22:44:55 <ais523\unfoog> elliott: processes don't have environment variables as a constant thing
22:45:07 <ais523\unfoog> rather, they're passed environment variables as a (possibly hidden) argument to main
22:45:15 <ais523\unfoog> via the execve syscall, which takes the environment as an argument
22:45:17 <elliott> ais523\unfoog: yes they do: see putenv
22:45:22 <ais523\unfoog> libc handles the illusion of a consistent environment
22:45:30 <ais523\unfoog> all putenv is doing is changing a variable inside the libc
22:45:38 <elliott> Well, OK, here's a different question:
22:45:39 <ais523\unfoog> which remembers the environment for if you call a wrapper like execl
22:45:50 <elliott> Does anyone know how to modify the libc's idea of environment variables of a process behind its back?
22:46:12 <ais523\unfoog> the variable is normally exposed as "environ", IIRC
22:46:18 <ais523\unfoog> but that's only from within the same process
22:46:29 <ais523\unfoog> that's a bit like asking "does anyone know how to modify main's idea of argv behind its back?"
22:46:41 <elliott> yep
22:46:46 <elliott> I'm not expecting it to be clean
22:46:46 <ais523\unfoog> which is also a valid and moderately sensible question, but I don't know the answer
22:47:01 <ais523\unfoog> you'd basically have to do the equivalent of attaching a debugger
22:47:15 <elliott> ok, so I'll have to either tweak or rewrite cunionfs at the very least...
22:47:20 <elliott> since this isn't feasible
22:47:28 <elliott> new question: what per-process namespaces does linux offer?
22:47:33 <elliott> (general use of the word namespace, not the linux meaning)
22:47:40 <elliott> environment variables are one
22:47:47 <elliott> /proc is another, in a way
22:47:57 <ais523\unfoog> fds?
22:48:01 <elliott> but I don't know if you can create files under /proc/<pid>
22:48:06 <elliott> ais523\unfoog: that other things can modify :)
22:48:19 <ais523\unfoog> you might want to look at the docs for the clone(2) system call
22:48:20 <elliott> the usecase is: cunionfs reads the list of directories to union from an environment variable
22:48:31 <ais523\unfoog> they explain a lot about what can optionally be shared between processes
22:48:35 <elliott> so you can start a process seeing a different union set by passing an environment variable
22:48:41 <elliott> but I want to modify the union /after/ a process starts
22:48:51 <elliott> so I need a mutable-from-outside per-process data store
22:49:17 <ais523\unfoog> ah, ouch
22:49:33 <ais523\unfoog> open unlinked fd, and writing to it via /proc, is probably the least insane method
22:49:37 <ais523\unfoog> even though it's somewhat insane
22:49:45 <elliott> ais523\unfoog: that's more insane than just using files
22:49:55 <elliott> i.e. /run/magicunion/<pid>
22:51:04 <elliott> ais523\unfoog: but files are kind of ugly, since they're not tied to the lifetime of the process, etc. :)
22:51:38 <elliott> that also might be suboptimal because it forces a syscall per file access in the union
22:51:42 <elliott> to read the union file
22:51:50 <elliott> but I guess that's inevitable if it's going to be mutable
22:52:03 <elliott> at the very least you'd need a syscall to figure out whether the union changed
22:52:16 <ais523\unfoog> elliott: that's why unlinked file; that is tied to the lifetime of the process
22:52:41 <elliott> ais523\unfoog: it has to work with every process
22:52:54 <elliott> ais523\unfoog: I can't force everybody to open an fd before calling exec() after fork()...
22:53:46 <elliott> ais523\unfoog: I'm probably OK if I need to write a kernel module for this, if that'll allow me to create e.g. /proc/<pid>/union
22:53:56 -!- NihilistDandy has quit (Ping timeout: 258 seconds).
22:54:14 <ais523\unfoog> what are you trying to do, in as in why do you want to do the why do you want to do this?
22:54:20 <ais523\unfoog> because it sounds beautifully insane
22:54:23 <elliott> ais523\unfoog: "in as in"?
22:54:29 <ais523\unfoog> *as in
22:54:35 <ais523\unfoog> and being willing to write a kernel module just to make it work makes it sound vaguely important
22:55:45 <elliott> ais523\unfoog: well, I'm working on Kitten, and have a Nix-style purely functional directory-per-package store, which needs to be aggregated into a single file tree so that you only have to add one directory to your path rather than five hundred; Nix does this by statically generating a tree of symlinks
22:55:55 <elliott> but doing it as a unionfs seems cleaner to me
22:56:10 <elliott> but if you e.g. install a package, then all your running processes have to be updated to see it in the tree
22:56:18 <elliott> = mutating the set of union branches
22:56:36 <ais523\unfoog> perhaps it'd make more sense for the fs to handle all that by itself?
22:56:41 <elliott> what fs?
22:56:55 <elliott> ais523\unfoog: anyway, I /explicitly/ want it to be per-process
22:56:58 <ais523\unfoog> a custom one based on unionfs
22:57:02 <elliott> because that lets me do cool things
22:57:02 <ais523\unfoog> that knows about processes
22:57:10 <elliott> ais523\unfoog: cunionfs /does/ know about processes
22:57:13 <elliott> (cunionfs, not unionfs)
22:57:18 <elliott> ais523\unfoog: but, like I said, does it through environment variables
22:57:19 <ais523\unfoog> ah, OK
22:57:23 <ais523\unfoog> well, I think I'm out of my depth, here
22:57:30 <elliott> I'm asking, how should my unionfs read the union set so I canm utate it?
22:57:35 <elliott> s/nm /n m/
22:57:53 <ais523\unfoog> what events would make the set change?
22:58:11 <elliott> ais523\unfoog: installing a package, removing a package
22:58:27 -!- Darth_Cliche has quit (Quit: You are now graced with my absence.).
22:58:28 <ais523\unfoog> and it'd change it for all executables provided by that package?
22:58:31 <elliott> installing a package has to add /.../sduf89sdfu98f98-firefox-348978947234 to the union
22:58:38 <elliott> so that /.../sduf89sdfu98f98-firefox-348978947234/bin becomes part of /union/path/bin
22:58:51 <elliott> removing it has to remove it
22:58:53 <ais523\unfoog> ah, OK
22:58:56 <elliott> ais523\unfoog: no, it'd do it for all running executables
22:59:01 <elliott> well, ran by the user
22:59:01 <ais523\unfoog> what bonuses do you get for this being per-process?
22:59:33 <elliott> ais523\unfoog: [~/really-old-program]$ with 'gcc == 3.*' ./configure
22:59:50 <ais523\unfoog> aha
23:00:01 <ais523\unfoog> but, hmm, /that/ setting won't change with package changes
23:00:14 <elliott> ais523\unfoog: yes, I lied a bit: it'd mutate everything set to "defaults"
23:00:18 <elliott> hmm
23:00:25 <elliott> maybe I could have a specific "default" branch setting
23:00:27 <ais523\unfoog> so it might be possible to have two layers, a system-wide one that can change during process lifetime, and a per-process one that's fixed throughout the whole lifetime?
23:00:33 <elliott> and that would cause the unionfs to look up what the current defaults are
23:00:46 <elliott> then there'd be no mutation necessary
23:01:01 <elliott> ais523\unfoog: thanks, this might help :P
23:01:02 <ais523\unfoog> bleh, my computer's so unresponsive when it's simultaneously running four O(n^3) CPU-bound algos
23:01:16 <elliott> Shocking.
23:01:35 <elliott> ais523\unfoog: you might want to set the priorities of X, your WM and your panel to realtime
23:01:56 <ais523\unfoog> perhaps, but I don't care that much
23:02:03 <ais523\unfoog> besides, this lets me know when the programs have finished
23:02:17 <ais523\unfoog> and using RT prios on programs not obviously designed for them's always a bit risky
23:03:00 <ais523\unfoog> (Linux has been changed so that no longer hard-locks the entire system, right?)
23:03:27 <elliott> ais523\unfoog: well, isochronous would be better than RT, but I doubt you're running BFS
23:08:49 <elliott> kmc: Oh man, that GHC bug you found will actually affect some code I'm writing :-|
23:08:58 <elliott> I'm upset.
23:09:15 <ais523\unfoog> does it have a trivial but bizarre workaround?
23:10:07 <elliott> Depends what you mean by trivial.
23:10:15 <Vorpal> elliott, Phantom_Hoover: NEW HUMBLE BUNDLE
23:10:23 <elliott> EVERYBODY RUUUUUUUUUN
23:10:33 <elliott> IT'LL ONLY BE AVAILABLE FOR THREE SECONDS
23:10:49 <Vorpal> elliott, yes. 3 seconds and 13 days
23:11:05 <elliott> "Voxatron is an arcade/adventure game set in an entirely destructible world made out of voxels (little cubes, kind of)."
23:11:07 <Phantom_Hoover> Vorpal, given that the 3rd was kind of crap, and the second has a game I wanted but couldn't play and another, admittedly good game, I'll pass.
23:11:07 <elliott> And it's an alpha.
23:11:09 <Vorpal> I'm looking at what the game is atm
23:11:11 <elliott> THIS SOUNDS FAMILIAR....................
23:11:29 <Vorpal> Phantom_Hoover, well, I just thought I ought to inform you
23:11:32 <elliott> Looks cool actually.
23:11:36 <elliott> No wait this loosk super cool.
23:11:39 <elliott> Does this have multiplayer?
23:11:44 <elliott> Phantom_Hoover: If this has multiplayery ou have to get it.
23:11:59 <Vorpal> elliott, he has an intel cardboard box.
23:12:09 <elliott> Vorpal: Dude, it's a retro-styled voxel game.
23:12:13 <Vorpal> Phantom_Hoover, and yeah it sucks that the games didn't work for you
23:12:21 <Vorpal> Phantom_Hoover, I can assure you most of them were awesome
23:12:53 <elliott> OK so this is just... one game.
23:12:56 <elliott> I'm paying like a penny.
23:14:14 <elliott> This, uh.
23:14:24 <Vorpal> elliott, I'm going to pay like 0.1€ more than the current average. Just in case.
23:14:25 <elliott> Vorpal: There's references to previews of this game from 300 days ago.
23:14:29 <elliott> Long alpha.
23:14:32 <Vorpal> elliott, hm
23:14:37 <Vorpal> elliott, reminds of some game
23:14:39 <elliott> Vorpal: Also you can increase what you're payingl ater.
23:14:44 <elliott> s/l a/ la/
23:14:48 -!- augur has joined.
23:15:29 <Vorpal> can't quite remember the name.... something-craft.... quarrycraft?
23:15:51 <elliott> <elliott> "Voxatron is an arcade/adventure game set in an entirely destructible world made out of voxels (little cubes, kind of)."
23:15:51 <elliott> <elliott> And it's an alpha.
23:15:51 <elliott> <elliott> THIS SOUNDS FAMILIAR....................
23:15:52 <Vorpal> elliott, this looks like a 3D editor to me: http://www.lexaloffle.com/gfx/ssvox6.png
23:15:55 <elliott> Beat you to it; also funnier.
23:16:02 <Vorpal> elliott, yes right, but I meant the alpha thingy
23:16:04 <Vorpal> long alpha
23:16:05 <elliott> Vorpal: That's because that's what it is.
23:16:13 <Vorpal> oh the map editor?
23:16:28 <elliott> Also object editor, it looks like.
23:16:46 <Vorpal> I'm curently limited due to small monitor, I'll bring this up on my desktop once I rebooted it.
23:18:04 <Vorpal> there we go
23:18:53 <elliott> Hmm, I wonder if I can separate things into two types of options to make the DSL route work...
23:20:25 <Vorpal> interesting certainly
23:20:40 <Vorpal> will go for a small sum for the start
23:21:52 <Vorpal> elliott, I like the "do whatever the verb of google plus is" in that video. What is the verb?
23:22:19 <elliott> Nonplus.
23:22:54 <elliott> NPROCS=$(cat /proc/cpuinfo | grep processor | awk '{a++} END {print a}') \
23:22:54 <elliott> Heh.
23:24:12 <elliott> make install -j$NPROCS ICK_SPECIFIC_SUBDIR=ick DESTDIR="$1"
23:24:17 <elliott> ais523\unfoog: what does ICK_SPECIFIC_SUBDIR even do?
23:24:29 <ais523\unfoog> elliott: it's a hook for Debian
23:24:47 <elliott> that isn't an answer :P
23:24:47 <ais523\unfoog> it names the directory of the global places that hold directories for all sorts of programs, that is specific to INTERCAL
23:25:02 <elliott> wait, what?
23:25:10 <ais523\unfoog> you know how you have /usr/lib/perl, etc?
23:25:13 <ais523\unfoog> that's the INTERCAL equivalent
23:25:22 <elliott> oh
23:25:26 <elliott> what is it by default, then?
23:25:31 <ais523\unfoog> ick-$version
23:25:36 <elliott> ah
23:25:38 <ais523\unfoog> Debian don't like versioned subdirs
23:25:40 <Vorpal> huh, 64-bit deb, but just one .tar.gz, I wonder if it is 32-bit or 64-bit
23:25:41 <ais523\unfoog> so I gave them a hook
23:25:46 <elliott> evidently I didn't either
23:25:50 <ais523\unfoog> because manually patching the makefile is annoying
23:26:01 <ais523\unfoog> well, it feels dirty in a way
23:26:21 <Vorpal> oh that is 32-bit
23:28:24 -!- copumpkin has joined.
23:29:01 <Vorpal> elliott, aiee the resolution options of this game sucks
23:29:12 <Vorpal> it can do native + 800x600 + some weird even smaller ones
23:29:23 <Vorpal> so it is either full screen or tiny window for me
23:29:52 <elliott> Vorpal: just run it in gdb :P
23:30:01 <Vorpal> elliott, this is the list of resolutions: 1680x1050, 840x525 (wtf?), 800x600, 800x480
23:30:07 <Vorpal> 800x480? What?
23:30:15 <ais523\unfoog> Vorpal: it's a small widescreen res
23:30:20 -!- evincar has joined.
23:30:49 <Vorpal> heh
23:31:52 <elliott> Vorpal: maybe it just upscales beyond that to keep the retro aesthetics
23:31:56 <elliott> you could use compiz zoom :p
23:32:04 <elliott> `addquote <Phantom_Hoover> Life expectancy now is a function of whether you go berserk or not.
23:32:06 <HackEgo> 704) <Phantom_Hoover> Life expectancy now is a function of whether you go berserk or not.
23:34:37 <Vorpal> well, their live chat works okay
23:36:22 <elliott> ais523\unfoog: how crazy does this sound: constantly run a daemon that uses inotify to incrementally backup every change to every file (reverse binary diff snapshotting, etc.)
23:36:52 <elliott> well, every file apart from /run and /tmp and the like :)
23:37:04 <ais523\unfoog> elliott: better to make it an OS feature rather than trying to userland it, I think
23:37:28 <elliott> ais523\unfoog: I can implement this faster than I can implement @
23:37:50 <ais523\unfoog> fair enough
23:37:58 <ais523\unfoog> is Kitten practice for @?
23:38:27 <elliott> ais523\unfoog: no, Kitten's so I don't give up on computers and become an anarcho-primitivist before @ comes out
23:38:43 <ais523\unfoog> haha
23:38:50 <ais523\unfoog> you are too much a perfectionist :)
23:39:00 <elliott> no, everything else is just that broken :)
23:39:07 <augur> fizzie: syn
23:39:27 <elliott> ais523\unfoog: anyway, a perfectionist would never create a linux distro...
23:39:53 <elliott> hmm, I think nilfs actually does what I want
23:39:58 <augur> elliott: mind reading something?
23:40:01 <elliott> "NILFS creates a number of checkpoints every few seconds or per synchronous write basis (unless there is no change). Users can select significant versions among continuously created checkpoints, and can change them into snapshots which will be preserved until they are changed back to checkpoints."
23:40:11 <elliott> and you can mount snapshots
23:40:13 <elliott> augur: go on
23:40:21 <augur> http://wellnowwhat.net/linguistics/Draft2.pdf up to but not including section 3
23:40:28 <augur> prose might be choppy
23:40:44 <elliott> this is going to be boring isn't it :'(
23:41:16 <elliott> "Most dogs love Alpo, and most cats love Whiskas"
23:41:18 <elliott> augur: [citation needed]
23:41:42 <augur> use/mention
23:42:58 <evincar> If you wanted to statically type a Forth-like language, what would be the type of a word with multiple possible stack effects? Say, something that turns an "End"-delimited series of values into a list.
23:43:33 <evincar> I guess that's not the best example, because you could call it A End B -> A [B] or whatever.
23:44:02 <elliott> see cat, factor
23:44:05 <elliott> mostly cat
23:44:15 <elliott> words with dynamic stack effects are simply not allwoed
23:44:23 <elliott> you could do some kind of ad-hoc overloading a la typeclasses, but that's not the same thing
23:44:28 <elliott> since that's static
23:44:50 <elliott> "For those readers who are unfamiliar with American pet products, Alpo
23:44:50 <elliott> and Whiskas are brands of dog food and cat food, respectively."
23:44:53 <elliott> augur: whiskas is uk too at least
23:44:56 <elliott> dunno about alpo
23:45:02 <augur> elliott: i know both are in finland as well
23:45:10 <elliott> augur: anyway has nobody really investigated this before
23:45:10 <augur> but ive had some people complain they didnt know wtf i was talking about
23:45:12 <elliott> it'd be like
23:45:17 <elliott> item one on my why is language so fucked up project
23:45:22 -!- ais523\unfoog has quit (Remote host closed the connection).
23:45:28 <augur> maybe five people have, but the explanations are shit
23:45:56 <elliott> augur: your field is fucked >:(
23:46:11 <augur> elliott: theres lots of other stuff that people are concerned with
23:46:14 <evincar> elliott: Thanks...that's generally what I was thinking, but it seems a rather arbitrary limitation. :/
23:46:26 <augur> a lot of current research, for instance, is interested in quantificational properties
23:46:37 -!- sllide has quit (Read error: Connection reset by peer).
23:46:46 <elliott> evincar: some kind of thing restricting how values can be combined to eliminate a large class of bad programs while rejecting some good ones by necessity...
23:46:48 <elliott> almost like
23:46:49 <elliott> some kind of
23:46:51 <elliott> type system
23:46:54 <evincar> It seems like a failing of the type system though.
23:47:04 <evincar> That you can't denote the type of an arbitrary stack effect.
23:47:19 <evincar> But then you'd end up with dependent typing for no reason?
23:47:21 <evincar> I guess?
23:47:28 <elliott> augur: these diagrams are so boring
23:47:37 <augur> elliott: the trees? i know.
23:47:44 <augur> they're all the same!
23:47:45 <elliott> can't you just write them inline
23:47:52 <augur> the trees?
23:48:05 <elliott> yeah
23:48:06 <augur> er.. there is notation for that, but it's not as easy to read
23:48:08 <elliott> augur: "In view of the fourt property," typo
23:48:14 <augur> yeah ive fixed that locally
23:48:24 <elliott> "In (41) and (??)," ?? isn't a number hth
23:48:54 <augur> yes, the finnish examples have yet to be added
23:49:04 <augur> so \ref{} is pointing to nothing
23:49:15 <augur> its not complete, that part
23:50:02 <elliott> yeah i know :P
23:50:09 <elliott> can you actually cite random people on irc for this
23:50:10 <elliott> i mean
23:50:11 <elliott> i'd just lie
23:50:52 <augur> you never cite your informants
23:51:17 <elliott> wow so i can just write a paper full of shit
23:51:17 <elliott> awesome
23:51:49 <elliott> "He will eat a hamburger and her a hotdog"
23:51:53 <Vorpal> <elliott> Vorpal: maybe it just upscales beyond that to keep the retro aesthetics <-- no it doesn't
23:51:54 <elliott> augur: i can confirm this is 101% idiomatic
23:52:12 <augur> elliott: sorry?
23:52:16 <elliott> 102%.
23:52:27 <Vorpal> elliott, anyway you can do it manually: ~/.lexaloffle/Voxatron/config.txt
23:52:27 <augur> im not sure what you mean by "101% idiomatic"
23:52:29 <elliott> it gets more idiomatic the more i look at it. trust me. native english speaker. you wouldn't understand.
23:52:34 <augur> perhaps you mean colloquial?
23:52:34 <Vorpal> elliott, editing that by hand works
23:52:42 <elliott> augur: no I mean it is totally correct.
23:52:46 <elliott> i am the most serious linguist
23:53:06 <augur> idiomatic does not mean correct :|
23:53:09 <evincar> It's true, actually. "Her" basically stands for "as for her". :P
23:53:11 -!- Phantom_Hoover has quit (Quit: Leaving).
23:53:17 <elliott> it's
23:53:24 <augur> idiomatic means that the meaning isn't obviously connected to the words
23:53:24 <elliott> not
23:53:26 <augur> like "kick the bucket"
23:53:30 <elliott> no it's not true evincar i was bullshitting
23:53:43 <evincar> elliott: I was aware you were bullshitting and was contradicting you.
23:53:51 <augur> evincar: also, "her" definitely doesnt stand for "as for her" there
23:53:56 <elliott> "He will eat a hamburger and she a hotdog" = makes sense
23:53:58 <elliott> "He will eat a hamburger and her a hotdog" = doesn't
23:54:05 <evincar> Unless you weren't actually bullshitting and just pretending not to be bullshitting.
23:54:18 <augur> elliott: makes sense in what way
23:54:21 <elliott> although the former looks kinda wrong too ~SEMANTIC SATIATION~
23:54:27 <elliott> augur: well i parse it about ten times easier :P
23:54:32 <elliott> isn't the former meant to be the correct one
23:54:33 <elliott> i've lost track
23:54:35 <evincar> If most native speakers can correctly infer the meaning of a phrase, it's correct as far as I'm concerned.
23:54:36 <elliott> fuck language
23:54:41 <elliott> augur: ask a native lojban speaker next
23:54:43 <augur> elliott: "meant to be" no
23:54:46 <augur> i mean
23:54:57 <augur> subject case in english is a mess
23:55:01 <augur> its extremely variable
23:55:02 <elliott> augur: meant to be as in
23:55:04 <evincar> Case inflection is so five centuries ago.
23:55:06 <elliott> in the context of the paper
23:55:08 <augur> there are people who insist that it must be "she"
23:55:13 <evincar> Six or seven, really.
23:55:15 <augur> but thats irrelevant
23:55:24 <elliott> the latter is definitely super hard tor ead
23:55:25 <augur> in the paper, no, neither is "more correct"
23:55:25 <elliott> to read
23:55:43 <elliott> augur: i'm not going prescriptivist on you I just assumed everyone would find the latter one wrong :P
23:55:55 <augur> elliott: oh, no, everyone i talk to prefers the latter one
23:56:01 <elliott> hmm
23:56:05 <elliott> well they both look wrong to me
23:56:05 <augur> but thats just case shit
23:56:08 <elliott> so i guess i'm just ruined
23:56:24 <evincar> I celebrate my minor victory by mounting my platypus.
23:56:24 <augur> yeah its plausible that pronominals would be harder to get
23:56:36 <augur> elliott: you might also want some discourse context to ameliorate it
23:56:50 <elliott> augur: wow i want to punch you for that sentence
23:56:57 <augur> why :(
23:56:59 <elliott> nothing personal
23:58:51 <evincar> I'm pretty sure all punches, however hypothetical, are personal. :P
23:59:26 <augur> elliott: well you can try. you might hurt yourself tho D:
23:59:32 -!- oerjan has joined.
←2011-09 2011-10 2011-11→ ↑2011 ↑all