←2013-02-28 2013-03-01 2013-03-02→ ↑2013 ↑all
00:09:51 -!- azaq23 has joined.
00:10:08 -!- azaq23 has quit (Max SendQ exceeded).
00:11:20 -!- azaq23 has joined.
00:11:35 -!- Phantom__Hoover has quit (Quit: Leaving).
00:21:16 -!- Nisstyre-laptop has quit (Quit: Leaving).
00:29:26 -!- hagb4rd|lounge has joined.
00:34:20 -!- hagb4rd|lounge has changed nick to hagb4rd.
00:39:25 -!- copumpkin has quit (Ping timeout: 252 seconds).
00:39:55 -!- copumpkin has joined.
00:46:07 -!- TeruFSX has quit (Ping timeout: 246 seconds).
00:53:13 -!- KingOfKarlsruhe has quit (Quit: ChatZilla 0.9.90 [Firefox 19.0/20130215130331]).
01:02:12 <shachaf> `olist
01:02:16 <HackEgo> shachaf oerjan Sgeo
01:04:35 <shachaf> `cat bin/emptylist
01:04:37 <HackEgo> tail -n+2 "$0" | xargs; exit
01:05:33 <Sgeo> Burlew's on a roll
01:07:04 <shachaf> As he mentions on the front page.
01:07:49 <Sgeo> oerjan, does CReal not count as totally ordered?
01:08:25 <oerjan> Sgeo: well CReal by default cuts off after 40 digits or so
01:08:37 <elliott> not decidably
01:08:57 <Bike> but undecidable functions on "computable" reals is fun :(
01:09:28 <oerjan> so by default (==) does return a result. however this result does not respect leibnitzian equality.
01:09:47 <oerjan> *leibnizian
01:10:06 <Bike> what do you even call equality otherwise
01:10:17 <Bike> "just-kind-of-saying-so equality"
01:12:34 <elliott> Bike: well equivalence relations...
01:12:48 <elliott> it satisfies all the axioms I think
01:12:50 <Bike> boring
01:12:59 <Bike> yeah it probably does but it's boring so there
01:13:05 <elliott> you are also boring tho
01:13:09 <Bike> :(
01:14:26 <Bike> hm, having 40 digits in common is probably just bijective with N
01:15:58 <shachaf> `run sed -i 's/^/basename "$0"; /' bin/emptylist
01:16:02 <HackEgo> No output.
01:16:03 <shachaf> `emptylist
01:16:05 <HackEgo> emptylist
01:16:08 <shachaf> Oops.
01:16:09 <shachaf> `revert
01:16:13 <HackEgo> Done.
01:16:34 <shachaf> `run sed -i 's/^/echo -n "$(basename "$0"): "; /' bin/emptylist
01:16:36 <shachaf> `emptylist
01:16:38 <HackEgo> No output.
01:16:39 <HackEgo> emptylist:
01:16:46 <shachaf> `run sed -i 's/^/echo -n "$(basename "$0"): "; /' bin/olist
01:16:50 <HackEgo> No output.
01:16:51 <shachaf> `olist (Sorry!)
01:16:53 <HackEgo> olist: shachaf oerjan Sgeo
01:16:56 <shachaf> That's better.
01:17:03 <elliott> it is?
01:17:05 <Bike> what just happened what is happening where am i
01:17:17 <shachaf> elliott: Yes, I'm always confused about which list is which.
01:17:23 <shachaf> It's nice to have it all in one line.
01:17:42 <shachaf> (In particular when I /last shachaf and see a list, I want to know which one it is.)
01:17:56 <shachaf> Wait, did I mess it up?
01:17:58 <shachaf> Ugh.
01:18:16 <shachaf> Wait, what happened to olist?
01:18:17 <oerjan> looks fine to me?
01:18:24 <shachaf> It was meant to be an emptylist clone!
01:18:35 <oerjan> `cat bin/olist
01:18:37 <HackEgo> echo -n "$(basename "$0"): "; echo shachaf oerjan Sgeo
01:18:38 <shachaf> `run cp bin/{empty,o}list
01:18:42 <HackEgo> No output.
01:18:53 <oerjan> `cat bin/olist
01:18:55 <HackEgo> echo -n "$(basename "$0"): "; tail -n+2 "$0" | xargs; exit
01:19:02 <shachaf> `run for n in shchaf oerjan Sgeo; do echo $n >> bin/olist; done
01:19:06 <HackEgo> No output.
01:19:07 <shachaf> `olist
01:19:09 <HackEgo> olist: shchaf oerjan Sgeo
01:19:12 <shachaf> Better.
01:19:21 <elliott> tip: one of the names is wrong
01:19:27 <shachaf> oopse
01:19:28 <oerjan> protip there
01:19:39 <shachaf> elliott: I never know how to spell that thing anyway.
01:19:49 <shachaf> `run s/shchaf/shachaf/g bin/*
01:19:50 <HackEgo> bash: s/shchaf/shachaf/g: No such file or directory
01:19:54 <shachaf> `run sed s/shchaf/shachaf/g bin/*
01:19:56 <HackEgo> ​#!/bin/sh \ topic=$(echo "$1" | tr A-Z a-z | sed "s/ *$//") \ topic1=$(echo "$topic" | sed "s/s$//") \ cd wisdom \ if [ \( "$topic" = "ngevd" \) -a \( -e ngevd \) ]; \ then cat /dev/urandom; \ elif [ -e "$topic" ]; \ then cat "$topic"; \ elif [ -e "$topic1" ]; \ then cat "$topic1"; \ else echo "$1? ¯\(°_o)/¯"; exit 1;
01:20:00 * shachaf sighs.
01:20:01 <oerjan> it's because the original is hebrew so the vowels confuse him
01:20:09 <shachaf> `run sed s/shchaf/shachaf/g bin/olist
01:20:11 <HackEgo> echo -n "$(basename "$0"): "; tail -n+2 "$0" | xargs; exit \ shachaf \ oerjan \ Sgeo
01:20:16 <shachaf> `run sed -i s/shchaf/shachaf/g bin/olist
01:20:18 <shachaf> One of these days...
01:20:19 <HackEgo> No output.
01:20:31 <shachaf> `run cat bin/smlist | rot13
01:20:33 <HackEgo> No output.
01:20:40 <shachaf> `run echo hello | rot13
01:20:42 <HackEgo> No output.
01:20:44 <shachaf> :-(
01:20:48 <shachaf> `run cat bin/rot13
01:20:50 <HackEgo> echo "$@" | tr a-zA-Z n-za-mN-ZA-M
01:21:01 <shachaf> What sort of crazy person makes a rot13 command that doesn't work on stdin?
01:21:07 <elliott> `rot13 this kind
01:21:09 <HackEgo> guvf xvaq
01:21:23 <shachaf> `run echo tr a-zA-Z n-za-mN-ZA-M > bin/r13; chmod +x bin/r13
01:21:26 <HackEgo> No output.
01:21:27 <shachaf> `run cat bin/smlist | r13
01:21:29 <HackEgo> gnvy -a+2 "$0" | knetf; rkvg \ funpuns \ zbadl \ ryyvbgg
01:21:40 <shachaf> OK, how do you sed just the first line?
01:21:51 <shachaf> Is it just 1s/... or something?
01:22:14 <shachaf> `run sed '1s/^/echo -n "$(basename "$0"): "; /' bin/smlist | r13
01:22:16 <HackEgo> rpub -a "$(onfranzr "$0"): "; gnvy -a+2 "$0" | knetf; rkvg \ funpuns \ zbadl \ ryyvbgg
01:22:35 <shachaf> `run sed -i '1s/^/echo -n "$(basename "$0"): "; /' bin/smlist
01:22:40 <HackEgo> No output.
01:23:41 <shachaf> By the way, rot13ing to be considerate of me while messing with lists doesn't actually work.
01:23:46 <shachaf> I have a hilight on funpuns.
01:23:47 * shachaf sighs.
01:23:58 <shachaf> I hope «you know who» doesn't have a hilight on zbadl.
01:24:29 <elliott> `smlist
01:24:31 <HackEgo> smlist: shachaf monqy elliott
01:24:57 <shachaf> ?
01:25:00 <shachaf> It's not updated.
01:25:17 <oerjan> `which rot13
01:25:19 <HackEgo> ​/hackenv/bin/rot13
01:25:23 -!- nooga has quit (Ping timeout: 255 seconds).
01:25:29 <oerjan> *cough*
01:25:40 <oerjan> `cat bin/rot13
01:25:42 <HackEgo> echo "$@" | tr a-zA-Z n-za-mN-ZA-M
01:25:47 <oerjan> oh
01:26:05 <oerjan> pesky argument variations
01:26:21 <shachaf> There should be a standard for bin/ commands.
01:26:31 <shachaf> Such that they look at both $@ and stdin
01:27:09 <shachaf> Someone write a one-liner that checks if $@ is nonempty and if it is reruns $0 with $@ as stdin
01:27:20 <shachaf> And then put it at the beginning of everything
01:27:53 <elliott> no
01:28:51 <oerjan> elliott: is it bad that while in backscroll i had the exact same idea as shachaf here?
01:28:59 <elliott> yes
01:29:35 <oerjan> O KAY
01:29:52 <quintopia> hoerjan
01:30:08 <oerjan> having both r13 and rot13 is pretty silly though
01:30:41 <quintopia> oerjan: maybe one of them rotates 13 LEFT and the other rotates 13 RIGHT.
01:32:34 <shachaf> oerjan: I think I've mentioned this idea before.
01:32:35 <shachaf> Maybe not.
01:32:40 <shachaf> Anyway it's how things Should Work.
01:34:03 <elliott> it should just be something that checks /proc/blah/cmdline and if stdin is closed and that's non-empty then it echos it on stdin
01:34:08 <elliott> so you can do foo | ...
01:34:22 <oerjan> perhaps it would have been better if HackEgo used EgoBot's convention of passing the command line in stdin
01:34:36 <Jafet> `quine elliott
01:34:39 <HackEgo> ​`quine elliott
01:34:54 <elliott> oerjan: then you couldn't use unix stuff without `run. although you barely can anyway.
01:34:54 <Bike> hackego's design has led to the most surreal design conversations, i swear
01:35:03 <quintopia> `quine stuff
01:35:04 <quintopia> no
01:35:07 <HackEgo> no
01:35:24 <oerjan> elliott: `run would work like EgoBot's !sh then
01:35:27 <shachaf> `quine oerjan
01:35:27 <shachaf> quoerjan
01:35:31 <HackEgo> quoerjan
01:36:00 <quintopia> `quine
01:36:01 <quintopia> I'm built just the way I'm meant to be, so stop trying to change who I am!
01:36:22 <Bike> race condtion!!!
01:36:52 <quintopia> :(
01:37:00 <oerjan> death by race condition
01:37:06 <quintopia> `quine stuff
01:37:08 <quintopia> I'm built just the way I'm meant to be, so stop trying to change who I am!
01:37:23 <shachaf> imo stop botspamming the channel
01:37:30 <quintopia> no
01:37:35 <quintopia> we can't
01:37:39 <quintopia> cuz hackego die
01:37:46 * elliott eyes his scrollback
01:37:57 <HackEgo> No output.
01:37:58 <HackEgo> No output.
01:38:04 <quintopia> oh welcome back HackEgo
01:39:57 * oerjan rolls his eyes back
01:41:19 -!- GOMADWarrior has joined.
01:43:06 <Jafet> `run (echo '#!/bin/sh'; echo "cd /var/irclogs/_esoteric; cat \$(ls ????-??-??.txt | tail -1) | sed 's/[^>]*> //' | grep '^\`' | tail -1 #Best cheating quine ever?") > bin/quine
01:43:10 <HackEgo> No output.
01:43:39 <elliott> you ruined it :(
01:43:47 <Bike> `quine No output.
01:43:50 <HackEgo> ​`quine No output.
01:44:11 <Sgeo> `quine foobar
01:44:11 <Sgeo> b
01:44:14 <HackEgo> ​`quine foobar
01:44:53 <Bike> every user in the channel has to test the race condition from now on
01:45:06 <elliott> `quine
01:45:07 <elliott> `ugh
01:45:08 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: ugh: not found
01:45:09 <HackEgo> ​`ugh
01:45:24 <Jafet> elliott passed
01:45:24 <Bike> thank you for demonstrating elliott
01:45:38 <oerjan> Jafet: hah i didn't think of that, that even works for encrypted quine
01:45:44 <Sgeo> Was going to do that, but wanted to copy/paste a newline
01:46:49 <elliott> it's lost magic though!
01:47:20 * oerjan thinks he will stay neutral on this issue
01:47:41 <Bike> a good issue
01:52:21 <shachaf> Wait, what was the old `quine command?
01:53:05 <Bike> probably the same sans the grep?
01:53:48 <shachaf> Ah.
01:54:29 <Bike> now it's "race condition free"
01:58:39 <Sgeo> Hmm. How to fix the race condition: Make HackEgo look for the oldest thing it hasn't replied to?
01:59:29 <ais523> that has a reverse race condition
01:59:36 <elliott> like 70% of the point of `quine is to have the race
01:59:40 <ais523> where the two threads may not see each others' answers
01:59:58 <Bike> elliott: On the other hand, if we keep tacking on "solutions" to it we'll get an esolang.
02:01:42 <oerjan> an esolang based entirely on misbehaving cheating quines?
02:02:22 <Bike> Sgeo: I bet you can solve what ais523 said by looking through ps.
02:02:30 <ais523> Bike: you can't
02:02:36 <oerjan> where to do actual computation you have to make the safeguards fail
02:02:38 <ais523> `echo $$
02:02:38 <Bike> ais523: Shhhhh.
02:02:39 <HackEgo> ​$$
02:02:40 <ais523> `echo $$
02:02:42 <ais523> err
02:02:44 <ais523> `run echo $$
02:02:46 <ais523> `run echo $$
02:02:52 <Bike> I'm trying to design an esolang here.
02:03:12 <HackEgo> ​$$
02:03:17 <elliott> trying to get sgeo to design an esolang here
02:03:23 -!- cantcode has quit (Quit: ragequit).
02:03:27 <Bike> Sgeo is part of the design.
02:03:31 <Bike> You are all part of the design.
02:03:36 <Bike> Welcome... to my museum.
02:03:46 <HackEgo> 284
02:03:48 <HackEgo> 285
02:04:24 <Sgeo> Use a file as a lock?
02:04:32 <Sgeo> I don't really understand HackEgo that well
02:04:33 <Bike> You see!
02:04:49 <Sgeo> Do the different threads each see different environments?
02:05:05 <oerjan> Sgeo: that will work _so_ well with all these timeouts
02:05:47 <oerjan> i don't think they do any longer, something transactions?
02:05:58 <elliott> they never did afaik
02:10:28 -!- carado_ has quit (Ping timeout: 246 seconds).
02:13:40 -!- cantcode2 has joined.
02:20:26 <ais523> hmm
02:20:40 <ais523> I thought I'd got the same value from two simultaneous `run echo $$ before now
02:20:49 <ais523> `run ps
02:20:51 <HackEgo> ​ PID TTY TIME CMD \ 280 ? 00:00:00 init \ 282 ? 00:00:00 sh \ 285 ? 00:00:00 ps \ 286 ? 00:00:00 cat
02:20:58 <ais523> `run ps
02:21:00 <ais523> `run ps
02:21:00 <HackEgo> ​ PID TTY TIME CMD \ 280 ? 00:00:00 init \ 282 ? 00:00:00 sh \ 285 ? 00:00:00 ps \ 286 ? 00:00:00 cat
02:21:01 <HackEgo> ​ PID TTY TIME CMD \ 280 ? 00:00:00 init \ 282 ? 00:00:00 sh \ 283 ? 00:00:00 ps \ 284 ? 00:00:00 cat
02:21:15 <ais523> perhaps not, those ps runs seem to be aware of each other
02:21:20 <ais523> `run pgrep ps
02:21:22 <HackEgo> No output.
02:21:22 <ais523> `run pgrep ps
02:21:23 <HackEgo> No output.
02:21:27 <ais523> no pgrep?
02:21:31 <ais523> `run ps aux | grep ps
02:21:32 <ais523> `run ps aux | grep ps
02:21:33 <HackEgo> 5000 282 0.0 0.2 4008 564 ? S 02:21 0:00 sh -c 'env' 'PATH=/hackenv/bin:/opt/python27/bin:/opt/ghc/bin:/usr/bin:/bin' 'HACKENV=/hackenv' 'http_proxy=http://127.0.0.1:3128' 'LANG=en_NZ.UTF-8' '/home/hackbot/hackbot.hg/multibot_cmds/lib/limits' 'bash' '-c' 'ps aux | grep ps' | cat \ 5000 285 0.0 0.5 123840 1460 ?
02:21:34 <HackEgo> 5000 282 0.0 0.2 4008 564 ? S 02:21 0:00 sh -c 'env' 'PATH=/hackenv/bin:/opt/python27/bin:/opt/ghc/bin:/usr/bin:/bin' 'HACKENV=/hackenv' 'http_proxy=http://127.0.0.1:3128' 'LANG=en_NZ.UTF-8' '/home/hackbot/hackbot.hg/multibot_cmds/lib/limits' 'bash' '-c' 'ps aux | grep ps' | cat \ 5000 285 0.0 0.5 123840 1460 ?
02:21:51 <ais523> err, hmm
02:21:54 <ais523> `run ps u | grep ps
02:21:56 <ais523> `run ps u | grep ps
02:21:56 <HackEgo> No output.
02:21:57 <HackEgo> No output.
02:22:08 <pikhq> en_NZ?
02:22:15 <pikhq> Gregor: Why en_NZ?
02:22:32 <ais523> pikhq: that question gets asked all the time
02:22:39 <Bike> Because it's the cool place to be
02:22:39 <ais523> my guess is, so people will ask the question :)
02:23:16 <Gregor> pikhq: Because people complained when I set it to zh_TW
02:23:16 <lambdabot> Gregor: You have 1 new message. '/msg lambdabot @messages' to read it.
02:24:21 <pikhq> Smartass.
02:25:16 <elliott> I like hackego being from new zealand
02:25:24 <elliott> adds some international character to the channel
02:25:59 <Bike> wait what does NZ even change from like AU or UK
02:26:27 <elliott> INTERNATIONAL CHARACTER
02:26:37 <pikhq> Technically, a program could have a New Zealand-specific localization.
02:26:54 <pikhq> I bet 100% of programs just use en_US though.
02:28:19 <Jafet> Unicode needs an INTERNATIONAL CHARACTER
02:28:48 -!- wareya has quit (Read error: Connection reset by peer).
02:29:16 <Bike> petition to make multiocular o the designated international character of unicode
02:29:31 <elliott> how many signatures do you need for the president to do it
02:29:50 -!- wareya has joined.
02:29:51 <Bike> Does Unicode have a president?
02:31:06 <Jafet> `quine2 equine too
02:31:06 <Jafet> `run quine2 | rainwords
02:31:08 <HackEgo> ​`quine2 equine too
02:31:08 <HackEgo> `run quine2 | rainwords
02:31:50 <elliott> Bike: i mean obama
02:32:03 <Bike> Obama is the president of Unicode?
02:32:19 <Jafet> The president of things which have no presidents
02:32:33 <elliott> obama is just the president.
02:32:35 <Bike> I thought that was me.
02:32:41 <Bike> I mean we already founded the university.
02:32:46 <Bike> Of dumb professor titles.
02:32:56 <elliott> I didn't say he was a professor!
02:33:12 <Bike> Yes but we agreed that I was the founder, which makes me president as well by ancient law.
02:33:47 <elliott> I am pretty sure hope and change invalidated ancient law in 2008
02:34:46 <Bike> THANKS OBAMA >:|
02:35:16 <Jafet> Obatman
02:40:42 <ais523> $ history | tail -n 1 | cut '-d ' -f 4-
02:40:43 <ais523> history | tail -n 1 | cut '-d ' -f 4-
02:40:52 <ais523> I made a `quine in bash :)
02:41:11 -!- zzo38 has joined.
02:41:31 <ais523> btw, that quoting of '-d ' looks really wrong to me
02:41:37 <ais523> although I guess -'d ' would be worse
02:41:41 <ais523> (-d' ' doesn't seem wrong to me)
02:43:02 <elliott> '-'d\
02:43:28 <shachaf> ais523: Where's the race condition?
02:43:46 <shachaf> At least look in .bash_history instead of running `history`
02:43:50 <shachaf> Give us a chance.
02:43:53 <ais523> shachaf: that wouldn't make a difference
02:43:58 <ais523> or, it would
02:44:03 <ais523> or, hmm
02:44:11 <ais523> I thought .bash_history only updated when the shell exited
02:44:26 <ais523> $ tail -n 1 .bash_history
02:44:27 <ais523> history | tail -n 1 | cut '-d ' -f 4-
02:44:29 <ais523> yeah
02:45:22 <quintopia> what's the non-word-boundary rainbow command
02:45:30 <quintopia> rb?
02:46:10 <shachaf> ais523: There's an option for it.
02:46:16 <shachaf> You can make it write to .bash_history on every command.
02:47:01 <shachaf> shopt -s histappend
02:47:15 <shachaf> Maybe?
02:47:20 <elliott> shopt -s histappend && tail -n 1 .bash_history
02:47:38 <shachaf> The point is to keep the race condition around.
02:48:59 <Bike> but thiw way you can get new and exciting race conditions
03:03:36 -!- abumirqaan has changed nick to muqayil.
03:03:58 <oerjan> quintopia: colorize
03:07:18 <quintopia> thx
03:07:38 <quintopia> `run echo "thoerjan" | colorize
03:07:41 <HackEgo> thoerjan
03:09:34 <zzo38> Why does it make that many color codes
03:09:56 <quintopia> `run echo "so that zzo38 will ask lots of questions" | colorize
03:09:58 <HackEgo> so that zzo38 will ask lots of questions
03:10:29 <oerjan> zzo38: it just fills out the line until near HackEgo's limit, i suspect only your client even sees most of them so we haven't bothered to cut them down.
03:10:57 <oerjan> it's a bit of a waste when the line is short originally
03:11:52 <oerjan> i suppose a minimum somewhere could reduce it...
03:11:53 <quintopia> oh does it just randomly insert color codes monte carlo style
03:12:32 <quintopia> it seems you could at least make it not add a color code anywhere its already put one
03:12:34 <oerjan> quintopia: yeah it does a shuffle of a string containing x's and C's, the x'es for original content
03:12:44 <oerjan> quintopia: hm i guess...
03:12:52 <oerjan> `cat bin/colorize
03:12:53 <HackEgo> ​#!/bin/sh \ python -c "import random; w=raw_input(); p=list('x'*len(w)+'C'*int((341-len(w))/3+1)); random.shuffle(p); i=(c for c in w); print ''.join(i.next() if c=='x' else chr(3)+'%02d' % random.randrange(2,15) for c in ['C']+p)"
03:14:17 <quintopia> oerjan: so do a /C+/C/
03:14:38 <oerjan> quintopia: i'm looking up python regexp functions
03:15:45 <oerjan> `url bin/colorize
03:15:48 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/colorize
03:16:39 <oerjan> `which python
03:16:40 <HackEgo> ​/opt/python27/bin/python
03:17:02 <oerjan> `which env
03:17:04 <HackEgo> ​/usr/bin/env
03:19:16 -!- doesthiswork has quit (Quit: Leaving.).
03:19:24 <oerjan> `fetch http://oerjan.nvg.org/colorize
03:19:31 <HackEgo> 2013-03-01 03:19:30 URL:http://oerjan.nvg.org/colorize [258/258] -> "colorize" [1]
03:19:42 <oerjan> `run chmod a+x colorize
03:19:46 <HackEgo> No output.
03:20:02 <oerjan> `run echo Test | ./colorize
03:20:04 <HackEgo> Traceback (most recent call last): \ File "./colorize", line 7, in <module> \ p=re.subst('C+','C',p) \ AttributeError: 'module' object has no attribute 'subst'
03:20:12 <oerjan> oops
03:20:44 <oerjan> `fetch http://oerjan.nvg.org/colorize
03:20:46 <HackEgo> 2013-03-01 03:20:45 URL:http://oerjan.nvg.org/colorize [256/256] -> "colorize.1" [1]
03:21:14 <oerjan> `run cat colorize.1 >colorize
03:21:18 <HackEgo> No output.
03:21:20 <oerjan> `run echo Test | ./colorize
03:21:23 <HackEgo> Traceback (most recent call last): \ File "./colorize", line 7, in <module> \ p=re.sub('C+','C',p) \ File "/opt/python27/lib/python2.7/re.py", line 151, in sub \ return _compile(pattern, flags).sub(repl, string, count) \ TypeError: expected string or buffer
03:21:42 <oerjan> now wtf
03:22:11 <quintopia> does python seriously do str->int by turning it into its length?
03:22:23 <quintopia> i guess that's cool?
03:22:37 <oerjan> wat? i have no idea.
03:23:08 <Bike> where did you get that idea quintopia
03:23:30 <quintopia> Bike: "p=re.sub('C+','C',p)"
03:23:42 <quintopia> where p is a string
03:23:56 <Bike> that's regex substitution what does it have to do with numbers
03:24:11 <quintopia> the third argument is a count
03:24:18 <oerjan> no it isn't
03:24:27 <Bike> "re.sub(pattern, repl, string, count=0, flags=0)"
03:24:47 <quintopia> oh
03:24:58 <quintopia> so what is p then
03:25:08 <Bike> a string, except oerjan actually made it a list
03:25:10 <oerjan> i still have no idea what the error is about
03:25:18 <Bike> i don't think python lists are strings
03:25:22 <Bike> i could be wrong, it's been a while
03:25:24 <oerjan> oh duh
03:25:26 <quintopia> aha
03:25:53 <Bike> str(['a','b']) => "['a','b']" awesome
03:26:11 <oerjan> how the fuck do I do this then...
03:26:29 <quintopia> do a join on the whole list
03:26:34 <quintopia> and then apply the regex
03:26:47 <oerjan> and then split again? how convenient.
03:26:51 <quintopia> nah
03:26:53 -!- GOMADWarrior has quit (Ping timeout: 256 seconds).
03:27:00 <quintopia> you can change the last to loop over chars in the string
03:27:16 <quintopia> or
03:27:19 <quintopia> fuck the regex
03:27:24 <oerjan> quintopia: you do it who actually know python
03:27:39 <Bike> What if you wrote a python->haskell compiler first?
03:27:42 <quintopia> just add a flag that records whether the last element was a 'C'
03:27:54 <quintopia> and refuses to print a color if so
03:27:59 -!- TeruFSX has joined.
03:28:02 <elliott> how about write it in haskell instead
03:28:02 <oerjan> quintopia: we are _way_ beyond by patience quota here.
03:28:13 <elliott> we can get Bike to do it
03:28:15 <quintopia> how about write in haskell instead
03:28:24 <quintopia> we can get elliott to do it
03:28:30 <elliott> Bike knows haskell
03:28:31 <Bike> Wait.
03:28:32 <Bike> Agda.
03:28:34 <elliott> what do I know about haskell?
03:28:37 <oerjan> `fetch http://oerjan.nvg.org/colorize
03:28:42 <HackEgo> 2013-03-01 03:28:41 URL:http://oerjan.nvg.org/colorize [235/235] -> "colorize.2" [1]
03:28:56 <Bike> i=(c for c in w) <-- it's beautiful
03:29:02 <oerjan> `run cat colorize.2 >bin/colorize
03:29:06 <HackEgo> No output.
03:29:09 <kmc> python strings are not lists, but they are both iterable in the same way
03:29:15 <kmc> so many functions are happy to consume either
03:29:16 <quintopia> haha
03:29:24 <Bike> kmc: BUT NOT RE.SUB
03:29:44 <oerjan> `run echo Test | colorize #This is just the old one reformatted
03:29:47 <HackEgo> Test
03:29:57 <quintopia> i wonder if python has a strfry
03:30:00 <oerjan> so at least that won't be lost
03:30:10 <oerjan> `run rm colorize*
03:30:14 <HackEgo> No output.
03:32:20 <kmc> there's random.shuffle
03:32:24 <kmc> but it wants to shuffle a list in place
03:32:38 <oerjan> that's what colorize uses
03:32:52 <oerjan> `cat bin/colorize
03:32:53 <HackEgo> ​#!/usr/bin/env python \ import random \ import re \ w=raw_input() \ p=list('x'*len(w)+'C'*int((341-len(w))/3+1)) \ random.shuffle(p) \ i=(c for c in w) \ print ''.join(i.next() if c=='x' else chr(3)+'%02d' % random.randrange(2,15) for c in ['C']+p)
03:34:27 <Jafet> `run echo Colorize | colorize
03:34:29 <HackEgo> Colorize
03:34:44 <Jafet> "um cool"
03:35:01 <Bike> `run cat bin/colorize | colorize
03:35:02 <HackEgo> #!/usr/bin/env python
03:35:08 <Bike> purty
03:36:20 <shachaf> `run echo "$(cat bin/colorize)" | colorize
03:36:22 <HackEgo> #!/usr/bin/env python
03:36:29 <shachaf> `run echo "$(cat bin/colorize)"
03:36:31 <HackEgo> ​#!/usr/bin/env python \ import random \ import re \ w=raw_input() \ p=list('x'*len(w)+'C'*int((341-len(w))/3+1)) \ random.shuffle(p) \ i=(c for c in w) \ print ''.join(i.next() if c=='x' else chr(3)+'%02d' % random.randrange(2,15) for c in ['C']+p)
03:36:36 <oerjan> `run sed -i '6ap=list(re.sub('C+','C',''.join(p)))' bin/colorize
03:36:40 <HackEgo> No output.
03:36:40 <shachaf> `run echo $(cat bin/colorize) | colorize
03:36:43 <HackEgo> ​ File "/hackenv/bin/colorize", line 7 \ p=list(re.sub(C+,C,.join(p))) \ ^ \ SyntaxError: invalid syntax
03:36:51 <oerjan> oops
03:36:53 <oerjan> `revert
03:36:56 <HackEgo> Done.
03:37:02 <Jafet> Race coerjan
03:37:06 <oerjan> `run sed -i "6ap=list(re.sub('C+','C',''.join(p)))" bin/colorize
03:37:11 <HackEgo> No output.
03:37:22 <oerjan> `run echo Test | colorize
03:37:24 <HackEgo> Test
03:37:26 <oerjan> yay
03:37:39 <oerjan> zzo38: did that have fewer color codes?
03:37:43 <Jafet> `run echo Colorize | colorize
03:37:45 <HackEgo> Colorize
03:37:48 <Bike> shachaf: i'm gonna have to remember that one
03:38:22 <oerjan> seems from the logs like it worked.
03:38:31 <Jafet> (Type coerjan?)
03:40:02 <oerjan> i guess by what kmc said the final list(...) is redundant
03:40:08 <oerjan> but never mind
03:42:34 <Bike> `run echo xaCtoKniFe | colorize
03:42:36 <HackEgo> xaCtoKniFe
03:43:13 <shachaf> Bike: Remember whom?
03:49:27 <zzo38> oerjan: Yes how there is only one control code for each letter
03:49:48 <oerjan> darn wikipedia broke wikEdDiff
03:50:10 <oerjan> zzo38: good
03:50:27 <zzo38> Who is the pope now?
03:50:40 <oerjan> no one
03:50:58 <oerjan> the conclave has not started yet
03:51:37 <Bike> we are in a popeless world
03:53:04 -!- Arc_Koen has quit (Quit: Arc_Koen).
03:55:12 <kmc> 'Today there is no Pope, head of the CIA, or Sec. of Defense. We are so, so close to living John Lennon's dream.'
03:55:17 <kmc> Bike: they deleted his tweets too
03:55:19 <kmc> the pope
03:55:20 <Bike> no!
03:55:35 <Sgeo> There's an archive
03:55:44 <Bike> thank god
03:55:52 <Jafet> kmc: LSD is still illegal though
03:56:13 <elliott> kmc: are they like mad at him
03:56:15 <elliott> for tweeting
03:56:38 <kmc> elliott: dunno
03:56:42 <Jafet> They write his tweets
03:56:44 <kmc> Jafet: yeah last i checked
03:58:13 * Sgeo is busy downloading all the stuff from sgeo.diagonalfish.net
03:58:41 <Bike> oh shit have you read growth and form too??
03:59:04 <elliott> Forbidden
03:59:05 <elliott> You don't have permission to access / on this server.
03:59:07 <elliott> rip sgeo.diagonalfish.net
03:59:24 <Sgeo> I can still FTP into it
03:59:29 -!- monqy has joined.
03:59:49 <Bike> get out while you still can
04:00:54 <monqy> hi
04:02:34 <Sgeo> Let's see if I can log into paranoia-live
04:06:16 <Sgeo> http://dl.dropbox.com/u/16240872/12_30_06_device_mania.html
04:08:00 <Bike> Big computer.
04:13:06 <monqy> what's this from
04:13:36 <shachaf> kmc: how often do you check
04:13:39 <shachaf> do we need `lsdlist
04:13:52 <elliott> i'd like to subscribe to `lsdlist on principle
04:14:06 <Sgeo> monqy, a Paranoia session I GMed
04:14:07 <Sgeo> http://www.creaturescaves.com/downloads.php?section=COBs&view=801
04:14:11 <Sgeo> ^^not Paranoia
04:14:45 <monqy> and what's this
04:15:00 <Bike> The COBs section
04:15:15 <Sgeo> Something I made years ago that was hosted on sgeo.diagonalfish.net
04:15:24 <Sgeo> It's been a "lost link" for some time
04:15:26 <monqy> ah are you going through your old stuff archives
04:15:37 <Sgeo> Just today gave malkin permission to post the copy that he had to this site
04:15:38 <Bike> so
04:15:42 <Bike> what's happening to the diagonal fish
04:16:38 <monqy> by any chance would this diagonal fish archive happen to house the fabled “atheism directory„
04:17:04 <Sgeo> Erm, yes.
04:17:23 <monqy> :0
04:17:24 <Bike> Ooh that sounds fun.
04:17:34 <Bike> What is the fabled “atheism directory„?
04:18:24 <monqy> i've only heard fables
04:18:48 <oerjan> i've only heard people fabling about the fables
04:18:55 <oerjan> (just now, in fact)
04:19:33 <Sgeo> Ok. What is my math homework doing in the atheism directory?
04:19:51 <Bike> I don't know! Maybe it would help if you explained what the fabled “atheism directory„ is.
04:20:10 <Sgeo> Just my thoughts/code relating to religion
04:20:22 <Bike> Code you say.
04:22:04 <zzo38> What are your thoughts/code relating to religion?
04:22:22 <Sgeo> Can I just, like, upload a directory to dropbox?
04:23:39 <monqy> i think so but you might have to do something special to give directory listing permissions?? or you could zip it up and upload that
04:24:46 <zzo38> Or shell archive it in which case it can even work with sprunge
04:27:32 <zzo38> In GCC does including cases with __builtin_unreachable make it not going to be worse than it ordinarily is?
04:30:31 <Sgeo> http://dl.dropbox.com/u/16240872/atheism.zip
04:31:27 <Bike> man i am so pumped for this
04:31:33 <Bike> are you ready to get your folk theology deconstructed???
04:31:34 <monqy> ye
04:32:16 <Sgeo> This is all from years ago
04:32:54 <Sgeo> One of those was something some religious person gave me to read I think
04:35:07 <Bike> supregod.pdf
04:35:39 <Bike> oh that's some kabbalah shit right there son
04:36:07 <Sgeo> I hope that it's clear that I never actually believed that, and it was just musings on various possible theologies that would make more sense.
04:36:17 <Bike> yeah
04:37:27 <Bike> wow there is actually code.
04:57:47 -!- kallisti has quit (Ping timeout: 260 seconds).
04:59:22 -!- oerjan has quit (Quit: c-ode).
05:03:18 -!- madbr has joined.
05:04:44 <madbr> I think it's possible to do a CPU that can autovectorize any loop
05:06:02 <zzo38> Maybe, but sometimes vectorizing by compiler would be preferable.
05:06:28 <madbr> yeah it's essentially applying a vectorizing compilation on the fly
05:06:34 <madbr> the concepts are the same
05:07:04 <madbr> you take your 32 register RISC
05:07:10 <madbr> classic design etc
05:07:33 <madbr> but you have 4 or 8 or howerver many sub-cores
05:07:48 <madbr> run the same operations on the 4 or 8 cores
05:08:22 <zzo38> I prefer "worse-is-better" design
05:08:40 <madbr> if a branch goes different ways on different cores then you invalidate the results on subsequent cores
05:09:01 <madbr> zzo: what's that?
05:09:24 <zzo38> Simplicity-the design must be simple, both in implementation and interface. It is more important for the implementation to be simple than the interface. Simplicity is the most important consideration in a design.
05:09:31 <zzo38> Correctness-the design must be correct in all observable aspects. It is slightly better to be simple than correct.
05:09:40 <zzo38> Consistency-the design must not be overly inconsistent. Consistency can be sacrificed for simplicity in some cases, but it is better to drop those parts of the design that deal with less common circumstances than to introduce either implementational complexity or inconsistency.
05:09:44 <zzo38> Completeness-the design must cover as many important situations as is practical. All reasonably expected cases should be covered. Completeness can be sacrificed in favor of any other quality. In fact, completeness must sacrificed whenever implementation simplicity is jeopardized. Consistency can be sacrificed to achieve completeness if simplicity is retained; especially worthless is consistency of interface.
05:09:47 <zzo38> That is what it is.
05:11:23 <madbr> hmmmm
05:12:14 <madbr> does it have C++ compiled code more or less optimally?
05:12:48 <madbr> yes -> superscalar 2 issue classic risc architecture we've seen a zillion times
05:12:48 <Bike> the defining question of our times
05:13:58 <madbr> no the user can use intrinsics or de-aliasing keywords -> SIMD of some kind
05:14:18 <madbr> essentially that's what a GPU is, for instance
05:14:40 <madbr> VLIW of some kind optimized for max throughput
05:14:51 <madbr> see also: Cell, Larrabbee
05:15:59 <madbr> no the user will write custom assembly -> DSP of some kind with SIMD
05:16:11 <madbr> (even more throughput-oriented architecture)
05:22:35 <madbr> kinda wonder how easily LLVM can
05:22:40 <madbr> (1) unroll loops
05:22:56 <madbr> (2) guess which pointers can't alias which others
05:23:37 <ais523> GPUs aren't particularly VLIW, rather they have different sorts of memory which each have different aliasing behaviour
05:23:43 <ais523> across threads
05:23:47 <madbr> if (1) is easy then any loop can be unrolled N times (first step to the kind of auto-vectorization I'm thinking about)
05:24:08 <madbr> ais: oh
05:25:29 <madbr> once you have your loop unrolled, say, 4 times, you can try to reorder the instructions to put each set of 4 identical operations together
05:25:38 <madbr> this is where (2) comes in
05:26:02 <madbr> if LLVM's alias analysis fails (ie it finds two pointers can alias)
05:26:39 <madbr> then it can't reorder the memory operations and you'll never be able to combine your sets of 4x identical operations together
05:27:10 <madbr> (because you'd have to violate memory operation ordering constraints)
05:28:19 <madbr> however if it passes then you can vectorize any operation
05:28:49 <madbr> though you'll need special versions of the opcodes that can feedback operands from unit to unit
05:32:10 -!- lambdabot has quit (Ping timeout: 248 seconds).
05:35:26 <madbr> I guess for DSP and gfx processing loops
05:35:36 <madbr> your looping condition is going to be N iterations
05:35:41 <madbr> so that's easy to unroll
05:36:14 <madbr> the problem with DSP is that while it usually writes in 1 place, it normally reads all over the place
05:36:28 <madbr> (look up tables, sample data...)
05:38:45 <zzo38> I think LLVM doesn't always need to guess since you can specify explicitly some ways too.
05:38:59 <zzo38> Such as the restrict command and the !tbaa command.
05:43:24 <madbr> "‘llvm.loop.parallel‘ Metadata"
05:46:45 <zzo38> O, yes, there is that, too!
05:52:43 <zzo38> But LLVM doesn't have a command to change the number of bits in one byte.
05:56:29 <madbr> what's the interest of doing that?
05:56:49 <Bike> making the KillComp 9007 a reality
05:58:08 <zzo38> There are computers and virtual machines with different number of bits in one byte.
06:00:19 <madbr> I've heard of 9, 12 and 36 bit words yes
06:00:51 <zzo38> Yes I mean things such as that
06:01:20 <zzo38> But I also mean including 4-bits and 32-bits and whatever else there might be.
06:01:51 <Bike> Doesn't CHAR_BIT have to be at least 8?
06:03:14 <ais523> yeah, it's 8 as a minimum
06:03:15 <pikhq> Bike: In C it must be at least 8 bits.
06:03:16 <ais523> but can be higher
06:03:19 <zzo38> I think it does in C, and probably should in LLVM too except in cases where the module contains a command explicitly saying otherwise.
06:03:21 <pikhq> In POSIX it must be exactly 8 bits.
06:03:40 <Bike> weird
06:04:26 <zzo38> In many cases you wouldn't care about POSIX though.
06:04:57 <zzo38> LLVM also dosen't have attributes to indicate commutative and associative function parameters, but maybe it should have
06:05:07 <zzo38> Since it might be useful for some kind of optimizations.
06:07:55 <madbr> I think it can flag some opcodes as commutative
06:08:16 <madbr> so actually if it inlines your function it might do that to your additions
06:11:37 <zzo38> Yes I have looked at the source-codes it seems like it does that, but it doesn't mean you can specify that your own function has that property in other cases too (including external functions).
06:14:19 <madbr> I don't think it's really much of an important avenue for optim
06:15:12 <Bike> it is if you're doing mapreduce or something, but then why are you doing llvm?
06:17:23 <zzo38> I suppose it is because they don't have other ones.
06:18:00 <zzo38> LLVM also doesn't compile into many targets which GCC supports.
06:19:21 <zzo38> Such as MMIX and ARM2 and so on, so LLVM programs are not as portable as GCC, for now.
06:19:51 <zzo38> Neither LLVM nor GCC supports Z-machine or Glulx, though, as far as I can see.
06:19:58 <Bike> Shame.
06:21:08 <Bike> Do either of them compile to naval automatic differential analyzers, for use in aiming cannons?
06:25:17 <madbr> llvm supports later ARMs no?
06:25:39 <zzo38> Yes LLVM does support later ARMs but not all the old ones too like GCC supports even ARM1
06:26:05 <zzo38> And there are computers other than ARM.
06:26:05 <Bike> Do you have old ARM machines you need to support?
06:26:47 <zzo38> Yes (mainly due to patent issues).
06:27:47 <madbr> so, how's the dsp unit design going
06:29:32 <zzo38> Well, I don't actually have the equipment yet but mostly I just think about it, I have various papers I have written ideas on
06:29:56 <zzo38> However mostly now I am working on VGMCK.
06:31:27 <zzo38> (At this time, I am adding support for OPLL, although I eventually intend to have all of them, as well as other additional features.)
06:33:09 <madbr> anything seem particularly promising?
06:34:25 <zzo38> I don't know yet.
06:35:00 <zzo38> Therefore, I must learn. But I am not working on hardware right now since I have other things to do.
06:38:14 <Sgeo> I think I may be evil
06:38:18 <Sgeo> I'm back in norn torture mode
06:38:43 <Bike> no sgeo! resist!!!!!
06:39:15 <Sgeo> Actually, it's someone else's norn
06:39:26 <Sgeo> I gave them the genetics, but he's observing what the norn is doing
06:39:41 <Sgeo> So, kind of out of my hands, unless I scream "PUT THE POOR NORN OUT OF ITS MISERY"
06:40:03 <Bike> wow so you're a second-degree sociopath
06:40:23 <Sgeo> Although actually he's mind controlling the norn to get him to eat, so that's a thing.
06:40:39 <Bike> monster
06:40:57 <Sgeo> It's good. The condition the norn has makes the norn unwilling to eat food after he's eaten food a few times.
06:41:06 <Sgeo> Or, well, unwilling to do anything after doing that thing a few times.
06:42:43 <Bike> Hm, how'd you manage that?
06:42:52 <Sgeo> There's a chemical called Punishment
06:43:04 <Sgeo> I added a gene that makes sure the norn is always filled with Punishment
06:43:43 <Bike> Oh.
06:45:54 <Sgeo> "post mind-control + tickling, he seems to eat when prompted"
07:00:44 <quintopia> someone give me a backtick plox
07:01:14 <Bike> `
07:01:15 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: : not found
07:01:16 <Deewiant> 0060 ` GRAVE ACCENT
07:01:46 <quintopia> thanks bike
07:02:13 <Bike> `run touch bin/$(echo)
07:02:14 <HackEgo> No output.
07:02:18 <Bike> `
07:02:19 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: : not found
07:02:22 <quintopia> `frink 5.5 km/h to mi/h
07:02:23 <Bike> Aww.
07:02:32 <HackEgo> ​[]
07:02:35 <Bike> `run touch bin/$(echo -n)
07:02:36 <HackEgo> No output.
07:02:40 <Bike> `
07:02:41 <quintopia> `frink 5.5 km/h to mi/h
07:02:41 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: : not found
07:02:48 <HackEgo> ​[]
07:02:59 <quintopia> `frink km/h to mi/h
07:03:07 <HackEgo> Error in BasicExpressionFormatter.formatEnumerating in evaluation \ Error in BasicExpressionFormatter.formatEnumerating in evaluation Range operator endpoints are conformal, but require you to specify an conformal step.
07:03:14 <Bike> awesome
07:03:16 <Bike> `units
07:03:45 <Bike> No? ok.
07:03:47 <HackEgo> 2527 units, 72 prefixes, 56 nonlinear units \ \ You have:
07:04:29 <Bike> `units '5.5 km/h' 'mi/h'
07:04:30 <HackEgo> Unknown unit ''5.'
07:04:46 <Deewiant> `units km/h mi/h
07:04:48 <HackEgo> ​Definition: 1.4152697e+66 s^2 / kg^2 m^4
07:05:06 <Bike> Wow.
07:05:22 -!- keb has joined.
07:05:33 -!- keb has quit (Client Quit).
07:06:55 -!- TeruFSX has quit (Ping timeout: 246 seconds).
07:10:38 -!- keb has joined.
07:10:38 -!- keb has quit (Client Quit).
07:28:17 -!- FreeFull has quit.
07:40:58 -!- Bike has quit (Quit: leaving).
07:45:05 <madbr> K
07:45:07 <madbr> U
07:45:41 <monqy> ku
07:47:59 <Sgeo> Grah, the Internship website I found is just for students :(
07:53:26 -!- madbr has quit (Quit: Radiateur).
07:56:22 -!- epicmonkey has joined.
07:57:46 <Sgeo> Trying not to flip out over an important website in the Creatures Community storing passwords in plain text.
07:59:26 <olsner> flipping out is sort of a reasonable response to that
08:00:10 <olsner> otoh, someone storing passwords in plain text is likely to completely miss what the fuzz is about
08:00:11 -!- aloril has quit (Ping timeout: 276 seconds).
08:00:30 <Sgeo> Apparently, they originally thought I meant in cookies
08:00:44 <Sgeo> Although the conversation was going through an intermediary
08:03:03 -!- epicmonkey has quit (Ping timeout: 245 seconds).
08:13:30 -!- aloril has joined.
08:58:14 -!- md_5 has quit (Quit: ZNC - http://znc.in).
08:59:38 -!- md_5 has joined.
09:11:58 -!- epicmonkey has joined.
09:13:28 -!- DHeadshot has quit (Ping timeout: 245 seconds).
09:14:20 <zzo38> VGMCK is now up to version 0.6.
09:14:36 <zzo38> Eventually it will come up to version 1.0 and then more after that too.
09:55:48 -!- carado has joined.
09:58:44 -!- monqy has quit (Quit: hello).
10:00:10 -!- carado has quit (Ping timeout: 246 seconds).
10:01:10 -!- carado has joined.
10:07:23 -!- zzo38 has quit (Remote host closed the connection).
10:11:14 <Jafet> Someone who uses a different password for each password field would also miss what the fuzz is about.
10:20:39 -!- nooga has joined.
10:26:23 <c00kiemon5ter> fungot, do you use different passwords and/or even change them often ?
10:26:23 <fungot> c00kiemon5ter: i can't make
10:39:11 -!- DHeadshot has joined.
10:51:17 -!- DH____ has joined.
10:52:13 -!- DHeadshot has quit (Ping timeout: 245 seconds).
10:56:06 -!- KingOfKarlsruhe has joined.
11:01:13 -!- clog has quit (Quit: ^C).
11:01:27 -!- clog has joined.
11:14:23 -!- ais523 has quit.
11:16:03 -!- hagb4rd2 has joined.
11:18:53 -!- hagb4rd has quit (Ping timeout: 245 seconds).
11:35:33 -!- azaq23 has quit (Ping timeout: 245 seconds).
11:56:34 -!- KingOfKarlsruhe has quit (Quit: ChatZilla 0.9.90 [Firefox 19.0/20130215130331]).
12:01:48 -!- sebbu has quit (Ping timeout: 245 seconds).
12:05:37 -!- sebbu has joined.
12:05:37 -!- sebbu has quit (Changing host).
12:05:37 -!- sebbu has joined.
12:20:26 -!- Phantom_Hoover has joined.
12:31:48 -!- sebbu has quit (Ping timeout: 245 seconds).
12:35:40 -!- sebbu has joined.
12:35:40 -!- sebbu has quit (Changing host).
12:35:40 -!- sebbu has joined.
12:38:05 -!- augur has quit (Remote host closed the connection).
12:44:43 -!- sebbu has quit (Ping timeout: 245 seconds).
12:48:03 -!- DH____ has quit (Read error: Connection reset by peer).
13:24:36 -!- TeruFSX has joined.
13:24:47 -!- carado_ has joined.
13:26:11 -!- Taneb has joined.
13:26:36 -!- augur has joined.
13:29:49 -!- carado_ has quit (Ping timeout: 246 seconds).
13:34:20 -!- Taneb has quit (Ping timeout: 240 seconds).
13:34:43 -!- TeruFSX has quit (Ping timeout: 245 seconds).
13:35:26 -!- nooodl has joined.
13:49:56 <Sgeo> `resume
13:49:59 <HackEgo> rsum
13:57:10 <Phantom_Hoover> i love the tiny glimpse that command gives into Sgeo's life
14:04:36 -!- nooga has quit (Ping timeout: 248 seconds).
14:06:44 -!- boily has joined.
14:06:51 -!- metasepia has joined.
14:07:00 -!- hagb4rd2 has quit (Ping timeout: 248 seconds).
14:13:04 -!- Taneb has joined.
14:33:19 -!- DHeadshot has joined.
14:35:57 -!- Arc_Koen has joined.
14:42:25 -!- sebbu has joined.
14:42:25 -!- sebbu has quit (Changing host).
14:42:25 -!- sebbu has joined.
14:46:55 -!- sebbu2 has joined.
14:47:28 -!- lambdabot has joined.
14:50:20 -!- sebbu has quit (Ping timeout: 276 seconds).
14:54:10 -!- carado has quit (Ping timeout: 246 seconds).
14:57:03 -!- nollapiste has joined.
15:03:52 -!- sebbu has joined.
15:04:08 -!- sebbu has quit (Changing host).
15:04:08 -!- sebbu has joined.
15:04:36 -!- GOMADWarrior has joined.
15:06:49 -!- sebbu2 has quit (Ping timeout: 256 seconds).
15:08:39 -!- sebbu2 has joined.
15:08:39 -!- sebbu2 has quit (Changing host).
15:08:39 -!- sebbu2 has joined.
15:09:50 -!- sebbu has quit (Ping timeout: 276 seconds).
15:12:03 -!- sebbu has joined.
15:12:03 -!- sebbu has quit (Changing host).
15:12:03 -!- sebbu has joined.
15:13:24 -!- sebbu3 has joined.
15:13:28 -!- sebbu2 has quit (Ping timeout: 245 seconds).
15:13:39 -!- sebbu3 has quit (Changing host).
15:13:39 -!- sebbu3 has joined.
15:16:23 -!- sebbu has quit (Ping timeout: 245 seconds).
15:21:36 <Sgeo> That's it. I am fucking DONE with trying to get people to fix their password security
15:21:46 <Sgeo> The admin made changes. Those changes are HORRIBLE>
15:22:13 <Taneb> 'everyone's password must be "password", so you don't forget it'
15:23:00 <Sgeo> Ok, not that bad
15:23:11 <Sgeo> But it's a not-well-thought-out password reset
15:23:17 <Sgeo> Which obliterates the original password
15:24:44 <Taneb> I find two-columned text oddly hard to read
15:25:24 <Sgeo> wehuiofpawuoehfaeruitr
15:25:31 <Sgeo> I should stop helping people
15:25:45 <Sgeo> People do worse things than they were doing originally when they try to take my advice
15:26:32 <Taneb> Or maybe you're just not helping people enough
15:31:51 <Sgeo> The website in question has gone from "There's a theoretical weakness that would make your users' lives worse if the website was hacked into." to "Now there's an actual vulnerability."
15:32:46 <Taneb> Tell the admin this and give him specific recommendations
15:33:22 <Sgeo> Told the admin, but I should probably actually recommend something, rather than describing the problem
15:33:29 <Sgeo> Only good recommendation is to use a library
15:34:59 -!- AnotherTest has joined.
15:38:53 -!- sebbu3 has quit (Ping timeout: 245 seconds).
15:38:57 -!- sebbu has joined.
15:39:17 -!- sebbu has quit (Changing host).
15:39:17 -!- sebbu has joined.
15:40:54 -!- quintopia has quit (Ping timeout: 264 seconds).
15:41:02 -!- quintopia has joined.
15:44:38 -!- GOMADWarrior has quit (*.net *.split).
15:44:39 -!- jix has quit (*.net *.split).
15:44:39 -!- ion has quit (*.net *.split).
15:44:39 -!- iamcal_ has quit (*.net *.split).
15:45:32 -!- iamcal_ has joined.
15:45:40 -!- GOMADWarrior has joined.
15:45:40 -!- jix has joined.
15:45:40 -!- ion has joined.
16:12:07 -!- Taneb has quit (Ping timeout: 260 seconds).
16:32:59 -!- Taneb has joined.
16:33:38 -!- devin_ has joined.
16:33:52 -!- devin_ has left.
17:08:32 -!- nooga has joined.
17:10:04 -!- sebbu has quit (Ping timeout: 272 seconds).
17:11:30 -!- ared_ has joined.
17:12:11 -!- sebbu has joined.
17:14:28 -!- nollapiste has quit (Ping timeout: 248 seconds).
17:26:25 <impomatic> Sgeo: Creatures as in the Steve Grand game?
17:31:23 -!- nooodl has quit (Ping timeout: 245 seconds).
17:35:36 <Sgeo> impomatic, yes
17:36:35 * impomatic tinkers with that occasionally :-) I only have Creatures 2 PC and the Gameboy version though.
17:36:45 <impomatic> I'm still looking for a Norn doll!
17:37:35 <Sgeo> impomatic, well, Docking Station is free!
17:37:38 <Sgeo> :D
17:39:40 -!- Bike has joined.
17:39:56 -!- FreeFull has joined.
17:53:08 -!- DHeadshot has quit (Quit: Bye).
17:55:45 -!- augur has quit (Remote host closed the connection).
17:58:47 -!- KingOfKarlsruhe has joined.
18:00:42 -!- ared_ has quit (Read error: Connection reset by peer).
18:01:29 -!- ared__ has joined.
18:04:03 -!- ared_ has joined.
18:06:36 -!- ared__ has quit (Ping timeout: 256 seconds).
18:07:48 -!- nollapiste has joined.
18:08:25 -!- ared_ has quit (Ping timeout: 244 seconds).
18:09:29 <elliott> do i have lambdabot messages
18:09:30 <lambdabot> elliott: You have 1 new message. '/msg lambdabot @messages' to read it.
18:09:45 <elliott> @tell Phantom_Hoover yes
18:09:45 <lambdabot> Consider it noted.
18:10:54 <boily> long live vietnamese cuisine.
18:11:49 -!- nollapiste has quit (Max SendQ exceeded).
18:13:46 -!- nollapiste has joined.
18:14:43 -!- epicmonkey has quit (Ping timeout: 245 seconds).
18:20:21 -!- ared__ has joined.
18:22:16 -!- nollapiste has quit (Ping timeout: 272 seconds).
18:22:38 -!- ared__ has quit (Max SendQ exceeded).
18:24:01 -!- nollapiste has joined.
18:28:49 -!- nollapiste has quit (Max SendQ exceeded).
18:33:37 -!- Bike has quit (Ping timeout: 246 seconds).
18:34:05 -!- Bike has joined.
18:41:52 -!- Bike_ has joined.
18:43:33 -!- Bike has quit (Ping timeout: 244 seconds).
18:52:50 -!- Bike_ has changed nick to Bike.
18:55:56 * Sgeo nostalgias at http://dl.dropbox.com/u/16240872/Pool2.JPG
19:07:28 <Phantom_Hoover> it's like shitty minecraft
19:07:28 <lambdabot> Phantom_Hoover: You have 1 new message. '/msg lambdabot @messages' to read it.
19:07:34 <Phantom_Hoover> @messages
19:07:34 <lambdabot> elliott said 57m 49s ago: yes
19:11:08 -!- nooodl has joined.
19:12:04 -!- FreeFull has quit (Ping timeout: 248 seconds).
19:12:36 -!- Taneb has quit (Ping timeout: 248 seconds).
19:13:13 -!- FreeFull has joined.
19:15:01 -!- monqy has joined.
19:25:32 -!- Nisstyre has quit (Quit: Leaving).
19:51:43 -!- ogrom has joined.
19:52:48 -!- AnotherTest has quit (Quit: Leaving.).
19:56:27 -!- carado has joined.
20:19:04 -!- KingOfKarlsruhe has quit (Quit: ChatZilla 0.9.90 [Firefox 19.0/20130215130331]).
20:25:57 -!- Taneb has joined.
20:27:09 -!- oerjan has joined.
20:27:24 <oerjan> :t asin
20:27:27 <lambdabot> Floating a => a -> a
20:27:57 <oerjan> > [asin, acos] <*> [-1, 0, 1]
20:27:59 <lambdabot> [-1.5707963267948966,0.0,1.5707963267948966,3.141592653589793,1.57079632679...
20:28:06 <oerjan> > [asin, acos] <*> [-1, 0, 1] :: [Float]
20:28:09 <lambdabot> [-1.5707964,0.0,1.5707964,3.1415927,1.5707964,0.0]
20:34:04 <nooga> http://cl.ly/image/170J1K1L280j I suck at DF, therefore I started hacking it
20:35:00 <nooga> WITH LISP (DIALECT) !
20:35:23 <nooga> so that I can nerd while I nerd
20:36:06 -!- augur has joined.
20:37:30 -!- augur_ has joined.
20:37:36 -!- augur has quit (Remote host closed the connection).
20:40:14 <boily> ~duck dwarf fortress
20:40:15 <metasepia> Slaves to Armok: God of Blood Chapter II: Dwarf Fortress is a part roguelike, part city-building freeware video game set in a procedurally-generated high fantasy universe in which the player takes control of a group of dwarves and attempts to construct a successful and wealthy mountainhome.
20:40:49 <FreeFull> I'm looking at OMeta
20:42:14 -!- sebbu has quit (Ping timeout: 272 seconds).
20:42:22 <nooga> yeah
20:42:27 <nooga> it's fucking hard
20:43:50 <boily> ~duck ometa
20:43:51 <metasepia> --- No relevant information
20:43:57 <boily> ~duck fucking hard
20:43:57 <metasepia> --- No relevant information
20:45:22 <nooga> uh
20:45:40 <nooga> FreeFull: i just tried the js version and I don't understand a thing
20:46:31 -!- augur_ has quit (Ping timeout: 244 seconds).
20:46:56 <FreeFull> nooga: I'm reading the dissertation
20:47:39 -!- augur has joined.
20:51:02 -!- sebbu has joined.
20:51:03 -!- sebbu has quit (Changing host).
20:51:03 -!- sebbu has joined.
20:53:21 <Sgeo> `olist
20:53:25 <HackEgo> olist: shachaf oerjan Sgeo
20:55:52 <oerjan> > [x-asin(sin x) | x <- [0 :: Float , 0.1 ..]]
20:55:54 <lambdabot> [0.0,-7.450581e-9,0.0,0.0,0.0,0.0,0.0,-5.9604645e-8,5.9604645e-8,5.9604645e...
20:56:11 <oerjan> > [x-asin(sin x) | x <- [0 :: Float , 0.5 ..]]
20:56:13 <lambdabot> [0.0,0.0,0.0,-1.1920929e-7,0.8584074,1.8584074,2.8584073,3.8584073,4.858407...
20:57:31 <impomatic> Hmmm... Core War with time travelling processes http://perso.ens-lyon.fr/martin.bodin/timecorewar.html.en
20:57:40 <oerjan> Sgeo: thx
20:57:45 <Sgeo> yw
20:58:46 <oerjan> > [x-asin(sin x) | x <- [0 :: Float , pi/4 ..]]
20:58:48 <lambdabot> [0.0,-5.9604645e-8,0.0,1.5707964,3.1415923,4.7123885,6.283185,6.283185,6.28...
20:58:50 -!- epicmonkey has joined.
21:06:11 <oerjan> oh that won't be discontinuous, but more like a sawtooth kind of thing
21:08:04 <shachaf> Sgeo: Thanks!
21:08:14 <Sgeo> yw
21:25:18 -!- epicmonkey has quit (Ping timeout: 272 seconds).
21:25:56 -!- nooodl has quit (Ping timeout: 248 seconds).
21:26:28 -!- nooodl has joined.
21:32:19 <oerjan> hm seems mezzacotta also has a lovecraft style
21:32:34 <oerjan> fungot: are you secretly mezzacotta's scriptwriter?
21:32:34 <fungot> oerjan: that would make you... perhaps if you are using. the executables it created; it was written in pl/ 1, 1
21:32:54 <shachaf> ^style lovecraft
21:32:55 <fungot> Selected style: lovecraft (H. P. Lovecraft's writings)
21:33:17 <oerjan> fungot: explain hyperbolic geometry please
21:33:19 * boily pokes fungot
21:33:19 <fungot> oerjan: it got wuss araound civil war time, when my friend had attained a size and muscular power not usually found in infants under a full year of age. his motions and even his vocal sounds showed a restraint and deliberateness highly peculiar in an infant, and no previous grave had been disturbed not many months before. on the butcher's shop of the cannibal monster committed from arkham sixteen years before; and upon being re
21:34:23 <boily> hm. looks like fungot doesn't like being poked.
21:34:24 <fungot> boily: the next january gossips were mildly interested in the antiquities he knew so well. he had a characteristic way of ringing the doorbell or sounding the knocker that grew to be a rudimentary eye; whilst in lieu of stairs. the tread was heavy, deliberate tramping in the cottage, and olney heard the windows opening, first on small animals and then on human bodies shockingly obtained. there was nothing anywhere but blackness
21:35:11 <oerjan> maybe it's connected to that heisenbug triggered when fungot produces very long lines
21:35:12 <fungot> koi{s: " the other gods, who are prone to fnord the details, and far below him on his wedding night." upon that night the wanderers left ulthar, and were impressed by a curious group of half-castes whose frequent meetings and night trips to the woods in a vague fashion; and i felt deeply moved despite my rational beliefs. wilcox, i was on the evening of july fnord, when the intrusion of a single, loosely knit nation or fnord, n
21:36:43 * boily pokes fungot without knowing the poke's velocity
21:36:44 <fungot> boily: as the men passed the site of his camp. our apprehensions were over what we might find, or fail to find, and proceeded to follow their usual course. with torch flashing intermittently to save the rejected specimen, and would admit no one. i went to fnord for there is no sharp distinction betwixt the real and the unreal; that all things appear as they do. i paint in the cellar laboratory when i learned that i was calmer,
21:36:51 <boily> oerjan: indeed.
21:37:32 <oerjan> i _think_ it has the effect of garbling the next line from the channel
21:37:42 <oerjan> and yours was right after mine
21:38:11 <boily> garbling with fungot can be quite the problem to debug.
21:38:12 <fungot> boily: ' and is this what asks so hotly for a reckoning? suppose a man does find it now and then in public assemblies, and who find their greatest consolation in the fawning and fnord attachments of a fnord laundry worker named fnord wolejko had completely vanished from sight. the weather kept fair, and for the searchlight. we often cast a beam of light down the stygian hold. for about ten feet, he saw the hills and converse wi
21:38:15 <oerjan> fungot
21:38:17 <fungot> oerjan: " that is ultra-violet." he looked curiously at me for a sterner and more lingering end, i saw no living thing nor any light save that of the previous summer, while the slant-eyed merchant was an agent of the darker powers, eager to aid our memory by telling us how we came there, and will be fnord at as obvious impostures, notwithstanding a general resemblance to the vocal organs of man, and had been diligently instruct
21:38:20 <oerjan> fungot
21:38:20 <fungot> oerjan: " el coyote el fnord el fnord to?" i spoke with the leaders in the soft glow of late afternoon that i first felt the terrible fatigue and short breath which our race through the thin plateau air had fnord but the paintings and rough inscriptions on the peeling walls of most of his tales, being apparently more interested in the ancient house for hundreds of years, but which he would have shewn what he did.
21:38:29 <oerjan> sadly not very fungot
21:38:30 <fungot> oerjan: it was young danforth who drew our notice to the curious.' when i read in these books or saw in these fields and groves was exactly what we thought we had heard since coming on the camp horror it would have been inconceivable ages ago, when the wind was friendly or adverse, it would appear; though no doubt the meteor had poisoned the soil, but it will have no powers of earth's friendly cats. he knew but a few words of e
21:38:41 <oerjan> doesn't seem to trigger agin
21:38:43 <oerjan> *again
21:39:20 <oerjan> well we only notice it if it garbles either the "fungot" or the nick
21:39:20 <fungot> oerjan: what had happened. he did not delay the operation. nothing was emitted, and all the loathsome fnord turned from their tasks to stare seaward and cluster round the waterfront. certainly, the emotional cataclysm or revelation which could produce so radical an fnord must be much more considerable than is generally imagined. cabbalism itself, so that the earths internal heat could fnord its habitability for an indefinite pe
21:39:23 <boily> I should try to avoid quantum pokes considering the present stellar alignment.
21:40:10 <oerjan> are you saying that the stars are right
21:41:03 <olsner> fungot: tell me more about el coyote el fnord
21:41:03 <fungot> olsner: gilman sat in a row six noble forms with the aspect of that city, and the very presence of one in the afternoon i spent much time tracing the walls and bygone streets, and can't tell you, it is the fnord of
21:43:09 -!- carado_ has joined.
21:43:16 -!- carado_ has quit (Client Quit).
21:44:44 <boily> oerjan: stars are never right. order is disorder. all hail eris!
21:45:43 <oerjan> i'm not sure whether you are arguing for or against the great old ones returning there
21:46:03 <oerjan> maybe that's part of the madness.
21:47:02 <boily> I have sushi planned tonight. the great old ones, I eat them.
21:47:32 <oerjan> i thought sushi was more like the deep ones
21:48:10 <olsner> I think sushi are the ones in slices with rice under them
21:49:10 <Fiora> there's many types of sushi, the defining factor is the vinegar'd sushi rice
21:49:50 <elliott> isn't vinegared a word to start with
21:50:31 <Fiora> the rice topped with sashimi (or egg/etc) and wrapped in nori are nigirizushi
21:50:36 <oerjan> let's ask beauregard
21:50:38 <Fiora> the rolls are makizushi
21:59:06 <FreeFull> :t (3 :+ 3)
21:59:07 <lambdabot> Num a => Complex a
21:59:09 <FreeFull> :t (3 :+ 3) + 3
21:59:11 <lambdabot> RealFloat a => Complex a
21:59:12 <pikhq> Yeah, "sushi" is literally any dish made with sushi rice.
21:59:32 <FreeFull> Why does it become a RealFloat rather than Num if I add an integer?
21:59:50 <FreeFull> Actually, adding anything seems to do that
21:59:56 <FreeFull> :t (3 :+ 3) + (3 :+ 0)
21:59:58 <lambdabot> RealFloat a => Complex a
22:00:30 <elliott> because of the Complex instance for Num
22:00:35 <elliott> that's not adding an integer, btw
22:00:40 <Sgeo> I have a telephone interview with a company that
22:00:41 <Sgeo> "We provide deal execution software, institutional investor data, and market analytics to almost every major investment bank in the world."
22:00:55 <pikhq> :+ is the constructor for Complex, isn't it?
22:01:04 <Sgeo> :t (:+)
22:01:06 <Sgeo> iirc yes
22:01:06 <lambdabot> a -> a -> Complex a
22:01:08 <FreeFull> Ah, the Num instance for Complex has a RealFloat constraint
22:01:24 -!- Taneb has quit (Ping timeout: 248 seconds).
22:01:44 <FreeFull> And the type constructor doesn't really enforce anything
22:01:51 <FreeFull> > 'a' :+ 'b'
22:01:52 <lambdabot> 'a' :+ 'b'
22:02:52 <pikhq> ... Huh.
22:03:06 <pikhq> > "This is a" :+ "strange Complex value."
22:03:08 <lambdabot> "This is a" :+ "strange Complex value."
22:06:08 <Sgeo> > 1 :+ 2 + 3 :+ 4
22:06:10 <lambdabot> Precedence parsing error
22:06:10 <lambdabot> cannot mix `Data.Complex.:+' [infix 6] and `G...
22:07:03 <Sgeo> Anyone ever abuse Identity monad to do <$> <*> ?
22:07:15 <elliott> ?
22:07:28 <Sgeo> Should be possible, right?
22:07:49 <elliott> not sure I understand what you mean
22:07:52 <Sgeo> > runIdentity $ (,,) <$> 1 <*> 2 <*> 3
22:07:54 <lambdabot> No instances for (GHC.Num.Num (Data.Functor.Identity.Identity a2),
22:07:54 <lambdabot> ...
22:08:09 <Sgeo> > runIdentity $ (,,) <$> pure 1 <*> pure 2 <*> pure 3
22:08:10 <lambdabot> (1,2,3)
22:08:18 <Sgeo> Ok, that's hideous
22:08:22 <elliott> not sure what that buys you over saying (1,2,3)?
22:08:22 <boily> anti-golfing.
22:08:28 <olsner> obviously you can do anything with the Identity monad - the big question is why you'd want to
22:08:30 <elliott> or in general f <$> pure x <*> pure y --> f x y
22:08:49 <olsner> pure (f x y)?
22:08:51 <Sgeo> elliott, save parens, like a $ with more than one argument
22:09:41 <boily> identity is useful as a foundation block for monad stacks.
22:09:44 <elliott> Sgeo: but you need to say pure (a b c).
22:09:55 <elliott> infixl ($) works for this purpose -- f $ x $ y -- unfortunately it is not in the Haskell standard
22:12:28 -!- monqy has quit (Quit: hello).
22:18:39 <oerjan> > f `id` x `id` "shocking" :: Expr
22:18:41 <lambdabot> f x "shocking"
22:22:26 <Sgeo> :t f
22:22:27 <lambdabot> FromExpr a => a
22:26:36 <elliott> oerjan: gross
22:27:10 -!- boily has quit (Quit: Poulet!).
22:27:13 -!- metasepia has quit (Remote host closed the connection).
22:30:41 <oerjan> elliott: btw do you speak from experience when telling not to give edwardk your github account name.
22:31:18 <shachaf> o, cruel, bitter experience
22:31:19 <olsner> what happens when you do that?
22:31:45 <elliott> oerjan: that joke doesn't quite make sense if you are not in -lens but yes :P
22:32:01 <oerjan> olsner: i _assume_ edwardk then forks all your projects to use supergeneral CT concepts
22:32:05 <elliott> no
22:32:15 <elliott> edwardk's response to bug reports and feature requests generally involves giving you commit access and telling you to go for it
22:32:29 <elliott> it's amazing how effective it is
22:32:30 <oerjan> aha
22:32:49 <oerjan> no wonder lens is approaching singularity
22:33:24 <oerjan> although the list of modules loaded by ghci when i use import Control.Lens in a program is fearsome.
22:33:37 <oerjan> i assume i could reduce it by importing submodules
22:34:03 <oerjan> *-although
22:36:42 <olsner> there should be a nice way to make it so that if you have lens and some other package installed at the same time you'll get the lens magic, but so that neither library has to depend on the other
22:37:28 <elliott> olsner: you can already derive lenses for types you imported from elsewhere
22:37:53 <oerjan> olsner: yes, i think the cabal system needs a way to do optional dependencies
22:38:09 <oerjan> in general, not just for lens
22:38:14 <olsner> I think optional dependencies normally lead to a different kind of hell though
22:38:49 <olsner> e.g. where you have to reconfigure every installed package because you realize you want lens support
22:38:50 <elliott> I think I view optional dependencies as an antipattern.
22:39:38 <oerjan> well, optional modules which can have additional dependencies, then
22:40:41 <FreeFull> > f x "shocking"
22:40:43 <lambdabot> Ambiguous type variable `a0' in the constraints:
22:40:43 <lambdabot> (GHC.Show.Show a0)
22:40:43 <lambdabot> ...
22:40:55 <oerjan> FreeFull: you need the :: Expr
22:41:12 <oerjan> f is too overloaded to resolve unambiguously otherwise
22:42:13 <FreeFull> :t f
22:42:14 <lambdabot> FromExpr a => a
22:42:23 <FreeFull> > f x "shocking" :: Expr
22:42:25 <lambdabot> f x "shocking"
22:42:39 <olsner> hmm, can you write a generic function that is whatever djinn would generate for the type you're trying to use it as?
22:43:06 <oerjan> basically if you have a package that gives a type class and a package which gives an unrelated data type which could be an instance of that type class, it _should_ be possible to include the instance in one of the packages without forcing them to depend on each other
22:44:04 <oerjan> and there needs to be a way to make that not have the overhead of an orphan instance, too :P
22:44:56 <olsner> isn't the biggest overhead with orphan instances that you have to participate in the regularly occuring debate on what to do with them?
22:45:04 <oerjan> MAYBE
22:45:12 * oerjan doesn't usually participate in that
22:45:49 <olsner> me neither, I barely even haskell in the first place
22:46:29 <elliott> oerjan: well unfortunately open world assumption makes that fundamentally unsound
22:47:11 <oerjan> elliott: with current haskell, yes. i'm imagining an extension that allows you to do it anyhow.
22:47:19 <oerjan> _without_ violating open world.
22:49:09 <oerjan> basically, either a module defining either the class or one of the involved types would have to contain a declaration where to look for the rest
22:49:21 <oerjan> *-either
22:50:31 <elliott> i see
22:51:00 <olsner> maybe if you write "instance Monad in Data.Pony.MonadInstance", anything trying to find an instance of Monad for ponies will import the MonadInstance module
22:53:41 <olsner> but let's say Monad is a weird type class from an obscure package that few people want to use, and that this line occurs in one of the pony modules
22:56:13 <oerjan> hm i can see a possible problem of this leaking instances _other_ than the one you are trying to provide
22:56:22 <olsner> the other direction might need something like "instance Monad for Data.Pony in Data.Pony.MonadInstance"? then the compiler knows not to do anything unless you're using types from Data.Pony, even if the Monad library contains a thousand of those instance-can-be-found-in directives
22:57:59 <olsner> though I suspect something like this may end up trying to import every module that exists, exploding the compiler
23:00:36 -!- doesthiswork has joined.
23:01:09 <oerjan> ...MUST ...RESIST ...TEMPTATION
23:01:15 <olsner> oerjan: is leaking instances a problem though?
23:02:23 <olsner> also, what is this temptation you must resist?
23:02:36 <Bike> the temptation to import every pony at once
23:03:10 <oerjan> olsner: the problem is that if those instances don't have similar declarations, you destroy the efficiency gain of ghc not having to consider the first ones orphans. well maybe.
23:03:25 <oerjan> no, the temptation to say "no it doesn't". hth.
23:04:29 <oerjan> hm i guess you wouldn't, actually
23:05:07 <oerjan> as in, it might not be a bigger problem than without the declarations, anyway
23:05:29 <oerjan> oh hm
23:06:02 <oerjan> the problem is if combining this with the cross-package optional import stuff
23:07:02 <oerjan> because you don't want things to change in code that doesn't mention stuff in a package dependent on whether that package is installed or not
23:07:21 <oerjan> it would be like orphan instances magnified
23:09:43 <oerjan> that is, orphan instances would become _completely_ unmaintainable if they could leak across optional dependencies.
23:09:50 <oerjan> i think.
23:11:59 <olsner> hmm, I think it should only affect any code that imports both pony and monad, and since everyone shares the same orphan instance it should be fine?
23:12:16 <olsner> or something, I'm not entirely sure what the "problem" is in the first place
23:23:45 <oerjan> olsner: oh hm i guess your solution does not involve any extra module...
23:25:05 <oerjan> wait it does
23:25:49 <oerjan> olsner: the problem is if Data.Pony.MonadInstance happens to either directly or indirectly export any orphan instances _other_ than the Monad Pony one.
23:26:03 <oerjan> then those would leak
23:26:42 <oerjan> hm still not sure this is worse than the current situation
23:33:53 -!- GOMADWarrior has quit (Ping timeout: 252 seconds).
23:34:01 -!- Nisstyre-laptop has joined.
←2013-02-28 2013-03-01 2013-03-02→ ↑2013 ↑all