00:04:06 -!- aloril has quit (Ping timeout: 252 seconds).
00:04:23 <shachaf> the #2 link on reddit.com/r/haskell is incredible
00:05:23 * kmc fails a "better judgement" roll
00:06:40 <kmc> i like "do" it lets me think that "i get into monad naow"
00:07:56 <Bike> this is no fucking idea?
00:10:13 <Bike> the fork io thing
00:10:17 <shachaf> me talking about it in this channel?
00:10:40 <Bike> truly we live in a post-animal world
00:10:55 <shachaf> is people using @faq six times in a row in #haskell spam
00:12:22 <kmc> does that go to my faq now
00:12:50 <shachaf> int-e: Can you make @faq link to the FAQ on the wiki?
00:12:52 <lambdabot> http://www.haskell.org/haskellwiki/FAQ
00:12:56 <kmc> i thought that changed in the past
00:13:03 <kmc> maybe it changed back :'(
00:13:10 <kmc> whatever Not My Problem™
00:13:44 <shachaf> my /ignore list is now 37 entries long
00:13:51 <shachaf> perhaps i can make #haskell good that way
00:16:27 <oerjan> <kmc> i like "do" it lets me think that "i get into monad naow"
00:17:00 <kmc> that's a quote from the author in that reddit thread
00:17:36 <lambdabot> Couldn't match expected type `GHC.Types.Int'
00:17:36 <lambdabot> with actual type `Debug.SimpleReflect.Expr.Expr'
00:18:35 <shachaf> :t \x -> \y -> x + y :: Int :: Int -> Int :: Int -> Int -> Int
00:19:37 <Bike> it's parsing as (\y -> x + (y :: Int)) :: Int -> Int etc right
00:19:58 <oerjan> Bike: um pretty sure the x + y go together.
00:20:19 <shachaf> (\y -> (x + y) :: Int) :: Int -> Int and so on.
00:21:09 <oerjan> i suppose it's correct.
00:21:25 <oerjan> the second :: forces the inner lambda to end.
00:23:35 <oerjan> > do do do 5 :: Int :: Int :: Int
00:24:02 <oerjan> i guess that's more plainly by the } insertion rule
00:25:02 -!- Sgeo has joined.
00:25:26 <oerjan> > let in let in let in 5 :: Int :: Int :: Int
01:05:56 -!- doesthiswork has joined.
01:08:25 -!- Phantom_Hoover has joined.
01:18:12 <Sgeo> Tekmo is usually awesome, but is http://www.haskellforall.com/2013/02/you-could-have-invented-comonads.html ok, or is it just going to be bad?
01:18:29 <Sgeo> (It's the 'comonads are objects' article)
01:20:05 <oerjan> istr people didn't generally agree with the assessment.
01:20:29 <shachaf> i disagree with most of his assessments
01:20:36 -!- muskrat has quit (Quit: Leaving).
01:20:47 <oerjan> shachaf: what, why do you hate categories
01:21:23 <shachaf> can't stand associative operations
01:21:32 <shachaf> esp. if they have identities
01:22:18 <oerjan> shachaf: hm, i think you may have dissociative identity syndrome.
01:25:46 -!- Sprocklem has joined.
01:29:08 -!- Slereah_ has joined.
01:29:49 -!- Slereah has quit (Ping timeout: 265 seconds).
01:30:53 -!- Sorella has quit (Remote host closed the connection).
02:03:31 <shachaf> http://cokmett.github.io/cokmett/
02:05:28 <kmc> also i'm in that photo
02:05:57 <kmc> i'm the guy in the back with the "Bevar Christiania" shirt
02:06:08 <kmc> and no head or right arm or legs
02:09:19 <shachaf> i can confirm that kmc has no head
02:09:25 <shachaf> along with me and douglas harding
02:10:38 <shachaf> i have right arms and legs
02:10:43 <kmc> loaned them out for some quick cash
02:11:10 <shachaf> arms and legs are worth a lot
02:11:25 <Bike> is a cis pair worth more than a trans pair
02:12:08 <oerjan> whew i was wondering if that type declaration was ever going to end
02:12:09 -!- Slereah_ has joined.
02:13:33 -!- Slereah has quit (Ping timeout: 272 seconds).
02:21:02 <oerjan> surely you mean kmc :: Semidetachedoid a f k
03:10:34 <oerjan> doesthiswork: context plz
03:11:16 -!- Phantom_Hoover has quit (Remote host closed the connection).
03:12:53 <Bike> oerjan: kmc's messages at :05.
03:12:53 <lambdabot> Local time for oerjan is Fri Dec 13 04:12:51 2013
03:13:13 <oerjan> Bike: i'm really just making a timezone statement here.
03:14:01 <oerjan> also i found ph's message after missing it the first time i searched
03:14:58 <doesthiswork> and if it helps I was making a reference to full metal alchemist
03:18:57 <Bike> team devil not him, about a dispute in the power puff girls fan dom
03:21:06 <HackEgo> Traceback (most recent call last): \ File "/usr/bin/umlbox", line 296, in <module> \ conff.close() \ IOError: [Errno 28] No space left on device
03:21:17 <oerjan> that should clear it up.
03:24:54 <Gregor> I need a bigger VPS @_@
03:24:59 <Bike> `run true; echo $?
03:26:36 <oerjan> `run filenotfound; echo $?
03:26:38 <HackEgo> bash: filenotfound: command not found \ 127
03:27:39 <oerjan> `run cat filenotfound; echo $?
03:27:40 <HackEgo> cat: filenotfound: No such file or directory \ 1
03:27:54 <oerjan> `run cat --filenotfound; echo $?
03:27:55 <HackEgo> cat: unrecognized option '--filenotfound' \ Try `cat --help' for more information. \ 1
03:28:26 <oerjan> i thought you weren't supposed to return 1 on syntax errors
03:37:13 <monotone> There's not much in terms of exit code convention other than "0 is okay, anything else means something went wrong."
03:39:28 <Bike> http://www.youtube.com/watch?v=qw7y4_JDkRM roguelike
03:39:49 <Bike> yeah are exit codes even used for anything but && and so on.
03:41:13 <quintopia> Gregor: what exactly happens if we ask hackego to write a really big file? and then we keep doing that? it seems reasonable to think that we could write quite a lot of useless data in under hackego's timeout
03:41:14 <kmc> some commands document multiple non-zero exit codes and some scripts may use them but i'm not thinking of an example right now
03:43:46 <Gregor> quintopia: It has filesize limits as well as time limits.
03:44:29 -!- LinearInterpol has quit (Ping timeout: 252 seconds).
03:44:48 <quintopia> Gregor: is there any limit on the rate of file creation
03:45:02 <Gregor> Not really, I suppose.
03:45:20 <quintopia> not that i'm actually going to try and ddos hackego
04:03:04 -!- ^v has quit (Quit: http://i.imgur.com/MHuW96t.gif).
04:05:44 -!- CADD has joined.
04:19:24 -!- carado has quit (Ping timeout: 252 seconds).
04:22:51 -!- conehead has joined.
04:24:54 -!- doesthiswork has quit (Quit: Leaving.).
04:26:58 -!- pikhq has quit (Ping timeout: 246 seconds).
04:28:54 -!- pikhq has joined.
04:29:00 -!- ^v has joined.
04:29:31 -!- ^v has quit (Client Quit).
04:59:12 -!- tromp has quit (Remote host closed the connection).
05:14:10 -!- Bike has quit (Ping timeout: 240 seconds).
05:19:03 -!- Sprocklem has quit (Ping timeout: 250 seconds).
05:19:46 -!- Bike has joined.
06:38:16 <Sgeo> Maybe reading a paper about a hypothetical syntax for comonads may help
06:39:18 -!- conehead has quit (Quit: Computer has gone to sleep.).
06:41:25 <Sgeo> Oh, I get it (well, the notation... I think)
06:47:20 <HackEgo> Monads are just monoids in the category of endofunctors.
07:00:01 -!- earthereal has joined.
07:03:25 <kmc> http://www.geekwork.com/opportunity/2270-job-vintage-system-software-developer-and-administrator
07:06:13 <shachaf> `run echo 'Monads are just free monad monad monad algebras.' > wisdom/monads
07:07:37 <oerjan> please learn how ? works thx
07:07:47 <HackEgo> Monoids are just categories with a single object.
07:07:49 <HackEgo> Monoids are the easy version of categories.
07:08:10 * oerjan had forgot what he learned
07:08:51 <oerjan> i'm not sure i approve of having separate plural entries in general.
07:08:56 <shachaf> Oh, I could even have used `learn there.
07:09:08 <HackEgo> #!/bin/bash \ topic=$(echo "$1" | lowercase | sed 's/^\(a\|the\) //;s/s\? .*//') \ info=$(echo "$1" | sed 's/[^ ]* //') \ echo "$1" >"wisdom/$topic" \ echo "I knew that."
07:09:08 <shachaf> Oh, `learn drops the plural too?
07:09:28 <oerjan> new feature, it now also drops articles
07:09:32 <shachaf> Can we have multiple possible values for a key?
07:09:40 <shachaf> Then `quote can be a special case of `?.
07:10:59 <kmc> hi myndzi ꙮ_ꙮ
07:11:10 <oerjan> shachaf: btw i think the only reason wisdom/monoids exists is that both entries were added before learn/?'s plural handling.
07:11:38 -!- Bike has quit (Quit: Reconnecting).
07:11:52 -!- Bike has joined.
07:11:57 <shachaf> oerjan: Hmm, I think I added it to test how the plural handling works or something.
07:12:21 <shachaf> Anyway, picking a random wisdom line sounds good to me.
07:12:27 <oerjan> it is possible i'm thinking about another entry.
07:13:24 <shachaf> `run echo 'Monoidal categories are just 2-categories with a single object.' > wisdom/'monoidal category'
07:14:38 <oerjan> i suppose i may be thinking of monoidally closed categories.
07:15:39 <shachaf> that's a monoidal category where tensor product has a right adjoint, right
07:16:04 <oerjan> "##Just like for any category E, the full subcategory spanned by any given object is a monoid, it is the case that for any 2-category E, and any object C∈Ob(E), the full 2-subcategory of E spanned by {C} is a monoidal category."
07:16:16 <oerjan> i suppose that hints at your claim.
07:17:07 <shachaf> https://unapologetic.wordpress.com/2007/08/16/2-categories/
07:18:54 <shachaf> oh, that post talks about the category where the arrows are adjunctions
07:18:59 <shachaf> apparently it's a 2-category
07:19:24 <quintopia> i moved all kinda shit around on my computer, and now the shell and the launcher pane both can't find firefox automatically. and i was pretty sure the links were aimed correctly
07:19:35 <shachaf> i mean, an interesting one
07:19:52 -!- oerjan has quit (Quit: Nite).
07:20:05 <shachaf> makes sense, i guess, pairs of natural transformations
07:20:12 <shachaf> does this extend to chu spaces somehow
07:20:24 <quintopia> if link to firefox, will the system chase all those softlinks to launch it?
07:21:43 <quintopia> if that one environment variable says to look for things to launch in /usr/bin and /usr/bin is actually a soft link to /usrbin and /usrbin contains a soft-link to firefox elsewhere, will the system properly chase all those links to launch it
07:23:55 -!- prooftechnique has quit.
07:25:37 -!- FreeFull has quit.
07:30:48 -!- Bike has quit (Quit: restarting).
07:31:07 -!- Bike has joined.
07:40:22 <fizzie> I think it was better before the retyping.
07:41:49 <kmc> quintopia: it should yeah
07:41:54 <myname> why the hell do you have a /usrbin?
07:42:02 <kmc> there is some maximum symlink depth
07:42:22 <kmc> but also I think that would apply to a single filename lookup, and not to e.g. chasing links to find a directory, and then to find files in that directory
07:43:00 <fizzie> There can be more than one maximum symlink depth, it's not terribly well standardized, but I concur with kmc that it doesn't aggregate across different path name components.
07:43:07 -!- earthereal has quit (Quit: Leaving).
07:43:39 -!- ThatOtherPerson has joined.
07:43:42 <quintopia> myname: /usr is on a very small partition. i needed to install something new, so i just moved /usr/bin up to / to make space
07:43:44 <kmc> hooray concurrency
07:44:24 <quintopia> yeah i have no idea what's causing this problem then.
07:50:11 <fizzie> Processing Data: c02c0202.mfc; Label c02c0202.lab ERROR [+6510] LOpen: Unable to open label file /[REDACTED]/c02c0202.lc02c0202.mfc why are you looking for a file with a retarded name like that?
07:50:24 <fizzie> Oh, maybe it's yet another buffer overflow problem.
07:51:10 <kmc> unable to open file \x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90
07:51:43 <fizzie> Oh yes, the (non-redacted) path is 268 characters, and "c02c0202.mfc" is 12, and 268-12 is 256, and 256 characters should be enough for everyone.
07:52:21 <kmc> open(filename, O_CLOSE)
07:53:07 <shachaf> clearly creat is just clopen(filename, O_CREAT)
08:01:14 -!- ThatOtherPerson_ has joined.
08:03:24 -!- ThatOtherPerson has quit (Ping timeout: 246 seconds).
08:08:38 -!- ThatOtherPerson has joined.
08:10:58 -!- ThatOtherPerson_ has quit (Ping timeout: 265 seconds).
08:16:55 <quintopia> is there a language where every command just toggles some binary state
08:19:17 <Sgeo> "Haskell, the warm fuzzy nuclear waste."
08:20:47 <kmc> @let (☢) = (>>=)
08:20:47 <lambdabot> Parse failed: Illegal character ''\152''
08:20:59 <kmc> unicode 'fuck you' sign
08:21:27 <kmc> wait they have that now, "Reversed Hand with Middle Finger Extended"
08:21:50 <quintopia> where do they come up with all that shit
08:22:10 <kmc> 420 smoke japan every day
08:22:14 <quintopia> is the middle finger thing like UCS3 or something
08:23:25 <fizzie> !SENT_START BELIEVE ME WE HAVE BE KIND OF AMERICA THIS IS TO COST SAYS !SENT_END
08:23:37 <kmc> it's in Unicode 7.0 and I don't think there's a corresponding ISO/IEC 10646 version yet
08:23:54 <kmc> it's in the Supplementary Multilingual Plane
08:24:12 <quintopia> apparently middle fingers are pretty universal
08:24:13 -!- farrioth has joined.
08:25:55 <fizzie> U+1F596 RAISED HAND WITH PART BETWEEN MIDDLE AND RING FINGERS
08:26:21 <kmc> "ring finger"??? that's not culturally neutral
08:26:47 <fizzie> http://www.babelstone.co.uk/Blog/Images/1F594_5_6.png that hand looks really awkward.
08:27:23 <fizzie> But it's good to finally get the REVERSED VICTORY HAND to complement the VICTORY HAND of the BMP.
08:27:40 <fizzie> (Now, is that REVERSED (VICTORY HAND) or (REVERSED VICTORY) HAND?)
08:27:56 <kmc> now all we need is RAISED HAND WITH EXTENDED INDEX AND MIDDLE FINGERS TOGETHER AND EXTENDED LITTLE FINGER
08:28:07 <fizzie> Reversed victory, a well-known euphemism for a defeat.
08:28:20 <fizzie> I didn't fail, I just reverse-succeeded.
08:28:47 <quintopia> kmc: it's a total shocker to me they haven't already
08:29:44 * quintopia wonders if finland gets kmc's joke
08:29:56 <kmc> hi finland
08:30:12 <quintopia> there are a lot of finland here. are you talking to all of them?
08:30:20 <fizzie> This part of Finland didn't. It must not be culturally neutral.
08:33:20 -!- ThatOtherPerson has quit (Ping timeout: 245 seconds).
08:33:53 <fizzie> Oh, it's that thing, I had in fact heard of it.
08:34:14 <kmc> http://ru.wikipedia.org/wiki/%D0%A8%D0%BE%D0%BA%D0%B5%D1%80_(%D0%B6%D0%B5%D1%81%D1%82) w/ rhyme translations
08:34:24 <kmc> good mroman to you too
08:35:09 <mroman> I hope nobody reads my name as Mr. Oman
08:35:47 <mroman> Although I'd have nothing against owning some rich-of-oil sultan-state
08:35:51 <farrioth> mroman: I read it as morman for a second.
08:36:06 <HackEgo> farrioth: 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>. (For the other kind of esoterica, try #esoteric on irc.dal.net.)
08:36:25 <kmc> taste the rainbow
08:36:34 <kmc> mroman: how should I read it?
08:37:13 <mroman> The m is just there because "roman" is already taken
08:37:18 <HackEgo> FaRrIoTh: 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>. (fOr tHe oThEr kInD Of eSoTeRiCa, TrY #eSoTeRiC On iRc.dAl.nEt.)
08:37:29 <mroman> and the m is the first letter of my laste name
08:37:45 <HackEgo> /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: W31c0m3: not found
08:37:59 -!- CADD has quit (Ping timeout: 272 seconds).
08:38:06 <farrioth> Incedentally I've read the wiki for a while.
08:38:09 <olsner> mroman: you could be Mr Oman
08:40:05 <farrioth> quintopia: From memory I made some minor edits to the Befunge page a while ago.
08:40:49 <farrioth> It's the only language I'm reasonably good at.
08:40:55 <quintopia> are you more of an implementation, use, or design sort of person
08:41:36 <farrioth> quintopia: Use, although I wrote a Befunge-93 interpreter the other day. And I'v had a few vague design ideas.
08:55:40 -!- Slereah_ has quit (Remote host closed the connection).
08:56:44 -!- Slereah has joined.
08:57:47 <mroman> You could write an interpreter for spacefish 1D
08:59:34 <mroman> It's based on the idea of antennas sending data at some specific level/amplitude
08:59:48 <mroman> and an outside observer measures the level/amplitude/intensity of the signal
09:00:09 <mroman> however, if other antennas near other antennas also emit signals they overlap and cause distortien
09:00:40 <mroman> http://esolangs.org/wiki/Spacefish
09:00:58 <mroman> That and you can't place antennas outside the range of other antenas
09:01:23 <mroman> that's the idea. And I figured that could be applied to Brainfuck
09:01:41 <farrioth> mroman: I was about to say, it looks like Brainfuck2D with distortion.
09:02:01 <mroman> It esentially is Brainfuck with distortion, yes
09:03:43 <mroman> but it would be boring if you could just use every 256th cell so you'll always be out of distortion range of any other cell
09:03:49 <mroman> therefore you only start with one cell
09:03:59 <mroman> and the range of distortion expands the space
09:04:19 <mroman> which means that a cell outside the range of distortion of any other cell is actually a non-existing cell
09:04:32 <mroman> (i.e. that space does not exist outside distortion ranges)
09:05:29 <farrioth> The code there is for the 1D version, right?
09:06:34 <mroman> The code there uses a fixed array and just skips over undistorted cells when doing > or <
09:06:40 <mroman> there might be better approaches to handle this
09:06:58 <farrioth> What is the data structure of space[ptr]? It's a list of length 2...
09:06:59 <mroman> the distortion is log2
09:07:09 * farrioth is better at writing code than reading it.
09:07:20 <mroman> farrioth: space[ptr][0] is the level the antenna is sending at
09:07:28 <mroman> and space[ptr][1] is the distortion
09:07:35 <mroman> It's probably better to start with clean code :)
09:07:46 <mroman> I'm not really a Python guy
09:09:50 <farrioth> Python does allow for comments though, you know...
09:11:07 <farrioth> So the data is basically a tape which is writable only adjacent to filled cells?
09:17:25 <quintopia> it's only writable in *distorted* cells
09:18:11 <farrioth> Cool. If a cell was distorted, but then ceases to be distorted does it remain writable?
09:29:05 <farrioth> Can you move the pointer to a cell that isn't writable?
09:30:12 <fizzie> !SENT_START NO ONE'S U. S. FOR THE F. S. R. I. C. NEEDS MORE MONEY !SENT_END
09:30:55 <fizzie> fungot: Why can't you ever sound as intelligible as these outputs?
09:30:55 <fungot> fizzie: no, it's fun!!! fnord is not).
09:33:11 <mroman> farrioth: Then the cell dies
09:33:26 <mroman> if a cell moves out of the distortion range of another cell it ceases to exist
09:34:46 <mroman> the fact is, that two non-adjacent cells can become adjacent if the space between those cells ceases to exist
09:36:16 <mroman> I assume that can happen :)
09:37:10 <mroman> farrioth: I think we recently discussed in this channel
09:37:20 <mroman> that every cell must have a "path" to the initial cell
09:38:27 <mroman> that means: If you have [1,0,*1*,1] (where ** denotes the initial cell)
09:38:37 <mroman> you actually have to delete the first element
09:38:37 <farrioth> That means that, in practice, the indeces of your data change.
09:39:05 <mroman> ah. replace the initial cell with 2
09:39:15 <farrioth> And also that you can never read a 0, which makes ( useless.
09:39:40 <farrioth> If I'm not mistaken, which I might be.
09:39:55 <farrioth> But I know I am hungry, so will be back soon.
09:39:56 <mroman> If you intially had [1,0,8,1] but decrement it to [1,0,2,1]
09:40:15 <mroman> the space shrinks to [0,2,1]
09:41:00 <quintopia> i've just sneezed for the seventh time in a row help
09:41:15 <quintopia> this room has no tissues for my issues
09:41:18 <mroman> You can think of it as every antenna must be able to send data to the initial antenna (other antennas might repeat that data)
09:41:45 <mroman> farrioth: It's probably wise to have index 0 be the initial cell
09:41:51 <mroman> and index -1 to be the cell left to it
09:41:56 <mroman> and index 1 to be the cell right to it
09:42:38 <mroman> farrioth: And you can read a zero
09:43:04 <mroman> If you have the value 255 in a cell which is distorted by 1
09:43:12 <mroman> the measurable value changes to 0
09:43:19 <mroman> (wrap around like brainfuck)
09:43:25 <farrioth> mroman: Ah, yes, that makes sense.
09:44:03 <mroman> Theres the cell's own value (the intensity the antenna is sending at) and a measurable value
09:44:46 <farrioth> mroman: So the cell disappears if the 'sending' value is zero, but not if the 'recieving' value is zero.
09:45:24 <quintopia> mroman: you know what would be fun? a language where you can put antennas anywhere, but they are the only way to modify cells. Plus, they don't just attenuate normally, they create standing alternating waves that constructively and destructively interfere.
09:45:57 <mroman> a cell disappears if it is not affected by distortion
09:46:10 <mroman> so cell with sending value 0 do exist
09:46:28 <mroman> Initially you start with [0]
09:46:39 <mroman> if you increment it to two 2
09:46:47 <mroman> you have a distortion range of 1 around that cell
09:46:52 <mroman> therefore space expands to [0,2,0]
09:47:21 <mroman> if you decrement the initial cell to 1 the distortion range drops to zero
09:47:30 <mroman> and therefore space shrinks to [1]
09:48:28 <farrioth> mroman: If the sending value can never be 0, that would mean that it is impossible to read a 0.
09:48:50 <quintopia> farrioth: you know how when you hold an antenna close to another antenna there's a lot of feedback and things change rather unexpectedly and nonlinearly?
09:49:06 <quintopia> farrioth: be warned that situations like that are common in spacefish
09:49:41 <quintopia> farrioth: the sending value can be zero. just probably don't want to try to read a zero from the initial cell
09:50:07 <mroman> farrioth: Like I said: The sending value can be zero
09:50:42 <mroman> A sending value expands the space by log2 of its sending value
09:52:21 <farrioth> mroman: < mroman> so cell with sending value 0 do exist
09:52:36 <quintopia> so a cell with value zero makes contracts all of space to a point (by expanding space by negative infinity)
09:53:16 <quintopia> or does that just expand space infinitely in the opposite direction?
09:53:36 <farrioth> You want to expand space by 1/inf I think.
09:53:46 <farrioth> And so the point does still exist?
09:56:10 <farrioth> But you were using the log values to calculate the effect on other cells, not to move/delete them, right?
09:56:37 <mroman> A cell with sending value 0 does not expand space
09:56:42 <mroman> it does not distort anything
09:57:09 <mroman> farrioth: You have to delete all cells (except the initial cell) that are not distorted
09:57:16 -!- mrclarinet has joined.
09:57:20 <mroman> http://codepad.org/foE6Odji
09:58:59 <farrioth> mroman: That makes much more sense, thanks.
10:00:19 <mroman> You can start at the initial cell
10:00:26 <mroman> and search to the left for the first undistorted cell
10:00:46 <mroman> and then remove the undistorted cell and every cell to the left of that cell (because it has no connection to the initial cell anymore)
10:00:51 <mroman> then the same thing to the right
10:01:54 <farrioth> Ah okay, so the undistorted cells don't just cease to exist and collapse, but the 'tape gets cut off' at an undistorted cell.
10:02:25 <farrioth> Which means I can implement it as left and right lists, which is handy.
10:03:06 <mroman> http://codepad.org/VUryyN4C <- like in this scenario
10:03:16 <mroman> the two eights would keep each other alive
10:03:25 <mroman> but they have no connection to the initial cell (4)
10:03:35 <mroman> so the two eights must die
10:03:42 <mroman> farrioth: Yes @Left and right lists
10:04:12 <mroman> farrioth: Yep @cut off
10:05:48 <farrioth> Using log_2() for distortion means that the values may be floats, but the cells only store ints, right?
10:06:27 <farrioth> So how does it work if I read a value (with distortion), which is a float, increment it, and store it in a cell (as an int)?
10:06:30 <mroman> Cells are 8 bit values unsigned integeres
10:06:48 <quintopia> it's much harder in spacefish 2D. you have to reverse the distortion of a deleted cell before you can figure out what else needs deleting. unless you maintain a tree that maps the connections of every written cell to the initial cell.
10:08:08 <quintopia> farrioth: count the number of bits starting from the most significant 1 bit. then subtract 1. that's how far out the distortion goes. the distorted cell has floor (1/2*sending cell).
10:08:15 <mroman> farrioth: The distortion of 255 is 127, 63, 31 and so on
10:09:11 <farrioth> quintopia: Can't you just use the distortion matrix itself to check for connections?
10:10:12 <mroman> math.floor(math.log(sendingValue)/math.log(2)) is how far a cell distorts
10:10:24 <mroman> and the distortion is cut in half at every cell
10:11:54 <quintopia> farrioth: that's the first method. modify the distortion matrix as a result of a cell deletion, then see if that caused any other deletions. propagate as needed. it works, but means some operations might suddenly hang the interpreter while it propagates a massive wave of cell deletions.
10:12:23 <farrioth> quintopia: You'd get that with any method, wouldn't you?
10:13:05 <farrioth> mroman: That's the same as math.floor(math.log(sendingValue, 2)), isn't it?
10:13:08 <quintopia> farrioth: it's even harder than that. you can't just check to see if a cell's distortion is zero to delete it. a cell with with positive distortion might require deleting.
10:14:08 <quintopia> somehow you have to keep track of whether it is being distorted by something connected to the root or not. which means tracing everyone that's distorting it and seeing if any lead to the root.
10:14:21 <quintopia> so i think storing the tree of connections ends up being much faster
10:14:46 <farrioth> Anyhow, I though you were using log_2(foo) to calculate the value of the distortion, not its distance, am I wrong?
10:15:29 <mroman> The distortion is sendingValue * (0.5^distance) I think
10:15:40 <mroman> It's just halfed with increasing distance
10:16:07 <farrioth> So we don't actually use a log?
10:16:15 <mroman> farrioth: No you don't have to use log at all
10:16:18 <quintopia> mroman: also floor(log(sending,2))=number of bits of sending -1 :D
10:16:28 <farrioth> mroman: Okay, that makes it easier.
10:17:10 <quintopia> mroman: except at zero where floor(log(sending,2)) = -infty, but #bits-1 = 0. which means #bits-1 is better
10:17:13 <mroman> You can just iterate to the left and right and divide by two
10:17:57 <mroman> That's what my sucky-python-demo did
10:18:59 <quintopia> mroman: do you think you're up to the challenge of writing a working 2D version? :D
10:19:38 <mroman> You can get irregularly shaped space I think
10:19:54 <mroman> should be posible with bounding rectangle magic
10:20:21 <mroman> but you'd still have to keep track of actuall *existing* cells when moving around with ><v^
10:20:24 <quintopia> whatever space is, it will always be a finite union of rectangles
10:20:41 <quintopia> union of overlapping squares really
10:21:33 <mroman> farrioth: Btw: IO and loops work on measurable values
10:21:38 <quintopia> mroman: it's not really a hard problem i think. just iterate quick over undistorted cells in your array (wrapping if necessary) until you hit another distorted one
10:21:53 <mroman> quintopia: But that would not be very efficient
10:22:16 <quintopia> mroman: in practice it would not be nearly so slow as the huge mess that space deletion would be
10:22:46 <farrioth> mroman: How do you output a float as a character?
10:22:58 <mroman> you'd just need to handle the occasional space expansion
10:23:01 <mroman> farrioth: There are no floats
10:23:08 <mroman> Everything is an integer 8bit
10:23:08 <quintopia> farrioth: why are you using floats
10:24:14 <mroman> Since a cell is 8bit 0-255 and distortion is also an integer
10:25:13 <farrioth> quintopia: Because I forgot we were using floor; ignore me.
10:25:28 <mroman> You can just do integer arithmetic
10:25:47 <mroman> Integer arithmetic automatically floors stuff ;)
10:26:18 <HackEgo> python: can't open file 'print (5 / 2)': [Errno 2] No such file or directory
10:26:27 <quintopia> mroman: i think if you used a linked-grid instead of an array as your data structure, you could do some real magic. so in addition to each cell having its address (which is used to figure out when you should stop filling space between and start modifying existing space), it has links to cells above and below, left and right, cyclic. you can insert space and remove space in constant time anywhere you need it.
10:27:03 <quintopia> then > and < and v and ^ would be constant time too
10:27:07 <fizzie> `run python -c 'print 5 / 2' #itym
10:27:32 <fizzie> Though in Python 3, IIRC, it doesn't. (You have to write // explicitly for the integer division.)
10:28:05 <fizzie> `run python -c 'from __future__ import division; print 5 / 2; print 5 // 2;'
10:28:46 <quintopia> mroman: imagine a relativistic spacefish, where rather than expanding the distortion distance, incrementing a cell actually *created space*
10:29:01 <quintopia> i feel like such a language needs to exist
10:30:50 <mroman> Spacefish does exactly that?
10:31:28 <mroman> What's the difference?
10:31:34 <quintopia> if i write to two cells five apart, those two cells will always be five cells apart
10:31:56 <quintopia> unlike in the universe, where distance galaxies get ever further away due to the expansion of space between us and them
10:31:57 <mroman> ah. I see what you mean
10:31:58 <farrioth> How's this for calculating distortion? http://susepaste.org/20821743
10:34:21 <farrioth> mroman: You pass it a single-item list containing the sending value which causes the distortion.
10:35:04 <mroman> does this distort in both directions?
10:35:15 <mroman> and it does not seem to be iterative
10:35:30 <mroman> if I pass in [255] it becomes [255,128], right?
10:35:54 <mroman> yeah, seems about right
10:37:26 -!- ThatOtherPerson has joined.
10:40:00 <farrioth> mroman: Cool. It doesn't do it in both directions; you just copy it and flip it over.
10:42:24 -!- Taneb has joined.
10:44:44 <quintopia> farrioth: in practice, you might have to distort cells that already exist. so you can't just blithely append. check if there's already a cell first!!!!!
10:45:30 <farrioth> quintopia: I'm not appending the distortion values output by that function, I'm summing them with the relevant part of the distortion map.
10:46:03 <farrioth> currentDistortion = Distort([value])
10:46:04 <farrioth> distortionMap[pointer+i] += currentDistortion[i]
10:47:13 <farrioth> Except that only sums, it won't handle appending.
10:47:24 <quintopia> and in the same loop doing pointer-i gets the left side. got it.
10:47:50 <quintopia> appending would be a simple if statement
10:48:01 <quintopia> deleting a bit more complicated but i think you got it
10:48:42 <quintopia> when pointer goes negative you append and shift?
10:50:02 <farrioth> Yeah. I just need some methods for a distortionMap class to handle that transparently.
10:53:01 -!- Sorella has joined.
10:53:37 -!- Sorella has quit (Changing host).
10:53:37 -!- Sorella has joined.
10:53:52 <quintopia> farrioth: don't negative indices address from the end of the list?
10:54:53 <farrioth> quintopia: Yes, but we don't want that to happen.
10:55:11 <quintopia> farrioth: then i have a way to do it that will require less program logic
10:57:03 <quintopia> farrioth: what is the pythonic linked list that allows constant time insertions "in the middle"
10:57:37 <farrioth> quintopia: I have no idea, sorry.
10:57:48 <mroman> You can insert into regular lists
10:57:55 <mroman> it's probably not constant time but who cares :)
10:58:22 <quintopia> farrioth: okay cool. just start with a marker element (-1 would be out of band here) and have the represent "infinity". if you go to add distortion to this element while distorting to the right, insert an element before it and use that instead. if you go to add distortion to it while distorting to the left, insert a cell after it and use that instead.
11:00:21 <quintopia> and when you delete to the right, delete the same cell until it is the sentinel. when you delete to the left, compute a bit, and delete after the sentinel enough to bring the new "left" there, or go delete from the beginning.
11:00:22 <farrioth> That seems equivalent to prepending/appending if the element to be distorted is out of range to the left/right, which is what my plan was.
11:01:29 <quintopia> farrioth: it MAY be equivalent. but in my mind, it seemed like it would eliminate the need for bounds checking.
11:02:16 <farrioth> quintopia: -1 is basically a boundary marker, so checking for it is just like checking for bounds.
11:02:29 <farrioth> And for deletion, I was going to use slices.
11:02:55 <quintopia> but you're doing a bad job slicing out the part of your own memory where i said all that
11:03:55 -!- aloril has joined.
11:04:01 <farrioth> My memory is large, so the slice operation takes a while to return.
11:04:25 <shachaf> fungot: how large is your memory
11:04:25 <fungot> shachaf: the lectures are better than fnord. so maybe in february, i was
11:04:39 <fungot> shachaf: it's like programming in general). however, i think we're going to be
11:04:51 <shachaf> fungot: you're bad at complete sentences, you know that?
11:04:51 <fungot> shachaf: i can imagine it's not that the definitions come after the effect, there's no reason to define both a procedure foo* and a thin macro wrapper foo, afaict.
11:06:12 <fizzie> Can't really argue with that, can you.
11:06:39 <fungot> mroman: appears to be a
11:06:54 <fungot> mroman: python is similar enough to these languages." false false false
11:07:19 <quintopia> false is a language. and both it and python are turing-complete
11:07:26 <mroman> fungot: You should balance your "
11:07:37 <mroman> otherwise somebody is gonna make a graph of unbalanced quotes
11:07:40 <fizzie> fungot: This very night, before the rooster crows, you will deny the similarity of Python three times.
11:07:40 <fungot> fizzie: what i'm wondering. free software is teh winner! http://www.chick.com/ reading/ tracts/ 0084/ 0084_01.asp in
11:07:45 <shachaf> fizzie: Please balance fungot's "
11:07:46 <fungot> shachaf: that's really wrong. i can be myself... we don't need no stinkin' r. fnord has to be fnord/ fingerprints
11:08:09 <quintopia> you heard it from fungot. no quote balancing
11:08:10 <fungot> quintopia: the previous sentence, so that i can sense the hesitation to use promises in that way...
11:08:13 <fizzie> fungot: You tell him. I'm fed up with people always being "up my grill" about the balanced punctuation.
11:08:13 <fungot> fizzie: perhaps you've heard of that, though.) python it wouldn't be very hard
11:08:30 <fizzie> fungot: Yes, but you're not written in Python.
11:08:31 <fungot> fizzie: no i didn't. nice. the switch is because i want to
11:08:49 <quintopia> fungot wishes to be written in python
11:08:49 <fungot> quintopia: x86_64 has been historically chosen, and not even necessarily the same as
11:08:55 <quintopia> sorry fizzie. time to get writing.
11:09:21 <fizzie> I have the babbling (with balanced parentheses and quotes, no less) already done in Perl for prototyping.
11:09:44 <farrioth> I better start documenting more. I wrote this function less than an hour ago and now I need to figure out what it does.
11:10:22 <quintopia> fizzie: so now just plug in your perl->befunge code generation functions and off we go!
11:21:57 <farrioth> So, is + (foo = foo + 1) or (foo = foo + 1 + distortion)?
11:22:09 <farrioth> (Please remind me if I asked already.)
11:24:24 <mroman> + increases ONLY the sending value
11:24:57 <mroman> otherwise distortion would cause distortion and such
11:25:02 <mroman> wich would get really messy
11:25:07 -!- nooodl has joined.
11:25:17 <mroman> esentially + tell's your antennas commander to increase it's intensity :)
11:26:05 -!- mrclarinet has quit (Ping timeout: 250 seconds).
11:29:28 -!- AnotherTest has joined.
11:32:43 -!- Bike has quit (Ping timeout: 252 seconds).
11:35:29 -!- Bike has joined.
11:36:00 <farrioth> Well I need a break from coding after 130 lines.
11:46:25 <farrioth> I should be off to bed, but this has been enjoyable. Catch you all here another time.
11:48:40 -!- farrioth has quit (Quit: leaving).
11:59:24 -!- LinearInterpol has joined.
12:07:08 <mroman> Linear International Police
12:27:50 <mroman> Is it wrong of me to assume that farrioth is not as experienced as I thought :)
12:27:55 -!- pikhq has quit (Ping timeout: 245 seconds).
12:29:32 -!- pikhq has joined.
12:30:02 <int-e> shachaf: Re: @faq. I can. I still think it's funny but I guess what worked well when #haskell had 300 people (and many who had seen lambdabot's conception) doesn't really scale to 1200.
12:32:37 <fizzie> Huh. I connected to the shared Windows Terminal Server, and it gave me the Windows Server "Shutdown Event Tracker" "Why did the computer shut down unexpectedly?" dialog.
12:33:55 <HackEgo> df: cannot read table of mounted file systems: No such file or directory
12:35:30 -!- carado has joined.
12:35:37 <int-e> Did Gregor say where all the space had gone?
12:41:13 <HackEgo> 14776./.hg/store/data/bin \ 2100./.hg/store/data/lib \ 52380./.hg/store/data/paste \ 12152./.hg/store/data/share/_word_data \ 20./.hg/store/data/share/lua/5.2/luarocks/build \ 28./.hg/store/data/share/lua/5.2/luarocks/fetch \ 8./.hg/store/data/share/lua/5.2/luarocks/fs/unix \ 8./.hg/store/data/share/lua/5.2/luarocks/fs/win32 \ 36./.hg/stor
12:42:07 <Gregor> It's not like it's just HackEgo's space.
12:52:38 -!- MindlessDrone has joined.
13:03:56 -!- boily has joined.
13:04:01 -!- metasepia has joined.
13:04:37 -!- MindlessDrone has quit (Ping timeout: 272 seconds).
13:06:31 -!- Slereah_ has joined.
13:07:25 -!- Slereah has quit (Ping timeout: 246 seconds).
13:08:26 <boily> good unpentadactyl morning!
13:08:51 -!- pikhq has quit (Ping timeout: 260 seconds).
13:09:22 -!- pikhq has joined.
13:09:55 <int-e> `run du / | sort -rn
13:10:26 <HackEgo> du: cannot read directory `/proc/tty/driver': Permission denied \ du: cannot read directory `/proc/1/task/1/fd': Permission denied \ du: cannot read directory `/proc/1/task/1/fdinfo': Permission denied \ du: cannot read directory `/proc/1/task/1/ns': Permission denied \ du: cannot read directory `/proc/1/fd': Permission denied \ du: cannot read dir
13:10:38 <int-e> `run du / 2>/dev/null | sort -rn
13:11:01 <HackEgo> 4251168/ \ 1629696/var/irclogs \ 1629696/var \ 1059104/usr \ 1013416/opt \ 919000/opt/ghc \ 785888/opt/ghc/lib \ 784204/opt/ghc/lib/ghc-7.6.1 \ 688872/var/irclogs/_esoteric \ 618232/var/irclogs/raw \ 608152/usr/lib \ 518600/hackenv \ 336564/usr/share \ 318236/opt/ghc/lib/ghc-7.6.1/ghc-7.6.1 \ 292452/hackenv/.hg \ 292088/hackenv/.hg/
13:17:09 <boily> `run ls /var/irclogs
13:17:10 <HackEgo> _ai \ _corewars \ _esoteric \ _esoteric-chess-variants \ _esoteric-minecraft \ _esoteric_shadow \ _\FRIends*foR*evEr\ \ _FRIends*foR*evEr \ _glogbot \ index.php \ log \ log.css \ log.js \ _plof \ raw \ _scapegoat \ stalker.php \ _weaaM
13:17:12 -!- Sgeo has quit (Read error: Connection reset by peer).
13:17:18 <boily> `run ls /var/irclogs/_esoteric
13:17:20 <HackEgo> 2003-01-18-raw.txt \ 2003-01-18.txt \ 2003-01-19-raw.txt \ 2003-01-19.txt \ 2003-01-20-raw.txt \ 2003-01-20.txt \ 2003-01-21-raw.txt \ 2003-01-21.txt \ 2003-01-22-raw.txt \ 2003-01-22.txt \ 2003-01-23-raw.txt \ 2003-01-23.txt \ 2003-01-24-raw.txt \ 2003-01-24.txt \ 2003-01-25-raw.txt \ 2003-01-25.txt \ 2003-01-26-raw.txt \ 2003-01-26.txt \ 2003-01-
13:18:19 <int-e> `run head -1 /var/irclogs/_esoteric/2003-01-18-raw.txt
13:18:21 <HackEgo> < 1042851425 ? :clog!unknown@unknown.invalid JOIN :#esoteric
13:18:39 <int-e> `run head -1 /var/irclogs/_esoteric/2003-01-18.txt
13:18:41 <HackEgo> 00:57:05: -!- clog has joined #esoteric.
13:18:43 -!- MindlessDrone has joined.
13:20:21 <int-e> `run cd /opt/ghc/lib/ghc-7.6.1; echo */
13:20:22 <HackEgo> array-0.4.0.1/ base-4.6.0.0/ binary-0.5.1.1/ bin-package-db-0.0.0.0/ bytestring-0.10.0.0/ Cabal-1.16.0/ containers-0.5.0.0/ deepseq-1.3.0.1/ directory-1.2.0.0/ filepath-1.3.0.1/ ghc-7.6.1/ ghc-prim-0.3.0.0/ haskell2010-1.1.1.0/ haskell98-2.0.0.2/ hoopl-3.9.0.0/ hpc-0.6.0.0/ html/ include/ integer-gmp-0.5.0.0/ latex/ old-locale-1.0.0.5/ old-time-1.1
13:22:03 -!- impomatic has joined.
13:23:29 <impomatic> Weird! http://www.youtube.com/watch?v=mjJORYJWR6w
13:27:06 -!- aloril has quit (Ping timeout: 252 seconds).
13:28:36 -!- aloril has joined.
13:31:19 <boily> bon impomatin, also.
13:42:35 -!- aloril has quit (Ping timeout: 250 seconds).
13:51:16 -!- nisstyre has joined.
13:55:11 -!- aloril has joined.
14:05:59 -!- aloril has quit (Ping timeout: 252 seconds).
14:07:08 -!- aloril has joined.
14:08:16 <impomatic> Is anyone here from Northfield, Vermont?
14:08:54 <boily> impomatic: let me check the The File...
14:09:58 -!- ^v has joined.
14:10:27 <boily> impomatic: nobody in Vermont. either LinearInterpol or myself is the nearest.
14:10:41 <impomatic> Thanks boily. I just need someone to drop by someone's house for me :-)
14:12:00 <impomatic> I've been trying to track down Philip K Hooper who wrote a few programming articles about 35 years ago!
14:12:15 <boily> impomatic: I'm about 240 km away by car, and LinearInterpol is 265 mi.
14:12:55 <impomatic> Hmmm... maybe I'll just send a letter. Just in case he still lives in the same house.
14:13:14 <boily> ~duck philip k hooper
14:13:57 <impomatic> He wrote the last quote on this page http://corewar.co.uk/earlycw.htm
14:15:54 -!- nisstyre has quit (Quit: Leaving).
14:20:59 * impomatic googles for Dave Cutler's email address!
14:21:25 <impomatic> (I'm harassing random people today about Core War history!)
14:44:44 -!- mrhmouse has joined.
15:18:43 -!- yorick has joined.
15:39:35 -!- pikhq has quit (Ping timeout: 245 seconds).
15:41:08 -!- pikhq has joined.
16:21:55 -!- CADD has joined.
16:27:50 -!- LinearInterpol has quit (Read error: Connection reset by peer).
16:32:56 -!- nooodl_ has joined.
16:33:48 -!- nooodl has quit (Read error: Connection reset by peer).
16:33:49 -!- heroux has quit (Read error: Operation timed out).
16:37:03 -!- jconn has quit (*.net *.split).
16:37:03 -!- shachaf has quit (*.net *.split).
16:37:04 -!- clog has quit (*.net *.split).
16:38:03 -!- heroux has joined.
16:38:22 -!- shachaf has joined.
16:38:45 -!- conehead has joined.
16:42:45 -!- Bike_ has joined.
16:43:37 -!- Bike has quit (Disconnected by services).
16:43:38 -!- Bike_ has changed nick to Bike.
16:44:25 -!- iamcal has quit (Ping timeout: 338 seconds).
16:44:34 -!- glogbackup has quit (Write error: Broken pipe).
16:44:34 -!- nortti has quit (Write error: Broken pipe).
16:44:54 -!- CADD has quit (Remote host closed the connection).
16:44:56 -!- shachaf_ has joined.
16:46:15 -!- iamcal has joined.
16:49:41 -!- nortti has joined.
16:49:42 -!- CADD has joined.
16:49:48 -!- shachaf has quit (*.net *.split).
16:50:07 -!- CADD has changed nick to Guest2828.
17:01:53 -!- Sprocklem has joined.
17:06:03 -!- zzo38 has joined.
17:06:18 -!- jconn has joined.
17:12:17 -!- clog has joined.
17:12:55 -!- jconn has quit (Ping timeout: 245 seconds).
17:16:24 -!- glogbackup has quit (Ping timeout: 246 seconds).
17:16:31 -!- Slereah_ has quit (Read error: Connection reset by peer).
17:17:42 -!- Slereah has joined.
17:19:51 -!- jconn has joined.
17:35:44 -!- ThatOtherPerson has quit (Ping timeout: 250 seconds).
17:38:02 -!- FreeFull has joined.
17:41:33 -!- LinearInterpol has joined.
17:42:48 -!- Phantom_Hoover has joined.
17:47:12 <mrhmouse> In Haskell, you can use . to compose functions like "f . g == \x f (g x)"; is there any built-in operator ? such that "f ? g == \x g (f x)"?
17:48:29 -!- zzo38 has quit (Remote host closed the connection).
17:53:57 <mrhmouse> coppro: I know that I could write it myself; I was wondering if there was a built-in operator already :) Thanks!
17:56:30 <coppro> there's probably some typeclass function that simplifies down to it
17:56:53 <lambdabot> Monad m => (a -> m b) -> (b -> m c) -> a -> m c
17:57:00 <coppro> I can't think straight right now
17:57:13 <lambdabot> `>>' (imported from Control.Monad.Writer),
17:58:01 <b_jonas> @hoogle (b->c)->(a->b)->a->c
17:58:02 <lambdabot> Prelude (.) :: (b -> c) -> (a -> b) -> a -> c
17:58:03 <lambdabot> Data.Function (.) :: (b -> c) -> (a -> b) -> a -> c
17:58:03 <lambdabot> Control.Parallel.Strategies (.|) :: (b -> c) -> Strategy b -> (a -> b) -> (a -> c)
17:58:11 -!- pikhq has quit (Ping timeout: 245 seconds).
17:58:15 <b_jonas> @hoogle (a->b)->(b->c)->a->c
17:58:16 <lambdabot> Prelude (.) :: (b -> c) -> (a -> b) -> a -> c
17:58:16 <lambdabot> Data.Function (.) :: (b -> c) -> (a -> b) -> a -> c
17:58:16 <lambdabot> Control.Parallel.Strategies (-|) :: (a -> b) -> Strategy b -> (b -> c) -> (a -> c)
17:58:19 -!- pikhq has joined.
17:58:25 -!- doesthiswork has joined.
17:59:08 <b_jonas> so just define one yourself if you need one
17:59:41 <b_jonas> but if you want to be sure, ask on #haskell
18:01:44 <b_jonas> those listings can't be complete
18:02:03 <b_jonas> shouldn't hoogle have found fmap as a result?
18:02:18 <b_jonas> I thought it was magical enough
18:02:28 <lambdabot> Functor f => (a -> b) -> f a -> f b
18:03:07 <b_jonas> coppro: unify the types yourself or ask #haskell
18:03:34 <coppro> oh wait, I misread you
18:03:46 <coppro> yeah, I'm surprised it didn't catch fmap there
18:04:28 <b_jonas> @hoogle (a -> b) -> f a -> f b
18:04:29 <lambdabot> Data.Traversable fmapDefault :: Traversable t => (a -> b) -> t a -> t b
18:04:30 <lambdabot> Prelude fmap :: Functor f => (a -> b) -> f a -> f b
18:04:30 <lambdabot> Data.Functor fmap :: Functor f => (a -> b) -> f a -> f b
18:04:43 <b_jonas> I think it's limited to three matches here
18:05:25 <mrhmouse> b_jonas: I checked Hoogle for (a -> b) -> (c -> a) -> (c -> b), but didn't see anything at a quick glance
18:06:03 <b_jonas> check it for (a -> b) -> f a -> f b tpp
18:06:42 <b_jonas> mrhmouse: it will show (<**>) which is (flip (<*>)) I think
18:06:57 <b_jonas> and might or might not be exactly what you asked for
18:08:23 <mrhmouse> b_jonas: I was just curious if there was a way to compose functions by listing them from left to right in the order of application, preferably using some infix operator
18:08:44 <b_jonas> mrhmouse: yes, and doesn't <**> do that?
18:09:04 <mrhmouse> b_jonas: no clue, I'm only just starting to learn Haskell :) I'll check its documentation, though
18:09:24 <b_jonas> you might get more definite answers on #haskell, I'm affraid to tell anything here
18:14:50 <lambdabot> Category cat => cat b c -> cat a b -> cat a c
18:15:15 <int-e> > ((+1) <<< (*2)) 0
18:15:22 <int-e> > ((+1) >>> (*2)) 0
18:19:35 <lambdabot> Occurs check: cannot construct the infinite type: a0 = a0 -> b0
18:22:23 -!- ThatOtherPerson has joined.
18:22:31 -!- Guest2828 has quit (Ping timeout: 250 seconds).
18:26:23 <FreeFull> (<$>) is the same as (.) when used on functions
18:26:39 <FreeFull> (<<<) is also the same as (.) on functions
18:27:45 <boily> every operator are born the same, but some are more generic.
18:30:42 <int-e> mrhmouse wanted (>>>)
18:36:12 <Slereah> i deduced that I hate RISC
18:37:42 <Slereah> x86 I'm so sorry for those mean things I said
18:39:34 -!- Sprocklem has quit (Ping timeout: 246 seconds).
18:42:26 <Slereah> Reading instructions *after* a jump?
18:43:40 <int-e> it helps unclogging your pipelines
18:44:00 <Slereah> The prof was all "Well programming straight in assembly isn't much of a problem in those days of compilers so who cares!"
18:44:08 <Slereah> But I want to program in assembly :(
18:44:18 <int-e> so put nops after your jumps
18:44:46 <int-e> (btw it's not even true that every risc architecture does this)
18:46:07 <Slereah> Also he scared me for a while when he talked about the problems with register use over the pipeline
18:46:26 <Slereah> Thank goodness it doesn't matter in the end
18:46:44 <mroman> Slereah: What's the relationship of assembler<->compiler
18:46:54 <mroman> IT's easy to program in assembler because of compilers?
18:46:58 <int-e> the things they do for implementing x86 efficiently is true madness.
18:47:16 <Slereah> int-e : Sure, but that's electronics people
18:47:21 <Slereah> I don't care what they do!
18:47:45 <mroman> what's wrong with linear prefetching?
18:48:24 -!- Slereah_ has joined.
18:48:25 <Slereah_> [19:47:14] <Slereah> int-e : Sure, but that's electronics people
18:48:26 <Slereah_> [19:47:19] <Slereah> I don't care what they do!
18:48:26 <Slereah_> [19:47:39] <Slereah> mroman : That having harder to program assembly doesn't matter since few people code straight in assembly directly
18:48:27 <mroman> You should align your jumps/conditions in a way, so that the jump is not taken most of the time
18:48:51 <mroman> because jumps taken are bad
18:49:01 <mroman> they flush the pipeline
18:49:08 <mroman> the cpu already prefetched stuff after the jump
18:49:28 <mroman> unless your cpu employs some kind of dynamic branch prediction
18:49:55 <mroman> 19:47 < mroman> what's wrong with linear prefetching?
18:50:25 <mroman> also that's why RISC have conditional execution flags on almost every instructions
18:50:29 <mroman> well, some RISCs at least do
18:51:20 <mroman> What register use over pipeline?
18:51:37 -!- Slereah has quit (Ping timeout: 252 seconds).
18:51:39 <mroman> CPUs tend to reorder instructions to optimize memory bus access
18:51:48 <mroman> and to prevent lots of pipeline stalls
18:51:59 <mroman> due to the writeback phase of the pipeline for example
18:53:08 <mroman> x86 CPUs have a pipeline too btw
18:54:15 <mroman> You've managed to confuse me
18:54:36 <Slereah_> http://en.wikipedia.org/wiki/File:Peace_pipe.jpg
18:55:27 <boily> that thing. it is strangely Canadian.
18:56:05 <mroman> Knowing that some CISC CPUs internally translate CISC instructions to more RISCish instructions
18:56:20 <Taneb> I had a dream that I has a secret esoteric lair
18:56:51 <Slereah_> I don't have to navigate the CPU
18:56:57 <Slereah_> I'm not in miss Frizzle's class, I'm not going to take a magic school bus ride on a CPU
18:58:43 -!- Slereah has joined.
18:59:22 * int-e loved the bus lines in the intercal manual
18:59:32 <int-e> (to new york. (and philadelphia))
19:01:25 * mroman wonders why stack machines are not so popular
19:02:04 <Taneb> Phantom_Hoover, a lot of computers, a pointless catwalk
19:02:09 -!- Slereah_ has quit (Ping timeout: 252 seconds).
19:02:09 <mroman> But I assume they suck in some way
19:02:22 <Phantom_Hoover> Taneb, idk, maybe it helped you avoid walking on the computers
19:02:33 -!- Slereah_ has joined.
19:02:39 <LinearInterpol> mroman: It takes more to actually perform more common operations.
19:03:13 <Taneb> It was underneath a museum exhibit on Boolfuck (!?)
19:03:57 -!- Slereah has quit (Ping timeout: 265 seconds).
19:04:09 <Taneb> There were displays and statues and everything
19:04:09 <boily> Slereah_: Fear, Uncertainty and Gdoubt?
19:04:34 <LinearInterpol> the dark art of bit manipulation is one of the most powerful techniques in this world.
19:04:42 <Slereah_> g is for god my internet is so terrible
19:05:36 <fungot> mroman: http://en.wikipedia.org/ wiki/ fnord help? i might like syntactic closures, etc.) and not fnord fault.
19:05:51 * boily coppoles Slereah_'s connection
19:05:53 <mroman> fungot: Are you censoring hyperlinks?
19:05:53 <fungot> mroman: yow!! now i'm playing with it. :p
19:06:16 <mroman> LinearInterpol: Yeah. But there's an unbalanced bracket
19:06:17 <boily> fungot is citing zippy the pinhead. YOW!!
19:06:17 <fungot> boily: it's nice if i'm deeply down in some sort of identifier renaming thing, too, but quite.
19:06:42 <mrhmouse> fizzie: fungot uses 4-grams, right?
19:06:43 <fungot> mrhmouse: omniweb uses fnord/ down etc... and not ( 3 2)? how would you make an error about no clear
19:07:31 <mroman> fungot: Bake cookies him you must
19:07:32 <fungot> mroman: ah, used egrep matches every line beginning with a single one) and the p should depend on neither addresses of functions nor their names
19:07:33 <boily> LinearInterpol: you are not seeing it. obey. fnord.
19:20:19 * boily mapoles mrhmouse with a +3 Mapole of Holy Wrath {Dex+3, rN++}
19:20:37 <int-e> LinearInterpol: glazed eyes, hmm. a snack?
19:22:09 <boily> LinearInterpol: dex is important.
19:23:07 <boily> @dice 1000000000d100000000000
19:23:10 <int-e> Taneb: it was above average, actually.
19:23:29 <int-e> boily: it uses some normal distribution when the numbers get too high
19:24:17 <Taneb> int-e, average roll :(
19:25:01 <boily> int-e: nooooooooooooooo! my believes are shattered!
19:25:42 <int-e> @dice 1000000000d100000000000
19:25:44 <int-e> @dice 1000000000d100000000000
19:29:27 <lambdabot> unexpected '^': expecting operator or end of input
19:29:31 <lambdabot> unexpected '*': expecting operator
19:30:00 <boily> oh well. next step would have been exponential rolls, complex rolls, hyperreal roles...
19:31:51 <int-e> surreal rdice, hmm.
19:32:56 <boily> normally distributed glazed eyes served over bouchées of surreal bread rolls.
19:34:12 <int-e> I mean https://en.wikipedia.org/wiki/Surreal_number obviously
19:37:37 <int-e> (But apparently boily is obsessed with food. ... oh dinner time!)
19:37:48 <boily> ω². ow. my brain suffers.
19:38:11 <boily> int-e: as previously stated, I do not have a food obsession. I am also very sane.
19:38:33 <boily> FreeFull: it's infinity squared, which obviously is infinitely more than the infinite.
19:38:47 -!- Phantom_Hoover has quit (Ping timeout: 250 seconds).
19:38:51 <FreeFull> Depends on which omega you're talking
19:38:59 <FreeFull> You might be doing circular motion
19:39:05 <int-e> FreeFull: just an ordinary ... ordinal number.
19:39:17 -!- Sprocklem has joined.
19:39:30 <int-e> FreeFull: who wants to run in circles when you can go past infinity instead?
19:39:40 <mroman> Does Spacefish have Infinite Memory according to the definition of infinite memory you science guys have?
19:40:03 <boily> FreeFull: I went through EE classes, with nice ωs. mathematicians are spreading lies and propaganda, I say!
19:40:25 <mroman> FreeFull: You can always ask for a finite memory amount more
19:40:32 <mroman> while(1) { malloc(100000); }
19:40:43 <mroman> You can always malloc more memory
19:40:53 <mroman> but only a finite amount with each malloc of course
19:41:13 -!- Phantom_Hoover has joined.
19:41:59 <LinearInterpol> oh hey! a cellular automata based upon peturbation! who made this?
19:42:22 <mroman> FreeFull: The spec says, that you can always ask for more memory
19:42:45 <int-e> mroman: so what happens if I do > as the first step in a program?
19:42:49 <mroman> at any given point you'd still only have a finite amount of memory available
19:43:13 <mroman> int-e: You'd move to the initial cell
19:44:42 <int-e> mroman: does memory ever shrink?
19:45:59 <mroman> But you can just place 255 values in some cells to allocate more space
19:46:14 <mroman> and then never touch those alloca values
19:46:19 <mroman> so space wouldn't shrink back
19:46:47 <int-e> mroman: also, shouldn't 8 be surrounded by 3 squres, with values 8,4,2 and 1?
19:46:58 -!- ^v has quit (Quit: http://i.imgur.com/MHuW96t.gif).
19:47:20 -!- mrclarinet has joined.
19:49:07 <mroman> The question is merely if it counts as infinite memory of you can always ask for a finite amount of memory more
19:49:32 <mroman> because to actually have infinite memory, the program itself could never stop
19:49:45 <mroman> because if it stopped it only had allocated a finite amount of memory
19:50:03 <FreeFull> You can't fill an infinite amount of memory with a program that stops anyway
19:50:27 <mroman> However, you can't run out of memory
19:50:36 <int-e> technically, I would not talk of infinite memory but of "unbounded memory".
19:50:37 <mroman> if you can always allocate more of it
19:50:54 -!- guest10 has joined.
19:50:57 <mroman> so for all that matters it should be infinite as far as my opininon goes
19:51:17 <int-e> but that's really mincing words. there is no practical difference between the two.
19:52:17 -!- guest10 has left ("Leaving").
19:53:31 <boily> `relcome mrclarinet
19:53:33 <HackEgo> mrclarinet: 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>. (For the other kind of esoterica, try #esoteric on irc.dal.net.)
19:55:02 -!- MindlessDrone has quit (Quit: MindlessDrone).
20:10:20 -!- trout has changed nick to variable.
20:33:33 <metasepia> Your divination: "Corrupting" to "Gnawing Bite"
20:34:04 <boily> as usual, it is completely useless re my XML problems.
20:34:19 <metasepia> Your divination: "Corrupting" to "Arguing"
20:40:08 -!- Taneb has quit (Ping timeout: 260 seconds).
20:51:33 <metasepia> Your divination: "Grouping" to "Centre Confirming"
20:53:40 -!- Sprocklem has quit (Ping timeout: 265 seconds).
20:54:25 <metasepia> Your divination: "Shake" to "Great Possessing"
20:54:48 * mrhmouse is possessed by the Great Shaking
20:55:16 <metasepia> Your divination: "Prospering" to "Prospering"
20:55:48 * boily steals LinearInterpol's divination away
20:57:05 -!- Taneb has joined.
20:58:33 -!- Sprocklem has joined.
21:01:17 <metasepia> <pre><code>ASPH (aspartate beta-hydroxylase)</code></pre> Protein-coding gene on human chromosome 8q12.1, also known as BAH, CASQ2BP1, HAAH, JCTN, humbug, junctate, junctin.
21:01:47 <metasepia> humbug definition: something designed to deceive and mislead.
21:01:53 -!- shachaf_ has changed nick to shachaf.
21:02:00 -!- shachaf has quit (Changing host).
21:02:00 -!- shachaf has joined.
21:02:17 <mrhmouse> boily: perhaps an Easter-egg, since > "also known as BAH"?
21:02:45 <boily> mrhmouse: I realised. I was staying silent in shameful acceptance.
21:02:47 <shachaf> int-e: It is abused far beyond the funny limit.
21:06:50 * boily shakes metasepia a bit
21:07:06 <mrhmouse> boily: you get better results when using DDG's API with an API key
21:07:06 <metasepia> avian definition: of, relating to, or derived from birds.
21:07:33 <boily> mrhmouse: the keyful version will be integrated in the Next Version.
21:09:51 <metasepia> In theoretical computer science and mathematical logic a string rewriting system, historically called a semi-Thue system, is a rewriting system over strings from a alphabet.
21:10:06 -!- ThatOtherPerson has quit (Ping timeout: 265 seconds).
21:10:40 * boily puts his hands on his ears ♪ LA LA LA WHEN IT'LL BE READY LA LA LA THE NEXT VERSION IS NOT VAPOROUS AT ALL LAL ALL LALALALALALA ♪
21:14:59 <mrhmouse> boily: I would contribute, but your GitHub repo seems a bit out of date :P
21:16:18 <Taneb> elliott, do you happen to know if the X84 has free wifi?
21:16:19 <mrhmouse> boily: also is your profile image a persimmon? those are delicious.
21:17:32 <Taneb> Is that a "No, I don't", or a "No, it doesn't"?
21:18:55 <boily> mrhmouse: the out of dateness was pointed out by Roujo in an issue. I am conscious of the lack of content in the repo >_>'...
21:18:57 <shachaf> (Unless I'm wrong. I guess I could be wrong.)
21:19:15 <boily> mrhmouse: it indeed is a persimmon. persimmons are good. they are also orange, which is more good.
21:19:58 <mrhmouse> boily: most of them are. when I was growing up, we had several persimmon trees of the variety in your picture. later on, we starting growing another variety that was firmer and more red.
21:22:06 -!- mrclarinet has quit (Ping timeout: 246 seconds).
21:25:46 <fizzie> mrhmouse: It uses variable-length grams.
21:26:11 <fizzie> fungot: Could you bother counting up some statistics on your models, please?
21:26:12 <fungot> fizzie: but then hand it 1 time for me to finish in time, but i
21:26:40 <mrhmouse> fizzie: does any literature exist beyond the source code that describes how it works?
21:26:47 <fizzie> fungot: I.. is that a yes or a no? I mean, I don't want much, just some n-gram length histograms.
21:26:48 <fungot> fizzie: i think it's funnier that way, sorbet. we're loading her down with terrible associations tonight.
21:27:25 <mrhmouse> fizzie: particularly, I'm interested in how fungot chooses a starting fragment based on input
21:27:25 <fungot> mrhmouse: are there any fnord languages? :) ( aren't i lazy :p)
21:27:38 <mrhmouse> fungot: you are lazy. try Googling it.
21:27:38 <fungot> mrhmouse: you could do aliased pointers.)
21:27:46 <boily> quintopia: metasepia. the Truth is that it is still the old cuttlefish code in disguise. the True Metasepia doesn't exist yet.
21:28:05 <fizzie> mrhmouse: There's a paper on the model construction part, but that's not really part of fungot. As for choosing starting context based on input, that's easy: it doesn't.
21:28:05 <fungot> fizzie: define ' suckier.') the interesting question is:
21:28:18 <fizzie> fungot: You don't have to be so harsh.
21:28:18 <fungot> fizzie: i only see you once planning a srfi on object, operation friends would be welcomed?)
21:28:42 <mrhmouse> fizzie: darn :( I was looking for inspiration for the next ruddy (which I have named "roskat")
21:29:12 <fizzie> mrhmouse: That's the Finnish word for trash/garbage, if you didn't know.
21:29:29 <mrhmouse> fizzie: classic ruddy checked for similar messages in history, then chose the "response" from that
21:29:34 -!- ThatOtherPerson has joined.
21:29:46 <mrhmouse> fizzie: that's why I chose it. I chose "ruddy" because it has similar meaning.
21:29:48 <boily> ThellotOthelloPellorsellon.
21:29:57 <nortti> http://www.theatlantic.com/magazine/archive/1945/07/as-we-may-think/303881/?single_page=true
21:30:25 <fizzie> Anyhoo, all fungot's replies start with the context "START". There's not even any reasonable (built-in) way currently for it to go back from strings into the token indices the model uses, since I don't think the token lists are necessarily sorted.
21:30:25 <fungot> fizzie: i think it hasn't been srfi'd mostly as-is. is it documented somewhere?
21:31:09 <boily> fungot: probably, but you are written in Unhighlightable Befunge.
21:31:10 <fungot> boily: though marker fnord probably isn't clear unless you know where the difficulty comes in.
21:31:41 <mrhmouse> hm. I'll just come up with something on my own, I suppose. The best I've gotten out of Roskat so far was "hello there, roskat!" --> "I've received an uncommon phrase; what's the context? fnord"
21:31:41 <quintopia> boily: untrue! befunge is totes highlightable with the right UI
21:33:33 <fizzie> mrhmouse: There's one sort of trivial thing that I think I've seen done in a chatbot, which is to select a single "keyword" from the input (based on TF-IDF weights on words or whatnot), do a search over some database like WordNet for related terms (both synonyms and antonyms), pick a random one, and then generate from n-grams both forwards and backwards so that the keyphrase is in an ...
21:33:39 <fizzie> ... unpredictable spot of the response.
21:34:00 <fizzie> (Also add hyponyms and hypernyms and whatevernyms to that list.)
21:34:20 <metasepia> In linguistics, a hyponym is a word or phrase whose semantic field is included within that of another word, its hypernym (sometimes spelled hyperonym outside of the natural language processing community).
21:34:47 <mrhmouse> fizzie: that's a good idea :) currently roskat picks a word from the input (preferring uncommon words, based on message history) and starts with a random trigram whose predecessor includes that word
21:36:12 <mrhmouse> it helps, but it's far from acceptable as a form of "chatter". I intend to have the next version examine preceding messages & their sources for prompt/response patterns
21:36:13 <fizzie> That's really kind of similar, except without the WordNet step.
21:38:39 <mrhmouse> I need to diagram the whole thing first to see what sort of data I'll have to store regarding messages - then I can decide on other details
21:39:20 <fizzie> There's also quite a lot of work for natural language parsing; when you've got parse trees (or other such things), you can do things in terms of them. But those are kind of brittle, and might have trouble with informal chat-text. (Also it's an easy way to end up in a very Elizaey responses.)
21:39:37 <mrhmouse> for this bot, I don't particularly care about the semantic value of the messages
21:40:08 <mrhmouse> but I did have an idea to have another bot which understood e.g. Gellish English and could create relationships between terms
21:40:17 <metasepia> Gellish is a formal language that is natural language independent, although its concepts have 'names' and definitions in various natural languages.
21:40:24 <metasepia> Gellish Formal English is the English variant of Gellish and is a formal language, which means that it is a structured and formalized subset of natural English that is computer interpretable.
21:41:01 <fizzie> Back on the statistical side of the fence, you can probably also boost the probability of "relevant" responses with some kind of a scheme based on clustering of "topic" words.
21:41:38 <mrhmouse> fizzie: uncommon words that appear in the chatter at around the same times?
21:42:14 <boily> freebie uncommon word → paramycète.
21:43:11 -!- mrclarinet has joined.
21:43:36 <fizzie> Something like that, yes. Or just models trained on text with a specific topic, though if your source materials are irclogs, that's harder. (Unless you want to pay some Amazon Mechanical Turk people to label a gigabyte of logs with "current topic" annotations.)
21:44:06 <fizzie> (I'm sure they'd do a splendid job on annotating #esoteric logs.)
21:44:14 -!- mrclarinet has left.
21:45:47 <mrhmouse> IRC chatter is hard enough to parse :) I think the biggest amount of parsing I'll do will be name extraction and directed responses/prompts (e.g. "mrhmouse: hello" is a directed prompt)
21:46:18 <boily> what about the chimæric helloes?
21:46:39 <mrhmouse> boily: I can't parse those, so they'll remain in the chatter history as uncommon words
21:47:27 <fizzie> fungot: You can parse those sillyhelloes, right?
21:47:28 <fungot> fizzie: later tell drewr may be slime wants you to do
21:47:58 <mrhmouse> the best thing about those, though, is that they're usually clumped together. so prompting the bot with, say, "belloily", might result in "mrhmellouse"
21:48:33 <fungot> mrhmouse: it's a classic, i mostly wanted to take out fixnums and to put it later on?' what relevance does it have cons?
21:49:25 <boily> `run echo 'Sir Fungellot cannot be stopped by that sword alone!' >wisdom/fungot
21:50:09 <fungot> LinearInterpol: from reading the wikipedia entry for er, parachuting.)" at http://paste.lisp.org/ display/ 4408
21:50:10 <HackEgo> /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: : not found
21:50:39 <fizzie> Regarding the related-word thing, you can also do LSI instead of a WordNet-style a-priori-knowledge database.
21:50:50 <fungot> mrhmouse: when you get to function calls,
21:50:51 <HackEgo> Sir Fungellot cannot be stopped by that sword alone!
21:51:08 <mrhmouse> LinearInterpol: you have to provide a phrase
21:51:10 <HackEgo> boily is the brother of Roujo's brother and he's monetizing the company Roujo works at, or something Canadian like that. He's also a NaniDispenser, and a Man Eating Chicken.
21:51:33 <mrhmouse> fizzie: LSI? I'm not familiar with the acronym..
21:51:47 <metasepia> lsi definition: large-scale integrated circuit; large-scale integration.
21:51:56 <fizzie> mrhmouse: Latent Semantic Indexing, it's p. fancy.
21:52:28 <mrhmouse> fizzie: do you mean for the Gellish English bot? I intend for it to be fully spoon-fed :)
21:52:51 <fizzie> No, just for something statistical based on irclogs.
21:52:54 -!- muskrat has joined.
21:53:17 <mrhmouse> e.g. if it knows what a cat is (but not a dog), and it sees the word "dog" in a noun position, it would prompt the user to describe a dog
21:53:46 <mrhmouse> after that point, it now has some knowledge of what a dog is (based on the description and all recognized words in the description)
21:55:21 <mrhmouse> you might describe it as "an animal which chases cats". now it knows that a dog is an animal, and has the property that it chases cats (also an animal)
21:57:04 <fizzie> (How's that thing doing, anyway?)
21:58:11 <metasepia> It is not based on numerical methods such as statistical probabilities, nor is it based on neural networks or fuzzy logic.
21:58:17 <fizzie> "Stable release .. 17 months ago" well
21:58:46 <fizzie> metasepia: That's a good summary as far as it goes, but you could consider also saying something about what it *is* based on.
21:59:47 <fizzie> "Cyc-based solutions have helped government agencies and Global 100 commercial enterprises leverage their knowledge and expertise over a wide range of business verticals and across the full operational spectrum."
22:00:01 <fizzie> Leverage over a wide range of business verticals.
22:00:07 <fizzie> Across the full operational spectrum.
22:00:15 <fizzie> I see they've managed to leverage some marketing people, at least.
22:00:52 <LinearInterpol> a friend of mine from MIT published a book like this. in fact...
22:00:57 <LinearInterpol> http://www.lulu.com/us/en/shop/mike-wolf/bitkit/paperback/product-233305.html
22:23:30 -!- mrhmouse has quit (Quit: Oh fnordy fnordy).
22:31:03 -!- AnotherTest has quit (Ping timeout: 246 seconds).
22:33:50 -!- Phantom_Hoover has quit (Ping timeout: 264 seconds).
22:54:29 -!- glogbackup has quit (Read error: Connection reset by peer).
23:01:20 -!- boily has quit (Quit: UNHUMONGOUS DECHICKEN).
23:01:22 -!- metasepia has quit (Remote host closed the connection).
23:10:11 -!- muskrat has quit (Quit: Leaving).
23:16:59 -!- ThatOtherPerson has quit (Read error: Operation timed out).
23:21:26 -!- Sprocklem has quit (Ping timeout: 240 seconds).
23:24:57 -!- ThatOtherPerson has joined.
23:26:11 -!- LinearInterpol has quit (Read error: Connection timed out).
23:26:13 <ion> XCOM has a slight Z-order problem for a fraction of a second whenever switching soldiers. http://cloud-4.steampowered.com/ugc/452907883059778581/E033A703267A6B165B926905057AFF60C2896574/
23:26:23 -!- glogbackup has quit (Ping timeout: 265 seconds).
23:28:56 -!- LinearInterpol has joined.
23:34:23 -!- prooftechnique has joined.
23:41:43 -!- Sgeo has joined.
23:43:00 * quintopia moves the smorgases from the bord to the stomach
23:45:10 <ion> This is the perfect way to release a Linux distro and get maximum community participation. http://repo.steamstatic.com/download/
23:45:41 <quintopia> LinearInterpol: do you like swedish food
23:46:28 <quintopia> mmm whipped marshmallow cream with a hard chocolate shell
23:48:47 <quintopia> what you don't have an ikea near you
23:48:54 -!- RJones has joined.
23:48:57 -!- oerjan has joined.
23:51:55 <oerjan> it's also s. lucia day
23:53:23 <oerjan> a most peculiar scandinavian holiday based on taking an italian song about a harbor named s. lucia and pretending it's about the actual saint
23:53:43 <oerjan> and then singing that in processions of children.
23:53:52 <quintopia> st. lucia is a p cool island from what i've heard
23:57:47 <oerjan> https://en.wikipedia.org/wiki/Santa_Lucia also https://en.wikipedia.org/wiki/Borgo_Santa_Lucia i think i'm going to add a [citation needed] to the latter.