←2012-04-07 2012-04-08 2012-04-09→ ↑2012 ↑all
00:00:21 <Sgeo> http://www.newser.com/story/143556/phyllis-schlafly-warns-men-dont-date-feminists.html
00:00:48 <Sgeo> Huh. Haven't heard of this woman before. (But did note the name and according to the evil librul Wikipedia, Andy's her son)
00:02:19 <zzo38> Now I put [Node] at the end
00:06:34 <zzo38> Is this a proper monoid? mappend (Drawing n1 f1 w1 h1 d1) (Drawing n1 f2 w2 h2 d2) = Drawing (n1 ++ n2) g (max w1 w2) (max h1 h2) (max d1 d2) where { g ct res nl = f1 ct res (take (length n1) nl) ++ f2 ct res (drop (length n1) nl); }; If not, is it proper if the constructor is hidden?
00:08:21 <zzo38> data Drawing = Drawing [Node] ((Coordinates -> Coordinates) -> Dimen -> [Node] -> PageObjects) Dimen Dimen Dimen;
00:11:49 <shachaf> hi hackagebot
00:11:53 <shachaf> hackagebot
00:11:57 <shachaf> hi monqy
00:12:02 <shachaf> `? monqy
00:12:09 <HackEgo> hi monqy
00:12:28 <shachaf> `run rm -rf *
00:12:33 <HackEgo> No output.
00:12:43 <shachaf> `? monqy
00:12:46 <HackEgo> hi monqy
00:19:02 <monqy> hi shachaf
00:19:22 <shachaf> hi
00:19:29 <shachaf> `run rm -rf wisdom/*
00:19:31 <HackEgo> No output.
00:19:32 <shachaf> `? monqy
00:19:35 <HackEgo> monqy? ¯\(°_o)/¯
00:19:42 <shachaf> `run rm -rf ./*
00:19:44 <HackEgo> No output.
00:19:44 <shachaf> `run rm -rf /
00:19:47 <HackEgo> rm: it is dangerous to operate recursively on `/' \ rm: use --no-preserve-root to override this failsafe
00:19:48 <shachaf> `? monqy
00:19:50 <HackEgo> monqy? ¯\(°_o)/¯
00:19:58 <shachaf> `run rm --no-preserve-root -rf /
00:20:01 <HackEgo> rm: cannot remove `/sys/fs': Permission denied \ rm: cannot remove `/sys/devices/platform/uevent': Permission denied \ rm: cannot remove `/sys/devices/platform/alarmtimer/uevent': Permission denied \ rm: cannot remove `/sys/devices/platform/alarmtimer/modalias': Permission denied \ rm: cannot remove `/sys/devices/platform/alarmtimer/subsystem': Permission denied \ rm: cannot remove `/sys/devices/platform/alarmtimer/driver':
00:20:11 <shachaf> `run rm --no-preserve-root -rf / 2>/dev/null
00:20:44 <HackEgo> No output.
00:20:48 <shachaf> `? monqy
00:20:51 <HackEgo> monqy? ¯\(°_o)/¯
00:20:52 <monqy> `ls /
00:20:55 <HackEgo> bin \ dev \ etc \ hackenv \ home \ lib \ lib64 \ opt \ proc \ sbin \ sys \ tmp \ usr \ var
00:20:57 <shachaf> `rm -rf bin/*
00:21:00 <HackEgo> rm: invalid option -- ' ' \ Try `rm --help' for more information.
00:21:12 <shachaf> `run rm -rf bin/*
00:21:15 <HackEgo> No output.
00:21:17 <shachaf> `ls bin
00:21:20 <HackEgo> ls: cannot access bin: No such file or directory
00:21:24 <shachaf> `? monqy
00:21:27 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: ?: not found
00:21:35 <shachaf> `run monqy run
00:21:38 <HackEgo> bash: monqy: command not found
00:22:56 <shachaf> `run which run
00:22:59 <HackEgo> No output.
00:23:02 <shachaf> `run type -a ls
00:23:04 <HackEgo> ls is /bin/ls
00:23:08 <shachaf> `run type -a revert
00:23:11 <HackEgo> bash: line 0: type: revert: not found
00:23:17 <shachaf> `run type -a ?
00:23:19 <HackEgo> bash: line 0: type: ?: not found
00:23:36 <monqy> what have you done
00:23:40 <olsner> `? welcome
00:23:42 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: ?: not found
00:23:45 <monqy> :'(
00:23:56 <shachaf> hi monqy :'(
00:24:02 <monqy> hi shachaf :'(
00:24:25 <shachaf> hi monqy :)
00:25:09 <shachaf> `revert 0
00:25:11 <HackEgo> Done.
00:25:13 <monqy> oh no
00:25:14 <shachaf> WHAT
00:25:17 <shachaf> `ls
00:25:19 <HackEgo> bin \ canary \ karma \ lib \ paste \ quotes \ share \ wisdom
00:25:20 <shachaf> `run ls
00:25:23 <HackEgo> bin \ canary \ karma \ lib \ paste \ quotes \ share \ wisdom
00:25:24 <shachaf> `cat canary
00:25:28 <HackEgo> No output.
00:25:31 <monqy> `? monqy
00:25:35 <HackEgo> The friendship monqy is an ancient Chinese mystery; ask itidus21 for details.
00:25:43 <monqy> itidus20: details
00:25:45 <shachaf> itidus21 for details?
00:25:56 <shachaf> `revert 1000000
00:25:58 <HackEgo> abort: unknown revision '1000000'!
00:26:40 <itidus20> ahh
00:27:24 <itidus20> humm
00:30:07 <itidus20> MY younger brother used often to find fault with my indomitable ambition. He would say, " The man of letters requires food and clothing only. A modest carriage and a humble hack; some small official post in a quiet place, where he may win golden opinions from the surrounding villagers that should suffice. Why toil and strive for more? "
00:31:04 <itidus20> Later on, when away in the far barbarian south, before the rebellion was stamped out a bog beneath my feet, a fog above my head, so that I have even seen kites drop dead in the water, killed by the poisonous vapours of the place then I used to lie and muse upon the other view of life which my brother had set before my eyes.
00:31:40 <itidus20> And now that, thanks to you my brave comrades, my efforts have been crowned with success, and I have preceded you on the path to glory and honour I have cause both for joy and for shame.
00:38:10 <monqy> itidus20: hi
00:39:09 <itidus20> monqy: hi
00:39:32 <shachaf> monqy: iditus200
00:40:08 <itidus20> i just cut and pasted a random anecdote to fulfill the details today
00:40:17 <monqy> shachaf: hi
00:40:31 <monqy> are those my details
00:40:41 <monqy> good mystery
00:41:26 <shachaf> A+ would ask itidus21 again
00:44:55 <Sgeo> Gems of Chinese Literature
00:45:19 <shachaf> hi Sgeo
00:45:25 <Sgeo> hi shachaf
00:45:39 <monqy> hi Sgeo, shachaf
00:45:46 <itidus20> nods @ sgeo. good finding
00:46:02 <shachaf> hi shachaf
00:46:05 <Sgeo> Hi monqy, monqy
00:46:11 <Sgeo> hi Sgeo
00:46:14 <monqy> hi
00:46:19 <monqy> hi everybody
00:46:21 <monqy> hi nobody
00:46:21 <monqy> hi
00:46:24 <monqy> - a poem
00:46:28 <monqy> - by monqy
00:46:36 <shachaf> - hi monqy
00:46:37 <monqy> - (c) 2012 "monqy"
00:55:50 <Sgeo> https://www.hackthissite.org/news/view/618
01:01:59 <shachaf> Apparently D classes are "instantiated by reference only".
01:08:01 <Sgeo> ?
01:12:16 -!- NihilistDandy has joined.
01:47:30 <shachaf> monqy: Write me another poem!
01:48:31 <monqy> hi shachaf
01:48:32 <monqy> hi
01:48:54 <monqy> hi alone is poetry
01:48:54 <monqy> hi
01:49:02 <monqy> that was also a poem
01:49:04 <monqy> - a poem
01:49:08 <monqy> - by monqy
01:49:18 <monqy> - (c) 2012 "monqy"
01:49:21 <shachaf> this sentence is not a poem
01:49:25 <shachaf> - a poem
01:49:31 <shachaf> - by "monqy"
01:49:47 <shachaf> - hi monqy
01:49:54 <monqy> hi
01:49:57 <monqy> - a poem
01:49:59 <monqy> - a poem
01:50:00 <monqy> - a poem
01:50:03 <monqy> - a poem
01:50:06 <monqy> - a poem
01:50:09 <monqy> - hi monqy
01:50:13 <shachaf> - hi
01:50:50 <shachaf> monqy along is poetry
01:50:59 <shachaf> monqy: are you alone :(
01:51:02 <shachaf> `? monqy
01:51:05 <HackEgo> The friendship monqy is an ancient Chinese mystery; ask itidus21 for details.
01:51:06 <shachaf> `revert 440
01:51:08 <HackEgo> abort: unknown revision '440'!
01:51:12 <shachaf> `revert 220
01:51:14 <HackEgo> abort: unknown revision '220'!
01:51:15 <shachaf> `revert 110
01:51:18 <HackEgo> Done.
01:51:20 <shachaf> `? monqy
01:51:23 <HackEgo> The friendship monqy is an ancient Chinese mystery; ask itidus21 for details.
01:52:08 <monqy> shachaf: im along
01:52:28 <shachaf> gasp
01:52:32 <shachaf> monqy was monqy all along
01:52:45 <monqy> it's true
01:52:50 <monqy> elliotts was just a puppet
01:52:56 <shachaf> hi elliotts
01:53:09 <monqy> who's elliotts im monqy
01:53:12 <monqy> im along
01:53:15 <monqy> "hi"
01:53:16 <monqy> - along
01:53:20 <monqy> -a poem
01:53:22 <monqy> -yes
01:54:19 <shachaf> monqy: Are your poems written in Objective C?
01:54:42 <monqy> I've never written a line of objective c
01:54:53 <monqy> so how could i have written a line of poem
01:55:00 <monqy> so how could i have poem
01:55:04 <monqy> so how could i hi
01:55:10 <shachaf> hi
01:55:11 <monqy> - monqy mystery
01:55:21 <shachaf> good mystery
01:55:24 <shachaf> hi monqy
01:55:27 <monqy> hi shachaf
01:55:39 <shachaf> This is kind of relaxing.
01:55:41 <shachaf> hi
02:02:51 <monqy> hi
02:09:46 <shachaf> monqy++ # hi
02:09:54 <monqy> hi++
02:09:56 <monqy> @karma hi
02:09:56 <lambdabot> hi has a karma of 0
02:10:00 <monqy> hi++
02:10:00 <monqy> @karma hi
02:10:00 <lambdabot> hi has a karma of 1
02:10:30 <shachaf> @karma+ hi
02:10:30 <lambdabot> hi's karma raised to 2.
02:59:41 -!- NihilistDandy has quit.
03:06:58 <quintopia> lambdabot++
03:07:06 <quintopia> @karma lambdabot
03:07:06 <lambdabot> lambdabot has a karma of 6
03:07:11 <quintopia> :D
03:07:28 <quintopia> quintopia+=quintopia++
03:07:36 <quintopia> @karma quintopia
03:07:36 <lambdabot> You have a karma of 0
03:07:53 <quintopia> quintopia--
03:07:55 <quintopia> @karma quintopia
03:07:56 <lambdabot> You have a karma of 0
03:07:59 <quintopia> :/
03:08:11 <shachaf> @karma quintopia+=quintopia
03:08:11 <lambdabot> quintopia+=quintopia has a karma of 1
03:08:25 <quintopia> shachaf: downvote me
03:08:37 <shachaf> hi quintopia
03:08:41 <shachaf> hi monqy
03:08:52 <quintopia> monqy: downvote me
03:09:12 <monqy> hi shachaf, quintopia, monqy
03:09:24 <monqy> quintopia-- # silly requests
03:09:31 <monqy> quintopia-- # he deserves it
03:09:41 <monqy> I did shachaf's downvote too
03:09:42 <quintopia> @karma quintopia
03:09:42 <lambdabot> You have a karma of -2
03:09:45 <quintopia> :D
03:09:51 <shachaf> hi monqy :'(
03:09:57 <monqy> shachaf: you can do my downvote if you'd like
03:09:59 <quintopia> monqy++
03:10:07 <quintopia> shachaf++
03:10:29 <shachaf> monqy: Will I be a monqy when I grow up?
03:10:46 <monqy> you can be anything you want
03:10:52 <monqy> do you want to be a monqy
03:11:01 <shachaf> What if I wanted to be...
03:11:03 <shachaf> an elliotts
03:11:11 <monqy> then you can be an elliotts
03:11:18 <quintopia> you have to clear it with the authorities
03:11:20 * Phantom_Hoover → sleep
03:11:20 <lambdabot> Phantom_Hoover: You have 1 new message. '/msg lambdabot @messages' to read it.
03:11:29 <shachaf> /msg lambdabot @messages
03:11:31 <Phantom_Hoover> oh
03:11:34 <shachaf> <lambdabot> You don't have any new messages.
03:11:37 <Phantom_Hoover> conor mcbride is irish???
03:11:42 <Phantom_Hoover> poor guy
03:11:51 <shachaf> monqy hlep why cant ireed Phantom_Hoover'smessages:(
03:12:02 <Phantom_Hoover> <lambdabot> elliott said 9h 57m 30s ago: Conor McBride is Northern Irish?!?!?!?!?!?!?!
03:12:03 <Phantom_Hoover> here
03:12:05 <Phantom_Hoover> top secret
03:12:08 <monqy> shachaf: maybe youa rent phantom_voelvgrh
03:12:10 <Phantom_Hoover> comuunications
03:12:20 <monqy> shachaf: oops i mispe.tlt hoover
03:12:58 <shachaf> hiphanto
03:13:15 <shachaf> phantom_macaroon
03:13:27 <shachaf> Elephantum_Hoover
03:13:44 <shachaf> Phantom_Hoover: /nick Elephantom_Hoover
03:13:57 <Phantom_Hoover> sorry
03:14:01 <quintopia> elephant? Horton_Hears_A_Hoover
03:14:04 <Phantom_Hoover> i only have room for 2 more characters
03:14:12 -!- Phantom_Hoover has changed nick to Elephantom_Hoove.
03:14:13 <Elephantom_Hoove> see
03:14:20 <Sgeo> Sorry if I've seemed inactive lately
03:14:23 <monqy> Phantom_Hoovers
03:14:23 <Sgeo> Been a bit busy lately
03:14:26 -!- Elephantom_Hoove has changed nick to PH.
03:14:49 <PH> Sgeo, weve all missed your interesting life story
03:14:50 <PH> wait
03:14:54 <PH> didnt you stop posting that
03:14:55 <monqy> I know I have!
03:15:09 <PH> because we all pretended it was boring
03:15:23 <Sgeo> pretended?
03:15:39 <PH> well come on, cringing is fun
03:15:56 -!- tikfreenode has quit (Changing host).
03:15:56 -!- tikfreenode has joined.
03:16:00 -!- tikfreenode has changed nick to Tiktalik.
03:19:16 -!- MDude has changed nick to MSleep.
03:25:04 -!- monqy has quit (Ping timeout: 265 seconds).
03:26:43 -!- monqy has joined.
03:32:08 <shachaf> hi monqy
03:32:12 <monqy> hi shachaf
03:37:41 <PH> "Note: If this video were supposed to be teaching you, I'd probably have to make it boring and say that in one sense of limits, spoiler alert, you actually do approach a circle and a line, solving the apparent paradox by saying that the invariant of length does not hold over infinity. Luckily I am an artist, and this is a Rhapsody, and instead of "learning," you get to actually think, if you like."
03:37:50 <PH> OK, liking Vi Hart is now Banned.
03:38:43 * shachaf was never a fan of those videos.
03:40:10 <monqy> what videos is this
03:40:13 <PH> I was for like a week before I got over myself and she started being a Tau Person.
03:40:41 <shachaf> Tau is good.
03:40:44 <shachaf> hi tau
03:40:47 <monqy> hi shachaf
03:40:48 <shachaf> hi tau, monqy, tau
03:40:51 <monqy> im tau
03:40:54 <monqy> hi monqy, monqy, monqy
03:40:59 <PH> shachaf are
03:41:02 <PH> you a tau person
03:41:39 <shachaf> I was a "pi should be c/r instead of c/d" person before that Tau website was ever made.
03:41:45 <shachaf> Do I get bonus extra credit points for that?
03:42:23 <monqy> im a whatever i dont care person but this does not stop me from being tau
03:42:34 <PH> You get points for "yeah it's a nice thought" but you lose grillions for thinking it actually matters.
03:42:54 <PH> OK guys sorry I will have to punch you if you keep this up.
03:43:18 <kmc> i was self-referentially complaining about hipsters before it was cool
03:43:36 <zzo38> Well, I read about the tau; but I was never "pi should be c/r instead of c/d" because to me, pi doesn't have to do with circles; it is that circles involve pi, instead. But even then, after reading it much I can see how tau work in a lot of mathematics other than circles too
03:45:15 <zzo38> Do you agree that pi doesn't have to do with circles, and that the circumference of a circle is just one of the things that you can use pi?
03:45:25 -!- augur has joined.
03:46:32 <shachaf> kmc: But it's always been cool. :-(
03:46:48 <kmc> pi does have to do with circles, but also a lot of other things
03:46:52 -!- PH has quit (Remote host closed the connection).
03:46:58 <shachaf> zzo38: Sure -- I didn't mean it should *exclusively* be that.
03:47:05 <shachaf> I was trying to think of a good way of saying that.
03:47:11 <shachaf> "pi should be 2pi" doesn't sound quite right.
03:47:11 <kmc> what about h and hbar
03:47:20 <shachaf> It's like saying "we should use base 10"
03:48:00 <shachaf> monqy: do you agree that pie is good
03:48:04 <shachaf> yum
03:48:14 <shachaf> http://www.youtube.com/watch?v=g9Qu3iP3RYA
03:48:54 <zzo38> kmc: Yes, h and hbar is another thing
03:48:57 <monqy> what sort of pie !!
03:49:05 <zzo38> Although h and hbar are for physics
03:49:21 <shachaf> monqy;bubble gumpie
03:50:29 <monqy> whats bubble gumpie
03:50:52 <shachaf> monqy: http://www.youtube.com/watch?v=g9Qu3iP3RYA
03:50:57 <shachaf> yum!
03:51:14 <monqy> ive nevr had a bubble gumpie
03:51:54 <shachaf> have you had bubble magpie
03:52:22 <shachaf> four and twenty magpies baked in a bubble gumpie
03:52:45 <kmc> four and twenty smoke magpies everyday
03:53:22 <monqy> baked magpies, you say?
03:53:32 <monqy> what a magpy tast like
03:53:40 <shachaf> bubble gum
03:57:59 <monqy> :o
04:06:05 -!- Deewiant has quit (Ping timeout: 260 seconds).
04:07:10 <zzo38> I think I have found out the way, there is way to make up a datatype that can make a comonad from any MonadLogic
04:17:51 <zzo38> duplicate (x :| y) = (x :| y) :| (msplit y >>= maybe empty (uncurry pairHT)) where { pairHT h t = pure (h :| t) <|> (msplit t >>= maybe empty (uncurry pairHT)); };
04:23:37 <zzo38> It seem like, LogicT is like a list with able to put (forall r. m r -> m r) stuff in between and at the end
04:27:19 <zzo38> It says it is for backtracking, but it seems like a list to me
04:29:15 <Case2> a bubble gumbie is what you get when you combine "bubble" and "gumbie"
04:30:30 <Case2> just kidding. maybe i should lurk more
04:34:11 -!- Case2 has quit (Quit: Leaving.).
04:36:54 -!- Case1 has joined.
04:42:20 -!- monqy_ has joined.
04:43:01 -!- monqy has quit (Disconnected by services).
04:43:18 -!- monqy_ has changed nick to monqy.
04:44:54 <shachaf> hi monqy_
04:45:02 <monqy> hi shachaf
04:48:26 -!- Case1 has quit (Ping timeout: 252 seconds).
04:59:22 -!- Deewiant has joined.
05:07:27 -!- asiekierka has joined.
05:18:48 -!- Deewiant has quit (Ping timeout: 245 seconds).
05:22:10 -!- Deewiant has joined.
05:26:43 -!- Deewiant has quit (Ping timeout: 245 seconds).
05:26:53 -!- Deewiant has joined.
06:04:45 <Sgeo> Nash is still alive?
06:19:53 -!- NihilistDandy has joined.
06:20:21 <zzo38> Veinor write austere haskell. all of variables are named a, a', a'', a''', etc.
06:32:07 -!- monqy has quit (Ping timeout: 265 seconds).
06:39:31 <zzo38> I made a Graphics.DVI.Drawing module now it can draw a filled triangle on the page
06:40:02 <shachaf> 23:25 < lambdabot> Veinor says: I program in austere haskell. I name all my variables a, a', a'', a''', etc
06:40:15 <shachaf> 23:20 < zzo38> Veinor write austere haskell. all of variables are named a, a', a'', a''', etc.
06:40:20 <shachaf> Coïncidence?
06:40:39 <shachaf> Oh, wait, Veinor was quoting Veinor in #haskell earlier.
06:41:17 <zzo38> shachaf: Probably; lambdabot did write something like that but not quite using those words. Their words were quoted as: "I write austere haskell. all of my variables are named a, a', a'', a''', etc."
06:41:29 <zzo38> So it is a coincidence a little bit but not a lot
06:41:41 <shachaf> Huh.
06:41:46 <zzo38> Mostly it is just copying with modification, twice
06:42:22 <shachaf> @quote Veinor austere
06:42:22 <lambdabot> Veinor says: I write austere haskell. all of my variables are named a, a', a'', a''', etc.
06:42:23 <shachaf> @quote Veinor austere
06:42:23 <lambdabot> Veinor says: I write austere haskell. all of my variables are named a, a', a'', a''', etc.
06:42:23 <shachaf> @quote Veinor austere
06:42:23 <lambdabot> Veinor says: I program in austere haskell. I name all my variables a, a', a'', a''', etc
06:42:51 <zzo38> Why are there two similar quotations but a bit differently?
06:43:33 <zzo38> Is this proper algorithm for drawing a filled triangle? http://sprunge.us/XEKK
06:44:29 -!- monqy has joined.
06:49:57 <zzo38> (It does work; I just want to know if you think is best or not)
07:08:45 -!- cheater__ has quit (Read error: Operation timed out).
07:12:11 <zzo38> I found instruction for a chess variant, where all pieces have power of pawn (except promotion) in addition to their own normal way, and can all be captured en passan when making double-moves non-capturing from second rank
07:28:44 -!- Taneb has joined.
07:28:54 <Taneb> Hello!
07:29:03 <Taneb> Quick, someone give me an easter-related Wikipedia article!
07:29:24 <monqy> egg
07:29:46 <Taneb> Link?
07:29:50 <zzo38> Did you know that? Dwarf planets dwarf stars dwarf dwarf dwarf TV stars.
07:30:01 <monqy> http://en.wikipedia.org/wiki/Egg
07:30:02 <monqy> egg
07:30:03 <shachaf> http://en.wikipedia.org/wiki/Easter
07:30:06 <shachaf> hi monqy
07:30:09 <zzo38> Taneb: Dwarf planets dwarf stars dwarf dwarf dwarf TV stars.
07:30:13 <monqy> hi shachaf
07:30:14 <zzo38> http://en.wikipedia.org/wiki/Easter
07:30:15 <monqy> hi easter
07:30:18 <shachaf> hi egg
07:30:19 <shachaf> hi
07:30:21 <shachaf> egg
07:30:21 <monqy> hi Taneb, zzo38, monqy, shachaf, egg
07:30:23 <shachaf> egg hi
07:30:25 <Taneb> WIKIPEDIA
07:30:26 <Taneb> hi
07:30:26 <monqy> is that a poem
07:30:31 <shachaf> monqy: Is it?
07:30:33 <monqy> hi poem
07:30:38 <shachaf> hi poem
07:30:40 <shachaf> poem hi poem
07:30:42 <zzo38> Here is another one http://en.wikipedia.org/wiki/Computus
07:30:53 <monqy> - monqy, poet and ancient chinese mystery
07:31:08 <shachaf> good mystery
07:31:16 <Taneb> '"Chicken egg" redirects here. For the causality dilemma, see Chicken or the egg.'
07:31:22 <Taneb> Oh Wikipedia, how I have missed you
07:31:35 <monqy> http://en.wikipedia.org/wiki/Egg_(car)
07:31:42 <monqy> http://en.wikipedia.org/wiki/Egg_(chair)
07:31:49 <shachaf> http://en.wikipedia.org/wiki/Car_(egg)
07:31:53 <shachaf> http://en.wikipedia.org/wiki/Chair_(egg)
07:32:04 <Taneb> Sounds like a magic trick
07:32:08 <shachaf> http://en.wikipedia.org/wiki/Hi_(monqy)
07:32:16 <Taneb> Egg, car, egg, chair, car, egg, chair, egg
07:32:20 <monqy> hi
07:32:23 <Taneb> Abra cadabra!
07:32:25 <shachaf> http://en.wikipedia.org/wiki/Monqy_(poet)
07:32:52 <shachaf> hi
07:32:54 <shachaf> my name is monqy
07:32:56 <shachaf> i am a poet
07:33:00 <shachaf> - monqy, a poet
07:33:04 <shachaf> - shachaf
07:33:14 <monqy> - hi
07:33:16 <shachaf> - elliotts
07:33:43 <shachaf> monqy: is 'hi' the best word
07:33:51 <monqy> one of them at least
07:33:59 <shachaf> is 'hi' the best poem
07:34:01 <shachaf> HELP
07:34:08 <monqy> hi is perfection
07:34:14 <monqy> and perfection is hi
07:34:20 <monqy> - poem
07:34:28 <shachaf> hi poem
07:34:35 <shachaf> This is the best game.
07:34:45 <monqy> game?
07:34:49 <monqy> this is the best way of life
07:34:59 <monqy> p.s. hi is also a way of life
07:35:03 <monqy> p.p.s. hi
07:35:09 <shachaf> monqy: did you invent this game monqy hi
07:35:17 <monqy> I may have
07:35:31 <shachaf> monqy: what is better hi or monads
07:35:41 <monqy> hi monads
07:35:47 <monqy> "hi" - monads
07:35:53 <monqy> "hi monqy" - monads
07:35:54 <monqy> "hi" - monads
07:35:57 <monqy> - a poem
07:36:34 <shachaf> monqy: can you teach me monads
07:36:37 <shachaf> monqy: can you teach me hi
07:36:39 <monqy> I can teach you hi
07:36:40 <shachaf> monqy: can you teach me monqy
07:36:42 <shachaf> hi monqy
07:36:43 <shachaf> hi
07:36:47 <shachaf> - monad
07:36:55 <Taneb> data hi = hi
07:37:01 <Taneb> instance Monad hi where
07:37:09 <Taneb> return _ = hi
07:37:20 <monqy> what was that thing I read in the logs
07:37:25 <monqy> > let hi = hi monqy in hi
07:37:26 <lambdabot> Not in scope: `monqy'
07:37:29 <monqy> oh no!
07:37:29 -!- azaq23 has quit (Quit: Leaving.).
07:37:32 <Taneb> hi >>= f = hi
07:37:45 <monqy> > let monqy = hi monqy in monqy
07:37:47 <lambdabot> hi (hi (hi (hi (hi (hi (hi (hi (hi (hi (hi (hi (hi (hi (hi (hi (hi (hi (hi ...
07:37:49 <monqy> yes that was it
07:38:06 <monqy> > hi
07:38:06 <lambdabot> Overlapping instances for GHC.Show.Show
07:38:07 <lambdabot> (Simpl...
07:38:11 <monqy> oh no!
07:38:22 <Taneb> > fix hi
07:38:24 <lambdabot> hi (hi (hi (hi (hi (hi (hi (hi (hi (hi (hi (hi (hi (hi (hi (hi (hi (hi (hi ...
07:38:44 <monqy> ? let taneb = hi taneb in hi taneb
07:38:48 <monqy> > let taneb = hi taneb in hi taneb
07:38:50 <lambdabot> hi (hi (hi (hi (hi (hi (hi (hi (hi (hi (hi (hi (hi (hi (hi (hi (hi (hi (hi ...
07:39:34 <shachaf> > let y = fix in y monqy y
07:39:35 <lambdabot> hi
07:39:39 <shachaf> > let y = fix; why = y in why monqy why
07:39:41 <lambdabot> hi
07:39:46 <shachaf> why monqy why :(
07:40:06 <monqy> hi :(
07:40:29 <shachaf> - a play
07:40:40 <monqy> hi drama
07:41:43 <shachaf> hi moqny
07:41:45 <shachaf> oops
07:41:48 <monqy> oops
07:41:49 <shachaf> mqnony
07:41:54 <shachaf> :(
07:42:05 <shachaf> monnqy
07:42:54 <monqy> monqe
07:42:55 <monqy> monque
07:42:57 <monqy> monqueue
07:43:06 <shachaf> three-card monqe
07:43:24 <shachaf> 00:43 -preflex:#haskell-blah- arrays can't store functions
07:43:30 <shachaf> why arrays :(
07:43:34 <monqy> why :(
07:43:44 <shachaf> 00:43 -preflex:#haskell-blah- arrays can't store monqy
07:43:52 <monqy> arrays :(
07:43:57 <shachaf> - lie
07:44:17 <Taneb> type FunctionArray = Array Int (Int -> Int) ???
07:44:17 <shachaf> > let x = monqy in hi x
07:44:18 <lambdabot> Couldn't match expected type `SimpleReflect.Expr'
07:44:18 <lambdabot> against inferred ...
07:44:36 <shachaf> > let x = monqy in hi x hi
07:44:37 <lambdabot> Couldn't match expected type `SimpleReflect.Expr'
07:44:37 <lambdabot> against inferred ...
07:44:46 <shachaf> @ty monqy
07:44:47 <lambdabot> forall t t1. t -> t1 -> Doc
07:44:48 <shachaf> @ty hi
07:44:48 <lambdabot> Expr -> Expr
07:44:52 <shachaf> > hi monqy
07:44:53 <lambdabot> Couldn't match expected type `SimpleReflect.Expr'
07:44:53 <lambdabot> against inferred ...
07:45:00 <shachaf> > hi (monqy hi hi)
07:45:00 <lambdabot> Couldn't match expected type `SimpleReflect.Expr'
07:45:01 <lambdabot> against inferred ...
07:45:08 <Taneb> :t array (1,3) [(1,(+1)),(2,id),(3,(^3))]
07:45:09 <lambdabot> forall t a. (Num t, Num a, Ix t) => Array t (a -> a)
07:45:16 <shachaf> :-(
07:45:21 -!- cheater__ has joined.
07:45:23 <shachaf> Taneb: We're talking about C.
07:45:32 <Taneb> Aaah
07:45:33 <shachaf> monoqly
07:45:43 <Taneb> I know a little C now
07:46:10 <Taneb> :)
07:46:17 <monqy> can c do this
07:46:18 <monqy> > hi
07:46:19 <lambdabot> Overlapping instances for GHC.Show.Show
07:46:19 <lambdabot> (Simpl...
07:46:22 <monqy> can c do that
07:46:43 <Taneb> main() { hi; }
07:46:57 <shachaf> monqy: ghc = gh c
07:47:07 <shachaf> > let gh = hi in gh c
07:47:09 <lambdabot> hi c
07:47:11 <shachaf> hi
07:47:34 <monqy> void main() { #include<no.c++> }
07:48:57 <shachaf> > let monqy = var "monqy" in hi monqy
07:48:57 <lambdabot> Couldn't match expected type `SimpleReflect.Expr'
07:48:58 <lambdabot> against inferred ...
07:49:06 <shachaf> > let monqy = fun "monqy" c in hi monqy
07:49:07 <lambdabot> hi (monqy c)
07:50:24 <kmc> itt: C
07:50:58 <monqy> itt: hi
07:51:03 <monqy> itt: moqny
07:51:38 <shachaf> > monqy c (monqy do) -- syntax error - a poem
07:51:39 <lambdabot> <no location info>: parse error on input `do'
07:52:11 <shachaf> kmc: You should play monqy's game.
07:56:19 <kmc> which is?
07:56:38 <shachaf> I'm not quite sure.
07:56:46 <shachaf> But it's very relaxing.
07:56:51 <shachaf> It involves the word "hi".
07:57:15 <kmc> my code is a dog's code
07:57:20 <kmc> it could never make a lady weep
07:57:30 <kmc> it could never make a homeless man turn his life around and achieve more then any man has ever achieved before
07:58:08 <shachaf> kmc: I should keep a list of all your "did you know?"s.
07:58:18 <kmc> grep can keep this list for you
07:58:21 <shachaf> And then when there are thousands of items in it I can sell it as a book.
07:58:28 <shachaf> "kmc wisdom"
07:58:33 <kmc> "stuff shachaf may or may not have known" by shachaf
07:58:41 <shachaf> Did you know "keegan" means "prayer" in Japanese?
07:58:46 <kmc> did not know
07:59:59 <shachaf> `? monqy
08:00:01 <monqy> shachaf: will you compile thousands of things I say and sell it as a book
08:00:08 <HackEgo> The friendship monqy is an ancient Chinese mystery; ask itidus21 for details.
08:00:14 <shachaf> monqy: are they all hi
08:00:21 <shachaf> `? kmc
08:00:25 <HackEgo> kmc? ¯\(°_o)/¯
08:00:27 <monqy> shachaf: if hi is all you compile
08:01:02 <shachaf> monqy: I invented a BF derivative where "hi" means "<>+-[],.".
08:01:03 <monqy> shachaf: you could probably make a book out of that but it wouldn't sell very well
08:01:06 <shachaf> And it just chooses the right one.
08:01:12 <monqy> :o
08:01:27 <monqy> how does it know??
08:01:53 <shachaf> by the power of hi
08:01:54 <shachaf> hi
08:02:24 <monqy> hi
08:03:17 <shachaf> bye the power of hi
08:03:19 <shachaf> bye :'(
08:03:29 <monqy> :'(
08:03:54 <shachaf> @quote comment
08:03:54 <lambdabot> blackdog says: I'm not encouraged by the comment "i don't know haskell, but CL is much better", though. it doesn't suggest careful thought and objectivity...
08:03:56 <shachaf> @quote eat.a.comment
08:03:56 <lambdabot> SamB_XP says: I once saw it eat a comment (:[{- Help! -}])
08:04:06 <shachaf> (:[{- hi monqy -}])
08:04:10 <monqy> hi
08:05:08 <shachaf> kmc: I wish the monad tutorial fallacy didn't exist. :-(
08:05:20 <shachaf> It means I have almost no idea how to explain things that are intuitive to me.
08:05:53 <Taneb> I don't think I ever learnt Monads.
08:05:54 <shachaf> Sometimes I do reasonably well at it, when I'm talking to someone with sufficiently high bandwidth to see what they're understanding and what they're not.
08:06:04 <kmc> yeah
08:06:11 <shachaf> But it's annoying.
08:06:17 <kmc> it doesn't mean you can't explain things
08:06:18 <Taneb> I just used them, and one day realised I knew them.
08:06:40 <shachaf> Well, yes, but it means that I can't just explain them the way I understand them and expect it to make sense.
08:06:51 <kmc> i dunno
08:07:12 <kmc> you can't identify some crucial insight you had, and explain only that
08:07:29 <kmc> but if you really understand an idea, you can convey your understanding of it in a careful and deliberate way
08:07:40 <kmc> the fallacy is "Monads are easy, they're just <foo>"
08:07:50 <shachaf> Yes, true.
08:07:52 <kmc> and you see this fallacy in other areas too
08:08:15 <shachaf> Right, I wasn't thinking about monads specifically.
08:08:24 <zzo38> I can explain a monad too but it doesn't necessarily mean other people can understand; you need to understand it by yourself, and probably example is helpful too anyways
08:08:25 <monqy> other areas are like monad tutorials
08:08:27 <kmc> there is the confounding factor that most authors of the bad monad tutorials only just learned monads
08:08:50 <kmc> if they had a deep understanding they might make the analogies fit better, and understand the limitations of their analogies
08:08:58 <shachaf> Yes.
08:09:18 <Taneb> Analogies always break eventually
08:09:26 <shachaf> Of course, I "understand monads" reasonably well (well, whatever that means), and my recommended approach to anyone who wants to "learn monads" is not to do it. :-)
08:09:35 <Taneb> The only thing monads are like is monads, and even then...
08:09:41 <kmc> a good analogy is a stepping stone to greater understanding
08:10:03 <kmc> but this requires knowing where the boundaries of that stepping stone are, so you don't fall in the pond
08:10:07 <kmc> do you like my analogy about analogies
08:10:15 <Taneb> Yes
08:10:17 <zzo38> I explain it by first an endofunctor, and then how return and join fit into this, and then >>= and a few other things
08:10:18 <shachaf> It has brought me to greater understanding.
08:10:22 <Taneb> But it fails if I know how to swim
08:10:26 <zzo38> It is the way making sense to me
08:10:29 <kmc> http://www.penny-arcade.com/comic/2006/03/01
08:10:31 <shachaf> Ah, zzo38.
08:10:35 <Taneb> zzo38, what's an endofunctor?
08:10:56 <monqy> how do I learn endofunctors
08:10:59 <monqy> teach me endofunctors
08:11:19 <shachaf> Today I was telling my sister about derivatives.
08:11:35 <shachaf> The parts she had trouble with and the parts she understood easily were completely not what I expected.
08:11:41 <kmc> *nod*
08:11:43 <kmc> which parts?
08:12:15 <zzo38> Taneb: A functor from a category to itself. But that doesn't help much if you don't know what those things mean. In Haskell, Functor class, has fmap :: (a -> b) -> f a -> f b; means if f is some type, the function from a to b can also be made to apply to data of f as well; the law must hold that they must identity and compose the same thing
08:12:34 <zzo38> shachaf: I also want to ask, which parts?
08:12:42 <Taneb> zzo38, oh, a functor
08:12:43 <shachaf> Hmm, I can't say concretely. Maybe that means I'm just making it up.
08:12:44 <shachaf> I just remember being surprised.
08:13:06 <shachaf> I hate it when I can't answer questions. :-(
08:13:23 <shachaf> Also this was through text, which is a terrible way to explain this sort of thing.
08:13:35 <zzo38> Taneb: Yes; the Functor class in Haskell is for endofunctors on (->)
08:14:13 <Taneb> Ok
08:17:05 <shachaf> I wish people wouldn't confuse "what you're saying is wrong" with "you're a bad person".
08:18:06 <kmc> shachaf, why are you still in #haskell
08:18:10 <kmc> what do you get out of it at this point
08:18:25 <kmc> this is an honest question, not a "you should leave" hint
08:18:25 <shachaf> Hmm.
08:18:30 <shachaf> Sometimes there are good conversations.
08:18:42 <shachaf> I think they probably come up less and less.
08:18:54 <shachaf> But a lot of the original people-who-made-#haskell-good are still in there.
08:19:03 <shachaf> There's probably no less signal, just a lot more noise.
08:19:19 <shachaf> And sometimes you do get to help people with problems and such, which is kind of nice.
08:19:33 <shachaf> And also it would mess up my IRC window numberings if I closed that window.
08:19:53 <shachaf> So, uh, mainly habit?
08:20:53 <shachaf> I think IRC is probably a waste of time, mostly.
08:21:09 <shachaf> I wish I could get just the good parts of IRC.
08:21:40 <Taneb> shachaf, but then you wouldn't get the things which make the good parts worth it
08:22:02 <monqy> my solution is to only pay attention when I'm interested
08:22:11 <monqy> or bored
08:22:51 -!- Tiktalik has quit (Ping timeout: 260 seconds).
08:22:55 <shachaf> kmc: Another thing I don't like is when I explain something to someone and it seems like they understand while I'm doing it, but later it turns out they actually didn't.
08:23:02 <shachaf> Maybe that means I talk too much and should ask more questions.
08:23:57 -!- tikfreenode has joined.
08:26:40 <zzo38> singlePageDocument (Node . toDrawingNode (dotsPerInch 300) $ drawTriangle (0, inches 1) (inches 5, inches 0.5) (inches 3, inches 3)) "example.dvi" -- Output a single page containing a triangle drawn on it to the file called "example.dvi"
08:28:13 <zzo38> It does work, I have tested it.
08:28:26 <zzo38> So don't say it doesn't work and is broken
08:29:17 <shachaf> kmc: What are the good channels on Freenode?
08:30:38 <kmc> i don't know
08:36:32 -!- NihilistDandy has quit.
08:39:03 <zzo38> shachaf: #esoteric
08:39:19 <monqy> that channel is pretty good
08:40:03 <kmc> lulz
08:42:38 -!- Taneb has quit (Ping timeout: 246 seconds).
08:44:35 -!- Taneb has joined.
08:45:45 -!- Ngevd has joined.
08:46:24 -!- Taneb has quit (Read error: Connection reset by peer).
08:48:06 -!- oerjan has joined.
08:50:59 <Sgeo> shachaf, 0
08:51:10 <shachaf> Sgeo, hi monqy
08:51:18 <Sgeo> 0 is the best channel
08:51:50 <monqy> is 0 the channel that does funny stuff to you
08:51:56 <monqy> I'm not going in there
08:52:00 <monqy> I'm not going anywhere near there
08:52:10 -!- cheater_ has joined.
08:52:22 <shachaf> /join 0
08:52:24 <shachaf> :-(
08:52:26 -!- Ngevd has quit (Ping timeout: 246 seconds).
08:52:29 <shachaf> /join #Sgeo
08:52:34 <monqy> did 0 make you sad
08:52:39 <shachaf> monqy: :'(
08:52:43 <monqy> :(
08:52:49 <zzo38> There is no channel 0
08:52:50 <shachaf> JOIN 0
08:52:56 <shachaf> Oops.
08:53:02 <Sgeo> There was a channel #Sgeo at one point apparently
08:53:15 <shachaf> Hah, that's kind of funny.
08:53:18 <monqy> sgeo fanclub
08:53:26 <Sgeo> -ChanServ- Information on #sgeo:
08:53:26 <Sgeo> -ChanServ- Founder : Metatron
08:53:26 <Sgeo> -ChanServ- Registered : Aug 18 21:04:49 2008 (3 years, 33 weeks, 2 days, 11:48:21 ago)
08:53:26 <Sgeo> -ChanServ- Last used : Mar 14 05:50:23 2011 (1 year, 3 weeks, 5 days, 03:02:47 ago)
08:53:26 <Sgeo> -ChanServ- Mode lock : +ntc-slk
08:53:27 <Sgeo> -ChanServ- URL : http://www.sgeo.isgreat.org
08:53:28 <shachaf> I copied-and-pasted the explanation for what /join 0 does from a webpage.
08:53:29 <Sgeo> -ChanServ- Flags : GUARD
08:53:29 <monqy> http://www.sgeo.isgreat.org/
08:53:31 <zzo38> Using JOIN 0 will just disconnect from all channels without disconnecting from the server; so it is like QUIT but remain connected to the server
08:53:31 <Sgeo> -ChanServ- *** End of Info ***
08:53:41 <shachaf> And the explanation had a "/join 0" in it.
08:53:43 <shachaf> So I joined 0
08:53:49 <shachaf> It made me sad. :-(
08:54:01 <shachaf> hi sad
08:55:35 -!- cheater__ has quit (Ping timeout: 246 seconds).
08:58:45 -!- kmc has left.
08:59:08 -!- kmc has joined.
09:01:35 <oerjan> `? monqy
09:01:38 <HackEgo> The friendship monqy is an ancient Chinese mystery; ask itidus21 for details.
09:01:52 <oerjan> shachaf: i feel like kicking you now.
09:02:37 <oerjan> `help
09:02:38 <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/
09:03:23 <oerjan> `revert 193
09:03:26 <HackEgo> Done.
09:03:29 <oerjan> `? monqy
09:03:32 <HackEgo> hi monqy
09:03:36 <monqy> hi HackEgo
09:04:49 <oerjan> `? xy problem
09:04:52 <HackEgo> XY problem is probably not what you are really after. Try asking about your real underlying problem instead.
09:05:34 <kmc> `run uname -a
09:05:37 <HackEgo> Linux umlbox 3.0.8-umlbox #2 Sun Nov 13 21:30:28 UTC 2011 x86_64 GNU/Linux
09:06:03 <kmc> shachaf, http://www.gnu.org/software/autoconf/manual/autoconf.html#Limitations-of-Usual-Tools
09:11:05 <pikhq> kmc: Nice, but wrong. You may rely on POSIX; all else is at least as legacy as classic Mac OS.
09:12:04 <pikhq> (note that anything they happen to document for anything that's, y'know, still in use you should *probably* still work around if it's not inconvenient.)
09:12:14 <pikhq> (SunOS 4 does not count)
09:36:15 <kmc> do the C standards require that a string literal evaluates to a pointer that's always valid and points to that string?
09:45:05 <pikhq> C99 6.4.5 clearly states that a string literal evaluates to an array of static storage duration and length sufficient to contain it.
09:45:37 <pikhq> That is to say, it is essentially a pointer that's always valid and points to that string.
09:46:04 <kmc> coool
09:46:10 <kmc> do you happen to know about C89
09:46:16 <pikhq> No, bit harder to find.
09:46:23 <pikhq> That said, it probably has the same semantics.
09:47:02 <kmc> ok
09:47:05 <kmc> well i'm using C99 anyway
09:47:07 <kmc> thanks
09:47:43 <pikhq> Ah, there we go.
09:47:50 <kmc> I didn't think about the fact that a string literal evaluates to an array rather than a pointer
09:47:55 <kmc> but it must be so
09:47:56 <pikhq> Same semantics, per C89 3.1.4
09:48:01 <zzo38> There is also GNU89 and GNU99 variants of C; both GNU and LLVM support them when compiling a C code (as well as C89 and C99)
09:48:10 <kmc> for example sizeof("foo bar baz") = 12
09:48:28 <shachaf> oerjan: You should kick me!
09:48:34 <shachaf> oerjan: Why do you feel like kicking me?
09:48:39 <kmc> yeah, i'm using gcc --std=gnu99
09:48:43 <pikhq> zzo38: Strictly speaking, LLVM does not implement GNU C, but rather something similar.
09:48:58 <kmc> but that's not really a particular language
09:49:00 <oerjan> shachaf: for messing up HackEgo
09:49:07 <zzo38> pikhq: Yes, there are a few differences but it is close enough for most purposes
09:49:08 <kmc> the details of gnu99 depend on the exact compiler version
09:49:11 <shachaf> oerjan: But I was told that you can't mess up HackEgo. :-(
09:49:14 <pikhq> As GNU C is defined as "whatever GCC and glibc does".
09:49:18 <kmc> also LLVM isn't a C compiler
09:49:22 <oerjan> shachaf: not _permanently_, no.
09:49:27 <kmc> there are several C compilers which use LLVM as a backend
09:49:30 <pikhq> kmc: I'm presuming he meant clang.
09:49:41 <zzo38> I know LLVM isn't a C compiler, but the LLVM project does include a few C compilers
09:49:51 <kmc> pikhq, so am I but for zzo38 i will call out such things :)
09:49:52 <zzo38> clang is one of them
09:49:56 <pikhq> Only one; they no longer maintain gcc-llvm.
09:50:06 * kmc is lately grumpy at clang, for a very specific reason
09:50:11 <pikhq> Though there is Dragonegg, which is an LLVM backend for GCC.
09:50:33 <pikhq> Anyways, GNU C sucks.
09:50:40 <pikhq> In particular, glibc.
09:51:02 <kmc> i'm not using glibc
09:51:08 <kmc> for the current project
09:51:31 <pikhq> The default feature test macro settings for glibc, in particular, are a freaking joke.
09:51:42 <pikhq> By default it pretends to be System V + BSD.
09:51:54 <pikhq> I kid you not.
09:52:50 <pikhq> You actually have to add feature test macros to get it in *any* sane state at all.
09:54:23 <pikhq> I mean, jeeze, you need one just to make it comply with ISO C.
09:54:54 <shachaf> kmc: Whoa, dude. I just realized we're living in, like, the future.
09:55:09 <kmc> oh?
09:55:21 <pikhq> kmc: Which libc are you using, anyways?
09:55:21 <zzo38> Do you like some of the features of BLISS programming language? Are there any modern implementations? Also, does any compiler for C or other programming languages allow you to include inline LLVM codes?
09:55:34 <kmc> "I wonder what the most intelligent thing ever said was that started with the word 'dude'"
09:55:57 <kmc> pikhq, none
09:56:17 <pikhq> kmc: Freely assume GNU-ish C then.
09:56:30 <zzo38> Dude, this sentence is most intelligent thing ever said that started with the word 'dude', and which also ended with the word 'dude'.
09:56:38 <kmc> doubtful
09:57:24 <pikhq> Simply by being freestanding you've already given up on supporting arbitrary not-insane systems. :)
09:57:54 <kmc> my code is not portable at all
09:58:16 <pikhq> I'm going to guess kernel.
09:58:23 <kmc> nope
09:58:43 <pikhq> In which case the only notion of "portable" that would even make sense is "could be ported to another machine type"
09:58:47 <pikhq> Hmm.
09:58:48 <zzo38> What is the algorithm to make a polygon into triangles? I have already the program to draw filled triangles; is it good one? I just made it up so I don't know if it is the best way or if you know better one or other one.
09:58:53 <kmc> just decided it would be fun to write a multithreaded linux network program using no libc
09:59:02 <pikhq> Ah.
09:59:09 <pikhq> Fun.
09:59:13 <shachaf> kmc: Have you written a ⅅCPU-16 emulator yet?
09:59:19 <shachaf> That's what the cool kids are doing these days.
09:59:23 <kmc> or depending on how you look at it, using a tiny incomplete libc i wrote for the project
09:59:26 <kmc> shachaf, don't wanna
09:59:31 <pikhq> But, obviously, your only notion of "portable" is "can compile on all supported Linux archs".
09:59:32 <shachaf> It's the future, man!
09:59:38 * shachaf doesn't quite get it.
09:59:45 <kmc> oh no, it's only for amd64 as well
09:59:47 <pikhq> And even that depends on you defining syscall() for each one.
10:00:06 <kmc> it would take a good bit more than that
10:00:37 <shachaf> What does your network program do?
10:00:38 <pikhq> Hmm. Blatant ISA-specific assumptions?
10:00:45 <zzo38> I write a C program using Enhanced CWEB, which include some features not available in standard C, such as the ability to execute codes at compile time, and to write codes in a different order than is normally written in C
10:01:07 <pikhq> (please tell me you at least use stdint.h)
10:01:09 <shachaf> zzo38: You're the person who Enhanced it, right?
10:01:20 <shachaf> pikhq: I'm pretty sure the rules are no include files.
10:01:36 <kmc> shachaf, that's a secret
10:01:45 <pikhq> shachaf: Perverse. stdint.h is required to exist on freestanding C implementations.
10:01:46 <zzo38> shachaf: Yes I have made some modifications to make Enhanced version.
10:02:02 <shachaf> is it a hi server
10:02:04 <shachaf> hi monqy
10:02:10 <pikhq> (and GCC does comply with this)
10:02:36 <shachaf> pikhq: Where do I read the standard for freestanding C implementations?
10:02:40 <kmc> i do include stdint and asm/unistd_64.h
10:02:48 <pikhq> shachaf: Just the typical C spec.
10:02:51 <shachaf> I think main() is also supposed to work for freestanding C implementations.
10:02:51 <kmc> shachaf, I thought of doing an ircd but decided not to
10:02:56 <shachaf> And that's called by libc.
10:03:29 <kmc> does freestanding mean "no libc" or "no OS" or "no c runtime library" or?
10:03:35 <shachaf> I'm not sure.
10:03:40 <pikhq> Actually, the entry point there is implementation-defined.
10:03:41 -!- Patashu has quit (Remote host closed the connection).
10:03:44 <shachaf> pikhq: "the typical C spec" requires a lot of libc functions.
10:03:51 <shachaf> Oh, you mean it defines this?
10:03:53 <shachaf> I haven't seen that.
10:04:01 -!- Patashu has joined.
10:04:01 <pikhq> Yes, C defines freestanding vs. hosted.
10:04:26 <shachaf> kmc: Is your network program server going to support the Unicodes?
10:04:36 <kmc> in addition to not using libc, my thing is supposed to be a small static executable
10:04:44 <kmc> rather the former sort of arose from the latter
10:04:51 <kmc> shachaf, dunno
10:04:54 <pikhq> And a freestanding implementation only requires the headers float.h, iso646.h, limits.h, stdargs.h, stdbool.h, stddef.h, and stdint.h
10:05:20 <shachaf> kmc: Real programmers write in assembly.
10:05:44 <pikhq> All of which are nothing but simple #defines.
10:05:48 <shachaf> So you can be close to the hardware, you know.
10:05:54 <zzo38> shachaf: Assembly codes, though, are usually not portable to a different computer.
10:06:00 <pikhq> Well, and in the case of stdargs.h, a single type.
10:06:07 <kmc> shachaf, there is some assembly too
10:06:46 <shachaf> pikhq: stdint.h isn't full of typedefs?
10:06:57 <pikhq> Well. Yes, it's typedefs in stdint.h
10:07:22 <pikhq> Anyways, point is, they're really insanely minimal headers, and basically just hand you information about the compilation environment.
10:07:44 <pikhq> The intent of freestanding implementations is that you can write a kernel in compliant freestanding C.
10:08:03 <pikhq> In part because most of it is implementation-defined.
10:08:08 <shachaf> I doubt a kernel implementor is going to respect the spec all that much.
10:08:41 <pikhq> Actually, I think Linux could easily comply (though not strictly comply) with C.
10:09:00 <kmc> Linux uses a *lot* of GCC extensions
10:09:31 <pikhq> kmc: A conforming program must be acceptable by one conforming implementation, and a conforming implementation may add any extensions that don't break strictly compliant programs.
10:10:04 <pikhq> And a strictly compliant program relies only on what is in the C standard.
10:10:30 * kmc rolls eyes
10:10:45 <pikhq> So, yes, Linux could very well comply with C.
10:11:12 <kmc> you said "a conforming program" not "a complying program"
10:11:17 <kmc> while we're being lawyers
10:11:19 -!- derdon has joined.
10:11:26 <pikhq> Because C, contrary to popular belief, is not portable in the slightest.
10:11:27 <pikhq> :)
10:12:15 <pikhq> If you want portable, look at POSIX.
10:12:38 <pikhq> (and take joy in the guarantee of 8-bit bytes)
10:13:34 <shachaf> POSIX guarantees 8-bit bytes?!
10:13:47 <pikhq> shachaf: Yes.
10:14:02 <pikhq> It also guarantees that all the stdint.h types are actually typedef'd.
10:14:11 <kmc> i'd rather program for a machine where a byte is either 6 bits or 2 decimal digits, but you don't know which
10:14:31 <kmc> i mean, that's how you learn the true nature of programming
10:14:35 <kmc> that's how you become a Real Programmer
10:14:41 <shachaf> kmc: Hey, at least he got rid of that part.
10:14:50 <pikhq> (C only guarantees that uint*_t are defined if there are types that meet the requirements)
10:14:58 <pikhq> (also int*_t)
10:15:12 <pikhq> POSIX also guarantees the existence of 2's complement integers.
10:15:21 <pikhq> (though int, long, etc. might not be)
10:15:29 <kmc> but uintptr_t is still optional in posix, isn't it
10:15:50 <pikhq> Optional in POSIX, but not XSI.
10:16:45 <shachaf> POSEVEN
10:17:14 <shachaf> kmc: Make sure your network server is something benchmarkable.
10:17:24 <pikhq> Also, you must be able to cast between function pointers and void pointers.
10:17:27 <shachaf> So you can talk about how much faster it is than the alternatives because it doesn't use libc.
10:17:36 <shachaf> Come to think of it, you can talk about that even without any benchmarks.
10:17:53 <pikhq> shachaf: On typical Linux systems, it might even be true.
10:17:57 <pikhq> glibc IO is a *hog*.
10:17:57 <kmc> yeah it's best if i don't have any benchmarks
10:18:35 <pikhq> glibc IO is also libstdc++ IO. :)
10:18:47 <zzo38> What things does LLVM guarantee, differences from C?
10:20:44 <kmc> shachaf, true performance is measured not by benchmarks but by how many times you can apply the adjective "awesome" to your program
10:21:30 <oerjan> this program finishes in an eon - but an awesome one!
10:22:26 <shachaf> kmc: They should make a version of criterion for that.
10:22:48 <shachaf> awesomeoptimizer
10:22:49 <pikhq> It might take forever, but it does eventually generate a proof that P=NP. And that P!=NP. And, in fact, every string representable in 32-bit space.
10:22:52 <pikhq> Awesome!
10:23:16 <pikhq> (said proofs may not be correct)
10:23:22 <pikhq> (and most of them won't be)
10:23:40 <pikhq> (awesome!)
10:23:54 <oerjan> it is guaranteed to generate all correct proofs too, though
10:24:11 <pikhq> Well, of course.
10:24:23 <oerjan> awesome!
10:24:23 <pikhq> It generates the entire space.
10:24:49 <kmc> An awesome, RESTful proof that P=NP, done right. In the cloud. Reinvented.
10:25:03 <kmc> a beautiful, kickass proof of P=NP that celebrates craftsmanship
10:26:08 <kmc> seriously, Bonsai ElasticSearch is advertised as "Fulltext search that celebrates craftsmanship"
10:26:30 <kmc> aren't you just sick of those fulltext search engines which grudgingly acknowledge the concept of craftsmanship without really giving it its due?
10:26:31 <shachaf> That's not a parody?
10:26:45 <kmc> shachaf, it's getting really hard to tell these days
10:26:48 <shachaf> Are you going to use Heroku?
10:28:51 -!- tikfreenode has quit (Ping timeout: 260 seconds).
10:29:39 <shachaf> Oh, SMBC is now in PDF format.
10:29:49 <shachaf> That's a fancy children's book they've got.
10:29:51 <kmc> elasticsearch is built on top of apache lucene
10:30:23 <kmc> thing is, apache projects have the stink of the JavaEnterpriseFactoryPattern
10:30:39 <kmc> someone else needs to rebrand them for the beautiful awesome kick-ass rails ninjas
10:30:49 <pikhq> The more memory allocation you do the better, right?
10:31:00 <pikhq> Also, you should totally free() all RAM on exit.
10:31:15 <shachaf> kmc: Are you going to write a real malloc?
10:31:26 <kmc> probably not
10:31:36 <pikhq> Why bother? mmap.
10:31:48 <kmc> at startup i mmap various large buffers
10:31:49 <pikhq> It's like malloc but a system call.
10:32:13 <kmc> but i've not had the need to create/free small objects as it runs
10:32:34 <kmc> except in some transient situations, where I just allocate sequentially into a pre-mmapped buffer and then throw it all away at the end
10:32:58 <shachaf> You're going to use epoll, right?
10:33:03 <kmc> maybe
10:33:10 <shachaf> You can't brag about performance without epoll.
10:33:13 <kmc> it's true
10:33:20 <kmc> i wasn't going to brag about performance until you brought it up!
10:33:27 -!- tikfreenode has joined.
10:35:06 <shachaf> kmc: #haskell is annoying again. :-(
10:35:11 <shachaf> Maybe I should take your nonadvice and leave.
10:35:13 <kmc> you know my solution
10:35:16 <kmc> yeah
10:35:29 <kmc> except it will get worse without you
10:36:05 <kmc> what did they do now
10:36:26 <oerjan> all things eventually become annoying. but that includes the things you would leave _to_
10:36:41 <shachaf> They're talking about how to do dynamic types in Haskell.
10:36:47 <kmc> but you might die before you find #esoteric annoying
10:36:48 <shachaf> Or maybe dependent types.
10:36:51 <kmc> ok
10:36:58 <kmc> that's not an inherently annoying subject...
10:37:05 <shachaf> I don't think they've made a distinction between the two.
10:37:09 <kmc> :/
10:37:10 <shachaf> No, the subject is reasonable.
10:37:35 <shachaf> Maybe I'm just irritable.
10:37:58 <shachaf> kmc: I live right next to a taquería.
10:38:03 <shachaf> But unfortunately it's kind of terrible.
10:38:09 <kmc> aww
10:38:16 <kmc> an east palo alto taqueria?
10:38:23 <shachaf> Yes.
10:38:31 <kmc> what is terrible about it?
10:38:34 <shachaf> Maybe just their vegetarian things are terrible.
10:38:37 <kmc> also you're, like, vegetarian or something
10:38:38 <kmc> yeah
10:38:42 <shachaf> Right.
10:38:42 <kmc> you have strange cares
10:38:55 <shachaf> But I've had good vegetarian taqueríathings.
10:38:57 <kmc> i don't know if good taquerias in the Mission have good veggie options, either
10:39:18 <kmc> damn, shachaf used a non-ASCII character and i didn't :/
10:41:36 <shachaf> kmc: I sеcretly snеаk non-ASCII characters into rеgulаr text sometimes.
10:41:44 <shachaf> Likе that sentence.
10:41:50 <shachaf> You don't even notice but it makes me feel all superior inside.
10:43:51 <kmc> way to stick it to the man
10:44:15 <shachaf> You gotta pick your battles.
10:44:28 * kmc wrote a malloc a long time ago, but doesn't remember how good it was
10:45:35 <shachaf> What does your network thing do again?
10:45:41 <kmc> i told you, it's a secret
10:45:56 <shachaf> Right, but I mean, what's the secret.
10:46:06 <kmc> the secret is that it's a secret
10:46:14 <kmc> and that secret is very similar
10:46:24 <shachaf> Oh.
10:47:29 <kmc> i think my malloc was pretty naive... just a linear search of a free list
10:47:30 <shachaf> kmc: You should write memcached. That's one of the things cool kids do, I think.
10:47:45 <kmc> no, cool kids write exploits for memcached
10:47:56 <kmc> that's one of the later io.sts levels
10:48:07 <shachaf> Oh, I forgot about that.
10:48:13 <kmc> did you get that far?
10:48:24 <shachaf> I mean I forgot about STS.
10:48:27 <kmc> oh
10:48:29 <kmc> you should play
10:48:31 <shachaf> I haven't looked at it since you were in SF.
10:48:53 <kmc> i think i might write a blog post about timing attacks
10:49:22 <shachaf> kmc: Is there something like memcached, but for medium-sized values and on the same host, where different processes can share actual cached pages rather than copy them?
10:49:44 <shachaf> This came up in a discussion of image processing, where a bunch of programs load a compressed image from disk and uncompress it in RAM.
10:50:17 <shachaf> Maybe you would just write the uncompressed image to disk and mmap the file.
10:50:22 <shachaf> But automatic eviction would be nice.
10:50:23 -!- Patashu has quit (Read error: Connection reset by peer).
10:50:37 <shachaf> Maybe you just have a program that unlinks files.
10:51:12 <kmc> that's an interesting question
10:51:17 <kmc> i have not heard of such a thing
10:51:48 <shachaf> And of course it could have a network-transparent API where it sends values over the network and keeps one copy per host.
10:52:18 <shachaf> Not sure how many concrete use cases there would be for this.
10:52:34 <shachaf> But it seems like the sort of thing where it's nice when someone else has already implemented it for you.
10:53:37 -!- Patashu has joined.
10:54:16 <kmc> shachaf, do you think a worked example of a timing attack against, say, Stripe's level 6 would be interesting to read?
10:54:52 <shachaf> kmc: You said you had all sorts of fancy nonobvious tricks.
10:54:57 <kmc> searching for "timing attack examples" and so forth I find a lot of academic papers, and a fair number of blog posts which describe the problem but not in detail how you'd exploit it
10:55:19 <shachaf> In which case, possibly.
10:55:49 <kmc> i'd say there are four nonobvious tricks in this code
10:55:53 <kmc> some more nonobviouser than others
10:56:14 <shachaf> My attempt at a "timing attack" for the Stripe thing was a complete failure, but I didn't spend that long on it before realizing it was possible deterministically.
10:56:23 <shachaf> And I didn't actually use timing.
10:56:32 <kmc> i don't think they were all necessary for that IO level; nelson only used one of the tricks
10:56:34 <shachaf> I measured the number of .s printed to stdout before anything was printed to stderr.
10:57:24 <kmc> i see
10:57:34 <shachaf> I could probably figure it out, though.
10:57:40 <oerjan> > filter (> '\?') "kmc: I sеcretly snеаk non-ASCII characters into rеgulаr text sometimes."
10:57:41 <lambdabot> <no location info>:
10:57:41 <lambdabot> lexical error in string/character literal at chara...
10:57:42 <shachaf> I'll look at the STS thing again. :-)
10:57:46 <oerjan> argh
10:57:58 <oerjan> > filter (> '\127') "kmc: I sеcretly snеаk non-ASCII characters into rеgulаr text sometimes."
10:57:59 <lambdabot> "\1077\1077\1072\1077\1072"
10:58:05 <shachaf> Timing attacks on CPU caches and such are even fancier.
10:58:17 <oerjan> > var $ filter (> '\127') "kmc: I sеcretly snеаk non-ASCII characters into rеgulаr text sometimes."
10:58:18 <lambdabot> mueval-core: <stdout>: hPutChar: invalid argument (Invalid or incomplete mu...
10:58:19 <kmc> yeah
10:58:22 <oerjan> ffff
10:58:32 <kmc> > text $ filter (> '\127') "kmc: I sеcretly snеаk non-ASCII characters into rеgulаr text sometimes."
10:58:33 <lambdabot> mueval-core: <stdout>: hPutChar: invalid argument (Invalid or incomplete mu...
10:58:36 <kmc> fuck it
10:58:39 <oerjan> > var $ filter (<= '\127') "kmc: I sеcretly snеаk non-ASCII characters into rеgulаr text sometimes."
10:58:40 <lambdabot> kmc: I scretly snk non-ASCII characters into rgulr text sometimes.
10:58:46 <ion> > "kmc: I sеcretly snеаk non-ASCII characters into rеgulаr text sometimes."
10:58:47 <lambdabot> "kmc: I s\1077cretly sn\1077\1072k non-ASCII characters into r\1077gul\1072...
10:58:56 <shachaf> ion wins
10:59:02 <ion> (or loses)
10:59:05 <kmc> there have been some practical cache timing based attacks on AES
10:59:45 <kmc> i could try to put together a demo of a cache based attack
10:59:48 <kmc> that would be more of a "part 2"
10:59:54 <kmc> would require more reading on my part
11:01:56 <kmc> shachaf, do you know how to pick locks?
11:02:30 <shachaf> kmc: No. :-(
11:02:33 <shachaf> I should probably know.
11:02:35 <kmc> do you know the theory?
11:02:42 <kmc> it is amusingly similar to timing based password guessing
11:02:50 <shachaf> Not really.
11:03:11 <kmc> so, lock: http://en.wikipedia.org/wiki/File:Pin_tumbler_bad_key.svg
11:03:45 <kmc> if the key has the right shape, the tops of the red bits line up with the boundary between the yellow and green bits
11:03:48 <kmc> allowing the yellow bit to turn
11:03:52 -!- juhani has joined.
11:04:01 -!- Jafet has joined.
11:04:07 <shachaf> Right.
11:04:42 <kmc> now, imagine we try to turn the yellow bit (with a small wrench or something) when a key is not in the slot
11:04:42 -!- juhani has changed nick to nortti.
11:05:09 <kmc> in a perfect lock, the pins will catch on the edge of the yellow bit all at once
11:05:42 <kmc> but in reality they are not perfect cylinders in a perfectly straight line
11:05:51 <kmc> and so one or another pin is going to catch first
11:06:18 -!- zzo38 has quit (Remote host closed the connection).
11:06:34 <shachaf> So you push on it until the lock turns a little bit?
11:06:39 <kmc> right
11:07:12 <shachaf> And then again until it's opened, I suppose. Makes sense.
11:07:13 <kmc> you apply turning tension to the yellow bit, and you also poke the pins with a little metal prod
11:07:47 <shachaf> I'd say it's a "leaking information" attack more than a timing attack.
11:07:55 <kmc> yeah, it is not a timing attack
11:08:09 <kmc> but it's similar to the password thing, in that you are reducing an exponential search to a linear one
11:08:23 <kmc> it is different because you don't know which index will give you information first
11:08:36 <kmc> but it's similar in that you can't get information from the second index until you've figured out the first one
11:08:37 <shachaf> So maybe quadratic instead of linear.
11:08:58 <kmc> quadratic how?
11:09:16 <shachaf> Because you try each pin to find the one that works in each round.
11:09:29 <kmc> true
11:09:34 <shachaf> Unless you can push on them all at once, I guess.
11:10:05 <kmc> a related technique is to apply tension while you just bounce all the pins like crazy
11:10:44 <kmc> using a specialized lockpicking tool (called a rake), or a key that's been cut to a crazy shape, or (on particularly shitty locks) even an ordinary key
11:11:16 <kmc> in school our mailboxes could be unlocked by putting in any mailbox key and twisting it hard while you jam it in and out
11:12:06 <shachaf> I should go pick a lock now.
11:12:22 <shachaf> It probably involves a lot of careful coördination.
11:12:40 <shachaf> That's the nice thing about computers.
11:12:53 <oerjan> probаbly
11:13:16 <shachaf> Next time I have a lock handy I'll try it, though.
11:13:21 <kmc> in films and tv you usually see someone pick a lock with only one tool
11:13:43 <kmc> in reality you usually need both a tension wrench and a thing to poke or otherwise molest the pins
11:14:29 <kmc> the pick set i have is this one or so: http://www.southord.com/Lock-Picking-Tools/Lock-Pick-Set-14-Piece-PXS-14.html
11:15:14 <kmc> it's kind of a great website, you can throw in some nunchaku or a grappling hook with your order of lockpicks
11:16:10 -!- MoALTz has joined.
11:17:26 <shachaf> Today I read about a technique for not getting your checked bags lost: Put a firearm in them.
11:17:35 <kmc> high security locks usually try to add a second, orthogonal code axis
11:17:39 <shachaf> (For airplane flights, I mean.)
11:18:14 <kmc> for example in Medeco locks, each pin has a V-tip rather than a rounded or flat bottom, and the notches in the key rotate the pin to one of three angles
11:18:16 <shachaf> kmc: Is it that difficult to make a lock which doesn't have this issue?
11:18:27 <kmc> and there's a mechanism to prevent the lock opening unless the rotations are all right
11:18:36 <kmc> you can't pick the heights unless you know the rotations, and vice versa
11:18:49 <kmc> except i have seen online that some people can pick medecos very quickly, but i don't know how
11:19:06 -!- pikhq_ has joined.
11:19:14 <kmc> shachaf, yeah, that's a good trick. i saw a talk about that from some hacker con (Defcon or CCC, don't remember)
11:19:37 <shachaf> kmc: If there are only three rotations, isn't it only three times the work?
11:19:42 -!- pikhq has quit (Ping timeout: 265 seconds).
11:19:51 <shachaf> Assuming you can rotate each pin individually and try it.
11:20:11 <kmc> you need to be able to apply rotational tension to get the pins to catch so you can test the heights one by one
11:20:23 <kmc> if the rotations aren't correct, you can't apply tension at all
11:20:40 <shachaf> Oh, all the rotations have to be correct to move any of the pins?
11:21:07 <kmc> they will move up and down, but the part of the lock that turns with the key will not rotate until the pin rotations are correct
11:21:26 <shachaf> Ah, I see.
11:21:54 <kmc> so in theory you need to try 3^6 = 729 rotations before you can start picking the heights
11:22:04 <kmc> not impossible but takes a while :)
11:22:22 <kmc> and you have to keep the rotations correct while you do this
11:22:27 <kmc> but that should be reasonably easy with a set of custom picks
11:22:33 <shachaf> Right.
11:22:37 <kmc> anyway it's well beyond my skill level
11:22:38 <shachaf> Why do they only have six pins?
11:22:51 <kmc> people don't wanna carry huge keys
11:22:58 <shachaf> Hm.
11:23:01 <kmc> making pins smaller has other problems
11:23:23 <kmc> shachaf, do you know about the standard privilege escalation vulnerability in master-key systems?
11:23:58 <shachaf> I'm not sure?
11:24:19 <shachaf> Ah, probably not.
11:24:22 <kmc> so you can make a lock which opens on more than one key
11:24:31 <kmc> just by putting more than two bits of metal in one or more of the pin columns
11:24:59 <kmc> a common application is to have a master key which opens every door in a building, and also keys for individual rooms
11:25:22 <kmc> and maybe some others, e.g. a floor master, a custodial key, a maintenance key, etc
11:25:47 <kmc> anyway, if you take apart a lock and measure all the metal bits inside
11:25:59 <kmc> you can compute the set of all keys that will open that lock
11:26:37 <kmc> (which will be large, because in addition to the real room and master key, it will also open on (say) a key composed of pins 1,2,3 from the room key and 4,5,6 from the master, even though probably nobody has ever made this key)
11:26:38 <shachaf> Ah, which you can do if you can open any of the locks.
11:27:07 <kmc> yeah; typically you can remove and disassemble a lock if you can open the door
11:27:14 <shachaf> Right.
11:27:22 <kmc> either because you have a legitimate key or because the door is left open
11:27:38 <shachaf> kmc: Have you ever picked a lock... ON A TRAIN?
11:27:45 <kmc> so you just need to disassemble enough locks that the only key in their intersection is the master key
11:27:53 <olsner> Have you ever picked a lock... IN SPACE?
11:28:03 <kmc> then you make that key yourself
11:28:40 <kmc> so from e.g. an open basement janitor's closet, and an open 3rd floor conference room, you can compute the master key that will open every other door in the building
11:29:13 <shachaf> Is there a physical equivalent of public-key cryptography?
11:29:32 <kmc> i'm not sure
11:29:51 * kmc imagines a lock with an elaborate watch-like mechanism that implements RSA
11:30:00 * olsner imagined the exact same thing
11:30:05 <kmc> olsner++
11:30:25 <shachaf> I know there are some combination locks that compute a sort of hash from the combination you enter.
11:31:08 <kmc> oh?
11:31:32 <shachaf> Well, I saw one once that someone claimed did that.
11:31:44 <shachaf> It was probably a trivial hash, though, not cryptographically secure or anything.
11:32:23 <shachaf> But I guess a lock that computes a secure hash from a key isn't completely unthinkable.
11:33:16 <shachaf> Or maybe it is. I have no idea how difficult cryptographic hashes would be to implement mechanically, because I don't know much about how they work.
11:33:24 <shachaf> Or about implementing complex things mechanically, for that matter.
11:33:41 <kmc> another aspect of the supposed security of Medeco locks is that they promise not to sell keyblanks that fit your locks to anyone but you
11:33:50 <kmc> that is, if you are a large enough institution you can get locks with a custom keyway
11:34:18 <kmc> this is particularly silly
11:34:19 <olsner> seems likely that the crypto mechanism would be too complicated to be very reliable
11:34:39 <kmc> anyone with a legit key can observe the keyway shape
11:34:53 <kmc> and it's not very hard to produce a piece of metal with approximately that shape
11:35:31 <kmc> (metal or plastic or wood or ...)
11:36:12 <olsner> but maybe you could get enough power from the turning of the key to run an electronic implementation?
11:36:23 <kmc> I guess the point is that your dumbass employees can't go to Home Depot and get duplicate keys made and then lose them
11:37:08 <shachaf> kmc: I think it was this: http://www.masterlock.com/product_details/CombinationPadlocks_AssortedColors_Set-Your-OwnCombination_No.1500iSpeedDialCombinationPadlocks/1500iD
11:37:44 <shachaf> Apparently your combination is a sequence of directions as long as you like that gets hashed into one of 7501 possibilities.
11:37:52 <kmc> cool
11:38:01 <kmc> up up down down left right left right
11:39:02 <kmc> you can also try to make it hard to remove a lock from a door
11:39:21 <shachaf> Self-destructing locks.
11:39:26 <kmc> but this interferes with invalidating old keys
11:39:46 <shachaf> You can make it hard to remove a lock from the door, except when you have a master key.
11:39:51 <kmc> in places which frequently invalidate keys (i.e. high employee turnover) you will see-- yeah, that
11:40:01 <shachaf> see++
11:40:17 <kmc> ever the guardian of equality
11:40:23 <shachaf> Wait, what's "that"?
11:40:36 <kmc> a lock which can be removed iff you have a master key
11:40:44 <shachaf> Oh.
11:40:46 <shachaf> Right.
11:42:08 -!- nortti has quit (Quit: Lost terminal).
11:42:17 -!- Phantom_Hoover has joined.
11:42:26 <shachaf> Seems like there are a lot of analogies between lockpicking and computer security.
11:43:18 <kmc> and a lot of overlap of interest groups
11:43:32 <kmc> and physical security systems are increasingly computerized
11:43:48 <Phantom_Hoover> Lockpicking looks cooler, though.
11:44:10 <kmc> movie hacking > lockpicking > real hacking
11:44:26 <shachaf> What about movie lockpicking?
11:44:39 <kmc> about the same as real lockpicking?
11:44:57 <kmc> a bit more dignified
11:45:25 <kmc> less stealing locks and then disassembling them in the bathroom and trying not to lose the metal bits down the shower drain
11:45:40 <shachaf> I hate losing metal bits down the shower drain. :-(
11:45:42 <olsner> why... in the bathroom?
11:45:56 <olsner> don't you have a proper lockpicking studio?
11:46:05 <shachaf> Have people built reasonable automatic lockpicking machines? Or is there too much variance in locks?
11:46:18 <shachaf> It seems vaguely silly to use human hands for it.
11:47:00 <kmc> olsner, say you've just yanked a lock inside an academic / commercial building, and would like to measure it quickly and return it before The Fuzz notices
11:48:14 <kmc> you need space to work and you need privacy from said Fuzz
11:48:39 <kmc> shachaf, lockpick guns are very common and are a crude sort of lockpicking machine
11:48:54 <kmc> they bounce the pins up and down like crazy, while applying tension
11:49:20 <kmc> i've heard they tend to ruin locks
11:49:29 <kmc> so it's good for your basic police or criminal activity
11:49:42 -!- Jafet has quit (Read error: Connection reset by peer).
11:49:54 <kmc> but not for covert infiltration, or recreational leave-no-trace gotta-catch-em-all master key collecting
11:51:16 -!- Jafet has joined.
11:51:32 -!- augur_ has joined.
11:51:35 <shachaf> This laptop is the first laptop I've ever had where I don't keep the brightness at the maximum by default.
11:51:35 <olsner> kmc: oh, ok.. I was imagining something like buying a lock and taking it home for reverse-engineering
11:52:51 <kmc> most residential locks i've seen in the US are really bad
11:53:09 <kmc> 5 pins, no other security, one of a few common keyways
11:53:38 <kmc> easy to pick; easy to duplicate a key or make one yourself from measurements or a photo
11:53:44 -!- augur has quit (Ping timeout: 246 seconds).
11:53:56 <shachaf> How much information can you get from the weight of a key?
11:54:11 <kmc> so think about that before you leave your house keys on the table in public view!
11:54:15 <kmc> shachaf, good question. i don't know
11:54:46 <kmc> for a given model of lock there will be multiple manufacturers of blanks in various styles and materials
11:54:54 <Jafet> How would you get the weight of a key without having the key?
11:54:54 <kmc> you would need to control for that
11:55:08 -!- nortti has joined.
11:55:16 <shachaf> Jafet: You might only have it for a few seconds or something.
11:55:27 <shachaf> I guess a photograph would probably yield more information.
11:55:34 <shachaf> But maybe it'd be suspicious.
11:55:36 <kmc> yeah, a photo is what you want
11:55:40 <kmc> or a high DPI scan if you can manage
11:55:54 <kmc> but usually there are 10-15 discretized standardized heights
11:55:55 <Jafet> I would bring a spy camera over a laboratory scale
11:56:20 <Jafet> Which is probably the precision you would need.
11:56:58 <kmc> laboratory scale is suspicious in an entirely different way
11:58:32 <kmc> you can pick them up at your friendly neighborhood combination tobacconist / gemological equipment supply store / home security supply store / Bob Marley T-shirt store
12:00:07 <shachaf> They have those in Boston too?
12:00:31 <kmc> i assume so?
12:00:35 <kmc> there are a lot of college students here
12:01:17 <kmc> college students love fancy pipes FOR TOBACCO USE ONLY, and gemstone scales in the 1 to 10 gram range
12:01:24 <kmc> and bob marley shirts but that goes without saying
12:03:38 <kmc> new york has frequent open-air bong markets
12:04:34 <kmc> i realized the other day that all bongs featured in youtube videos cost more than $400 or less than $3
12:05:10 -!- oerjan has quit (Quit: Later).
12:05:48 <kmc> either some guy is showing off his four foot precision glass quad-bubbler megabong
12:05:59 <kmc> or it's an instructional video on how to make a bong out of an apple and a used tire
12:06:33 <Jafet> I wonder if you could manufacture some electronic goo, that you can stuff into a container, and get a readout of its shape
12:06:42 <Jafet> That would render locks obsolete
12:06:52 <Jafet> Well, current locks
12:06:53 <kmc> yeah
12:07:21 <shachaf> Perhaps you could do it with nonelectronic goo.
12:07:27 <kmc> i wanted to make a device which would make electrical contact with the pins, and then measure their size using capacitance or time domain reflectometry or something
12:07:38 <shachaf> Say, goo that changed color when exposed to nongoo for a while.
12:08:02 <kmc> but i am way too noob to do this
12:08:31 <shachaf> You should do it!
12:08:38 <kmc> but i am way too noob
12:09:09 <shachaf> How much?
12:11:31 <kmc> too much noob
12:11:51 <kmc> anyway
12:11:56 <kmc> those are some of the things i know about locks
12:12:01 <kmc> possibly most
12:12:05 <kmc> i should sleep now
12:12:07 <kmc> ttyl all
12:12:21 <olsner> time domain reflectometry, sounds like applied phlebotinum
12:12:24 <shachaf> kmc++ # locks
12:16:56 <Jafet> Someday TV Tropes jargon will be all over the mainstream media
12:17:19 <Jafet> And their website will consequently become ridiculously meta
12:18:26 -!- Jafet has quit (Quit: Leaving.).
12:38:39 <Phantom_Hoover> <kmc> most residential locks i've seen in the US are really bad
12:38:58 <Phantom_Hoover> Aren't they mostly standard Yale locks?
12:40:23 -!- Case1 has joined.
12:49:51 -!- augur_ has quit (Remote host closed the connection).
13:31:47 <olsner> ooh, there are sailor moon/star trek crossovers
13:32:54 -!- MoALTz has quit (Quit: Leaving).
14:02:02 -!- Case1 has quit (Quit: Leaving.).
15:15:12 -!- Patashu has quit (Ping timeout: 252 seconds).
15:15:30 -!- elliott has joined.
15:16:22 <elliott> shachaf: Remember the Monad page on the HaskellWiki?
15:16:22 <lambdabot> elliott: You have 1 new message. '/msg lambdabot @messages' to read it.
15:16:27 <elliott> this doesn't answer a direct question (about 10 values), and fails to correct the OP's basic misunderstanding with the type, instead discussing a misformulated question as if it had merit here. (-1) – Will Ness 8 hours ago
15:16:36 <elliott> I AM SHAMED
15:30:24 -!- Phantom_Hoover has quit (Ping timeout: 246 seconds).
15:40:28 <Sgeo> elliott, linky?
15:40:34 -!- oklopol has joined.
15:41:16 <oklopol> do you think i'll ever be a successful formula 1 driver / transvestite basketball player
15:42:23 <elliott> yes
15:42:31 <oklopol> thank you
15:42:33 <elliott> Sgeo: to which
15:42:38 <oklopol> for beliving in me
15:42:50 <Sgeo> <elliott> this doesn't answer a direct question (about 10 values), and fails to correct the OP's basic misunderstanding with the type, instead discussing a misformulated question as if it had merit here. (-1) – Will Ness 8 hours ago
15:42:56 <Sgeo> The one with that
15:43:22 <elliott> http://stackoverflow.com/questions/10017915/haskell-monad-io-double-to-io-double/10017978#comment12875779_10017978
15:43:30 <elliott> this being the same person who turned the HakellWiki Monad page from this: http://www.haskell.org/haskellwiki/index.php?title=Monad&oldid=33391
15:43:35 <elliott> to this pile of nonsense: http://www.haskell.org/haskellwiki/Monad
15:43:42 <elliott> *HaskellWiki
15:45:05 <Sgeo> Stupid slow computer
15:46:44 <nortti> specs? I am using Thinkpad T20 from 2000 and I don't think that it is slow
15:47:04 <Sgeo> Not sure offhand, but it has 1GB RAM
15:47:27 <nortti> this thing has 64MB
15:47:41 <Sgeo> o.O
15:48:26 <nortti> HD of my iBook g4/1.2GHz (my main computer) broke
15:49:51 <Sgeo> elliott, I see a problem with that being less accessible, but also: Is that broken for Cont?
15:50:20 <nortti> 3
15:50:25 -!- Vorpal has joined.
15:50:33 <elliott> Sgeo: i can't tell whether it's broken for anything because it's a pile of incomprehensible nonsense
15:50:46 <elliott> with <b><i>BOLD ITALICS EVERYWHERE</i></b>
15:51:17 <elliott> "in addition to its one (hence the name) output, that it will produce when run (or queried, or called upon)"
15:51:22 <elliott> never mind Cont
15:51:26 <elliott> it doesn't even describe Maybe
15:51:41 <Sgeo> o.O
15:51:45 <Sgeo> Nice
15:54:41 <elliott> but hey i think it gets Writer!
15:56:05 <elliott> oh god that haskell tutorial got on /r/programming
15:56:09 <elliott> today is not my day
15:58:09 -!- Phantom_Hoover has joined.
15:58:16 <elliott> hi Phantom_Hoover
16:08:30 <elliott> hi Phantom_Hoover
16:09:27 <Phantom_Hoover> helo
16:09:43 <elliott> - - [08/Apr/2012:10:55:45 +0000] "GET /forum/kareha.pl/1192759617/ HTTP/1.0" 200 12318 "http://pharmshop-online.com" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MyIE2; Deepnet Explorer)"
16:09:45 <elliott> DEEPNET EXPLORER
16:10:18 <elliott> /query Phantom_Hoover
16:10:23 <elliott> Whoops.
16:10:37 <elliott> /query lambdabot
16:16:06 -!- MSleep has changed nick to MDude.
16:23:27 <RocketJSquirrel> elliott: I like how some spam URL is in the USER AGENT X-D
16:23:43 <RocketJSquirrel> Oh, never mind, I misread :(
16:23:48 <RocketJSquirrel> I thought it was part of the user agent.
16:23:51 <RocketJSquirrel> That would have been magical.
16:29:57 <elliott> http://www.deepnetexplorer.com/
16:29:59 <elliott> DEEPNET EXPLORER
16:31:35 <elliott> `cast` (Sym (Data.Reflection.NTCo:Magic <a_adI> <r_adJ>) ; UnsafeCo
16:31:36 <elliott> (Data.Reflection.Magic
16:31:36 <elliott> a_adI r_adJ)
16:31:36 <elliott> ((Any * -> a_adI)
16:31:36 <elliott> -> Data.Proxy.Proxy
16:31:36 <elliott> (Any *)
16:31:38 <elliott> -> r_adJ)
16:31:39 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: cast`: not found
16:31:41 <elliott> I sure wish Core was easier to read.
16:32:24 -!- atrapado has quit (Quit: Abandonando).
16:33:31 <elliott> RocketJSquirrel: BTW, I think you can avoid having to add finalisers to GGGGGGGGGGGGGGGGGGGGGGGGGGGGC just to use gmp.
16:35:15 <elliott> OK, so the end type is (Any -> a) -> Proxy Any -> r.
16:35:31 <elliott> Which is compatible with (forall proxy. proxy s -> a) -> Proxy s -> r, I should think.
16:39:57 -!- tikfreenode has quit (Changing host).
16:39:57 -!- tikfreenode has joined.
16:40:31 <nortti> > MSIE 6.0
16:40:32 <lambdabot> Not in scope: data constructor `MSIE'
16:40:34 <nortti> ...
16:40:45 -!- tikfreenode has changed nick to Tiktalik.
16:41:42 <elliott> > 2+2
16:41:43 <lambdabot> 4
16:43:35 -!- monqy has quit (Ping timeout: 252 seconds).
16:45:19 -!- monqy has joined.
16:49:33 <olsner> yay, "My own DCPU-16 Toolkit in Haskell"
16:50:44 <elliott> olsner: there's like ten by now
16:56:06 -!- aloril has quit (Ping timeout: 265 seconds).
16:57:16 <RocketJSquirrel> <elliott> RocketJSquirrel: BTW, I think you can avoid having to add finalisers to GGGGGGGGGGGGGGGGGGGGGGGGGGGGC just to use gmp. // oh?
16:59:11 <elliott> RocketJSquirrel: (a) GMP lets you provide your own malloc/free functions for it to use. (b) I'm pretty sure the only thing the GMP free functions do is reclaim the struct and the block of memory it points to.
16:59:26 <elliott> So, you have three non-finaliser options:
16:59:57 <elliott> (a) If GMP coincidentally organises its structures (data vs. pointers) in the way GGGGGGC likes, you should be able to just make it use the allocator. If not,
17:00:35 <elliott> (b) You could tell GMP to allocate everything as plain "uninterpreted sequence of bytes" from GGGGGGGGGC, and then use a wrapper GGGGGGGGC-struct that points to both the struct and the block of memory it points to. Or,
17:01:01 <elliott> (c) You could modify G+C in a way that lets you tell it about unconventional memory layouts of certain objects.
17:01:17 <elliott> i.e. a special malloc that lets you say "words A, B and C are data, but words D, E, and F are pointers".
17:01:49 <elliott> RocketJSquirrel: I mean, GHC uses GMP, and they use a copying collector. They *do* support finalisers, but I'm pretty sure they don't use finalisers for Integer, because I'm pretty sure that would be really fucking slow.
17:02:03 <elliott> What they *do* do is blatantly disregard GMP's encapsulation of the structure --
17:02:04 <elliott> @src Integer
17:02:04 <lambdabot> data Integer = S# Int#
17:02:04 <lambdabot> | J# Int# ByteArray#
17:02:19 <elliott> The Int# is the number of limbs + sign; the ByteArray# is the limb array.
17:02:33 <elliott> So I think it should be possible to avoid a slow and boring-to-write finaliser heap for GMP.
17:04:34 <elliott> Wow, reify compiles down to 12 instructions.
17:04:47 <elliott> And 3 of those are hidden behind a branch.
17:05:26 <olsner> shouldn't it essentially be a no-op?
17:05:52 <olsner> or maybe it did more stuff than just change the type
17:06:39 <elliott> reify a k = (unsafeCoerce (Magic k) $! const a) Proxy
17:06:45 <elliott> (Magic is a newtype)
17:06:58 <elliott> So, it applies it to two arguments, one of which it might hypotheticall have to force (but I think GHC will realise the seq is a nop there and omit it).
17:07:04 <elliott> And even id is more than zero instructions :P
17:09:43 -!- aloril has joined.
17:10:09 <olsner> hmm, apparently I have approx. zero disks with enough free space to make a full android build
17:10:11 <olsner> BLOAT
17:10:39 <nortti> how much space does it require?
17:10:47 <elliott> yeah, the ($!) gets eliminated at compile-time
17:10:53 <elliott> just checked, same asm
17:11:02 <olsner> nortti: "The source download is approximately 6GB in size. You will need 25GB free to complete a single build, and up to 90GB (or more) for a full set of builds."
17:11:32 <olsner> no wonder it takes a century and a half to boot android
17:11:42 <nortti> what the fuck! I currentlyu
17:12:25 <nortti> -u+ have 42GGB scattered around 5HDs
17:12:43 <nortti> +of usable disk space
17:13:03 <nortti> and every disk is on different computer
17:19:05 -!- oerjan has joined.
17:20:48 <oerjan> <Jafet> I wonder if you could manufacture some electronic goo, that you can stuff into a container, and get a readout of its shape
17:21:32 <oerjan> reminds me of some title i saw on reddit (r/science?) recently about programmable sand
17:22:01 <oerjan> or whatever it was, i didn't click the links (i think there were several)
17:22:08 <olsner> ooh, found an unmounted partition on one of my disks, I wonder if it has a file system
17:22:21 <oerjan> the partition of DOOM
17:22:48 <elliott> hi oerjan
17:22:53 <olsner> I think the size is much overkill for storing DOOM on it
17:23:03 * oerjan recalls a couple of SCP's that may be relevant
17:23:06 <oerjan> hi elliott
17:23:45 <elliott> oooh which scps (<-- this is the most unhelpful urge)
17:23:47 <oerjan> the one with the floppies with all the internet on them, and the one with the insane genocidal but cramped AI
17:24:32 <elliott> i remember the first one. not the latter
17:24:50 <oerjan> scp-335 was the first
17:26:00 <oerjan> scp-079 was the other
17:26:20 <oerjan> http://www.scp-wiki.net/scp-335 http://www.scp-wiki.net/scp-079
17:27:13 * oerjan finds http://www.scp-wiki.net/scp-633 while google for the others
17:27:18 <oerjan> *googling
17:38:00 -!- oerjan has quit (Quit: Lost terminal).
17:51:15 <elliott> http://hackage.haskell.org/packages/archive/reflection/1.1.3/doc/html/Data-Reflection.html FINALLY PERFECTION IS ATTAINED
17:56:15 <elliott> <pozic> Can someone tell me why functional programming is a good idea, since updating a record requires time linear in the size of the structure?
17:56:15 <elliott> <pozic> elliott: f x = x{a=b} where x is a structure with 100 million members takes more than constant time.
18:02:36 -!- oerjan has joined.
18:02:57 <elliott> hi oerjan
18:03:04 <oerjan> hi elliott
18:05:36 <oerjan> elliott: um, what changed in the last microversions...
18:05:51 <elliott> oerjan: It got more documentation. And Safe Haskell status!
18:05:53 <elliott> And "w" turned into "r".
18:05:58 <elliott> And "p" turned into "proxy".
18:06:06 <elliott> There's... not really all that much to change at this point.
18:06:13 <oerjan> indeed
18:07:02 <elliott> oerjan: Did you know that if you use type families, the implementation gets more complicated, requires GADTs, and when you use it, type inference works against you? :(
18:07:20 <oerjan> heh
18:07:49 <oerjan> in other words, fd are not dead
18:08:51 <elliott> Yeah.
18:15:14 <elliott> Ohh, pozic is *that* person.
18:19:42 <elliott> <pozic> elliott: your opinion is worth nothing. * dmwit pays elliott 0.02 BTC just to prove pozic wrong
18:19:49 <elliott> [oblig. joke about 0.02 BTC being worth nothing]
18:20:03 -!- Deewiant has quit (Ping timeout: 245 seconds).
18:20:04 -!- Deewiant_ has joined.
18:34:16 -!- ais523 has joined.
18:34:27 <elliott> hi ais523
18:34:44 <ais523> hi elliott
18:34:55 <ais523> how's NSQX getting on?
18:50:56 -!- Frooxius_ has joined.
18:51:25 <elliott> good
18:51:30 <elliott> how's Feather getting on?
18:53:46 <ais523> I'm ignoring it for the time being
18:54:38 -!- Frooxius has quit (Ping timeout: 244 seconds).
18:54:50 <RocketJSquirrel> !c printf("%d\n", (int) sizeof(1.0))
18:54:52 <EgoBot> 8
18:54:53 -!- Frooxius_ has changed nick to Frooxius.
18:55:34 -!- Frooxius_ has joined.
18:56:13 <elliott> Man...
18:56:16 <elliott> oerjan: Do you still have Hugs installed?
18:56:50 <oerjan> yes
18:58:32 <elliott> oerjan: Could I get you to test both of reflection's implementations with it for me?
18:58:33 <elliott> I can sprunge them.
18:58:44 <elliott> (Hugs does fundeps, right?)
18:58:56 <oerjan> i think so
18:59:06 -!- Frooxius has quit (Ping timeout: 252 seconds).
18:59:06 <oerjan> i don't know about unsafeCoerce...
18:59:16 -!- Frooxius_ has changed nick to Frooxius.
18:59:41 <elliott> I'm pretty sure it has unsafeCoerce. But the slow impl doesn't need unsafeCoerce.
18:59:47 <oerjan> right
19:00:04 <elliott> Try and load this: http://sprunge.us/QKbM
19:00:07 <elliott> Let me know if it complains about anything.
19:01:56 <oerjan> Can't find imported module Data.Proxy :P
19:02:43 <shachaf> elliott: What about it?
19:03:47 <elliott> shachaf: ?
19:03:51 <elliott> oerjan: OK, that's not a stopper.
19:03:53 <elliott> oerjan: Remove the import, define
19:03:55 <elliott> data Proxy t = Proxy
19:03:58 <elliott> let me know its next complaint :P
19:04:07 * oerjan was already doing that
19:04:24 <oerjan> Syntax error in input (unexpected selector "#define")
19:04:57 <elliott> It can't do cpp?
19:05:00 <elliott> Okay, I'll pre-expand it for you.
19:05:23 <oerjan> probably can do #ifdef and not much else...
19:05:32 <oerjan> (is my guess)
19:05:39 <elliott> oerjan: http://sprunge.us/CSHi (You'll probably have to remove the # lines still)
19:05:48 <elliott> Thankfully there's only three.
19:07:17 <oerjan> four.
19:07:30 <oerjan> Undefined variable "unsafeDupablePerformIO"
19:07:57 <oerjan> (also i had to remove Data.Proxy again)
19:09:05 <elliott> oerjan: s/Dupable//
19:09:39 <oerjan> Use of reifyByte requires at least 2 arguments
19:09:48 <shachaf> elliott: Monad page.
19:10:04 <elliott> shachaf: Yes.
19:10:05 <elliott> oerjan: wat
19:10:20 <elliott> oerjan: ok you see the reifyByte chain at the end?
19:10:24 <shachaf> elliott: If you say so.
19:10:26 <elliott> can you replace the $s with parens?
19:10:30 <oerjan> change all $ to use ... right
19:10:30 <elliott> shachaf: http://www.haskell.org/haskellwiki/Monad
19:10:36 * oerjan had already guessed
19:10:42 <elliott> oerjan: i guess hugs' inference engine is too dumb for that
19:10:47 <elliott> i think ghc still special-cases ($)
19:10:58 <oerjan> elliott: hey it took a hack to make ghc do it
19:11:52 <oerjan> Cannot justify constraints in instance member binding
19:11:52 <oerjan> *** Expression : reflect
19:11:52 <oerjan> *** Type : Reifies (Stable a b c d e f g h i) i => j (Stable a b c d e f g h i) -> i
19:11:55 <oerjan> *** Given context : Reifies (Stable a b c d e f g h i) i
19:11:58 <oerjan> *** Constraints : (B k, B l, B m, B n, B o, B p, B q, B r)
19:12:00 <nortti> 20:53 -!- Frooxius_ [~chatzilla@cust-101.ktknet.cz] has joined #esoteric
19:12:07 <elliott> oerjan: erm is that when compiling it?
19:12:14 <elliott> loading, whatever
19:12:19 <oerjan> yes
19:12:21 <elliott> or when trying to use it?
19:12:22 <elliott> ok
19:12:28 <nortti> linux clipboard leads to strange pastes
19:12:35 <elliott> oerjan: does it give a line number?
19:12:45 <nortti> +behaviour
19:12:46 <oerjan> ERROR file:.\Reflection.hs:107 -
19:13:03 <elliott> ok, what line is that after you made your changes?
19:13:22 <oerjan> reflect = unsafePerformIO $ const <$> deRefStablePtr p <* freeStablePtr p where
19:13:48 <elliott> ah
19:14:00 <elliott> hmm.
19:14:16 <elliott> oerjan: oh, does Hugs parse LANGUAGE pragmas?
19:14:24 <elliott> it seems it doesn't support ScopedTypeVariables
19:14:35 <oerjan> quite possibly not
19:14:51 <elliott> oerjan: ok let me get the old code out
19:14:59 * elliott determined
19:18:34 <elliott> oerjan: http://sprunge.us/XfUV
19:19:37 <oerjan> dammit i have to redo all of it again
19:19:42 <elliott> oerjan: oh, oops, sorry
19:19:44 <elliott> oerjan: I did the Proxy thing
19:19:46 <elliott> and the # thing
19:19:50 <elliott> but forgot the parens
19:19:57 <oerjan> ah
19:21:12 <oerjan> it loads
19:21:41 <elliott> \o/
19:21:41 <myndzi> |
19:21:42 <myndzi> /|
19:21:43 <elliott> try:
19:21:46 <elliott> reify 42 reflect
19:21:55 <elliott> you may need :: Int (or :: Integer) on the end of that if it can't infer
19:21:57 <elliott> (it can't in GHC either)
19:22:02 <oerjan> Data.Reflection> reify 42 reflect
19:22:02 <oerjan> 42 :: Integer
19:22:39 <elliott> \o/!!!
19:22:39 <myndzi> |
19:22:39 <myndzi> >\
19:22:44 <elliott> try reify 42 (\p -> reflect p + reflect p)?
19:22:50 <oerjan> Data.Reflection> reify 42 (\p -> reflect p + reflect p)
19:22:50 <oerjan> 84 :: Integer
19:22:55 <elliott> that's awesome
19:23:02 * oerjan was already doing that
19:23:29 <elliott> i'll see about getting these changes into the mainline
19:23:35 <elliott> well not the cpp thing
19:23:38 <elliott> i think cabal would run cpp for you there
19:23:45 <elliott> ok now what about http://sprunge.us/daNZ :P
19:23:55 <elliott> i think it _should_ work, if Hugs represents dictionaries reasonably
19:24:04 <elliott> the only non-obvious thing is turning a dictionary of one element into that element, representation-wise
19:24:25 <oerjan> yes, hugs might not bother to make a special case
19:24:56 <oerjan> ERROR file:.\Reflection.hs - Can't find imported module "Unsafe.Coerce"
19:25:04 <elliott> ugh, i know it has unsafeCoerce
19:25:06 <elliott> lemme google whre it is
19:25:08 <elliott> *where
19:25:09 <elliott> and indeed, although it _might_ represent dictionaries the same as regular ADTs, which GHC doesn't (fiddly rts bits)
19:25:13 <elliott> in which case it could be made to work anyway
19:25:24 <elliott> oerjan: import Hugs.IOExts instead
19:26:06 <oerjan> Data.Reflection> reify 42 reflect
19:26:06 <oerjan> 42 :: Integer
19:26:06 <oerjan> Data.Reflection> reify 42 (\p -> reflect p + reflect p)
19:26:06 <oerjan> 84 :: Integer
19:26:32 <elliott> holy shit
19:26:33 <elliott> seriously?
19:26:37 <oerjan> yep :P
19:26:42 <elliott> wow
19:26:47 <elliott> i'll tell edwardk
19:27:01 <elliott> oerjan: btw, what version of hugs is that?
19:27:14 <oerjan> Sep 2006
19:27:23 <elliott> oerjan: ok. then i don't know why Unsafe.Coerce isn't there: http://hackage.haskell.org/packages/archive/base/
19:27:25 <elliott> -- Copyright : Malcolm Wallace 2006
19:27:27 <elliott> and supports Hugs
19:27:47 <oerjan> hugs probably never packaged it?
19:27:51 <elliott> "A substantial collection of library modules that are supplied with Hugs, GHC and Nhc98. Hugs now implements nearly all of these modules."
19:27:51 <elliott> hmm
19:27:53 <elliott> I guess they didn't use base
19:27:58 <elliott> which makes me wonder why base supports Hugs
19:28:14 <oerjan> perhaps you can download base and use it.
19:28:33 <elliott> except "Hugs 98 provides the same Haskell Hierarchical Libraries as GHC, except for the functions listed here." and doesn't list Unsafe.Coerce
19:28:42 <elliott> oerjan: right, i think so (and probably that's what cabal with hugs does)
19:29:00 <elliott> oerjan: except i have a feeling base doesn't really compile on anything but ghc these days.
19:29:18 <oerjan> well they did use _some_ base, i recall the code browser hugs has does include things shared with ghc
19:29:22 <elliott> i'm loathe to add an #ifdef just for that module
19:29:34 <elliott> i'll ask what happens with cabal+hugs
19:29:35 <elliott> oerjan: fair enough
19:30:35 <oerjan> (as evidenced by all the #ifdefs)
19:31:30 <elliott> right
19:31:39 <oerjan> are you finished testing hugs then?
19:31:47 <elliott> i think so. at least for now
19:32:10 <elliott> maybe i can convince edwardk to axe the ugly slow implementation, since i've actually found another implementation the fast one works on.
19:33:22 <oerjan> well there's still jhc and uhc, right?
19:34:33 <elliott> oerjan: neither of those do MPTCS
19:34:35 <elliott> *MPTCs
19:34:52 <elliott> MPTCs++fundeps are a pretty big extension taken together
19:34:53 <oerjan> ah
19:34:58 <elliott> s/\+\+/+/
19:35:10 <elliott> i think ghc and hugs are the _only_ ones to do them
19:35:15 -!- asiekierka has quit (Read error: Connection reset by peer).
19:35:38 -!- azaq23 has joined.
19:35:40 <elliott> http://hackage.haskell.org/trac/haskell-prime/wiki/FunctionalDependencies "In GHC and Hugs for a long time."
19:35:48 -!- azaq23 has quit (Max SendQ exceeded).
19:36:16 <elliott> technically i don't think we need fundeps. but they're really usefull.
19:36:18 <elliott> *useful.
19:36:26 -!- azaq23 has joined.
19:36:28 -!- Zuu has quit (Changing host).
19:36:28 -!- Zuu has joined.
19:37:41 <oerjan> mhm
19:39:20 <elliott> heh: http://sprunge.us/RAYI
19:39:55 <elliott> ugh, that fails as soon as you put members in it
19:40:38 -!- Phantom_Hoover has quit (Ping timeout: 246 seconds).
19:40:47 <Sgeo> Someone please explain to me something about the world of Pokemon:
19:41:02 <elliott> no
19:41:08 <RocketJSquirrel> Sgeo: There are pookiemans in it.
19:41:13 <Sgeo> There are all these fantastic creatures, and what people often do with them, and it's sanctioned is... get them to fight each other?
19:41:23 <Sgeo> Would that not be equivalent to dog-fighting IRL?
19:41:48 <oerjan> elliott: the two :|: instances conflict and have the exact same head - i'm not sure even IncoherentInstances can accept that...
19:41:49 <ais523> Sgeo: the plot of Black & White is actually mostly based on this
19:41:50 <elliott> pokemon can't die, also dog-fighting isn't fun
19:41:54 <elliott> qed
19:42:05 <elliott> oerjan: it works without any members
19:42:07 <elliott> oerjan: oddly enough
19:42:10 <oerjan> huh
19:42:14 <elliott> but yes it breaks if you add one even with IncoherentInstances
19:42:15 <ais523> elliott: actually, they /can/ die, they just don't typically die from battle
19:42:17 <Sgeo> elliott, can they feel pain?
19:42:19 <elliott> ais523: true
19:42:22 <elliott> Sgeo: who cares!
19:42:29 <elliott> have YOU ever seen a pokemon complain???
19:42:33 <ais523> in red & blue, there's a common fan rumour that you kill one of your rival's Pokémon in one of the early forced battles, though
19:42:46 <elliott> ais523: oh, I remember that
19:44:35 <Sgeo> Just read the spoilers on the TV Tropes Black and White page
19:51:29 -!- ion has quit (Ping timeout: 246 seconds).
19:57:11 <itidus20> Sgeo: the world presented by the pokemon software is quite boring unless the pokemon fight :P
19:57:29 <olsner> I suspect it's pretty boring when they fight too
19:58:14 <itidus20> in the very first games it was actually quite fun
19:58:29 <itidus20> it was new and the cartoon was out coinciding with it
20:01:46 <elliott> oerjan: anyway, hopefully reflection 1.1.4 should support hugs :)
20:02:06 <oerjan> :D
20:03:19 <itidus20> to be honest society rarely does things for animals without some hidden agenda
20:05:11 <itidus20> animals serve as food, as clothing, as medicine, as companions who are trapped with you or suffering some kind of stockholm syndrome,
20:05:24 <itidus20> as entertainment in zoos or circuses
20:05:46 <itidus20> as expendables when experimentation is necessary
20:06:18 <Sgeo> I guess there isn't a good way to study the psychology of pets
20:07:53 <itidus20> this being said we do offer them shelter, food, and some level of protection from predators, while taking away their social life
20:09:47 <shachaf> elliott: registerTrademark :: TMVar a -> RVar a
20:11:08 <itidus20> Sgeo: about games, nearly all video games involve some kind of core violence element. as to why that is i haven't quite been able to work it out
20:11:27 <olsner> itidus20: because violence is fun, obviously
20:11:28 <monqy> nearly all?
20:11:40 <monqy> have you seen all video games
20:11:49 <itidus20> dungeons and dragons for example, is based on violence :P
20:12:08 <Sgeo> Pretty sure D&D isn't a video game
20:12:25 <itidus20> well they derive some video games from it loosely :P
20:12:31 <Madoka-Kaname> Because violence is the easiest way to set up well, conflict?
20:12:53 <Madoka-Kaname> Something to do?
20:12:58 <elliott> I wonder if itidus20 knows that a large number of pets would not survive in the wild.
20:13:01 <itidus20> pong-no, asteroids-yes, pacman-yes, space invaders-yes, donkey kong uhmm-i guess so
20:13:15 <elliott> (For instance, when the domestic rabbit is placed into the wild, it becomes the subspecies known as "roadkill".)
20:14:15 <itidus20> elliott: good point.. and even without human's influence on the earth they would probably be killed by something else
20:14:28 -!- Phantom_Hoover has joined.
20:14:31 -!- nortti has quit (Quit: nuq).
20:14:42 <itidus20> wait uh.. asteroids is a grey area
20:14:58 <elliott> Wild rabbits survive fine. But they're not the same as domesticated rabbits.
20:19:40 -!- zzo38 has joined.
20:24:31 <itidus20> i forfeit my argument
20:25:07 -!- ion has joined.
20:25:26 -!- zzo38 has left.
20:28:34 <itidus20> as to violence (which i havent defined): first person shooters, military sims, rpgs, most platformers, tower defence, terraria, eve, shoot-em-ups, fighting games
20:29:59 <itidus20> puzzle games seem to get by without it
20:30:10 <itidus20> and abstract strategy games
20:30:25 -!- zzo38 has joined.
20:31:00 <shachaf> monqy: elliott didn't see your poem
20:31:01 <itidus20> also sports.. and any non-violent non-video game which is simulated as a video game :P
20:31:04 <shachaf> hi monqy
20:31:21 <monqy> shachaf: hi shachaf
20:31:21 <zzo38> Well, in some video-game/computer-game, not all, there is things you can get hurt, either passive pieces (spikes) or active pieces (people with guns); in some games you cannot get hurt but can still get stuck by doing something wrong (sokoban).
20:31:30 <monqy> did elliott not logread
20:31:50 <shachaf> elliott: did you not logread
20:31:52 <elliott> Can I see your poem?
20:31:54 <shachaf> elliott: :(
20:31:55 <elliott> I didn't read.
20:32:06 <zzo38> Half of the games I make don't have anything with violence, or some games only partially in some parts of the game not everything
20:32:44 <itidus20> well i'm famous for half-baked strawman arguments :-s
20:33:31 <shachaf> hi monqy
20:36:21 <monqy> the poems are somewhere in the logs
20:36:28 <shachaf> hi logs
20:36:47 <itidus20> zzo38: one thing that occurs to me sometimes is that video game play can never be a perfect simulation of someones morals or ethics because the universe of the game is inherently controlled by the designer
20:36:56 <shachaf> 17:46 < monqy> hi
20:36:57 <shachaf> 17:46 < monqy> hi everybody
20:36:57 <shachaf> 17:46 < monqy> hi nobody
20:36:57 <shachaf> 17:46 < monqy> hi
20:36:57 <shachaf> 17:46 < monqy> - a poem
20:36:59 <shachaf> 17:46 < monqy> - by monqy
20:37:01 <shachaf> 17:46 < monqy> - (c) 2012 "monqy"
20:37:21 <shachaf> elliott: Not that that was monqy's only poem, mind you.
20:37:30 <elliott> 21:27:25: <zzo38> oerjan_: I know that; but still its implementation is not so good in my opinion. It is why I wanted to invent the new programming language instead, with new things differences, let's make up the working group to argue about it too.
20:37:37 <shachaf> 18:49 < monqy> hi
20:37:37 <shachaf> 18:49 < monqy> - a poem
20:37:37 <shachaf> 18:49 < monqy> - a poem
20:37:37 <shachaf> 18:50 < monqy> - a poem
20:37:37 <shachaf> 18:50 < monqy> - a poem
20:37:37 <elliott> zzo38: The new implementation is much better.
20:37:40 <shachaf> 18:50 < monqy> - a poem
20:37:40 <elliott> No overhead or anything.
20:37:42 <shachaf> 18:50 < monqy> - hi monqy
20:37:43 <elliott> shachaf: Stop ruining it.
20:37:45 <elliott> I want to see them in context.
20:37:50 <shachaf> 18:48 < monqy> hi shachaf
20:37:50 <shachaf> 18:48 < monqy> hi
20:37:50 <shachaf> 18:48 < monqy> hi alone is poetry
20:37:50 <shachaf> 18:48 < monqy> hi
20:37:50 <shachaf> 18:49 < monqy> that was also a poem
20:37:53 <shachaf> 18:49 < monqy> - a poem
20:37:55 <shachaf> 18:49 < monqy> - by monqy
20:37:58 <shachaf> 18:49 < monqy> - (c) 2012 "monqy"
20:38:13 <shachaf> Oh.
20:38:21 <itidus20> wow. a working group
20:38:25 <elliott> 21:47:37: <Sgeo> http://www.youtube.com/watch?v=j7XR9yH2ETk
20:38:32 <elliott> Sgeo: fifteen seconds in and this is already hilarious
20:38:49 <elliott> "from creation to natural death" WOW that's a depressing slogan.
20:39:52 <itidus20> die from natural causes or your money back
20:40:07 <elliott> 00:00:21: <Sgeo> http://www.newser.com/story/143556/phyllis-schlafly-warns-men-dont-date-feminists.html
20:40:07 <elliott> 00:00:48: <Sgeo> Huh. Haven't heard of this woman before. (But did note the name and according to the evil librul Wikipedia, Andy's her son)
20:40:15 <elliott> Sgeo: Phyllis Schlafly is... not the most pleasant of people: http://en.wikipedia.org/wiki/Phyllis_Schlafly#Viewpoints
20:40:59 <elliott> 00:19:29: <shachaf> `run rm -rf wisdom/*
20:41:05 <elliott> shachaf: Don't do this, it's just annoying.
20:41:06 <elliott> `? welcome
20:41:09 <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:41:15 <elliott> Good, someone already reverted it.
20:41:15 <monqy> elliott: oerjan fixed it
20:41:24 <shachaf> elliott: oerjan almost banned me. :-(
20:41:31 <shachaf> How do I get actually banned. :-(
20:41:34 <elliott> `? XY
20:41:37 <HackEgo> XY? ¯\(°_o)/¯
20:41:42 <elliott> No, you didn't fix it.
20:41:43 <elliott> `help
20:41:45 <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:41:47 <elliott> s/you/oerjan/
20:41:50 <monqy> oh no
20:41:52 <shachaf> `run echo "XY problem is probably not what you are really after. Try asking about your real underlying problem instead." > 'wisdom/xy problem'
20:41:55 <HackEgo> No output.
20:41:58 <itidus20> shachaf: if i figure out how i'll tell you >_>
20:42:01 <monqy> `? monqy
20:42:04 <HackEgo> hi monqy
20:42:05 <monqy> looks fixed to me!
20:42:09 <shachaf> hi monqy
20:42:10 <elliott> `revert 193
20:42:13 <HackEgo> Done.
20:42:14 <elliott> It was at "xy problem", not "xy".
20:42:25 <elliott> RocketJSquirrel: Can you add shachaf to HackEgo's ignore list?
20:42:52 <elliott> RocketJSquirrel: cf. http://codu.org/projects/hackbot/fshg/index.cgi/rev/b354fd7abfc7 http://codu.org/projects/hackbot/fshg/index.cgi/rev/b26535750abf http://codu.org/projects/hackbot/fshg/index.cgi/rev/59f2b27c2279 http://codu.org/projects/hackbot/fshg/index.cgi/rev/731c3a01b9da
20:42:53 <shachaf> `add-wisdom xy SEE XYZ PROBLEM
20:42:56 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: add-wisdom: not found
20:43:09 <shachaf> RocketJSquirrel: I was explicitly told that this was OK to do!
20:43:17 <shachaf> A while ago.
20:43:29 <itidus20> "Phyllis Schlafly's son Andrew became a lawyer and founded the website Conservapedia."
20:44:04 <elliott> Trying to break the bot the first time you see it will not get you ignored. Repeatedly doing nothing but mess with the bot will, as another has found out before.
20:44:22 <oerjan> <elliott> No, you didn't fix it. <-- yes i did, you did the wrong query
20:44:27 <shachaf> elliott: I didn't try to break the bot.
20:44:43 <shachaf> If I thought it would actually break the bot, I wouldn't have done it.
20:45:15 <elliott> oerjan: Right, I apologise.
20:45:19 <zzo38> itidus20: OK; yes I can see moral/ethics based on the game's designer
20:45:21 <elliott> oerjan: (Also for calling you shachaf.)
20:45:37 <elliott> shachaf: It did break the bot. The fact that it was reversible is irrelevant; someone had to come out with superglue and fix i.
20:45:38 <elliott> *it.
20:45:43 <elliott> And that person wasn't you.
20:45:51 <zzo38> Because I do sometimes disagree with such things however it is just game, the goal is to win the game. But sometimes additional challenge, score, time, etc
20:46:12 <itidus20> zzo38: i never finished that rant :P
20:46:18 <itidus20> ill scroll up
20:46:22 <Phantom_Hoover> elliott, can you still not play worms
20:46:27 <elliott> Phantom_Hoover: sorry shall i
20:46:28 <elliott> fix that??
20:46:32 <shachaf> elliott: I tried to fix it, though!
20:46:34 <elliott> i could get out my mac i supPOSe
20:46:49 <shachaf> Wait, are we playing Worms?
20:46:49 <shachaf> hi worms
20:46:50 <elliott> shachaf: When have you used HackEgo to do anything but try to delete wisdom entries and quotes you don't like?
20:47:05 <monqy> `? shachaf
20:47:08 <HackEgo> No output.
20:47:09 <shachaf> elliott: I've almost never done that?
20:47:35 <Phantom_Hoover> yes worms
20:47:37 <Phantom_Hoover> worms worms worms
20:47:39 <Phantom_Hoover> worms!
20:47:42 <shachaf> Anyway, if you ignore me on HackEgo I demand thta oerjan also kick me.
20:47:45 <itidus20> zzo38: basically, in some games in order to be a pacifist one must either put down the controller altogether or in some cases perhaps even turn the game off
20:47:51 <elliott> oerjan: Can you just kick him so he shuts up about that?
20:47:52 <zzo38> In Dungeons&Dragons game is not computer game so you have more possibilities; see the stuff I wrote about D&D game (both the session recording, and some spells/skills/feats, and gopherlogs, for more information too)
20:47:54 <monqy> `run echo "hi monqy" > 'wisdom/shachaf'
20:47:57 <HackEgo> No output.
20:47:58 <monqy> `? shachaf
20:48:01 <HackEgo> No output.
20:48:04 <monqy> :(
20:48:06 <elliott> `run echo 'shachaf mad' > wisdom/shachaf # rv
20:48:08 <Phantom_Hoover> i was bored so i wormed but it just isnt the same when you control both sides
20:48:09 <HackEgo> No output.
20:48:12 <zzo38> itidus20: Yes, in some games; not in all games. In a few games you would be forced to pacifist, in some game don't work, and in others you have choices
20:48:14 <monqy> "bad at echo " - me
20:48:15 <elliott> Phantom_Hoover: you realis it has cpu players too
20:48:17 <elliott> *realise
20:48:21 <elliott> Phantom_Hoover: what time is it in america
20:48:24 <elliott> monqy: no, that's just the lag delay
20:48:24 <Phantom_Hoover> and its horrible against cpus, they are not smooth at all
20:48:25 <elliott> thing
20:48:27 <itidus20> zzo38: i see.. so d&d can actually give you real choice. thats interesting
20:48:33 <shachaf> `run echo "hi monqy" > wisdom/shachaf # hi
20:48:36 <HackEgo> No output.
20:48:38 <elliott> `revert
20:48:38 <shachaf> `? shachaf
20:48:39 <elliott> Stop.
20:48:40 <HackEgo> Done.
20:48:45 <Phantom_Hoover> they just hit you with bloody pinpoint bazooka shots all the time
20:48:51 <shachaf> elliott: Come on, it's my own wisdom entry.
20:48:53 <HackEgo> No output.
20:49:00 <shachaf> And I'm being constructive here.
20:49:06 <shachaf> I'm adding, not removing.
20:49:20 <Phantom_Hoover> It is ten to American five.
20:49:26 <oerjan> <elliott> oerjan: Can you just kick him so he shuts up about that? <-- no. _not_ kicking him seems like more of a punishment, no?
20:49:34 <shachaf> You're the fascistdictator, not me.
20:49:50 <shachaf> That's why I left that other channel, too. You're too much of an evil person.
20:50:08 <elliott> oerjan: I don't want him punished, I just want him to shut up about it.
20:50:14 <shachaf> Your goal is to make everyone who disagrees with you miserable.
20:50:25 <elliott> I think you'll find you're already miserable.
20:50:33 <shachaf> Hardly!
20:50:54 <Sgeo> Phantom_Hoover, I am capable of playing worms
20:51:16 <Phantom_Hoover> Yes but the more the smoother.
20:51:21 <itidus20> zzo38: in particular, is the way in which in the real world one can define ones own goals, and can hope for events to improve naturally, or negotiate with anyone they encounter
20:51:24 <itidus20> yada yada
20:51:31 <itidus20> i guess such things also more possible in d&d
20:51:33 <shachaf> oerjan: So will you kick me or not?
20:51:36 <Sgeo> elliott, did you finish watching the video?
20:51:57 <Phantom_Hoover> OK wait I will try to host a game.
20:51:57 <zzo38> But I made Super ASCII MZX Town; it has things, such as, you can shoot stuff but you shouldn't shoot everything because doing so is a waste of ammunition, and you also get extra points at the end for conserved ammunition/money/health/etc. In one level you have to beat Dr.Gray but you have to use the pieces on the board to beat him; you cannot use your own ammunition/bombs
20:52:07 <elliott> Phantom_Hoover: ;__;
20:52:41 <Phantom_Hoover> Don't worry, it won't be as fun because I don't know how to turn superweapons on.
20:52:42 <elliott> 07:46:43: <Taneb> main() { hi; }
20:52:51 <elliott> @tell Taneb That book has started to give you misconceptions already.
20:52:51 <lambdabot> Consider it noted.
20:53:26 <elliott> `? monqy
20:53:29 <HackEgo> The friendship monqy is an ancient Chinese mystery; ask itidus21 for details.
20:53:30 <elliott> `run echo hi > monqy
20:53:32 <HackEgo> No output.
20:53:34 <zzo38> In some levels there are Kill Enemies potions but they are almost always not what you should use (they might cause a puzzle to be impossible). And then there are potions Wind, Summon Dragons, Banish Dragons; you must use them effectively because using them in the wrong time/place is not working
20:54:02 <shachaf> `? shachaf
20:54:05 <HackEgo> No output.
20:54:11 <monqy> `cat monqy
20:54:14 <monqy> `? monqy
20:54:14 <HackEgo> hi
20:54:14 <shachaf> `run echo "hi monqy" > wisdom/shachaf # hi
20:54:17 <HackEgo> The friendship monqy is an ancient Chinese mystery; ask itidus21 for details.
20:54:21 <shachaf> `? shachaf
20:54:24 <HackEgo> No output.
20:54:28 <HackEgo> No output.
20:54:31 <shachaf> `run cat $(which ?)
20:54:34 <HackEgo> ​#!/bin/sh \ topic=$(echo "$1" | tr A-Z a-z) \ [ -e "wisdom/$topic" ] || { echo "$1? ¯\(°_o)/¯"; exit 1; } \ cat "wisdom/$topic" \ \ #!/usr/bin/perl -w \ $_ = join " ", @ARGV; if (s/^([^ ]*) +([^ ]*) +//) { print "$1: "; exec $2, $_; } \ #!/bin/sh \ echo '!"#$%^&* 0123456789'
20:54:39 <itidus20> zzo38: i have been recently pondering the way you can substitute one component in a system for a different but compatible component..
20:54:41 <Phantom_Hoover> Sgeo, OK, wormnet, #AnythingGoes, name is "fruity rumpus ******* factory" (nazis) and there's no password.
20:54:57 <Sgeo> Hold on
20:55:22 <itidus20> especially because of thinking about how soy milk and almond milk can replace regular milk
20:55:51 <zzo38> itidus20: Like, what do you mean? Intel with AMD?
20:55:59 <Sgeo> Phantom_Hoover, let me get a handle on the comp
20:56:05 <itidus20> zzo38: like uh.. replacing tea with coffee :P
20:56:18 <zzo38> itidus20: O, like that. OK
20:56:26 <monqy> but I like tea but don't like coffee. please do not replace.
20:56:27 <itidus20> same thing though
20:56:30 <itidus20> in a way
20:56:40 <Phantom_Hoover> I'm tempted to slam the item count up to maximum, but IME that makes vast swathes of the map explode at the slightest provocation, and that cuts things short a bit.
20:56:42 <ais523> itidus20: well, I can't drink too much regular milk, so I typically live on soya milk substitute
20:56:50 <ais523> (nobody calls it soya milk in the UK, so I'm guessing they aren't allowed to)
20:57:37 <itidus20> i was having a lot of insights into this whole idea of substituting
20:58:31 <monqy> but were they good insights
20:58:46 <itidus20> if someone replaces a component in a system for a compatible but different component it is probably for one of the following reasons i identified
20:59:12 -!- Deewiant_ has changed nick to Deewiant.
20:59:24 <zzo38> What reasons are those? Free software/open-source?
20:59:57 <itidus20> space usage, electricity usage, time usage, weight, money cost, availability, redundancy (hmm), harm to sentient beings (uh... ), positive side effects/benefits(...)
21:00:17 <zzo38> itidus20: Yes those are some reasons too
21:00:22 <Phantom_Hoover> Sgeo, you are DISAPPOINTING me
21:00:24 <itidus20> and pleasantness as in.. (taste, quietness, softness)
21:00:27 <Sgeo> Phantom_Hoover, hold on
21:00:30 <Sgeo> WA is now open at least
21:00:46 <monqy> what makes components compatible
21:00:59 <Sgeo> Phantom_Hoover, I don't see it
21:01:17 <elliott> `run echo 'shachaf mad' >wisdom/shachaf
21:01:19 <HackEgo> No output.
21:01:21 <Phantom_Hoover> #AnythingGoes?
21:01:29 <monqy> `? shachaf
21:01:32 <HackEgo> No output.
21:01:33 <Sgeo> Yep
21:01:42 <itidus20> monqy: well.. very few systems require a component to be exactly that component.. nearly always there is room for alternatives
21:01:46 <Sgeo> Let me check on the web snoop thing
21:01:57 <monqy> itidus20: what does require mean
21:02:18 <Sgeo> Phantom_Hoover, do you see t on here
21:02:19 <Sgeo> Oh
21:02:26 <monqy> itidus20: what exactly makes a component work in a system? what does it mean for a system to work?
21:02:26 <itidus20> ok in some cases... it may be that the component is there to get electricity from one point to another
21:02:30 <Phantom_Hoover> You see the new one?
21:02:51 <itidus20> so wire might be optimal but you could also use water
21:02:53 <Sgeo> Phantom_Hoover, yep
21:02:55 <Sgeo> Trying to connect
21:02:58 <Sgeo> Not connecting
21:03:13 <itidus20> monqy .. im not quite sure
21:03:19 <Phantom_Hoover> um
21:03:29 <elliott> Phantom_Hoover: You did forward the ports, right?
21:03:29 <Phantom_Hoover> did i not do something i'm meant to/
21:03:34 <Phantom_Hoover> THAT WOULD BE WHY
21:03:44 <elliott> I doubt you have access to wherever you're staying's routers.
21:03:58 <Sgeo> There's a wormkit thingy...
21:04:08 <Phantom_Hoover> Sgeo, hello I hope your dad lets you at the router.
21:04:11 <itidus20> monqy: but i did come up with some examples
21:04:17 -!- zzo38 has left ("Call me if you have something else to say by now").
21:04:27 <elliott> We can call zzo38?
21:04:35 <itidus20> like.. a food cooking system could either be a campfire or a gas oven
21:05:11 <itidus20> and a land transport system could either be a horse or a bicycle or a car
21:05:12 <elliott> 09:36:15: <kmc> do the C standards require that a string literal evaluates to a pointer that's always valid and points to that string?
21:05:14 <elliott> kmc: What else could you do?
21:05:15 <Sgeo> Phantom_Hoover, hmm
21:05:27 <Sgeo> I could try that I guess, although my dad would yell at me if he found out
21:05:33 <monqy> itidus20: those aren't interchangable at all
21:05:36 <Phantom_Hoover> sgeo the alternative is waiting for elliott to get his act together
21:05:47 <monqy> itidus20: in a few cases, sure, but generally? nope
21:05:52 <Phantom_Hoover> yes you must forward ports stealthily
21:05:54 <Phantom_Hoover> like worm
21:06:59 <Sgeo> Or one of the other of us can use WormKit
21:07:04 <Sgeo> Or HostingBuddy
21:07:46 <elliott> Why aren't you just using HostingBuddy?
21:07:47 <itidus20> monqy: well it depends how much flexibility you can afford
21:07:57 <Phantom_Hoover> elliott, BECAUSE I AM STUPID
21:08:25 <itidus20> like a bicycle will get you there "eventually"..
21:08:36 <itidus20> but then.. even walking can do that
21:09:01 <monqy> walking backwards can do that
21:09:16 <elliott> Phantom_Hoover: !host
21:09:30 <shachaf> elliott: Is HostingBuddy like BONZI Buddy?
21:09:34 <shachaf> hi bonzibuddy
21:09:57 <Phantom_Hoover> ok i will
21:09:58 <Phantom_Hoover> use that
21:10:01 <itidus20> monqy: i noticed that as technology progresses that the components basically offer more and more
21:10:23 <itidus20> and as a result the systems that the components are part of become better
21:10:26 <elliott> shachaf: Do you actually enjoy just saying nonsense all the time in here?
21:10:34 <shachaf> elliott: Yep.
21:10:39 <shachaf> Isn't that what this channel is for?
21:10:43 <elliott> No.
21:10:47 <shachaf> Oh.
21:10:49 <shachaf> What is it for?
21:10:57 <Phantom_Hoover> Is Full Wormage the smooth option?
21:11:00 <Phantom_Hoover> *scheme
21:11:08 <Sgeo> Yes, for all weapons
21:11:15 <itidus20> monqy: im making up my own definitions at an alarming rate
21:11:22 <monqy> alarming indeed
21:11:28 <Phantom_Hoover> Yes.
21:11:30 <Phantom_Hoover> Yes it is.
21:12:30 <elliott> shachaf: Discussion of esoteric topics in computer programming, broadly construed, plus whatever off-topic discussion interests the majority of whoever's talking at the time.
21:12:42 <itidus20> monqy: ok well if a meal is a system, then.. vegans have shown how it's surprisingly possible to find close substitutes to each part of the meal
21:13:04 <Sgeo> Phantom_Hoover, with that many worms, please turn teleport at start off?
21:13:18 <itidus20> and i suspect that a lot of vegan meals wouldn't exist if they weren't inspired by non-vegan ones
21:13:19 <Phantom_Hoover> WELL FINE
21:13:26 <Phantom_Hoover> Ropework is smoother anyway.
21:13:31 <Sgeo> Not the weapon
21:13:38 <Sgeo> Just the at start thing
21:14:13 <itidus20> but speaking of "wouldn't exist" i subscribe to the theory that the universe can't simply be added to and subtracted from arbitrarily.. and that everything simply exists
21:14:29 <monqy> deep
21:15:14 <itidus20> but it makes sense to say i wouldn't exist if my parents didn't have sex..
21:15:22 <itidus20> gah..
21:15:49 <monqy> also deep
21:16:44 <itidus20> i mean it's not like theres any risk of me not existing
21:17:23 <itidus20> though i may cease to exist eventually
21:17:36 <monqy> you'll always exis
21:17:37 <monqy> t
21:17:39 <monqy> in our hearts
21:17:50 <Phantom_Hoover> Sgeo, that seems to have frozen it.
21:18:08 <Sgeo> ...I just did the same :(
21:18:11 <Sgeo> DAMMIT
21:18:33 <itidus20> in general, i have issues with statements of the form "X wouldn't exist if Y happened."
21:18:57 <itidus20> something funny about it
21:19:55 <elliott> wat
21:20:29 <Phantom_Hoover> OK, join the new server.
21:20:34 <Phantom_Hoover> *game
21:20:44 <Phantom_Hoover> elliott, escape then minimise freezes WA.
21:21:01 <Sgeo> in WINE
21:21:01 <Phantom_Hoover> This is annoying because it's otherwise impossible to switch out.
21:21:11 <Sgeo> Phantom_Hoover, maybe Alt-Tab?
21:21:17 <Phantom_Hoover> Nope.
21:21:26 <Phantom_Hoover> WA captures the mouse and won't let go.
21:21:35 <itidus20> ahh.. because Y can't actually happen independantly of everything else that happened
21:21:52 <elliott> Yeah, that's only in Wine.
21:21:59 <itidus20> theres no way to protect the universe from side effects of Y happening
21:22:16 <Sgeo> Uh, it unfroze for me
21:22:26 <Sgeo> No it didn't
21:22:47 <Sgeo> Yes it did, due to Ctrl-C?
21:22:50 <Sgeo> WTF is going on here
21:22:57 <itidus20> it's fine in theory, but in practice, isolated events don't happen
21:45:38 <elliott> oerjan: however 1.1.4 might take a while :P
21:45:42 <elliott> i need to find someone who has used hugs with cabal.
21:45:49 <oerjan> heh
21:45:54 <elliott> (would you hate me if I enlisted you to try and install it?)
21:46:03 <oerjan> yes.
21:46:24 <elliott> how much
21:46:43 <Sgeo> Well, I are a doofus
21:46:47 <oerjan> 9.2
21:46:52 <elliott> oerjan: out of 100?
21:46:56 <oerjan> no.
21:47:11 <Phantom_Hoover> That drill was the funniest thing.
21:47:24 <itidus20> monqy: ok while i made my breakfast i figured out what i meant logically.. although my parents not having sex would mean i didn't exist.. i couldn't isolate my non-existence from the rest of the universe
21:47:26 <Sgeo> I thought that would have the best chance of making sure you drowned.
21:47:31 <elliott> oerjan: out of 10?
21:47:36 <oerjan> yes.
21:47:39 <elliott> oerjan: that's ok.
21:47:42 <elliott> i can work with .8.
21:47:43 <elliott> brb
21:48:19 <oerjan> that was supposed to mean "no way", btw.
21:48:27 <Phantom_Hoover> I thought I was dead.
21:48:43 <Sgeo> elliott, so, if you have two worms, your opponent has one worm, one of your worms and your opponents worm is on a girder over the water, WHAT DO YOU DO?
21:48:55 <itidus20> ah i give up.. time travel is too complicated
21:48:56 <oerjan> you die.
21:50:21 <itidus20> its been a long time since i played worms but i think you do some martial arts
21:50:39 <Sgeo> There was a sort of hook at the end of the girder
21:50:43 <Sgeo> So the worm could have lived
21:50:59 <itidus20> agh
21:51:00 <Sgeo> Or so was my thinking
21:51:26 <kmc> <Phantom_Hoover> Aren't they mostly standard Yale locks?
21:51:27 <kmc> yes
21:51:29 <Sgeo> But really, better to have the enemy live and 2 worms of mine alive than the enemy live and only one worm of mind alive...
21:51:41 <kmc> if by "yale lock" you mean a standard pin tumbler lock and not that specific brand
21:51:52 <itidus20> Sgeo: did you blow up the girder? :D
21:52:11 <Sgeo> I drilled down, sacrificing one of my worms in order to fail to kill my enemy.
21:52:40 <itidus20> oh ya. i envisioned that drilling down
21:52:44 <itidus20> wow.. he didnt die
21:52:51 <itidus20> how dramatic
21:52:55 <Sgeo> He was knocked out of the way
22:05:51 -!- calamari has joined.
22:09:25 <elliott> back
22:09:29 <elliott> <Sgeo> elliott, so, if you have two worms, your opponent has one worm, one of your worms and your opponents worm is on a girder over the water, WHAT DO YOU DO?
22:09:44 <elliott> punch/poke/ropeknock them off, or rope/bungee/parachute/teleport away
22:11:26 <elliott> @ping
22:11:26 <lambdabot> pong
22:14:14 <Sgeo> elliott, safe to say that my answer is th wrong one?
22:14:15 <Sgeo> the
22:14:38 <elliott> Sgeo: yes. it's possible to drag someone down with a drill but v. difficult
22:14:44 <elliott> iirc
22:14:49 <elliott> why didn't you just do one of my suggestions
22:15:19 <Sgeo> Well, I pondered baseball-batting, but there was a slim chance the worm would have lived
22:15:33 <elliott> if it's a girder and there is water below? no
22:15:35 <Sgeo> Or if I did it straight, more than a slim chance of being saved by a hook
22:15:40 <elliott> baseball bat will work every time
22:15:55 <Sgeo> Because there was a hook at the end of the girder which the worm could have fallen into
22:15:58 <elliott> you can point it as far up as it'll go, it'll still work
22:16:03 <elliott> baseball bats hit like hell
22:16:14 <Sgeo> There was land elsewhere on the map, you know
22:16:42 <elliott> oh
22:16:50 <elliott> meh, they'd probably bounce
22:16:52 <elliott> fire punch?
22:19:58 <elliott> http://en.wikipedia.org/wiki/Easter_controversy
22:30:14 <Phantom_Hoover> elliott, remind me why RWH is Bad.
22:33:05 <elliott> Phantom_Hoover: It's not Bad, as such.
22:33:15 <elliott> Phantom_Hoover: It's (a) not a good introductory book, and (b) out-of-date (2009).
22:33:31 <Phantom_Hoover> Ah.
22:35:43 <elliott> Phantom_Hoover: Why'd you ask?
22:36:13 <Phantom_Hoover> You mentioned it yesterday and I remembered that I had been interested in the reason but hadn't actually seen it.
22:36:53 <kmc> i quite like the later "topics" chapters
22:37:03 <kmc> concurrency, profiling, FFI, STM
22:37:15 <kmc> i can see why the early chapters would not be a good way to learn Haskell from scratch
22:37:24 <elliott> kmc: yes, I appreciate those muchly
22:37:34 <elliott> kmc: that is why I recommend reading it after LYAH if you want
22:37:35 <kmc> they focus on big ugly examples in an attempt to prove Haskell is Real World
22:37:52 <kmc> i think RWH might suffer from mixing evangelism and teaching a bit
22:37:54 <elliott> but people who come into #haskell using RWH inevitably misunderstand the very basics while in a chapter already on to practical, non-basic stuff
22:37:56 <Sgeo> Well, Haskell has the RealWorld
22:38:05 <Sgeo> >>>
22:38:07 <Sgeo> erm >.>
22:38:09 <kmc> no it doesn't
22:38:23 <elliott> kmc: did you see that crappy new haskell tutorial
22:38:28 <kmc> if i ever write a Haskell tutorial it'll be like "look, you want to learn Haskell, why are you even here if you don't"
22:38:34 <kmc> and then i don't need to spend every page talking about how great haskell is
22:38:38 <kmc> elliott, no
22:38:42 <elliott> kmc: you are missing out!!!
22:39:03 <kmc> link plsz
22:39:14 <elliott> it's called
22:39:23 <elliott> Learn Haskell Fast and Hard: Blow your mind with Haskell
22:39:26 <elliott> http://yannesposito.com/Scratch/en/blog/Haskell-the-Hard-Way/
22:39:32 <kmc> oh jesus
22:39:42 <elliott> and it is written by the person who asked a simple haskell-in-IO question on SO in December
22:39:47 <kmc> ultra kickass haskell for bacon zombie robots
22:39:48 <elliott> which i answered as my first SO answer
22:40:06 <elliott> i guess if you read that tutorial, you can become an expert as fast as they did!
22:40:37 <kmc> sigh
22:40:46 <elliott> "Also, if somebody has any advice on what I should read to grasp how to work with haskell.
22:40:47 <elliott> It is the second time I am faced with something easy to do with imperative programming but almost impossible to understand how to do it in haskell. My last problem was about a "how would you simulate a break in haskell", for example. Thanks!"
22:41:07 <kmc> what does #haskell think of this tutorial
22:41:18 <kmc> i choose to retitle it "blow yourself with haskell, fast and hard"
22:41:27 <elliott> unfortunately the tutorial is just kind of bad, rather than hideously inaccurate
22:41:42 <elliott> so it's difficult to rampantly mock it :(
22:42:03 <elliott> kmc: dunno if #haskell have discussed it
22:42:06 <elliott> proggit have "discussed" it
22:42:20 <elliott> but all haskell tutorials are equivalent to proggit, they're just excuses to be an idiot about haskell
22:42:30 <kmc> proggit flung their feces at it
22:43:09 <elliott> speaking of terrible things
22:43:14 <elliott> kmc: have you seen the Monad page on haskellwiki
22:43:22 <elliott> i know you love terrible things
22:45:47 -!- Phantom_Hoover has quit (Ping timeout: 246 seconds).
23:00:37 -!- calamari has quit (Quit: Leaving).
23:16:35 -!- Phantom_Hoover has joined.
23:16:36 -!- Phantom_Hoover has quit (Client Quit).
23:16:49 -!- Phantom_Hoover has joined.
23:17:13 <Phantom_Hoover> fizzie, hey, can you use your googlematic colourtron on 'titian', please?
23:18:51 -!- calamari has joined.
23:19:06 <elliott> Phantom_Hoover: It's like a titan, but with more tits. HTH.
23:20:10 <elliott> * #haskell Banlist: Wed Feb 8 18:01:13 palomer!*@* moorcock.freenode.net
23:20:13 <elliott> I remember that name too! Who was that?
23:23:33 <elliott> ./05.07.29:22:36:07 <palomer> hrm, the literature on monads sucks:O
23:23:33 <elliott> ./05.07.29:22:36:13 <palomer> I wish there was a SICP for monads
23:23:33 <elliott> ./05.07.29:22:36:20 <palomer> are there any books that explain them well?
23:23:37 <elliott> 2005 is JUST LIKE THE PRESENT.
23:24:03 <elliott> oh
23:24:04 <elliott> @palomer
23:24:04 <lambdabot> That's a lie
23:24:08 <elliott> i guess that's where i remember them from :D
23:24:22 <elliott> ./08.04.15:14:14:10 <vincenz> What about lament? He's like palomer2
23:24:45 -!- sebbu has quit (Read error: Connection reset by peer).
23:25:07 <elliott> ./08.07.08:11:20:09 <tusho> who is palomer
23:25:09 <oerjan> ouch
23:25:17 <elliott> @palomer
23:25:17 <lambdabot> That's a lie
23:25:17 <elliott> @palomer
23:25:18 <lambdabot> I think vim is good for the rubbish bin
23:25:18 <elliott> @palomer
23:25:18 <lambdabot> You're all nuts
23:25:18 <elliott> @palomer
23:25:18 <lambdabot> Learning vim is pointless
23:25:18 <elliott> @palomer
23:25:19 <lambdabot> They're telling you lies!
23:25:19 <elliott> @palomer
23:25:19 <lambdabot> (_|_)
23:25:20 <elliott> @palomer
23:25:21 <lambdabot> (_|_)
23:25:29 <oerjan> lament has really gone downhill, i assume...
23:25:30 -!- sebbu has joined.
23:25:30 -!- sebbu has quit (Changing host).
23:25:30 -!- sebbu has joined.
23:25:39 <elliott> ./08.11.24:22:36:58 <dons> for great smerdy quotes, check the #ocaml log. he and palomer get to grump it out daily.
23:25:42 <elliott> oerjan: erm that's from 2008.
23:26:03 <oerjan> s/has/had/, then
23:26:05 <elliott> oerjan: but don't you remember lament spending a significant portion of time telling everyone how much haskell sucks and how python is way better?
23:26:12 <oerjan> no.
23:26:15 <elliott> i suspect #haskell got that more than we did.
23:26:38 <elliott> ./09.01.15:18:27:47 <shapr> Er, wait, I'm channeling palomer, doh!
23:26:38 <elliott> ./09.01.19:14:23:52 <dons> hehe. that's what hanging out in #ocaml with smerdy and palomer will do to you ;)
23:26:55 <elliott> ./09.06.11:11:46:09 <Cale> edwardk: You're reminding me a bit of palomer, perhaps you'll be capable of what he was trying to do. :)
23:26:58 <elliott> grepping #haskell logs is really fun
23:29:48 <Sgeo> I... in what universe can I set a variable of a PHP script by sending it in a query string?
23:29:59 <Sgeo> Because that was the solution to an extended basic problem on HTS
23:30:01 <ais523> Sgeo: in a universe with register_globals turned on
23:30:12 <ais523> most people consider register_globals to have been a mistake
23:30:50 <Deewiant> And it's removed in php 5.4.0 (the latest stable version)
23:31:15 <elliott> Sgeo: that's what register_globals does
23:31:19 <elliott> ?x=foo sets $x
23:31:19 <lambdabot> Unknown command, try @list
23:31:46 * Sgeo bibbles
23:35:00 <Sgeo> elliott, ....bibble....
23:35:05 <Sgeo> Oh, I already did that
23:37:07 <elliott> just keep bibblin'
23:37:11 -!- calamari has quit (Quit: Leaving).
23:37:57 <elliott> i'm reading a 2009 log and edwardk is talking about type hacks for parsers
23:37:59 <elliott> nothing ever changes
23:38:25 <oklopol> well except sometimes people die
23:38:39 <oklopol> or get a disease and become useless
23:39:15 <elliott> uugh but i am in this log
23:39:23 <elliott> the one thing that changes is that i get a little less stupid every now and then
23:39:48 <elliott> god i was such a shit
23:39:50 <elliott> uugh
23:39:57 <oklopol> can you prove this
23:40:03 <oklopol> for our amusement
23:40:04 <elliott> yeah it's in this log
23:40:09 <elliott> no i won't paste fuck you :(
23:40:16 <oklopol> please paste
23:40:29 <elliott> no fuck you
23:40:31 <elliott> aaargh i hate myself
23:41:10 <oklopol> how about you paste it but change your nick to secret_irc_dudde
23:41:35 <elliott> no
23:41:35 <Phantom_Hoover> secret_irc_duddes are the worst irc_duddes.
23:41:46 <elliott> if you want it you can download the 200 meg file it came in
23:42:19 <oklopol> idgi
23:42:47 <elliott> idgi^2
23:42:58 <elliott> wait that means i don't get the don't getting of it
23:43:05 <oklopol> i heard that in a woman's voice with melody EAAAABCCB
23:44:10 <Phantom_Hoover> oko has perfect pitch?
23:44:17 <oklopol> no.
23:44:23 <oerjan> http://artists.letssingit.com/fame-musical-lyrics-im-gonna-live-forever-cj62l4m
23:44:26 <oerjan> or something.
23:44:34 <oklopol> that + a constant
23:44:42 <elliott> oh i remember that song
23:45:16 <oklopol> it's just that that's the only standard way i can explain melodies
23:46:49 <oklopol> okay so it was probably that one
23:47:04 <oerjan> nice brain
23:47:14 <oklopol> not that i remember ever hearing it
23:47:26 <oerjan> it was all the rage in the 80s
23:47:50 <oerjan> now where did i put my cane
23:48:28 <oklopol> i wasn't really into music back then
23:48:44 <oerjan> okay
23:48:53 <oklopol> but so it was actually ECCCCCCB
23:49:09 <oklopol> mine was better
23:49:15 <oklopol> both suck
23:51:47 <oklopol> well, CCCCCCCB really, since the FAME is sang by the choir thing in C. but before the first chorus, the lead sings E which connects nicely to it.
23:52:50 <oklopol> holy fuck that's a shitty song
23:53:00 -!- derdon has quit (Remote host closed the connection).
23:53:15 -!- calamari has joined.
23:53:20 -!- Sgeo has quit (Ping timeout: 246 seconds).
23:53:23 <elliott> its in my head now
23:53:36 <oerjan> nostalgia isn't what it used to be :(
23:54:10 <oklopol> i have some nostalgia for the few bands i listened to at 10 or something
23:54:12 -!- Sgeo has joined.
23:54:20 <oklopol> so that's klamydia and nightwish basically
23:55:04 <elliott> klamydia is the worst name for a band ever
23:55:06 <oklopol> also i don't get bad songs stuck in my head anymore
23:55:18 <oklopol> it's silly punk
23:56:24 <oklopol> i just liked the lyrics i assume
23:56:48 -!- Patashu has joined.
23:58:14 <oklopol> and i guess maybe stuff like gorgasm from some time later
23:59:04 <oklopol> i remember that neighbors complained when this one time at about midnight, we decided to play gorgasm at full volume for an hour
23:59:06 <elliott> <Hexmind> 99 Haskell Problems is a great place to start
23:59:08 <elliott> kmc: WHY DO PEOPLE SAY THIS
23:59:18 <elliott> that crap survives ENTIRELY on beginners recommending it to other beginners
←2012-04-07 2012-04-08 2012-04-09→ ↑2012 ↑all