←2013-02-06 2013-02-07 2013-02-08→ ↑2013 ↑all
00:11:08 <oerjan> `fetch http://oerjan.nvg.org/esoteric/shove/shove
00:11:11 <HackEgo> 2013-02-07 00:11:10 URL:http://oerjan.nvg.org/esoteric/shove/shove [4053/4053] -> "shove" [1]
00:11:13 <oerjan> `run chmod a+x shove
00:11:16 <HackEgo> No output.
00:11:17 <oerjan> `run mv shove bin/shove
00:11:20 <HackEgo> No output.
00:16:58 -!- zzo38 has joined.
00:18:17 <ais523> oerjan: modified to only print output?
00:18:55 <oerjan> also to take a program on command line by default
00:19:18 -!- DHeadshot has joined.
00:19:28 <oerjan> `run echo '"Hello, world!"S' >test
00:19:31 <HackEgo> No output.
00:19:58 <oerjan> `run shove -d -f test #Now with options
00:20:18 <oerjan> `cat test
00:20:19 <HackEgo> ​"Hello, world!"S
00:20:29 <HackEgo> No output.
00:20:37 <oerjan> `run yes | shove -d -f test #Now with options
00:20:39 <HackEgo> ​ \ actual size: (16, 1), pos: (0, 0) \ rotated for viewing; pos: (0, 0), dir: 0 \ stack: \ *Hello, world!"S \ \ actual size: (16, 1), pos: (15, 0) \ rotated for viewing; pos: (15, 0), dir: 0 \ stack: {Hello, world!} \ "Hello, world!"* \ Hello, world!
00:22:22 <oerjan> oh and the debugger now waits for stdin even if it's from a file.
00:23:59 <oerjan> hm i wonder
00:24:27 <oerjan> `run shove 'v' '>"Test"S'
00:24:29 <HackEgo> Test
00:25:06 <oerjan> i wasn't sure if i'd made it use one line per argument or not.
00:31:41 -!- ais523 has quit.
00:39:44 <oerjan> `run shove '" '\''Hello, world"'\''S"('
00:39:45 <HackEgo> Unterminated string. at /hackenv/bin/shove line 140.
00:40:07 <oerjan> `run echo '" '\''Hello, world"'\''S"('
00:40:08 <HackEgo> ​" 'Hello, world"'S"(
00:40:17 <oerjan> `run shove '" '\''Hello, world"'\''S('
00:40:19 <HackEgo> Unterminated string. at /hackenv/bin/shove line 140.
00:40:49 <oerjan> `run shove '" '\''Hello, world'\''S"('
00:40:50 <HackEgo> No output.
00:40:57 <oerjan> darn
00:41:06 <oerjan> `run shove '" '\''Hello, world'\''S"('
00:41:08 <HackEgo> No output.
00:41:26 <oerjan> `run echo '" '\''Hello, world'\''S"('
00:41:27 <HackEgo> ​" 'Hello, world'S"(
00:42:18 <oerjan> `run echo '" '\''Hello, world'\''S"S'
00:42:20 <HackEgo> ​" 'Hello, world'S"S
00:42:29 <oerjan> `run shove '" '\''Hello, world'\''S"S'
00:42:30 <HackEgo> ​ 'Hello, world'S
00:46:41 <kmc> shachaf: do you know anything about http://fpcomplete.com/
00:47:00 <elliott> kmc: i know spj is investing in them or something
00:47:08 <elliott> and snoyman works there?
00:47:11 <elliott> and johnw works there
00:47:12 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
00:47:14 <kmc> interesting
00:47:26 <elliott> not sure what they actually do
00:47:40 <elliott> there is some haskell school thing(?) maybe online(?) they're running
00:47:53 <kmc> Massive Online Monad Tutorial
00:50:43 <shachaf> kmc: I know pretty much what elliott knows.
00:51:01 <shachaf> I think they're making an online Haskell IDE or something?
00:52:23 <oerjan> `run shove ' v' 'v V" olleH"<' '>", world!"S'
00:52:25 <HackEgo> No output.
00:52:32 <oerjan> wtf now again
00:52:50 <kmc> ok
00:52:56 <kmc> the website looks... slick in the wrong ways
00:53:01 <kmc> but i guess they have some legit people involved
00:53:58 <oerjan> oh duh shove is evil :P
00:54:07 <monqy> Functional Programming technology
01:00:24 <oerjan> `run shove '" ,olleH"V v' ' S"!dlrow"<'
01:00:26 <HackEgo> Hello, world!
01:02:05 <zzo38> My idea of some music format: The header is sixteen frequencies of the notes of the lowest octave, followed by eight waveforms of thirty-two frames each, where each frame is four bits. And then, follow by commands. The frequencies are converted to periods when it is loaded. Durations are also converted to periods.
01:02:06 <lambdabot> zzo38: You have 1 new message. '/msg lambdabot @messages' to read it.
01:02:12 <oerjan> ok that was slightly amusing
01:02:27 <zzo38> 0xxx.xxxx = note playing. 0111.1111 = rest.
01:03:16 <oerjan> `cat bin/log
01:03:18 <HackEgo> ​#!/bin/sh \ cd /var/irclogs/_esoteric \ if [ "$1" ]; then \ grep -P -i -- "$1" ????-??-??.txt | shuf -n 1 \ else \ file=$(shuf -en 1 ????-??-??.txt) \ echo "$file:$(shuf -n 1 $file)" \ fi
01:03:24 <zzo38> 1000.0xxx = select waveform. 1000.1xxx = select waveform with phase reset. 1001.0xxx = channel start intro. 1001.1xxx = channel start loop or go to loop. 1010.xxxx = volume. and so on
01:03:42 <zzo38> Including duration, duration MRU, and local repeats.
01:03:48 <zzo38> Now is this good enough, do you think so?
01:03:52 <zzo38> ?messages
01:03:52 <lambdabot> shachaf said 1d 4h 20m 13s ago: CodensityAsk reminds me of type MendlerAlgebra f c = forall a. (a -> c) -> f a -> c (except that it's different)
01:04:27 <shachaf> hi lambdabot
01:05:07 <tswett> zzo38: mm, thinking carefully about the purpose of this music format may be a good idea.
01:05:36 <zzo38> tswett: Just that I would find it easy to implement in C with SDL, and to create music files of that format with CsoundMML.
01:05:54 <tswett> Yeah, but what are you trying to represent?
01:06:00 <tswett> Do you want it to be able to express arbitrary sounds? Encode the waveform. To express arbitrary sounds in a space-efficient manner? Encode the program that generates the waveform.
01:06:26 <zzo38> shachaf: What is MendlerAlgebra for, though? It is not a functor
01:06:34 <oerjan> `run cd /var/irclogs/_esoteric; cat $(ls ????-??-??.txt | tail -1) | tail
01:06:37 <HackEgo> 01:03:48: <zzo38> Now is this good enough, do you think so? \ 01:03:52: <zzo38> ?messages \ 01:03:52: <lambdabot> shachaf said 1d 4h 20m 13s ago: CodensityAsk reminds me of type MendlerAlgebra f c = forall a. (a -> c) -> f a -> c (except that it's different) \ 01:04:27: <shachaf> hi lambdabot \ 01:05:07: <tswett> zzo38: mm, thinking carefully about
01:07:06 <shachaf> tswett: encode the program that generates the music format
01:07:11 <zzo38> tswett: Well, there is the balances of simplicity, speed, compact, etc
01:07:13 <shachaf> @google MendlerAlgebra
01:07:15 <lambdabot> http://www.haskell.org/haskellwiki/Catamorphisms
01:07:15 <lambdabot> Title: Catamorphisms - HaskellWiki
01:07:34 <Bike> "Mendler and the Contravariant Yoneda Lemma" is this a children's novel
01:08:15 <zzo38> Sure also such things as NSF and MOD and so on usable, but I don't quite easily enough find the C program to play it properly using SDL
01:08:32 <oerjan> `run printenv
01:08:34 <HackEgo> TERM=linux \ http_proxy=http://127.0.0.1:3128 \ HACKENV=/hackenv \ PATH=/hackenv/bin:/opt/python27/bin:/opt/ghc/bin:/usr/bin:/bin \ PWD=/hackenv \ LANG=en_NZ.UTF-8 \ HOME=/tmp \ SHLVL=1 \ _=/usr/bin/printenv
01:09:43 <shachaf> monqy: do you know what an end is
01:09:43 <tswett> zzo38: *nod* I wonder, then, is there any particular reason you're not just using WAV files?
01:09:51 <monqy> shachaf: what's an end
01:10:13 <shachaf> monqy: i don't know :'(
01:10:17 <monqy> oh
01:10:18 <shachaf> In category theory, an end of a functor is a universal dinatural transformation from an object e of X to S.
01:10:50 <monqy> ok
01:10:56 <oerjan> `run cd /var/irclogs/_esoteric; cat $(ls ????-??-??.txt | tail -1) | tail -2
01:10:59 <zzo38> tswett: WAV files will be too large and maybe wrong sample rate
01:11:00 <HackEgo> 01:10:50: <monqy> ok \ 01:10:56: <oerjan> `run cd /var/irclogs/_esoteric; cat $(ls ????-??-??.txt | tail -1) | tail -2
01:11:17 <zzo38> Also we would want looping of music
01:11:25 <shachaf> monqy: i was hoping you could tell me what it means
01:12:03 <tswett> So yeah. I was under the impression that the purpose of Ithkuil was to express normal amounts of information with small amounts of text; it turns out the purpose is actually to express large amounts of information with normal amounts of text.
01:12:12 <oerjan> `run cd /var/irclogs/_esoteric; cat $(ls ????-??-??.txt | tail -1) | tail -1 | sed 's/.*> //' #Worst kimian quine ever?
01:12:16 <HackEgo> ​//' #Worst kimian quine ever?
01:12:21 <oerjan> oops :P
01:12:32 <oerjan> `run cd /var/irclogs/_esoteric; cat $(ls ????-??-??.txt | tail -1) | tail -1 | sed 's/.*?> //' #Worst Kimian quine ever?
01:12:36 <HackEgo> ​//' #Worst Kimian quine ever?
01:13:22 <oerjan> `run cd /var/irclogs/_esoteric; cat $(ls ????-??-??.txt | tail -1) | tail -1 | sed 's/[^>]*> //' #Worst Kimian quine ever?
01:13:25 <HackEgo> ​`run cd /var/irclogs/_esoteric; cat $(ls ????-??-??.txt | tail -1) | tail -1 | sed 's/[^>]*> //' #Worst Kimian quine ever?
01:13:30 <oerjan> there you go.
01:14:09 <tswett> zzo38: *nod* May I ask why they're too big?
01:14:10 <zzo38> I don't think it is a Kimian quine though; I think a Kimian quine is one which the system's error message is the same as the program text. But I can see how it works
01:14:12 <oerjan> `echo bin/quine
01:14:14 <HackEgo> bin/quine
01:14:26 <oerjan> zzo38: oh right. i guess i meant cheating quine then
01:14:27 <oerjan> oops
01:14:32 <oerjan> `cat bin/quine
01:14:34 <HackEgo> cat: bin/quine: No such file or directory
01:15:57 <zzo38> tswett: You know...
01:15:58 <oerjan> `run echo 'cd /var/irclogs/_esoteric; cat $(ls ????-??-??.txt | tail -1) | tail -1 | sed '\''s/[^>]*> //'\'' #Worst cheating quine ever?" >bin/quine
01:16:00 <HackEgo> bash: -c: line 0: unexpected EOF while looking for matching `'' \ bash: -c: line 1: syntax error: unexpected end of file
01:16:28 <oerjan> `run echo 'cd /var/irclogs/_esoteric; cat $(ls ????-??-??.txt | tail -1) | tail -1 | sed '\''s/[^>]*> //'\'' #Worst cheating quine ever?' >bin/quine
01:16:31 <HackEgo> No output.
01:16:50 <oerjan> `run quine #Also the best.
01:16:52 <HackEgo> bash: /hackenv/bin/quine: Permission denied
01:17:02 <oerjan> `run chmod a+x bin/quine
01:17:06 <HackEgo> No output.
01:17:08 <oerjan> `run quine #Also the best.
01:17:11 <HackEgo> ​`run quine #Also the best.
01:18:06 <tswett> zzo38: because you have either a large number of music files or a significant space limitation?
01:18:25 <oerjan> `run quine | rot13
01:18:28 <HackEgo> No output.
01:18:32 <oerjan> oops
01:18:37 <tswett> `run quite
01:18:39 <HackEgo> bash: quite: command not found
01:18:40 <tswett> `run quine
01:18:43 <HackEgo> ​`run quine
01:18:49 <zzo38> I also do not know any MML compilers for MOD and S3M formats (neither format can do desynchronization, and way of combining blocks in those formats makes it difficult to work with too)
01:18:51 <tswett> So, like, how does it work?
01:18:53 <oerjan> `cat bin/rot13
01:18:54 <HackEgo> echo "$@" | tr a-zA-Z n-za-mN-ZA-M
01:19:01 <oerjan> `run quine | rot13
01:19:04 <HackEgo> No output.
01:19:13 <oerjan> wtf is wrong with that
01:19:22 <oerjan> oh of course
01:19:34 <oerjan> `run rot13 $(quine)
01:19:38 <HackEgo> ​`eha ebg13 $(dhvar)
01:19:54 <zzo38> tswett: Well, yes those are reasons too.
01:19:54 <tswett> `run echo aru | rot13 | rot13
01:19:56 <HackEgo> No output.
01:20:06 <oerjan> tswett: it simply finds the last line in the logs and removes everything up to the nick
01:20:23 <elliott> `run rot13 `quine`
01:20:26 <HackEgo> ​`eha ebg13 `dhvar`
01:20:29 <elliott> oh, I see
01:20:35 <tswett> zzo38: then I don't know what the reason you were referring to is.
01:20:39 <elliott> `run echo $(quine)
01:20:43 <HackEgo> ​`run echo $(quine)
01:20:44 <elliott> oerjan: this is a beautiful program
01:20:46 <tswett> oerjan: mm.
01:20:48 <tswett> `quine
01:20:51 <HackEgo> ​`quine
01:21:00 <zzo38> tswett: Those are what I refer to, too.
01:21:05 <tswett> `quine the first
01:21:08 <HackEgo> ​`quine the first
01:21:15 <tswett> Hm, I fail at, like... doing this correctly.
01:21:18 <Bike> `quine
01:21:18 <Bike> brief
01:21:21 <HackEgo> brief
01:21:25 <tswett> `quine the first
01:21:25 <tswett> `quine the second
01:21:28 <HackEgo> ​`quine the second
01:21:28 <HackEgo> ​`quine the second
01:21:30 <tswett> There we go.
01:21:37 <Bike> nooooo
01:21:58 <elliott> oerjan: it should make sure the line starts with a ` at least
01:23:13 <oerjan> elliott: oh? i thought the failure modes were part of the charm.
01:24:05 <zzo38> tswett: Do you know of the C libraries to play the other formats on SDL, though, and of the MML compiler into some such format?
01:24:22 <tswett> Nope.
01:24:28 <oerjan> HackEgo: `echo hi
01:24:38 <oerjan> it doesn't do such fancy things...
01:24:53 <oerjan> `cat bin/quine
01:24:54 <elliott> oerjan: ostensibly
01:24:54 <HackEgo> cd /var/irclogs/_esoteric; cat $(ls ????-??-??.txt | tail -1) | tail -1 | sed 's/[^>]*> //' #Worst cheating quine ever?
01:25:27 <elliott> no don't fix it
01:25:35 <oerjan> oh ok
01:27:33 <oerjan> did ais523 say shove was TC?
01:28:00 <elliott> I don't think so
01:28:46 <oerjan> <ais523> elliott: Shove is TC, I think; you can compile Underload into it
01:28:49 <shachaf> proof by ais523 said so
01:32:57 <zzo38> Do you know if a trigger in SQL is allowed to call itself?
01:35:01 <shachaf> kmc: UTF-16 apparently had better performance than UTF-8 for "text"
01:35:08 <shachaf> They ported it and then decided to stick with -16
01:35:12 <kmc> interesting
01:35:16 <shachaf> Apparently it had to do with the four-way branch or something?
01:35:19 <shachaf> I don't know.
01:35:40 <kmc> was that in realistic situations or synthetic microbenchmarks?
01:35:53 <zzo38> Well, it probably also depends on what text you are encoding and on the program which uses it, and on other things.
01:36:35 <shachaf> I don't know the details. It's just what I overheard from edwardk (it was a SoC project).
01:36:36 <kmc> what's the internal structure of text, again? finger tree? rope?
01:36:38 <kmc> flat?
01:36:46 <shachaf> Just a plain ByteArray
01:36:52 <elliott> Also the Unicode C library they use whose name I've forgotten uses UTF-16.
01:37:02 * elliott wishes there was a good rope library for Haskell.
01:37:03 <kmc> ICU?
01:37:09 <shachaf> Yes, ICU was a big consideration.
01:37:20 <kmc> it seems like a good data structure would be a finger tree of ~few-kB UTF-8 chunks
01:37:38 <elliott> edwardk has a UTF-8 finger-tree string implementation on Hackage (in several different packages).
01:37:42 <kmc> annotated with things like the number of codepoints in each
01:37:48 <kmc> mm
01:37:50 <elliott> The problem is he doesn't care about it to the point where he actually didn't realise it existed until I pointed it out.
01:37:58 <kmc> haha
01:38:05 <kmc> that's amusing
01:38:23 <shachaf> He cares about it for his parsers.
01:38:25 * elliott thinks ~few-kB might be a bit too big for a persistent structure.
01:38:28 <elliott> If you're modifying it constantly.
01:39:05 <kmc> maybe smaller at the ends
01:39:11 <kmc> anyway it's something you would have to tune
01:39:19 <kmc> i don't claim any a priori insight about what the best size is
01:39:42 <elliott> You could annotate it with more than codepoints; that would be pretty cool
01:39:50 <elliott> Might not be worth the cost, though.
01:40:03 <kmc> you could annotate it with an arbitrary monoid
01:40:04 <kmc> so easy
01:40:07 <elliott> Not sure codepoints by itself is useful. Random access by codepoint isn't a particularly interesting operation.
01:40:10 <kmc> yeah
01:40:15 <kmc> 'width in terminal' would be a fun one
01:41:05 <elliott> I wonder if (forall w. Monoid w => (UTF8String -> w) -> Rope w) would be a good string representation, where "w" is the annotation.
01:41:19 <elliott> Hey, Rope would even be a Functor then. (The Functor instance would be one you don't actually want for string manipulation, but still.)
01:41:33 <elliott> I guess if you get that generic it might as well be Rope w UTF8String.
01:41:50 <elliott> Hmm, I guess you can define (Rope w a) as a w-annotated FingerTree of vectors of a.
01:42:10 <elliott> That way type String = Rope Whatever Char is a proper Functor.
01:42:23 <elliott> Except for the part where it wouldn't be since you want the vector to be unboxed and that requires an Unbox typeclass and stuff.
01:42:26 * elliott sigh
01:43:20 <elliott> It'd be nice if Vector could be totally polymorphic and somehow adapt itself to be unboxed whenever you use it on a type that can be unboxed.
01:44:38 <kmc> isn't that one of the motivating examples for type families
01:44:39 <zzo38> That seems something that Haskell just doesn't do, and might be difficult even if another programming language that can be made up to do such things, would still be difficult, if you want to have adapt to box/unboxed. However, an idea is to use macros somehow.
01:45:07 <zzo38> Type families might do it but you still would have to write it for every one, rather than having it done automatically.
01:45:07 <kmc> data instance Vector (a,b) = VPair (Vector a) (Vector b) -- or such
01:46:51 <zzo38> But if you write "type family" then you cannot write "data instance" on it; it has to be "type instance" even though they should allow "data instance" in such cases too, they don't. (But it is good and correct that "data family" don't allow "type instance")
01:47:56 <shachaf> zzo38: You can always just define a separate data type.
01:48:39 <zzo38> shachaf: Yes I know so, and that is a way to work-around, but still I think should be allowed
01:48:54 <shachaf> I'm not sure that it should.
01:49:00 <shachaf> But anyway did you submit a bug report and/or patch?
01:49:16 <elliott> Macros don't work.
01:49:21 <elliott> Since you want a Functor instance.
01:49:35 <elliott> kmc: The problem is you can't write (a -> b) -> Vector a -> Vector b
01:49:39 <elliott> Because what constructors does it have?
01:49:40 <zzo38> No. I have made some suggestion of various things but mostly nobody wanted it
01:49:46 <elliott> So you need a typeclass for "something you can construct a Vector out of"
01:49:48 <elliott> So you lose Functor
01:49:58 <zzo38> elliott: C macros won't work, of course; I don't mean C macros.
01:49:58 <kmc> yes
01:50:36 <elliott> What you want is a "default typeclass instance" with all sorts of awful overlapping instances stuff with the understanding that it's OK because they all have the same semantics.
01:50:43 <elliott> But I don't think there's a way to make it properly with GHC.
01:50:51 <zzo38> Functor instance is derivable and if so will be the only correct way to do it, otherwise it is not possible to be done.
01:51:04 <zzo38> elliott: Yes, it is not possible to do properly with GHC that is what I meant.
01:51:16 <coppro> why is dr strangelove so wonderful
01:51:18 <zzo38> (Unless they added an extension to do it properly, but that might be very difficult)
01:51:42 -!- Arc_Koen has quit (Ping timeout: 264 seconds).
01:57:48 -!- Arc_Koen has joined.
02:05:29 <oerjan> `shove '"'"'"'"'"!"S'S)"S)'S)"S)'S)"S)'S)"S)'S)
02:05:31 <HackEgo> ​"'"'"'"'"!"S'S)"S)'S)"S)'S)"S)'S)"S)'"'"'"'"!"S'S)"S)'S)"S)'S)"S)'S)"'"'"'"!"S'S)"S)'S)"S)'S)"S)'"'"'"!"S'S)"S)'S)"S)'S)"'"'"!"S'S)"S)'S)"S)'"'"!"S'S)"S)'S)"'"!"S'S)"S)'"!"S'S)"!"S!
02:06:47 <oerjan> he didn't joke when he said ' and " nested inside each other
02:07:12 <elliott> nice
02:07:45 <oerjan> `shove '"'"'"'"'"!"S'S)"S)'S)"S)'S)"S)'S)"S)'S)"Hm"S
02:07:47 <HackEgo> ​"'"'"'"'"!"S'S)"S)'S)"S)'S)"S)'S)"S)'"'"'"'"!"S'S)"S)'S)"S)'S)"S)'S)"'"'"'"!"S'S)"S)'S)"S)'S)"S)'"'"'"!"S'S)"S)'S)"S)'S)"'"'"!"S'S)"S)'S)"S)'"'"!"S'S)"S)'S)"'"!"S'S)"S)'"!"S'S)"!"S!Hm
02:08:15 <oerjan> and ) (shoving in the same direction as you're moving seems to behaving relatively intuitively
02:08:18 <oerjan> *+)
02:08:27 <oerjan> *+be
02:10:56 * oerjan just realized the semantics of shoving means it is impossible to delete characters from the grid
02:11:24 * elliott suspects oerjan understands this language better than ais523 does already.
02:11:47 * oerjan suspects that's a little early
02:12:01 <oerjan> especially given ais523 claimed to be able to compile underload to it
02:12:20 * elliott suspects that meant "there seem to be equivalent enough operations to do it"
02:13:04 <oerjan> ...i had trouble enough just concatenating "Hello, " and "world!" above
02:20:05 <oerjan> `run echo Testing | fueue '):[)$$6-%0~~[$~])~[)$~~~%~~)[[0[33 H])[)[H]]!][1)[)))($[[)[~~~~()+1])][0]$%~~1)][][)[)$%0[)[))$11~<<~:(~:< ]])[):] ]] ]]])] ] [1[1][[50]<:[[52]<:]][[54]<:[[56]<:]]]'
02:20:07 <HackEgo> Testing
02:20:45 <oerjan> one has a slight hunch that simpler cats are possible :P
02:21:33 <oerjan> (this one is a translation from +[,.], as seen from just inside the loop
02:21:35 <oerjan> )
02:22:59 <elliott> is there no known fueue cat?
02:23:00 <elliott> apart from that one I mean
02:25:13 <monqy> fueue sure looks like a "tar pit" hm
02:25:28 <oerjan> elliott: i don't think i've ever bothered to make one
02:27:00 <oerjan> also EOF handling is a bit unspecified. the C interpreter is the only one which even handles it, by accident treating it as a negative number. which means the same as 0 for most purposes, since i have found no way to do input preserving a 3-way distinction.
02:27:34 <pikhq> oerjan: "By accident"?
02:27:43 <pikhq> oerjan: What, by just handing whatever getc() returns?
02:27:44 <oerjan> pikhq: or by default.
02:27:47 <oerjan> yeah.
02:28:22 <pikhq> Ah, yeah. Technically EOF can be anything in C so long as it's not confuseable for a character, but in practice it's -1.
02:28:22 <oerjan> the ocaml and haskell interpreters also do nothing special, which means they will raise exceptions.
02:28:39 <oerjan> pikhq: i think it's required to be < 0.
02:28:50 -!- Bike has left.
02:29:35 <pikhq> Ah, it is required to be negative.
02:30:05 <oerjan> i can distinguish 0 from EOF at the cost of identifying everything else with one of them.
02:31:14 <oerjan> (if i apply - first, EOF becomes positive and everything else becomes identified; if i apply % first 0 becomes 1 and everything else 0.)
02:31:15 <elliott> how useful
02:32:46 <oerjan> incidentally there is probably no quick way to determine whether a number is negative or positive :P
02:33:10 <oerjan> (in general, not just at input)
02:35:45 <oerjan> maybe something with division could work, but fueue doesn't specify which way / rounds
02:36:06 <pikhq> Nor does C. :)
02:36:19 <oerjan> indeed
02:37:14 <oerjan> (the slow way is to use $ to make copies of blocks, which you then have to delete if the number is large positive.)
02:37:57 <oerjan> i assume <0 is treated as 0 there
02:38:54 <oerjan> oh hm wait...
02:39:07 <oerjan> scratch that, i just thought of a way
02:39:25 <oerjan> well at least constant number of arithmetic operations
02:40:32 <oerjan> (x^2 + 2*x+1)/(x^2 - 2*x+1) will be 0 iff x is negative.
02:41:51 <oerjan> (handling overflow left as an exercise for the reader.)
02:50:46 -!- WeThePeople has joined.
02:51:35 <zzo38> O no! I realized that in this Dungeons&Dragons game I was playing yesterday, they are leading us into a trap! That guard in the barn (even though they blocked the way we intended to get in, and they *knew* we would be coming the other way anyways), I thought it was a decoy but now I think it is actually a double bluff!! They left the copy of the delivery note there deliberately so that we would find it!
02:52:36 <zzo38> I think so far we have actually done exactly what they expected us to do. I wouldn't be too surprised if I found the cutlery which they left behind (why didn't they deliver that?) is cursed.
02:53:11 <shachaf> O no!
02:54:01 <shachaf> zzo38: Can I join your Dungeons&Dragons games?
02:54:48 <zzo38> Probably not; possibly due to your location.
02:55:32 <shachaf> You should move to California.
02:55:44 <shachaf> Alternatively, I could move to Vancouver? Or wherever it is you are.
02:55:45 <zzo38> No.
02:56:35 <zzo38> That is close enough.
02:57:04 <monqy> too close??
02:57:49 <zzo38> I might be in Victoria in Victoria Day, in the "Sushi Plus" Japanese restaurant. (in case you want to know what I am)
02:59:25 <shachaf> is Victoria Day the Canadian version of Victory Day
02:59:55 <zzo38> I don't know.
03:00:30 <shachaf> zzo38: I was in Victoria once.
03:00:31 <zzo38> But on Victoria Day I usually go to Victoria since it is just very close in Vancouver Island and takes only an hour or so on the ferry boat to get there.
03:00:45 <shachaf> I took the ferry!
03:00:55 <shachaf> Hmm, I'm not sure whether it was a ferry boat or a ferry airplane or what.
03:00:59 <shachaf> But it was definitely a ferry.
03:01:09 <shachaf> monqy: hi
03:01:12 <monqy> ???
03:01:18 <monqy> hi shachaf????????
03:01:19 <zzo38> OK,have you been to that restaurant?
03:01:30 <shachaf> monqy: did you learn about kan extensions in my absence.............
03:01:44 <monqy> no but i learned about gosh what did i learn about
03:01:50 <monqy> cheese sauce
03:01:52 <shachaf> monqy: or did you decide to "spill the beans" about galois connections
03:01:54 <monqy> i learned about cheese sauce
03:02:10 <shachaf> monqy: "spill ur beans plz"
03:02:26 <monqy> ok ok i found the recipe online but still
03:03:39 <shachaf> monqy: the beans recipe or the cheese sauce recipe
03:04:01 <monqy> i didn't make beans
03:04:35 <monqy> i had other stuff with the cheese sauce but none of them were beans
03:04:43 <shachaf> did you spill them
03:05:01 <monqy> i think i spilled one of the broccolis accidentally
03:07:09 <shachaf> was it this one: http://upload.wikimedia.org/wikipedia/commons/4/4f/Fractal_Broccoli.jpg
03:07:33 <monqy> no just a normal broccoli
03:08:26 <monqy> apparently that's actually a cauliflower?
03:08:35 <shachaf> SORRY
03:08:42 <monqy> i had cauliflower too but not that cauliflower. and i didn't spill it.
03:08:42 <elliott> fractal cauliflower
03:08:52 <shachaf> if it's called cauliflower then why does the url say broccoli
03:08:55 <shachaf> checkmate monqyists
03:21:04 -!- WeThePeople has quit (Quit: Leaving).
03:28:28 -!- zzo38 has quit (Read error: Connection reset by peer).
03:29:10 -!- Arc_Koen has quit (Quit: Arc_Koen).
03:29:31 -!- WeThePeople has joined.
03:29:51 -!- zzo38 has joined.
03:30:08 <zzo38> (My computer was rebooting)
03:30:24 <shachaf> zzo38: have you ever met victoria
03:36:06 <zzo38> Not really
03:38:57 -!- WeThePeople has quit (Quit: Leaving).
03:41:59 <kmc> shachaf: http://grsecurity.net/~spender/msr32.c __asm volatile(".intel_syntax noprefix\n" ...)
03:44:03 <shachaf> I imagine switching back and forth a lot could be pretty annoying.
03:44:49 <kmc> not as annoying as AT&T syntax, apparenty
03:44:55 <kmc> AT&T syntax *is* pretty bad
03:45:16 <kmc> i'm surprised he doesn't define a macro to switch back and forth... I guess then you would need a \ on each line
03:46:20 <pikhq> Ugh, AT&T syntax.
03:46:40 <shachaf> kmc: I mean mentally switching back and forth.
03:46:56 * shachaf is much more used to AT&T syntax than Intel syntax.
03:46:58 -!- WeThePeople has joined.
03:47:09 <shachaf> (Intel syntax is also not that great. :-( )
03:47:29 <zzo38> Do you prefer the DOS DEBUG assembler syntax?
03:47:49 <kmc> i imagine that if you're reading the Intel manuals all the time, you might want to stick to Intel syntax
03:47:56 <kmc> but if you're reading objdump output all the time, you might stick to AT&T :(
03:49:30 <shachaf> objdump -M intel
03:49:36 <kmc> ah right
03:49:48 <pikhq> shachaf: Intel syntax sucks less.
03:49:57 <shachaf> Yep.
03:50:02 <pikhq> Both suffer from a fundamental problem, though...
03:50:04 <pikhq> x86 sucks.
03:50:04 <pikhq> :)
03:50:21 <kmc> x86 is underrated, y'all are just hipsters
03:50:55 <zzo38> x86, as well as many modern instruction sets, are full of dumb thing.
03:51:18 <pikhq> x86 is the anti-modern instruction set.
03:51:34 <kmc> i agree that x86 is full of dumb things but most of them are not relevant if you are writing userland code on a modern OS
03:51:43 <zzo38> Yes, it is very old but then made updates to change to make with modern things, and that is much worse.
03:51:47 <kmc> and even to large degree, if you are reading compiler output for userland code in a modern OS
03:53:01 <zzo38> I happen to like the ARM2 instruction set, although modern ARM instruction sets are becoming extremely complicated, and there are even at least three instruction sets, and so on.
03:53:16 <kmc> yeah ARM is nice
03:53:21 <shachaf> i happen to like monoids
03:53:23 <kmc> it has its own weird corners though
03:53:29 <kmc> even setting aside Thumb
03:53:31 <shachaf> want to wrestle on the floor about it
03:53:35 <kmc> :(
03:53:42 <kmc> is that how real hackers settle disputes
03:53:53 <kmc> maybe you can advise Sgeo about the "Are you a Hacker?" question
03:54:32 <shachaf> Adavise
03:54:35 <zzo38> kmc: I just mean the ARM2 instruction set, not all the junk they added afterward.
03:55:39 <zzo38> The stuff they added afterward also happens to be patented, and I don't like patent, however, perhaps in this case something good came from it which is that the Amber core only implemented the ARM2 and therefore did not implement all of the complicated junk! So at least there is one advantage to having such a patent, even though patent is bad in general.
03:56:53 <shachaf> can you get Apple to patent the osx ui
03:57:00 <shachaf> so ubuntu stops copying it and becoming bad
03:58:23 <zzo38> I think it is too late now; simply work on to make a separate UI for Ubuntu if you want, that can be improved if you still want the other stuff of Ubuntu specifically rather than other Linux distributions.
03:58:58 <zzo38> But, yes, it might have helped I guess.
03:59:17 <shachaf> I don't even use Ubuntu now.
03:59:28 <zzo38> Patents might work if only extremely terrible and complicated things are patented, for this reason.
03:59:46 <zzo38> shachaf: Then use a different Linux distribution, or a different operating system entirely, or a different computer.
04:00:05 <shachaf> I switched to a different computer but Ubuntu was still bad. :-(
04:00:25 <zzo38> No, I mean a different computer which does not run Ubuntu.
04:01:01 <shachaf> monqy: so "''covariant functor''"''"" is just a generalization of ˙˙¨monotonic˙¨ right?
04:02:51 -!- WeThePeople has quit (Quit: Leaving).
04:04:51 <Sgeo> `list
04:04:52 <HackEgo> Taneb atriq Ngevd Fiora nortti Sgeo ThatOtherPerson alot
04:05:26 <shachaf> Did Fiora leave?
04:06:21 <monqy> shachaf: well if you think of functors between poset categories
04:07:02 <shachaf> monqy: right
04:07:11 <shachaf> monqy: just like "galois connections"
04:07:12 <shachaf> oh wait
04:07:20 <shachaf> you don't know about those i forgot :'(
04:07:31 <monqy> :-)
04:07:46 <shachaf> ÷)
04:08:20 <shachaf> monqy: what about a "monotonic predicate"
04:08:27 <shachaf> what category is that
04:08:43 <shachaf> (plz make it "not boring" i can only figure out boring versions)
04:10:22 <zzo38> Can a ring be made from a semiring in some way?
04:11:13 <shachaf> drop 4
04:11:23 <monqy> shachaf: monotonic predicate as in a functor from a poset category to that other poset category where the objects are propositions and arrows are entailment?
04:11:55 <monqy> is that what you mean / is that "boring" / what's "not boring"
04:13:18 <shachaf> yes / maybe / i don't know
04:13:32 <shachaf> wait is it actually what i mean
04:13:38 <shachaf> maybe your version is the "not boring version"
04:21:04 -!- WeThePeople has joined.
04:23:44 -!- WeThePeople has quit (Read error: Connection reset by peer).
04:31:24 -!- augur has joined.
04:48:30 <shachaf> `? monoids
04:48:34 <HackEgo> Monoids are the easy version of categories.
04:48:39 <shachaf> `? monoid
04:48:42 <HackEgo> Monoids are just categories with a single object.
04:53:23 <oerjan> elliott: Made a Shove spec
04:54:57 <shachaf> monqy: when people talk about covariance in subtyping what functor are they talking about
05:03:29 <monqy> hi im back
05:04:33 <monqy> shachaf: well you have your poset category of types right? and your * -> * 'types' are functors on it right?
05:04:45 <monqy> [is it obvious yet]
05:05:54 <shachaf> monqy: what about when you talk about the "liskov substitution thing"
05:05:59 <shachaf> is that related
05:06:08 <shachaf> what's the second category in that case
05:07:08 <shachaf> (that was the thing i meant actually?? but maybe it's not related at all)
05:08:42 <monqy> what specifically do you mean by the substitution principle since i dont talk about it
05:08:50 <shachaf> i don t know
05:08:53 <monqy> ok
05:08:58 <elliott> he didn't say principle monqy
05:09:17 <monqy> liskov substitution thing aka liskov substitution principle
05:09:26 <shachaf> Let q(x) be a property provable about objects x of type T. Then q(y) should be provable for objects y of type S where S is a subtype of T.
05:10:15 <shachaf> hows that!!@
05:10:45 <monqy> well, so long as you're on the wikipedia article, read the first sentence of the second paragraph in the Principle section
05:11:09 <monqy> ive only studied type-theoretic subtyping, not behavioral subtyping
05:11:50 <shachaf> ok but i'm asking about both.......
05:12:13 <monqy> ????????????
05:12:21 <monqy> what's your question
05:12:24 <shachaf> i'm just trying to understand lenses
05:12:34 <shachaf> which seem to me obviously related to "all this"
05:12:37 <elliott> 05:09:26 <shachaf> Let q(x) be a property provable about objects x of type T. Then q(y) should be provable for objects y of type S where S is a subtype of T.
05:12:42 <elliott> let q(x) = x is of type T
05:12:45 <elliott> ÷)
05:13:45 <shachaf> elliott: that's exactly my point
05:13:49 <shachaf> we have to restrict q
05:14:01 <shachaf> the restriction???? Unlensy q =>
05:14:12 <shachaf> elliott: (also stop stealing my smileys??)
05:15:35 <elliott> ÷(
05:15:47 <monqy> well it'd be easier for me to answer your question if you knew what you're asking / asked it in a manner that makes sense or otherwise is answerable
05:16:49 <shachaf> monqy: well doesn't this look related to lenses
05:17:09 <shachaf> SimpleUnlensyThing s a = foralll p. Blah p => p s -> p a
05:17:19 <elliott> foralll
05:17:45 <shachaf> obviously "any property" doesn't work for the lsp thing
05:17:52 <shachaf> you need to restrict the properties
05:18:00 <shachaf> but what kinds of properties do you restrict them to?
05:19:14 <shachaf> every property that satisfies: (a `R` b) -> (P(a) `R'` P(b)), probably?? or something
05:19:34 <monqy> ok
05:19:34 <shachaf> and also any property that satisfies P(a) `R'` P((a,b))??
05:19:34 <elliott> i dont think thats true
05:19:37 <shachaf> i don't know
05:19:41 <shachaf> i'm making things up a bit
05:19:44 <monqy> can u prove it
05:20:04 <shachaf> prove what
05:20:17 <monqy> idk whatever you're doing
05:20:32 <shachaf> not before i figure out "what it is i'm actually doing.."
05:20:40 <monqy> oops
05:21:05 <shachaf> uh oh
05:21:14 <shachaf> monqy: anyway do you see "what im getting" at
05:22:47 <tswett> Man, Finnish has such excellent words.
05:22:49 <tswett> "kansalaisaloitetta"
05:23:19 -!- Frooxius has quit (Ping timeout: 260 seconds).
05:24:15 <monqy> shachaf: i guess so?
05:24:27 <monqy> i have no idea what you want p to satisfy though
05:24:28 <shachaf> monqy: well im glad one of us does
05:25:49 <elliott> how about have P satisfy "if a is a subtype of b then p(b) -> p(a)"
05:25:50 <elliott> hope this a helps
05:26:57 <shachaf> the joke is that elliott said "hope this a helps" but wasn't actually a helpful
05:27:04 <monqy> yes
05:27:18 <kmc> tswett: what does it mean
05:27:43 <elliott> shachaf: you should ask edwardk about this. he'd say it's completely obvious and he knew it all along
05:28:11 <shachaf> elliott: edwardk told me to ask in ##logic ÷(
05:28:45 <tswett> kmc: according to Google Translate, it means "citizens' initiative".
05:30:31 <tswett> It also lacks some good words, like "talloikatsa".
05:33:11 <monqy> shachaf: did you ask in ##logic
05:33:40 <shachaf> monqy: no
05:33:45 <monqy> woops
05:34:11 <shachaf> monqy: have you ever seen ##logic
05:34:20 <shachaf> i think edwardk was just trying to "get rid of me"
05:34:30 <monqy> I've never seen ##logic
05:34:31 <monqy> should I ?
05:34:38 <monqy> shachaf: have you ever seen ##logic
05:34:57 <shachaf> ,yes
05:35:46 <monqy> does that mean I should or that you have......or both
05:36:40 <shachaf> it means i have
05:37:00 <monqy> is it good
05:37:13 <shachaf> ask copumpkin
05:58:23 <tswett> In the year 2000, there were 455 people in the United States with the last name Evilsizer.
06:04:10 <shachaf> monqy: wow ##c is awful
06:04:17 <monqy> i've never been there
06:04:20 <monqy> is it any good
06:04:31 <shachaf> yes
06:04:32 <shachaf> wait no
06:04:39 <shachaf> no, it's awful
06:06:20 <Sgeo> I can't get paid for thinking about and designing programming languages, can I?
06:06:29 <Sgeo> If I went to get higher education in CS or something
06:06:57 <elliott> ask ais523
06:07:51 <shachaf> have you ever thought about and designed programming languages or just obsessed over them
06:07:55 -!- david_werecat has quit (Ping timeout: 256 seconds).
06:08:04 * shachaf hasn't :'(
06:28:41 <pikhq> monqy: It makes me look like someone who doesn't even know what "pedantic" means.
06:30:21 <Sgeo> Hum. I got an email with a job descirption, but it wasn't sent to my more "professional looking" email address
06:30:48 <kmc> shachaf: it's interesting the different security properties of block cipher modes
06:30:58 <kmc> like, IV reuse is bad for CBC, but it's a lot worse for CTR
06:31:02 <monqy> Sgeo: what's the difference
06:32:25 <shachaf> kmc: How do you do disk encryption with CTR?
06:32:25 <Sgeo> The difference is I don't know how they got my personal email
06:32:38 <monqy> maybe you gave it to them
06:32:49 <monqy> alt. they did a "background search" on you
06:32:50 <Sgeo> Although I did sign up on at least one site with it, but I don't remember which one
06:33:01 <shachaf> kmc: With CBC one thing people do is compute an IV per disk sector and just reuse it, or something along those lines.
06:33:15 <Sgeo> And I do want to confirm that this job posting exists somewhere on the Internet other than as an email
06:33:29 <monqy> ok
06:35:16 <kmc> shachaf: you mean like ESSIV?
06:35:38 <shachaf> Yes.
06:35:51 <shachaf> But that's pretty awful with CTR.
06:36:00 <kmc> right
06:36:14 <shachaf> (And with any stream cipher in that style.)
06:36:38 <shachaf> (CTR is a bit silly because all it needs is a hash function, not a block cipher.)
06:36:55 <shachaf> (But this is a case where it's not obvious how to get away with just a hash function?)
06:41:51 <kmc> you're saying it's not necessarily secure to make a stream cipher from a cryptographic hash?
06:42:34 <zzo38> "The paleontological record shows the expected small step by step changes that we expect from Darwin's evolutionary theory of the survival of the fittest. In addition, however, the record shows large changes, jumps or gaps in the record that Darwin cannot explain. This has been called spontaneous evolution. Aren't these phenomena proof that the creationists know of what they speak? That consciousness (i.e. God, if you prefer that word) had a role h
06:42:42 <zzo38> I think there are many possibilities and that is not the only one.
06:43:29 <zzo38> Conscious evolution, theistic evolution, are some, but there are others, such as, perhaps the records have not been found yet, perhaps they have been destroyed, etc. There may be more possibilities, in addition.
06:45:13 <kmc> i guess one difference is that in the stream cipher, you care if even one bit of the keystream is predictable
06:45:41 <kmc> whereas for hashing you generally care about full collisions
06:46:02 <shachaf> No, I'm saying it's not obvious how to do disk encryption with a hash, even if that hash is suitable for CTR.
06:46:06 <kmc> *nod*
06:46:29 <zzo38> Yes in a stream cipher is insecure if one but if the keystream is predictable. However you might be able to mix it up a bit somehow?
06:47:11 <shachaf> sha1 etc. aren't designed for CTR-style use, so I wouldn't use them for that.
06:47:17 <kmc> right
06:47:19 <shachaf> salsa20 is, for example.
06:48:19 <kmc> *nod*
06:51:04 <shachaf> monqy: do you know how "free structures work"
06:51:21 <monqy> what do you mean by free structure
06:51:27 <monqy> like in general or
06:51:38 <shachaf> like in general
06:51:45 <shachaf> left adjoint to a forgetful functor "and all that"
06:52:42 <monqy> i'm not familiar with them at that level of generality but say "just one level more specific than that"
06:53:10 <shachaf> what level are you familiar with them
06:53:28 <shachaf> like can you explain how you would come up with "free monads and cofree comonads and stuff"
06:54:14 <zzo38> There is the 5-bit encoding used in the Bacon cipher, but I-J is same and U-V is same, but then "Note: A second version of Bacon's cipher uses a unique code for each letter. In other words, I and J each has its own pattern."; however, maybe you could use Baudot coding with Bacon's cipher, instead.
06:59:30 <monqy> shachaf: i'm honestly not familiar enough with category-theoretical monads to explain free monads. =(
06:59:49 <shachaf> =(
06:59:54 <shachaf> can you explain a different free things
06:59:58 <shachaf> like free monoids
07:02:07 <monqy> ok, you know the definition of free objects in terms of their universal property right? that's how i know them.
07:02:42 <shachaf> no
07:03:16 <shachaf> i don't know what a universal property is :'(
07:03:23 <shachaf> maybe i should read that first..
07:04:00 <monqy> ok do you know about "comma category" and "initial objects"
07:04:16 <oerjan> free monoids aka "strings on an alphabet"
07:04:28 <oerjan> or lists
07:04:37 <monqy> yes they're easy
07:05:08 <shachaf> yes they are
07:05:32 <shachaf> i don't know about "comma category" and i sort of know about "initial object??"
07:05:39 <shachaf> initial object isn't very complicated is it
07:05:44 <monqy> initial object is easy
07:05:46 <monqy> comma category is easy too
07:05:48 <oerjan> for a variety like monoids, a free object is one where everything is an expression made out of the generators, and _no_ equations are true unless they hold for the generators replaced with arbitrary variables
07:05:59 <oerjan> (in the variety)
07:07:39 <monqy> shachaf: should i explain "comma category"
07:07:57 <shachaf> monqy: sure
07:08:14 <oerjan> that is, if Exp1(x,y,z) = Exp2(x,y,z) isn't true for _all_ monoids and monoid elements x,y,z; then it is not true when x,y,z are the generators of a free monoid.
07:08:42 <oerjan> s/monoid/any variety of algebras you like/, e.g. groups or rings
07:08:52 <monqy> actually i guess theres a specific version of "comma category" thats useful here
07:09:00 <monqy> but i gotta find out what it's called
07:09:08 <shachaf> semicolon category
07:09:53 -!- oerjan has quit (Quit: Maybe Sleep).
07:10:33 <shachaf> thoerjan
07:10:38 <shachaf> areyoureadingthisoerjan
07:17:57 -!- FreeFull has quit (Quit: 364717769364).
07:18:15 <shachaf> monqy: are you still explaining comma categories
07:18:20 <shachaf> or should i read about them instead
07:18:23 <monqy> no but im explaining something
07:18:25 <shachaf> if so what's the name of that other thing
07:18:59 <shachaf> ok
07:19:21 <shachaf> monqy: is elliott making fun of me in /msg right now :'(
07:20:11 <elliott> i was making fun of people in ##crawl
07:20:24 <shachaf> i like how that's not a denial
07:21:06 <monqy> anyway uh specific category we're talking about for free objects is you pick some set let's call it S of "generators" and you say an object X in your category C is "free" if you have some injection i from S to X such that if you've got any other object Y in your category with some j : S -> Y then there's a unique C-morphism f : X -> Y such that j = f . i
07:21:19 <monqy> that's "really getting specific" about it
07:22:27 <monqy> if you want to use general terms in the way you state things you state it as the initial object in a certain category
07:24:51 <monqy> specifically it's the category where the objects are S -> thingy where thingy's a C-object, and the morphisms are C-morphisms such that the diagram commutes
07:25:09 <monqy> and then you can get more general than that if you want to but that's about as generally as i've learned it/am really comfortable with
07:25:24 -!- azaq23 has joined.
07:25:35 -!- azaq23 has quit (Max SendQ exceeded).
07:25:41 <monqy> and stating it in terms of initial objects gives you nice stuff like uniqueness "for free"
07:26:00 -!- azaq23 has joined.
07:26:05 <monqy> anyway uh
07:26:08 -!- azaq23 has quit (Max SendQ exceeded).
07:26:10 <monqy> does that answer your question shachaf
07:26:31 -!- azaq23 has joined.
07:27:17 <monqy> the depth of how i know free objects are "constructed" is you eyeball it, use some intuition about "ok what's the most general 'free-est' thing that still has this structure" and then prove it satisfies that universal property
07:27:36 <monqy> and if you think about what morphisms "do" at an "intuitive level" then it makes sense
07:27:55 <monqy> like exactly what sort of structure they preserve and how they preserve it and so on
07:29:15 <shachaf> not sure if it answers my question ill have to think about it
07:29:23 <monqy> (what was your question)
07:29:41 <shachaf> i think part of my question involved "adjunctions and stuff"
07:30:01 <shachaf> but you probably won't talk about adjunctions because of the "galois connection"
07:30:05 <shachaf> (thats a kind of pun btw)
07:30:48 <shachaf> anyway i was trying to understand the whole "free functor is left adjoint to a forgetful functor thing??"
07:31:28 <shachaf> but these things are good and related to that
07:33:30 <monqy> well if you take a step out of my comfort zone you end up throwing a faithful functor over the stuff in C, and you call it the "free functor" if you look at its properties it turns out to be left ajoint to the forgetful functor???
07:33:40 <monqy> - wikipedia
07:33:44 <monqy> but i can't really explain that stuff
07:36:11 <monqy> maybe i'll be able to explain it once i read ``categories for the working mathematician''!!
07:36:25 <shachaf> i heard you'll "know everything" once you read that
07:36:39 <monqy> that sounds dangerous
07:45:06 -!- DHeadshot has quit (Ping timeout: 264 seconds).
08:00:49 -!- epicmonkey has joined.
08:08:30 <Sgeo> I should probably keep track of every company I send a resume to
08:08:34 <Sgeo> Rather than sending and forgetting
08:08:38 <Sgeo> Which is what I have been doing
08:10:15 <monqy> good idea
08:14:02 <Sgeo> Well, one of the sites I use does keep track for me :)
08:14:13 <Sgeo> I think the other two sites do too, but haven't really checked
08:17:00 -!- oklopol has joined.
08:17:21 <oklopol> i got the impression that you were not particularly interested, but in any case the answer was "in treatment", apparently
08:17:35 <oklopol> (the theme song i asked about)
08:23:33 <Sgeo> `echo "echo rsum" > bin/resume
08:23:36 <HackEgo> ​"echo rsum" > bin/resume
08:23:40 <Sgeo> ?
08:23:41 <Sgeo> Oh
08:23:46 <Sgeo> `run echo "echo rsum" > bin/resume
08:23:49 <HackEgo> No output.
08:23:58 <Sgeo> `chmod a+x bin/resume
08:23:59 <HackEgo> chmod: missing operand after `a+x bin/resume' \ Try `chmod --help' for more information.
08:24:06 <Sgeo> `run chmod a+x bin/resume
08:24:08 <HackEgo> No output.
08:24:10 <Sgeo> `resume
08:24:11 <HackEgo> rsum
08:24:16 <Sgeo> Score one for laziness
08:44:24 -!- heroux has quit (Ping timeout: 252 seconds).
08:45:47 -!- oklofok has joined.
08:48:42 <Sgeo> help if I say "tomorrow would be good" (which I did, which was dumb), are they likely to call me tomorrow and state a time?
08:49:18 <Sgeo> That is, am I going to be expected to find out when the interview is on the day of the interview?
08:49:23 <Sgeo> I don't think I can handle that
08:53:00 <oklofok> you mean call them?
08:53:39 <Sgeo> I mean have them call me and tell me that the interview is the same day that they're calling me to tell me what time it will be
08:53:46 <Sgeo> I haven't even confirmed a date
08:54:01 <Sgeo> So I'm not at all ready to go tomorrow, not even sure how awake I'll be
08:54:13 <monqy> but you said tomorrow would be good
08:54:38 <Sgeo> Yes, I shouldn't have said that. But I was anticipating that they'd call back if they did in fact want to schedule it for tomorrow
08:54:55 <Sgeo> As in, I though they'd call back before tomorrow
08:55:26 <shachaf> monqy: should i prefer yoneda or coyoneda
08:57:29 <zzo38> I think it depend what you are making.
08:58:08 <monqy> shachaf: idk
08:58:41 <shachaf> monqy: they both "sort of do the same thing when you" give them a functor right
08:59:09 <monqy> i dont know much about the yoneda lemma "wooooops"
08:59:22 <shachaf> monqy: idont mean the lemma i just mean the haskell types.
09:03:54 <Sgeo> Well, I'll set some alarms, try to be awake in the morning
09:03:56 <Sgeo> Just in case
09:06:02 <monqy> shachaf: idk i havent studied them much at all?? my only real "experience" with them is that one time you asked me about how yoneda looks like partially applied >>= and coyoneda like =>>, or something like that
09:06:56 <shachaf> monqy: well theyre' "pretty simple"??
09:07:01 <monqy> yes
09:07:10 <shachaf> so which one should i use
09:07:22 <shachaf> monqy: btw youre thinking of codensity and density
09:07:25 <monqy> oh
09:07:26 <monqy> right
09:07:29 <monqy> those
09:07:38 <monqy> i get things i dont know anything about confused sometimes
09:07:39 <shachaf> yoneda is "like a simpler version of those"
09:08:09 <monqy> uhh just go with yoneda and if you feel like you should have used coyoneda go with that?
09:08:48 <monqy> for the reason that existentials are sorta ehh
09:09:05 <monqy> "silly taste things"
09:09:06 <shachaf> but coyoneda seems "more obvious to me"
09:09:09 <monqy> "i know nothing about what i'm saying"
09:09:12 <monqy> ok then use coyoneda
09:09:13 <shachaf> its not cpsed
09:09:16 <monqy> ok then use coyoneda
09:09:17 <shachaf> but maybe yoneda is better??
09:09:20 <monqy> ok then use yoneda
09:09:27 <monqy> alt. ok then ask someone who knows
09:09:33 <shachaf> also coyoneda can be meaningful for things that arne't functors
09:09:40 <shachaf> but im not sure what yoneda means for those??
09:09:45 <monqy> ok
09:10:01 <shachaf> monqy: i thouhtgt you knew everything
09:10:10 <shachaf> don't shatter my illusion
09:10:10 <monqy> have you bothered edwardk about this yet he'd probably know 10000% more than me
09:10:13 <shachaf> just making things up
09:10:18 <shachaf> s/ing/e/
09:12:29 <shachaf> monqy: thats' a lot of %
09:12:35 <ion> how do I emulate morphisms in Haskell? I wanna implement category theory programming in Haskell :D so I guess I should learn what coyoneda is first
09:13:06 <monqy> yes
09:13:21 <shachaf> ion: do you know what coyoneda is
09:13:23 <shachaf> "its simple"
09:14:08 <ion> I have looked up its definition but i’m not sure of its implications and use.
09:14:59 <shachaf> Let's say you have a big tree which is a function.
09:15:11 <shachaf> So you know that fmap (+1) . fmap (*2) = fmap ((+1).(*2))
09:15:49 <shachaf> But you might not want to generate all an intermediate tree there.
09:16:06 <shachaf> "CoYoneda Tree" keeps a tree, and a function to be mapped over it.
09:16:14 <ion> Wait, i didn’t get the “tree which is a function” part.
09:16:27 <shachaf> Er.
09:16:28 <monqy> you have a Tree which is a functor
09:16:31 <shachaf> s/function/functor/
09:16:32 <ion> ah
09:16:44 <shachaf> "my fingers have been cursed by not being monqy"
09:16:57 <ion> or beaqy
09:17:23 <monqy> the Divine Fingers of Beaqy
09:17:52 <shachaf> So CoYoneda Tree a = (Tree x, x -> a), for some x.
09:18:00 <ion> aye
09:18:06 <shachaf> When you fmap over it, all you're doing is composing onto the function.
09:18:18 <shachaf> Then when you have one big composed function, you can apply it all at once.
09:18:19 <ion> right
09:18:42 <shachaf> That's pretty much it.
09:18:45 <ion> alright
09:19:04 <shachaf> Yoneda is the same thing except the opposite.
09:19:08 <monqy> :0
09:20:16 <shachaf> ion: And Density is the same thing except with a comonad!
09:21:16 <ion> Yoneda Tree a = (a -> b) -> Tree b… so like a partially applied fmap?
09:21:35 <shachaf> Right.
09:21:40 <shachaf> (With a forall b. there.)
09:21:43 <ion> yeah
09:21:59 <shachaf> So you can turn Tree a into Yoneda Tree a by applying fmap.
09:22:05 <shachaf> And you can turn it back by applying it to id.
09:22:20 <shachaf> Codensity is the same thing as Yoneda except with a monad!
09:22:43 <monqy> and coyoneda is the same thing except the opposite
09:23:20 <shachaf> does "co" mean opposite in japanese
09:23:45 <shachaf> monqy: i saw you twitter account how come you don't post no more?
09:23:56 <monqy>
09:24:02 <monqy> fforget you saw that
09:24:11 <monqy> it's
09:24:14 <shachaf> but i'm curious about what happened to banana time
09:25:23 <monqy> i should have deleted it ages ago i don't use it and it's probably embarrassing
09:25:40 <shachaf> no its good
09:25:44 <shachaf> "rly good"
09:25:51 <shachaf> i would follow you
09:26:00 <shachaf> except i don't follow peopoel
09:26:41 <ion> Ok, for my reference:
09:26:43 <ion> CoYoneda f a = forall b. (f b, b -> a)
09:26:46 <ion> Density k a = forall b. (k b, k b -> a)
09:26:48 <ion> Yoneda f a = forall b. (a -> b) -> f b
09:26:50 <ion> Codensity m a = forall b. (a -> m b) -> m b
09:26:54 <ion> Whoops, got some extra whitespace in there.
09:27:14 <ion> Terminals are so intelligent.
09:27:16 <shachaf> also you mixed up forall and exists....................
09:27:27 <shachaf> but other than that, sure
09:27:34 <ion> Ah, wasn’t paying attention to that part.
09:27:43 <shachaf> ion: You might as well specify Ran and Kan instead.
09:27:52 <shachaf> All of these are a special case of those.
09:27:58 <ion> ok
09:28:04 -!- azaq23 has quit (Quit: Leaving.).
09:28:39 <shachaf> Er.
09:28:41 <shachaf> Ran and Lan
09:31:20 <ion> Is this right? http://heh.fi/tmp/kan
09:31:41 <shachaf> Looks right.
09:32:05 <ion> Are there other noteworthy aliases to Lan and Ran?
09:32:24 <shachaf> In Categories for the Working Mathematician Saunders Mac Lane titled a section "All Concepts Are Kan Extensions", and went on to write that
09:32:27 <shachaf> The notion of Kan extensions subsumes all the other fundamental concepts of category theory.
09:32:34 <shachaf> So apparently yes?
09:32:38 <ion> heh, ok
09:32:45 <shachaf> monqy is going to be able to tell you "a lot about them apparently"
09:40:14 -!- DHeadshot has joined.
10:07:55 -!- Phantom_Hoover has joined.
10:08:35 <Sgeo> My dad does want me to continue with education, but I want some financial freedome
10:08:37 <Sgeo> freedom
10:08:52 <Sgeo> I don't like being tied to whatever money my dad gives me
10:09:05 <Phantom_Hoover> humens must fight for financial freedome!
10:10:09 <monqy> fight your dad
10:14:19 <Sgeo> Is it really such a terrible idea to try to get a Masters while having a full-time job?
10:15:11 <monqy> can't you get money doing grad student stuff
10:15:26 <Sgeo> ?
10:15:49 <monqy> research assistant money (grant money), teaching assitant money
10:16:21 <Sgeo> hmm
10:16:38 <shachaf> monqy: should i go be a student
10:16:40 <monqy> gee i'm technically an undergrad and i get grant money
10:16:46 -!- Phantom_Hoover has quit (Ping timeout: 244 seconds).
10:16:49 <monqy> shachaf: idk what's your education
10:16:57 <shachaf> none :'(
10:17:12 <monqy> it's a tough question
10:17:52 -!- Phantom_Hoover has joined.
10:18:16 <Sgeo> How difficult is it to become a TA?
10:18:34 <monqy> idk i'm not a ta but some of the people i work with are ta,s
10:18:52 <shachaf> total annihilation?
10:18:53 <monqy> probably you have to take a ta seminar, know some stuff about the field, and preferably know the professor
10:19:41 <monqy> shachaf: yes
10:19:57 <Sgeo> I only really know Farmingdale professors, although I guess some could be professors elsewhere too
10:20:14 <monqy> well you get to know the professors once you're in grad school don't you
10:20:16 <shachaf> monqy: what makes you 'technically" an undergrad
10:20:23 <monqy> shachaf: being an undergrad
10:20:32 <shachaf> oh
10:20:44 <shachaf> do you recommend it
10:20:47 <monqy> but for "various intents and purposes" i'm a grad student
10:21:01 <shachaf> oh no
10:21:04 <shachaf> which intents
10:21:39 <monqy> i mostly take grad courses, work in a research lab, &c
10:21:46 <shachaf> what kind of research
10:22:24 -!- Phantom_Hoover has quit (Ping timeout: 264 seconds).
10:22:52 -!- Phantom_Hoover has joined.
10:23:07 <monqy> it's "the" programming languages lab on campus but its projects i'm familiar with are mostly geared towards abstract interpretation?
10:23:17 <Sgeo> Also it seems too late for me to go into grad school at least unless I take a lot of time off of school because I missed a variety of deadlines
10:24:10 <monqy> im pretty sad about how my school tends not to offer interesting things but i guess it's the same for every school & i can usually learn them myself anyway
10:24:24 <shachaf> which school
10:24:44 <shachaf> is it one of those southern california schools
10:24:55 <monqy> please don't stalk me that's not nice
10:25:13 <shachaf> im "just curious"
10:26:17 -!- Phantom__Hoover has joined.
10:26:28 <monqy> shachaf: anyway idk if i'd "recommend" an undergraduate education...ime you'd learn bits and pieces about stuff but unless you go out of your way it's pretty lacking
10:26:45 <shachaf> would you "recommend" an overgraduate education
10:26:50 <monqy> hm
10:26:57 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
10:27:40 <monqy> perhaps? i'd also recommend some things about undergraduate education but as a whole idk if it's worth it
10:28:33 <shachaf> which things
10:30:00 <monqy> the bulk of what i actually learn ends up being split between math stuff and research stuff. there's also cs courses but they mostly end up being more "general education" imo than really things that help me, and not in such a helpful degree as the math? idk
10:30:45 <monqy> research stuff being split between experience in a lab environment and all the stuff you end up learning by way of teaching yourself or interactions with other lab members &c
10:32:17 <shachaf> hm
10:32:49 <monqy> not that the general education is bad. it occasionally provides some insights etc which is nice and all
10:33:38 <monqy> and certainly if you find an interesting or helpful class that's excellent
10:34:56 <monqy> but much of it ends up being neither interesting or helpful, just taking classes you don't learn anything from because you have to take them to get your degree
10:35:48 <shachaf> are degrees good to get
10:36:52 <monqy> idk how much a bachelors degree is worth
10:37:34 <monqy> probably it'd help you get some programming jobs or whatever? i'm more interested in jobs that i imagine would prefer a phd
10:38:04 <shachaf> like what
10:39:10 <monqy> i don't really know. something with theorywork, preferably doing some "new and neat" researchy stuff somewhere within programming languages
10:40:10 <fizzie> Put up a "will do new and neat stuff with programming languages for food" sign up.
10:40:16 <fizzie> Double-up.
10:44:06 <shachaf> how about inventing a programming language even better than ada
10:44:14 <shachaf> maybe that's too ambitious
10:44:17 <shachaf> Sgeo would know
10:45:22 <monqy> sgeo must be an ada guru by now right
10:46:17 <shachaf> i hope so
10:46:54 <Phantom__Hoover> shachaf why are you so weird these days
10:47:00 <shachaf> Phantom__Hoover: ?
10:47:14 <Phantom__Hoover> monoids, monqy, ada....
10:47:18 <shachaf> monqy: in a language with subtyping can you have a haskell-style functor which isn't covariant?
10:47:32 <shachaf> covariant in the subtyping sense
10:47:53 <monqy> idk
10:48:59 <shachaf> what if you have something like a gadt thing
10:49:15 <monqy> well, pathological case is your subtyping relation is just type equality, so any haskell-style functor would be invariant because of that pathology
10:49:38 <shachaf> data Sub a b where Sub :: (a <: b) => Sub a b
10:49:52 <shachaf> oops maybe i meant the other way around?
10:50:24 <monqy> i think that's right? idk what you're trying to do with it but
10:50:51 <shachaf> well is Sub a b <: Sub a c if b <: c or something
10:50:53 -!- c00kiemon5ter has joined.
10:51:32 <monqy> idk
10:51:49 <monqy> for one, maybe you don't have subtyping on gadts
10:52:04 <shachaf> im not completely sure what it would mean
10:53:18 <monqy> as in how to define subtyping on gadts?
10:53:35 <shachaf> for instance
11:02:07 <monqy> ?
11:02:19 <shachaf> yes
11:02:37 <monqy> ???
11:02:57 <shachaf> oh no
11:03:26 <shachaf> monqy: if all you do is gradstu dent things why are you "technically" not one
11:04:47 <monqy> a variety of reasons
11:04:58 <shachaf> wow thats alot of reasons
11:06:25 <monqy> ye
11:19:33 -!- Phantom__Hoover has quit (Read error: Operation timed out).
11:20:15 -!- Phantom_Hoover has joined.
11:22:10 -!- Phantom__Hoover has joined.
11:22:43 -!- Phantom___Hoover has joined.
11:23:24 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
11:24:30 -!- Phantom___Hoover has quit (Read error: Operation timed out).
11:25:14 -!- Phantom___Hoover has joined.
11:26:00 -!- Phantom_Hoover has quit (Ping timeout: 244 seconds).
11:27:05 -!- Phantom__Hoover has quit (Read error: Connection reset by peer).
11:28:30 -!- Phantom__Hoover has joined.
11:30:17 -!- Phantom__Hoover has quit (Read error: Operation timed out).
11:30:36 -!- Phantom___Hoover has quit (Ping timeout: 276 seconds).
11:37:31 -!- impomatic has joined.
11:42:11 -!- Phantom__Hoover has joined.
11:46:28 -!- Phantom__Hoover has quit (Ping timeout: 248 seconds).
11:48:26 -!- Phantom__Hoover has joined.
11:51:32 <Sgeo> "Strong knowledge of MS Word, Excel, Access, PowerPoint Outlook and Internet."
11:52:08 <monqy> sounds like a job ?
11:52:32 <Sgeo> That's what someone has on their LinkedIn profile
11:53:03 <Sgeo> I am beginning to loathe the corporate world
11:57:31 <Sgeo> Just remembered a place I heard of long ago
11:57:36 <Sgeo> I really like this scale:
11:57:38 <Sgeo> "None: No knowledge, awareness, or experience.
11:57:38 <Sgeo> Beginner: Have done some reading or tutorials. No use in production.
11:57:38 <Sgeo> Intermediate: Some production experience. Need to rely on outside references.
11:57:38 <Sgeo> Expert: Significant experience, knowledge, and fluency."
11:58:47 <Sgeo> Hmm, according to that scale, I would have Intermediate PHP experience. I don't know how to feel about that.
11:59:08 <shachaf> there should be a channel where you get Sgeo commentary on things
11:59:20 <shachaf> you can just add any topic to the queue and wait
11:59:21 <monqy> is the joke that there already is
12:01:06 <oklofok> the channel where Sgeo comments on things and monqy teaches category theory.
12:01:20 <shachaf> monqy: oh you teach category theory now?
12:01:42 <monqy> i was just answering shachaf's question...i dont actually know category theory
12:02:11 <Sgeo> // guess I really should get to commenting on stuff. Here's a good comment.
12:02:19 <oklofok> monqy: the joke is that happens every day
12:02:27 -!- Phantom__Hoover has quit (Ping timeout: 240 seconds).
12:02:32 <monqy>
12:02:34 <shachaf> oklofok: what happens every day
12:02:49 <Sgeo> // *puts a comment on shachaf*
12:03:32 <oklofok> shachaf: that monqy is just answering shachaf's question...he doesnt actually know category theory
12:03:56 <shachaf> oklofok: imo monqy knows almost everything
12:04:00 <oklofok> yes
12:04:16 <oklofok> we all know he's just playing hard to get
12:04:28 <oklofok> or something
12:06:51 -!- Phantom__Hoover has joined.
12:07:47 <shachaf> Sgeo: how's ada
12:08:07 <shachaf> Sgeo: have you learned dylan yet
12:08:13 <Sgeo> I think she's been dead for a while
12:08:39 <shachaf> dylan is still alive
12:08:45 <Sgeo> And I liked Dylan last I looked at it, but it's too impossible to actually get running for my taste
12:08:46 <shachaf> also the people in #dylan keep asking for help
12:08:55 <Sgeo> Sure they are
12:08:56 <shachaf> they want You for dylan army
12:09:02 <shachaf> ?
12:09:24 <shachaf> One of the people who works on the compiler kept bugging me to join the channel and help them.
12:09:30 <shachaf> I did one of those things...
12:09:41 <shachaf> Seriously, there's a lot of work and they need people.
12:09:57 <shachaf> They have a fancy compiler, they have all the macros you could ever want.
12:13:54 <Sgeo> I know about the Dylan language, and if it were easy to get Dylan to work on my system, I would love it
12:14:12 <shachaf> You should help with that!
12:18:01 <Sgeo> Bluh, Dylan uses undelimited continuations?
12:18:34 <shachaf> Why don't you talk about that in #dylan?
12:26:52 <shachaf> Sgeo: See?
12:27:00 -!- epicmonkey has quit (Ping timeout: 248 seconds).
12:27:19 <monqy> did sgeo talk about it in dylan
12:27:35 <shachaf> yes
12:28:17 <monqy> congratulations
12:28:35 <shachaf> monqy: maybe sgeo will invent a dylan ada hybrid
12:28:45 <shachaf> what plt contribution have you made to the world
12:29:00 <monqy> good question
12:29:19 <Jafet> not inventing a dylan ada hybrid
12:29:25 <shachaf> also, do i have to make these lines line up now?
12:29:44 <shachaf> well didn't y'all just spoil a good thing. hmph.
12:30:47 <Jafet> that's a silly typing constraint
12:33:26 -!- epicmonkey has joined.
12:35:13 <fizzie> What?
12:35:16 <fizzie> Ohno.
12:35:22 <fizzie> I am,
12:35:25 <fizzie> scrwd
12:35:46 <monqy> poertry
12:36:09 -!- zzo38 has quit (Remote host closed the connection).
12:36:13 <Jafet> This is why constraints are bad.
12:36:19 <fizzie> Suck.
12:36:21 <fizzie> :''-(
12:36:42 <Jafet> See what you have done, shachaf.
12:37:52 <fizzie> Now I
12:37:53 <fizzie> can't
12:37:55 <fizzie> evoke
12:37:57 <fizzie> fungo
12:38:02 <fizzie> Dang.
12:38:17 <Jafet> fungot, what do you make of this
12:38:17 <fungot> Jafet: they say that you should certainly learn about quantum mechanics. the waves to the _dark_ heavens. he committed many murders. as the shark rose, driven by the orb itself. when carried, it can cause the traveller to feel great, you make so bold to find the exit. ( salamanders, by terry pratchett)
12:38:47 <shachaf> fungot: Just tell fizzie a jokes about functors.
12:38:47 <fungot> shachaf: wolf, *wolf, *wolf cub: the consecrated ritual knife of a wand of undead turning might bring the whole course of known life from the third was taller than the others: his hair was her chief glory, but unknown animal of the giant briareus thou shalt say to the temple and changed to a succubus.
12:39:07 <Jafet> Haven't read that book, but okay
12:39:17 -!- monqy has quit (Quit: hello).
12:40:42 <shachaf> @tell monqy thanks for your help btw monqy hello
12:40:42 <lambdabot> Consider it noted.
12:41:23 <fizzie> Jafet
12:41:26 <fizzie> It do
12:41:27 <fizzie> sound
12:41:29 <fizzie> vgood
12:41:30 <fizzie> book.
12:42:37 <Jafet> Most Pratchett books are alright
12:49:24 <Phantom__Hoover> wow
12:49:45 <Phantom__Hoover> seeing fizzie type weirdly is unsettling
12:52:50 <oklofok> shachaf: "what plt contribution have you made to the world" did not line up with the previous line
12:53:09 <shachaf> hi
12:53:10 <oklofok> erm
12:53:23 <oklofok> apparently my font is not monospace when there's emphasis.
12:53:38 <shachaf> You broke the spell anyway.
12:53:48 <oklofok> ldsjfasldjf
12:54:01 <Jafet> Anyone can believe in the magic.
12:54:19 <shachaf> Hmm, this is kind of convenient.
12:54:28 <shachaf> You can scan through the screen and tell who wrote what line.
12:58:17 <Sgeo> My mouse is broken
12:58:23 <Sgeo> Has been for some time
12:58:30 <Sgeo> I try to scroll up, sometimes it scrolls down
12:59:12 <Sgeo> No comparable problem while trying to scroll down
12:59:56 <shachaf> I don't think "sometimes it scrolls down" would be a problem when trying to scroll down.
13:00:29 <Sgeo> I said "comparable", not "identical"
13:00:39 <Sgeo> It does not try to scroll up when I try to scroll down.
13:07:26 -!- augur has quit (Remote host closed the connection).
13:32:06 -!- heroux has joined.
13:55:30 -!- carado has joined.
14:11:06 -!- boily has joined.
14:16:45 <Sgeo> o.O
14:17:02 <Sgeo> I... already applied for that job opening. Why am I being emailed to tell me that it exists?
14:17:59 -!- augur has joined.
14:19:16 <Sgeo> I don't understand what I'm being asked to do with this information
14:30:26 <Sgeo> fuck fuck fuck
14:30:27 <Sgeo> http://www.ripoffreport.com/organized-crime/cybercoders/cybercoders-cyber-coders-inc-4f786.htm
14:31:59 <boily> interesting.
14:32:33 <Sgeo> Although actually, that one place that wants that interview I think was from CyberCoders
14:32:34 <Sgeo> So
14:45:28 <Sgeo> Remind me to look at this later http://code.google.com/p/pants-lang/
14:47:57 -!- david_werecat has joined.
14:49:24 <boily> took a very quick glance at https://code.google.com/p/pants-lang/source/browse/first-c%2B%2B-impl/src/assets/prelude.p
14:49:43 <boily> the syntax looks a little bit too crufty to my eyes.
14:59:00 -!- sebbu2 has joined.
15:00:20 -!- sebbu has quit (Ping timeout: 248 seconds).
15:21:24 <Sgeo> Hmm. If I invert my food schedule such that the less work intensive meal comes later in the day when I am more tired, that may help with my sleep problems if I can just stay awake for 10 more hours
15:21:35 <Sgeo> Although I am rather tired
15:39:15 -!- Arc_Koen has joined.
15:55:29 -!- Arc_Koen has quit (Quit: Arc_Koen).
16:12:41 <Sgeo> Maybe I should try to get into Erlang
16:13:51 <quintopia> Maybe you should just build damn Sgeolang already
16:15:49 <Sgeo> You know what I want? A special type of value that, whenever it's passed as an argument to something, manipulates the function call itself
16:16:01 <Sgeo> Don't really have a fleshed out idea of how that would work though
16:16:43 <Sgeo> delimited continuations might be the next best thing. Or might be far better than that.
16:21:16 -!- sirdancealot7 has quit (Ping timeout: 245 seconds).
16:35:19 -!- sirdancealot7 has joined.
17:01:14 -!- Taneb has joined.
17:03:30 <Nisstyre> Sgeo: that sounds like the reverse of a continuation
17:03:37 <Nisstyre> Sgeo: maybe "co-continuation" ?
17:11:02 <fizzie> Or just a ntinuation?
17:12:34 <Sgeo> Well, with a delimited continuation, as long as you're in a reset, there's a function you can call that affects the function call you're in, along with the entire rest of the future
17:13:10 -!- atriq has joined.
17:13:17 -!- Taneb has quit (Ping timeout: 252 seconds).
17:15:31 -!- atriq has changed nick to Taneb.
17:20:39 <Taneb> P -> P -> Q -> P?
17:34:38 <oklopol> parens?
17:35:10 <oklopol> if you have the usual ones then yes
17:35:27 <Taneb> That feels almost useless
17:35:51 <oklopol> P -> (P -> (Q -> P))?
17:35:56 <Taneb> Yeah
17:36:15 <oklopol> this looks very familiar, is it one of the three usual axioms?
17:38:09 <Taneb> It's pierce's law backwards
17:38:55 <oklopol> and is pierce's law peirce's law backwards?
17:40:00 <Taneb> No, it's peirce's law as shared by someone who needs a couple of hours' sleep
17:40:07 <oklopol> and i doubt it's completely useless, you can get P -> Q -> P from it with modus ponens
17:40:20 * Sgeo mentally does a truth table
17:40:22 <oklopol> (which is one of lukasiewicz' axioms)
17:40:30 <Sgeo> I feel bad having to surrender to truth tableism like this
17:41:13 <oklopol> "if P, then from P it follows that from Q, P follows" is true because if P, then P follows from anything.
17:42:33 <oklopol> i mean
17:42:42 <oklopol> i mean by what i said earlier i mean
17:42:49 <oklopol> say you have P
17:42:59 <oklopol> and you want to show Q -> P for some reason
17:43:33 <oklopol> then this is what lukasiewicz1 = P -> Q -> P gives you, as P, P -> Q -> P implies Q -> P
17:43:46 <oklopol> but by doing another modus ponens you can also do this with your thingie
17:44:53 <oklopol> then again from P -> Q -> P, you get (P -> Q -> P) -> P -> (P -> Q -> P) using luka1, and modus ponens says P -> Q -> P and (P -> Q -> P) -> P -> (P -> Q -> P) imply P -> (P -> Q -> P).
17:44:59 <oklopol> so up to modus ponens, yours is just luka1
17:45:34 <oklopol> in short, luka1 is really just "something that is true follows from anything"
17:45:41 <oklopol> and yours states this as well.
17:45:53 <oklopol> in an encrypted form
17:47:07 <oklopol> unless i made a mistake somewhere, it's years since i did any propositional logic
17:50:12 -!- c00kiemon5ter has quit (Ping timeout: 248 seconds).
17:52:04 -!- FreeFull has joined.
17:56:16 -!- AnotherTest has joined.
18:00:23 <AnotherTest> Hi
18:00:51 <Sgeo> Hi
18:03:58 * Sgeo ponders on what Sgeolang would look like
18:04:37 <Sgeo> Hmm, when I said in another channel that message passing implies single-dispatch, someone pointed me at Cecil.
18:04:40 <Sgeo> I should look at it
18:07:07 <Sgeo> "Cecil's object declarations do not "contain" their method, field, or even parent declarations. Instead, all these attributes of objects are declared externally, allowing clients to add methods, fields, and even parents of existing objects separately from their original definition.
18:07:07 <Sgeo> "
18:07:13 <Sgeo> uh...
18:07:21 -!- sebbu2 has quit (Ping timeout: 252 seconds).
18:09:43 -!- c00kiemon5ter has joined.
18:14:08 -!- sebbu has joined.
18:14:09 -!- sebbu has quit (Changing host).
18:14:09 -!- sebbu has joined.
18:17:40 <kmc> apparently at Oracle, any email about anything interesting is sent To: lawyers, Cc: people you actually want to talk to
18:17:47 <kmc> so that it's protected by attorney-client privilege
18:18:39 <Sgeo> "The presence of multiple dispatching relieves some of the type system's burden, since multiple dispatching supports in a type-safe manner what would be considered unsafe covariant method redefinition in a single-dispatching language."
18:18:43 <Sgeo> I have no idea what that means
18:19:00 <elliott> kmc: nice
18:19:02 <elliott> does that work?
18:19:54 <Sgeo> elliott, I am broadening my chances of finding The One language by looking at dead languages, I think
18:20:19 <elliott> okay
18:20:32 <elliott> are you like gollum
18:21:13 <Sgeo> I am like someone who needs sleep
18:21:47 <kmc> elliott: apparently
18:23:08 <kmc> the other side in a suit can call bullshit, but it would be a big deal for the court to order discovery of ostensibly privileged communications, and gives you a great avenue for an appeal
18:23:22 <kmc> so yeah, hacks
18:23:59 <Sgeo> Wait, if I say something to my lawyer and then say it to an acquaintance, for example, how is that priviledged?
18:24:21 -!- sirdancealot7 has quit (Ping timeout: 276 seconds).
18:24:26 <kmc> i think it's treated more like if you had a three-way meeting with your lawyer and an acquaintance together
18:24:35 <kmc> and the lawyer is also your acquaintance's lawyer
18:26:14 <kmc> i think it's like, you have a meeting about how to crush Google, but you frame it as ostensibly you're all asking the lawyer for legal advice on consequences of crushing Google in the following ways
18:26:36 <kmc> then if Google sues it is much harder for them to get a copy of that email
18:27:07 <kmc> (which, even if you're doing nothing illegal, and the lawsuit is unrelated, of course they will want to see that email)
18:32:52 <Phantom__Hoover> oracle's lawyers must hate checking their inboxes
18:37:23 -!- sirdancealot7 has joined.
18:44:36 -!- Nisstyre has quit (Ping timeout: 248 seconds).
18:55:26 -!- sirdancealot7 has quit (Ping timeout: 245 seconds).
18:59:46 -!- Nisstyre has joined.
19:02:52 -!- impomatic has left.
19:08:53 -!- sirdancealot7 has joined.
19:09:51 -!- DHeadshot has quit (Ping timeout: 276 seconds).
19:12:35 * boily is stuck listening to drab muzak... ♪
19:12:42 <boily> I hate being put on hold.
19:13:22 -!- DHeadshot has joined.
19:16:13 <quintopia> sux
19:22:12 <boily> so, no problem on their end, need to buy a new SIM card for my cellphone. *grmbl*
19:23:15 <boily> that makes me angry. maybe I should learn Ada to relax.
19:32:39 -!- DH____ has joined.
19:32:43 -!- DHeadshot has quit (Read error: Connection reset by peer).
19:33:00 <kmc> you should learn Sgeolang
19:33:21 -!- impomatic has joined.
19:35:22 <boily> I need to grok continuations first, then I'll sgeo.
19:37:32 <kmc> sgentinuations
19:38:12 <boily> is that when you delegate your program's state to Sgeo?
19:38:32 <boily> "here, finish that number crunching, I'm tired"?
19:39:46 <kmc> Sgeolang is the new @
19:40:58 <Phantom__Hoover> @tell elliott <kmc> Sgeolang is the new @
19:40:58 <lambdabot> Consider it noted.
19:41:41 <elliott> hi
19:41:41 <lambdabot> elliott: You have 1 new message. '/msg lambdabot @messages' to read it.
19:42:19 <Phantom__Hoover> elliott, are you going to take that
19:42:26 -!- DH____ has quit (Read error: Connection reset by peer).
19:42:33 <elliott> kmc: you suck
19:42:34 <elliott> Phantom__Hoover: hth
19:42:50 <Phantom__Hoover> good job
19:47:39 <kmc> elliott: k
19:53:51 -!- cuttlefish has joined.
20:02:24 <kmc> cuttlefish: kings of camouflage
20:02:41 <Taneb> Help I can't program in C
20:05:07 * kmc can advise
20:07:18 <boily> ~echo kmc: with my mighty cuttlefish, I can hide usefulness beneath a deceptive layer of bugs!
20:07:18 <cuttlefish> kmc: with my mighty cuttlefish, I can hide usefulness beneath a deceptive layer of bugs!
20:07:46 <kmc> ~help
20:07:46 <cuttlefish> --- Possible commands: dice, duck, echo, eval, fortune, metar, ping, yi
20:07:51 <kmc> ~help eval
20:07:51 <cuttlefish> --- Possible commands: dice, duck, echo, eval, fortune, metar, ping, yi
20:07:56 <kmc> ~eval 2+2
20:07:57 <cuttlefish> 4
20:08:05 <kmc> ~eval 2+"2"
20:08:05 <cuttlefish> Error (1): No instance for (GHC.Num.Num [GHC.Types.Char])
20:08:05 <cuttlefish> arising from a use of `GHC.Num.+'
20:08:06 <cuttlefish> Possible fix:
20:08:06 <cuttlefish> add an instance declaration for (GHC.Num.Num [GHC.Types.Char])
20:08:18 <elliott> uh oh, kmc is writing haskell again
20:08:18 <kmc> ~eval print "foo"
20:08:18 <cuttlefish> Error (1): No instance for (GHC.Show.Show (GHC.Types.IO ()))
20:08:18 <cuttlefish> arising from a use of `M1495348596825233665.show_M1495348596825233665'
20:08:18 <cuttlefish> Possible fix:
20:08:18 <cuttlefish> add an instance declaration for (GHC.Show.Show (GHC.Types.IO ()))
20:08:22 <kmc> elliott: lololololol
20:08:26 <kmc> elolololololiott
20:08:32 <elliott> that's a good name
20:08:42 <kmc> ~yi
20:08:42 <cuttlefish> Your divination: "Pervading" to "Shake"
20:08:45 <kmc> ~yi
20:08:45 <cuttlefish> Your divination: "Brightness Hiding" to "Concording People"
20:09:02 <kmc> ~ fix (1+)
20:09:02 <cuttlefish> --- Possible commands: dice, duck, echo, eval, fortune, metar, ping, yi
20:09:05 <kmc> ~eval fix (1+)
20:09:07 <cuttlefish> Error (1):
20:09:16 <kmc> ~eval fix (1:)
20:09:17 <cuttlefish> [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
20:09:31 <Taneb> ~eval let x = 1 : y; y = 0 : x in x
20:09:32 <cuttlefish> [1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
20:09:59 <elliott> ~eval fst $ fix (\(xs,ys) -> intersperse (0:xs,1:ys))
20:10:00 <cuttlefish> Error (1): Couldn't match expected type `([a0], [a1])'
20:10:00 <cuttlefish> with actual type `[([a0], [a1])] -> [([a0], [a1])]'
20:10:13 <elliott> ~eval uncurry intersperse $ fix (\(xs,ys) -> (0:xs,1:ys))
20:10:13 <cuttlefish> Error (1): No instance for (GHC.Show.Show a0)
20:10:14 <cuttlefish> arising from a use of `M1417484012806218820.show_M1417484012806218820'
20:10:14 <cuttlefish> The type variable `a0' is ambiguous
20:10:14 <cuttlefish> Possible fix: add a type signature that fixes these type variable(s)
20:10:14 <cuttlefish> Note: there are several potential instances:
20:10:14 <cuttlefish> instance GHC.Show.Show GHC.Types.Double
20:10:15 <cuttlefish> -- Defined in `base:GHC.Float'
20:10:15 <cuttlefish> instance GHC.Show.Show GHC.Types.Float
20:10:16 <cuttlefish> -- Defined in `base:GHC.Float'
20:10:16 <cuttlefish> instance (GHC.Real.Integral a, GHC.Show.Show a) =>
20:10:17 <cuttlefish> GHC.Show.Show (GHC.Real.Ratio a)
20:10:17 <elliott> lol
20:10:17 <cuttlefish> -- Defined in `base:GHC.Real'
20:10:18 <cuttlefish> ...plus 42 othersNo instance for (GHC.Num.Num [a0]) arising from a use of `e_101'
20:10:18 <cuttlefish> Possible fix: add an instance declaration for (GHC.Num.Num [a0])
20:10:32 <kmc> ~eval typeOf ()
20:10:33 <cuttlefish> ()
20:10:35 <elliott> ~eval uncurry intersperse $ fix (\ ~(xs,ys) -> (0:xs,1:ys)) :: [Int]
20:10:35 <cuttlefish> Error (1): Couldn't match type `[a0]' with `GHC.Types.Int'
20:10:35 <cuttlefish> Expected type: [GHC.Types.Int]
20:10:36 <cuttlefish> Actual type: [[a0]]
20:10:40 <elliott> omg fuck you
20:10:41 <elliott> :t intersperse
20:10:43 <lambdabot> a -> [a] -> [a]
20:10:45 <elliott> oh
20:10:47 <kmc> ~eval cast (Just "foo") :: Maybe Int
20:10:47 <cuttlefish> Nothing
20:10:48 <elliott> :t interleave
20:10:49 <lambdabot> MonadLogic m => m a -> m a -> m a
20:10:52 <elliott> ~eval uncurry interleave $ fix (\ ~(xs,ys) -> (0:xs,1:ys)) :: [Int]
20:10:53 <cuttlefish> Error (1): Not in scope: `interleave'
20:10:55 <elliott> i bet you dont even have that
20:10:59 <elliott> ugh go to hell stupid computer
20:12:23 -!- lahwran has quit (Excess Flood).
20:12:47 <boily> elliott: interleave is from what package? hoogle returns something that is not that.
20:13:09 <kmc> where was that GHC typechecker bug again
20:13:16 <kmc> that lets you write unsafeCoerce
20:13:17 <Taneb> boily, logict, iirc
20:18:12 -!- lahwran has joined.
20:18:34 <elliott> kmc: it doesn't work
20:18:42 <elliott> boily's bot is too clever
20:18:52 <boily> Taneb: indeed. just a moment, installing it ♪
20:19:31 <kmc> k
20:20:01 <boily> ~eval interleave
20:20:01 <cuttlefish> Error (1): No instance for (Control.Monad.Logic.Class.MonadLogic m0)
20:20:02 <cuttlefish> arising from a use of `e_1'
20:20:02 <cuttlefish> The type variable `m0' is ambiguous
20:20:02 <cuttlefish> Possible fix: add a type signature that fixes these type variable(s)
20:20:02 <cuttlefish> Note: there are several potential instances:
20:20:02 <cuttlefish> instance GHC.Base.Monad m =>
20:20:02 <cuttlefish> Control.Monad.Logic.Class.MonadLogic (Control.Monad.Logic.LogicT m)
20:20:03 <cuttlefish> -- Defined in `logict-0.6:Control.Monad.Logic'
20:20:03 <cuttlefish> instance Control.Monad.Logic.Class.MonadLogic m =>
20:20:04 <cuttlefish> Control.Monad.Logic.Class.MonadLogic
20:20:04 <cuttlefish> (Control.Monad.Trans.Reader.ReaderT e m)
20:20:05 <cuttlefish> -- Defined in `logict-0.6:Control.Monad.Logic.Class'
20:20:05 <cuttlefish> instance Control.Monad.Logic.Class.MonadLogic m =>
20:20:06 <cuttlefish> Control.Monad.Logic.Class.MonadLogic
20:20:14 <boily> Taneb: done ♪
20:20:16 <kmc> ) fungot
20:20:16 <fungot> kmc: let's face it: to have invented, among other things, the lord be thankit. ( lorna doone, by fritz leiber) to his size, huge chunk of meat: some hae meat, and this is the son of brave king uther pendragon and queen igraine..."
20:20:17 <jconn> kmc: |value error: fungot
20:20:24 <kmc> ok that got fixed :)
20:20:26 <boily> (that ♪ represents a microwave ding.)
20:20:34 <Taneb> :)
20:20:47 <kmc> the display on the microwave at my house says "GOOD" when it's done cooking
20:21:07 <Taneb> ~eval interleave "magic" "science"
20:21:08 <cuttlefish> "msacgiiecnce"
20:22:18 <Taneb> ~eval ["one", "two", "three", "four"] >>- id
20:22:18 <cuttlefish> "otntewfohoruere"
20:23:29 <boily> ) "chicken"
20:23:29 <jconn> boily: |syntax error
20:23:30 <jconn> boily: | "chicken"
20:25:02 <elliott> ~eval uncurry interleave $ fix (\ ~(xs,ys) -> (0:xs,1:ys)) :: [Int]
20:25:02 <cuttlefish> [0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
20:25:04 <elliott> : D
20:25:41 <boily> ~eval mconcat $ repeat [1, 0]
20:25:41 <cuttlefish> [1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
20:26:01 <Taneb> ~eval cycle [1,0]
20:26:02 <cuttlefish> [1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
20:26:04 <elliott> ~eval let divide ~(x:y:xys) = let (xs,ys) = divide xys in (x:xs,y:ys) in fix (\xs -> let (xs, ys) = divide xs in interleave (0:xs) (1:ys))
20:26:07 <cuttlefish> Error (1):
20:26:09 <elliott> :(
20:26:12 <elliott> what did i do a wrong ?????
20:27:01 <boily> ~moon
20:27:01 <cuttlefish> --- Possible commands: dice, duck, echo, eval, fortune, metar, ping, yi
20:27:14 <boily> oh, yeah. never got to complete that command.
20:33:08 -!- oerjan has joined.
20:35:24 -!- ais523 has joined.
20:44:25 <AnotherTest> new idiom
20:44:26 <AnotherTest> LLL
20:44:33 <AnotherTest> "Long live Lambdas"
20:45:49 <elliott> ltu
20:45:51 <FreeFull> What language is ~eval? Looks suspiciously haskell-like
20:46:29 <FreeFull> ~eval 3
20:46:30 <cuttlefish> 3
20:46:32 <kmc> suspicious indeed
20:46:35 <FreeFull> ~eval 3**304
20:46:36 <cuttlefish> 1.1088209803745658e145
20:46:39 <kmc> one might say it is very haskell-like
20:46:40 <FreeFull> ~eval 3^304
20:46:41 <cuttlefish> 11088209803745658455297408217949153593283559345652332354189895396347888771377425204097816698610804252448289239688437517467894531354021357739846081
20:46:51 <FreeFull> ~eval readFile ""
20:46:52 <cuttlefish> Error (1): No instance for (GHC.Show.Show (GHC.Types.IO GHC.Base.String))
20:46:53 <cuttlefish> arising from a use of `M4279369338326919300.show_M4279369338326919300'
20:46:53 <cuttlefish> Possible fix:
20:46:53 <cuttlefish> add an instance declaration for
20:46:53 <cuttlefish> (GHC.Show.Show (GHC.Types.IO GHC.Base.String))
20:46:57 <Taneb> ~eval let x = x x in ()
20:46:57 <cuttlefish> Error (1): Occurs check: cannot construct the infinite type: t1 = t0 -> t1Occurs check: cannot construct the infinite type: t0 = t0 -> t1
20:47:00 <ais523> that seems GHC-like, in particular
20:47:08 <kmc> ais523: might be a trick
20:47:13 <FreeFull> ais523 seems very ais523-like
20:47:15 <kmc> ~eval TELL ME THE TRUTH
20:47:16 <cuttlefish> Error (1): Not in scope: data constructor `TELL'Not in scope: data constructor `ME'Not in scope: data constructor `THE'Not in scope: data constructor `TRUTH'
20:47:23 <ais523> FreeFull: that's because I /am/ very ais523-like
20:47:25 <kmc> ~eval print "fungot"
20:47:25 <fungot> kmc: they say that some eggs could hatch in your pack, lucky or not. we shall be cursed with bell, book, by richard henry dana)
20:47:26 <cuttlefish> Error (1): No instance for (GHC.Show.Show (GHC.Types.IO ()))
20:47:26 <cuttlefish> arising from a use of `M8615961483540821306.show_M8615961483540821306'
20:47:26 <cuttlefish> Possible fix:
20:47:26 <cuttlefish> add an instance declaration for (GHC.Show.Show (GHC.Types.IO ()))
20:47:31 <kmc> der
20:47:35 <kmc> ~eval "fungot"
20:47:35 <fungot> kmc: kill a lich once and future king," he whispered. " because now i know not.
20:47:35 <cuttlefish> "fungot"
20:47:42 <kmc> already on the ignore then
20:47:51 <elliott> ^ignore
20:49:01 <FreeFull> ~eval instance Show IO () where { show x = "()" }
20:49:01 <cuttlefish> Error (1): <hint>:1:1: parse error on input `instance'
20:49:09 <boily> ~echo @echo `echo ^echo fungot
20:49:09 <fungot> boily: running is good for your work is, however, it is even said she was born from his throat; the drunk vomited lumps of human flesh. ( van dale's groot woordenboek der nederlandse taal)
20:49:09 <cuttlefish> @echo `echo ^echo fungot
20:49:09 <lambdabot> echo; msg:IrcMessage {msgServer = "freenode", msgLBName = "lambdabot", msgPrefix = "cuttlefish!~cuttlefis@2607:fad8:4:6:f2de:f1ff:fe6c:6765", msgCommand = "PRIVMSG", msgParams = ["#esoteric",":@echo
20:49:10 <lambdabot> `echo ^echo fungot"]} rest:"`echo ^echo fungot"
20:49:10 <Phantom__Hoover> ^ignore
20:49:14 <HackEgo> ​^echo fungot"]} rest:"`echo ^echo fungot"
20:49:40 <boily> FreeFull: there is no IO, except for System.Random.
20:49:56 <FreeFull> Doesn't seem to do declaring instances anyway
20:50:08 <kmc> probably ~eval expects an expression only
20:50:29 <kmc> ~eval I# 3#
20:50:29 <cuttlefish> Error (1): Not in scope: data constructor `I#'
20:50:45 <elliott> ooh i have an idea
20:50:59 <boily> http://hpaste.org/81946
20:51:09 <elliott> or do i
20:51:10 <FreeFull> ~eval fix (\_ -> 3)
20:51:11 <cuttlefish> 3
20:51:15 <FreeFull> Fix is there
20:51:16 <boily> elliott: as we say here, «gâte toé».
20:51:20 <FreeFull> Means we can do fibbonacci
20:51:25 -!- stuntaneous has quit.
20:51:27 <elliott> boily: is Imports.hs secret?
20:51:35 <FreeFull> ~eval fix (\x y z -> y:x z (y+z)) 1 1
20:51:36 <cuttlefish> [1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368,75025,121393,196418,317811,514229,832040,1346269,2178309,3524578,5702887,9227465,14930352,24157817,39088169,63245986,102334155,165580141,267914296,433494437,701408733,1134903170,1836311903,2971215073,4807526976,7778742049,12586269025,20365011074,32951280099,53316291173,86267571272,139583862445,225851433717,365435296162,591286729879,95672202
20:51:36 <kmc> FreeFull: or use 'let'
20:51:40 <boily> elliott: hm? oh, no. hpasted it the other day.
20:51:45 <kmc> > let fact 0 = 1; fact n = n * fact (n-1) in fact 5
20:51:47 <lambdabot> 120
20:51:54 <FreeFull> I like fix better
20:51:58 <kmc> «let .. in ..» is an expression
20:52:03 <FreeFull> Especially when written as a lambda
20:52:06 <boily> elliott: http://hpaste.org/81905
20:52:15 <boily> elliott: just note that now it also has monad logic.
20:52:31 <kmc> > fix ((0:) . scanl (+) 1)
20:52:33 <lambdabot> [0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946...
20:52:47 <kmc> ~eval fix ((0:) . scanl (+) 1)
20:52:47 <cuttlefish> [0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368,75025,121393,196418,317811,514229,832040,1346269,2178309,3524578,5702887,9227465,14930352,24157817,39088169,63245986,102334155,165580141,267914296,433494437,701408733,1134903170,1836311903,2971215073,4807526976,7778742049,12586269025,20365011074,32951280099,53316291173,86267571272,139583862445,225851433717,365435296162,591286729879,956722
20:53:01 <FreeFull> Eval prints max irc message
20:53:03 <FreeFull> Hmm
20:53:07 <FreeFull> ~eval "3"
20:53:08 <cuttlefish> "3"
20:53:15 <FreeFull> ~eval "<CTCP><CTCP>"
20:53:16 <cuttlefish> Error (1): <hint>:1:2:
20:53:16 <cuttlefish> lexical error in string/character literal at character '\SOH'
20:53:26 <elliott> ~eval replicate 510 'x' ++ "y"
20:53:27 <cuttlefish> "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
20:53:28 <FreeFull> It's safe
20:53:30 <elliott> ~eval replicate 508 'x' ++ "y"
20:53:30 <cuttlefish> "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
20:53:33 <elliott> ~eval replicate 450 'x' ++ "y"
20:53:34 <cuttlefish> "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
20:53:36 <elliott> ~eval replicate 400 'x' ++ "y"
20:53:37 <cuttlefish> "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxy"
20:53:40 <elliott> ~eval replicate 420 'x' ++ "y"
20:53:40 <cuttlefish> "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxy"
20:53:43 <elliott> ~eval replicate 430 'x' ++ "y"
20:53:43 <cuttlefish> "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxy"
20:53:45 <elliott> ~eval replicate 440 'x' ++ "y"
20:53:46 <cuttlefish> "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
20:53:46 <boily> oh no.
20:53:48 <elliott> ~eval replicate 438 'x' ++ "y"
20:53:49 <cuttlefish> "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
20:53:49 <boily> no no no no no no.
20:53:51 <elliott> ~eval replicate 435 'x' ++ "y"
20:53:51 <cuttlefish> "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
20:53:53 <elliott> ~eval replicate 433 'x' ++ "y"
20:53:54 <cuttlefish> "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
20:53:56 <elliott> ~eval replicate 432 'x' ++ "y"
20:53:56 <cuttlefish> "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxy
20:53:58 <elliott> yesss
20:53:59 <boily> you AREN'T doing what I'm thinking you're doing?
20:54:02 -!- cuttlefish has quit (Remote host closed the connection).
20:54:05 <elliott> omg
20:54:09 <boily> *smirk*
20:54:09 <elliott> what fun is it if i dont get to exploit
20:54:10 <elliott> it
20:54:16 <elliott> I was only going to make it QUIT!!
20:54:32 <elliott> actually, I doubt it would have worked.
20:54:34 <elliott> unfortunately.
20:54:39 <FreeFull> I don't think it would
20:54:41 <kmc> what's the hax
20:54:45 <FreeFull> But you can't find out without trying
20:54:52 <elliott> kmc: it seems to be not length-limiting output at all
20:54:58 <elliott> so I was trying to "overflow" it onto the next line somehow
20:55:09 <elliott> but I don't think freenode's ircd works like that
20:55:18 <FreeFull> You could have tried the CTCP newline escape thing
20:55:36 <elliott> maybe boily had some cleverer exploit in mind I didn't though
20:55:46 <boily> not yet.
20:56:01 <boily> but still, I'm curious.
20:56:09 -!- david_werecat has quit (Read error: Connection reset by peer).
20:56:11 <ais523> !bfjoust omnipotence http://sprunge.us/icWW
20:56:11 -!- cuttlefish has joined.
20:56:12 <FreeFull> http://www.exploit-db.com/exploits/21210/
20:56:21 -!- david_werecat has joined.
20:56:23 <elliott> ~eval undefined
20:56:23 <cuttlefish> Error (1): No instance for (GHC.Show.Show a0)
20:56:24 <cuttlefish> arising from a use of `M2940199053026085901.show_M2940199053026085901'
20:56:24 <cuttlefish> The type variable `a0' is ambiguous
20:56:24 <cuttlefish> Possible fix: add a type signature that fixes these type variable(s)
20:56:24 <cuttlefish> Note: there are several potential instances:
20:56:24 <EgoBot> ​Score for ais523_omnipotence: 70.5
20:56:24 <cuttlefish> instance GHC.Show.Show GHC.Types.Double
20:56:25 <cuttlefish> -- Defined in `base:GHC.Float'
20:56:25 <FreeFull> This kind of exploit is common in IRC clients that handle CTCPs
20:56:25 <cuttlefish> instance GHC.Show.Show GHC.Types.Float
20:56:26 <cuttlefish> -- Defined in `base:GHC.Float'
20:56:26 <cuttlefish> instance (GHC.Real.Integral a, GHC.Show.Show a) =>
20:56:27 <cuttlefish> GHC.Show.Show (GHC.Real.Ratio a)
20:56:27 <ais523> 70.5!
20:56:28 <cuttlefish> -- Defined in `base:GHC.Real'
20:56:28 <cuttlefish> ...plus 42 others
20:56:30 <ais523> take that everyone else
20:56:30 <elliott> ugh
20:56:34 <elliott> ais523: wow
20:56:45 <elliott> is bf joust broken again?
20:56:48 <ais523> quintopia: I just got #1 on the hill by over 10 score
20:56:50 <ais523> elliott: no, I don't think so
20:56:57 <FreeFull> !bfjoust a a
20:57:02 <EgoBot> ​Score for FreeFull_a: 3.7
20:57:07 <elliott> only two losses, wow
20:57:10 <ais523> omnipotence is very beatable, and in fact more than one program currently on the hill beats it
20:57:19 <FreeFull> I forget what my previous bfjoust entries were
20:57:25 <ais523> it's just good against the sorts of things people tend to write at the moment
20:57:37 <ais523> it'll drop down once people start actually allowing for what it does
20:57:51 <ais523> also it naturally loses to space_hotel, but it detects it by recognising its decoy setup and changes strategy :)
20:58:12 <ais523> !bfjoust omnipotence http://sprunge.us/icWW
20:58:17 <EgoBot> ​Score for ais523_omnipotence: 70.9
20:58:17 <ais523> FreeFull overwrote the breakdown :(
20:58:21 <ais523> that' better
20:58:24 <ais523> *that's
20:58:45 <FreeFull> What did I overwrite?
20:58:56 <ais523> http://codu.org/eso/bfjoust/in_egobot/breakdown.txt
20:59:01 <ais523> holds stats from the most recently submitted program
20:59:15 <elliott> boily: hmm, looks like the exploit I thought up wouldn't work unless I convinced you to import a module lambdabot has
20:59:22 <olsner> bah, I'm not even off the list yet
20:59:23 <FreeFull> Sorry
20:59:26 <ais523> it's OK, resubmitting fixes it
21:00:53 <ais523> elliott: it does badly against programs that use traditional decoy setups and don't use 2-cycle clears
21:01:01 <ais523> the sort of stuff that everyone was submitting in 2009, basically :)
21:01:03 <Sgeo> Pink elephants on parade!
21:01:09 <Sgeo> ^ sums up my current mental capacity
21:01:18 <Sgeo> Although I do seem to be able to continue reading HPMOR
21:01:54 -!- DHeadshot has joined.
21:02:13 <Sgeo> I'm not aseunk, just to clarify. Just sleep deprived
21:02:21 <ais523> elliott: anyway, I wouldn't say this breaks BF Joust, it's exactly the sort of program I'd like to see doing well on the hill
21:02:31 <Sgeo> And I always say "aseunk" instead of drunk, after a girl drunkingly IMed me to tell me that she was "aseunk"
21:04:23 <elliott> Sgeo: hi
21:04:25 <ais523> anyway, the thought process behind omnipotence is: you know all the boring copycats of slowpoke/space_elevator/ffspg, what they have in common is that they don't "naturally" handle fast rushes
21:04:29 <ais523> and so need special cases for them
21:04:52 <ais523> and what they do against fast rushes wouldn't work well against other sorts of programs
21:04:59 <Sgeo> wi am le tired
21:05:04 <ais523> so, the solution is: write a fast rush program which is also a defence program
21:05:22 <Phantom__Hoover> so uh
21:05:28 <Phantom__Hoover> did somebody finally break Sgeo
21:05:55 <boily> Sgeo: you'd say «je suis fatigué», but it misses the canonical French «le».
21:06:11 <Taneb> Phantom__Hoover, they broke me as well
21:06:11 <Sgeo> I have decided toat the solution to my sleep problems is to stay awake, and to make sure I get everything such as dinner that requires sustained thought out of the way as soon as possible
21:06:16 <Taneb> I'm learning to code in C
21:06:22 <Sgeo> Thus, dinner for breakfast, and then breakfast for dinner since breakfast is easy
21:06:23 <Phantom__Hoover> Taneb, didn't you already break a while ago
21:06:29 <Taneb> Yeah
21:06:34 <Taneb> I dunno anymore
21:06:40 <Sgeo> So when at 8 or 9 I am so tired I can just sleep
21:06:46 <Taneb> The other day someone called my name and high fived me
21:06:51 <Taneb> I had no idea who he was
21:07:14 <Taneb> He was 16 at the oldest and had a girlfriend, so none of us
21:08:35 <Phantom__Hoover> maybe he just randomly high-fives people
21:08:39 <Phantom__Hoover> and got a lucky guess
21:08:51 <Sgeo> bah cecil no supprt continuations
21:08:53 <Sgeo> first class
21:09:12 -!- DHeadshot has quit (Ping timeout: 264 seconds).
21:09:31 <Taneb> Phantom__Hoover, perhaps
21:09:41 <Taneb> And I am rather well known in the Hexham community
21:09:49 <Sgeo> oh god i hope no interview today although seems late for that anyway i hope
21:10:17 <boily> had a fit of a stroke of genius, and google mapped hexham.
21:10:28 <boily> it's in the friggin middle of nowhere!
21:10:41 <Taneb> It... isn't
21:10:45 <Phantom__Hoover> hey now
21:10:48 <Taneb> We've got a train station and everything
21:10:50 <Phantom__Hoover> scotland's not far away
21:10:56 <Sgeo> I think when I crack up randomly is proof I'm sleep deprived
21:11:11 <Taneb> Okay, maybe it is a little in the middle of nowhere to the north and south
21:11:15 <Taneb> And kind of west
21:11:25 <boily> maybe I'm overreacting at the presence of multiple golf courses.
21:11:40 <Phantom__Hoover> it's only an hour to gretna, if you are suddenly siezed by the urge to get married in scotland
21:12:06 <elliott> `addquote <boily> had a fit of a stroke of genius, and google mapped hexham. <boily> it's in the friggin middle of nowhere!
21:12:08 <ais523> Phantom__Hoover: via what means of transport? walking? driving?
21:12:11 <HackEgo> 959) <boily> had a fit of a stroke of genius, and google mapped hexham. <boily> it's in the friggin middle of nowhere!
21:12:15 <Phantom__Hoover> ais523, driving.
21:12:16 <elliott> it's "fit of a stroke of genius" that makes that one
21:12:23 <ais523> elliott: indeed
21:12:34 <ais523> I might have only addquoted the first line
21:12:55 <Sgeo> My imagination won't activate :(
21:13:04 <Phantom__Hoover> ais523, if Taneb is so siezed by the fancy to get married in scotland that he decides to walk, he can be there in a mere 14 hours.
21:13:45 <olsner> maybe "had a fit or a stroke" would be a better reason to googlemap hexham though
21:13:49 <ais523> Phantom__Hoover: so how far is phantomhooverland from Gretna Green?
21:14:05 <Taneb> If I choose my trains carefully I could be in Edinburgh in three
21:14:08 <Phantom__Hoover> right now? 200 miles
21:14:18 <ais523> hmm
21:14:19 <boily> olsner: I do not have any fits nor strokes in public. that's unprofessional.
21:14:20 <ais523> quite a way
21:14:23 <Phantom__Hoover> normally, about twice as far as Taneb
21:14:45 <ais523> wow, it's somewhat depressing that there's at least three other british people here
21:14:53 <ais523> and they live nearer to each other than any of them do to me
21:14:57 <Taneb> Dear god York is south
21:15:15 <ais523> Birmingham's pretty central, just you lot are all extreme north
21:15:20 <elliott> Taneb: Phantom__Hoover: lets get together and go meet ais523 for intercal lessons and also to tease him about feather
21:15:23 <elliott> y/y
21:15:38 <Taneb> y
21:15:39 -!- AnotherTest has quit (Quit: Leaving.).
21:15:42 <Phantom__Hoover> ais523, well right now I'm within like half an hour by train of you
21:15:43 <Phantom__Hoover> elliott, y
21:15:51 <ais523> Phantom__Hoover: hmm
21:16:02 <ais523> that only goes out to… Coventry? Wolverhampton?
21:16:04 <Taneb> I'm going down to Birmingham University this month anyway
21:16:10 <ais523> Taneb: ooh
21:16:15 <ais523> I will probably be there at the time
21:16:20 <Taneb> If the website lets me log in
21:16:31 <ais523> unless it's on a thursday or friday or weekend, in which case I might still be there but probably won't be
21:16:44 <Taneb> Wednesday
21:16:48 <elliott> Phantom__Hoover: there's a slight problem with our plan
21:16:54 <elliott> we'll probably have to go to birmingham
21:17:10 <Phantom__Hoover> seems like that's mostly just a problem for you
21:17:19 <elliott> Taneb: what time this month
21:17:26 <Taneb> Either the 20th or the 27th
21:17:30 <elliott> Phantom__Hoover: okay i realise you are scottish and so do not know the horror of birmingham
21:17:31 <Phantom__Hoover> i like how google maps considers leamington spa more prominent than coventry
21:17:47 <ais523> elliott: Birmingham is not that horrible
21:17:49 <Phantom__Hoover> elliott, it was pretty much like belfast
21:17:52 <Phantom__Hoover> except with less murals
21:17:55 <elliott> it doesn't matter whether it is or isn't horrible
21:17:59 <elliott> what matters is it's _meant_ to be horrible
21:18:03 <Taneb> Phantom__Hoover, Belfast was horrible
21:18:06 <elliott> see
21:18:18 <Taneb> You couldn't fly a flag if you wanted to be not shot
21:18:24 <ais523> it's one of the few major cities in the UK where you can walk into a car park on the ground floor, go up eight floors, then continue to walk on the level and come out at ground floor
21:18:42 <ais523> I think it's eight, at least, it might only be six
21:18:44 <elliott> what an advantage
21:19:08 <elliott> okay there's a slight issue
21:19:18 <elliott> how do we do this without me and Taneb ever recognising each other
21:19:18 <ais523> well, it's not really an /advantage/, but there's something fun about living in a city which has no major hills /but/ you can't draw a consistent ground level in most places
21:19:26 <elliott> since we have previously established that thta would cause the world to end
21:19:29 <Phantom__Hoover> elliott, wear bags on your heads
21:19:36 <ais523> elliott: it's OK if you're not in Hexham when you recognise each other
21:19:49 <elliott> ais523: are you sure
21:19:53 <Taneb> elliott, blindfolds
21:19:54 <ais523> pretty sure
21:19:57 <Taneb> Actually
21:20:02 <elliott> we carry the essence of hexham within us
21:20:04 <Taneb> Have you ever seen the Comedy of Errors?
21:20:06 <boily> can you unrecognize somebody?
21:20:32 <elliott> boily: can you undestroy the universe?
21:20:48 <boily> elliott: sure.
21:21:01 <Taneb> C-_, right?
21:21:12 <olsner> apparently I live almost north of all the british isles ... south of orkney though
21:21:18 <Phantom__Hoover> that's a pretty weird smiley Taneb
21:21:28 <olsner> http://en.wikipedia.org/wiki/Wick,_Highland is almost the same latitude
21:21:38 <Taneb> Phantom__Hoover, it's a smiley that undestroys the universe
21:21:51 <elliott> boily: what is the secret
21:21:56 <elliott> do you stomp on the vacuum
21:22:22 <kmc> http://fmota.eu/blog/base64-fixed-point.html
21:23:17 <boily> something something universal transformation.
21:23:34 <Taneb> ais523, do you know who to complain to with web.mat.bham.ac.uk/avd doesn't work
21:24:24 <ais523> Taneb: probably the maths department's secretaries, who would forward it on to whoever was responsible for it
21:24:30 <Taneb> Right
21:24:33 <ais523> the URL indicates that it's being handled by the individual department
21:25:22 -!- zzo38 has joined.
21:26:30 <Taneb> It will be the closest I've ever been, to my knowledge, to another person in this channel
21:26:44 <elliott> um
21:26:50 <elliott> you've probably been pretty close to me at some point
21:26:56 <boily> how romantic!
21:27:02 <Taneb> I'm fairly sure one of us is imaginary, elliott
21:27:04 <elliott> that's the bond of hexham
21:27:19 <Gregor> `? hexham
21:27:19 <lambdabot> Gregor: You have 4 new messages. '/msg lambdabot @messages' to read them.
21:27:19 <Phantom__Hoover> elliott must keep careful tabs on Taneb to avoid meeting him
21:27:20 <HackEgo> Hexham is a European town. There are nine people in Hexham, and at least two of them are in this channel. Taneb looks after the ham.
21:27:29 <elliott> tanbebs
21:27:30 <Taneb> And there are more secondary sources confirming my existence than yours
21:27:30 <Phantom__Hoover> `? finland
21:27:32 <HackEgo> Finland is a European country. There are two people in Finland, and at least nine of them are in this channel. Corun drives the bus.
21:27:47 <Taneb> (is Corun anyone?)
21:27:53 <elliott> someone who used to be here
21:28:02 <Taneb> awww
21:28:03 <Gregor> oerjan: Yeah, I suspected that chmod -r would break shit X-D
21:28:12 <elliott> did something happen
21:28:14 <olsner> corun is real??
21:28:25 <Taneb> olsner, yeah, who else would drive the bus
21:28:35 <boily> that implies a real bus, too.
21:29:21 <ais523> elliott: the scary thing about omnipotence is that I was testing against an old hill, where it did even better
21:29:45 <Taneb> boily, going back a bit, the least densely populated area of England is legally part of Hexham
21:30:17 <Taneb> Ish
21:31:51 <boily> we also have aberrations here, like île dorval.
21:32:14 <Sgeo> `olist
21:32:16 <HackEgo> shachaf oerjan Sgeo
21:32:40 -!- Nisstyre has quit (Quit: Leaving).
21:32:42 <ais523> Taneb: surely any area of England that contains no people is equally the least densely populated?
21:32:44 <olsner> which list is the olist?
21:32:51 <boily> Taneb: https://en.wikipedia.org/wiki/L%27%C3%8Ele-Dorval,_Quebec
21:32:58 <ais523> you could draw a very large area that just avoided all the people
21:33:26 <boily> `alist
21:33:27 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: alist: not found
21:33:42 <boily> `blist
21:33:43 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: blist: not found
21:33:46 <boily> `clist
21:33:47 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: clist: not found
21:33:49 <boily> `dlist
21:33:51 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: dlist: not found
21:33:53 <boily> `elist
21:33:55 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: elist: not found
21:34:06 <Taneb> ais523, the largest sensiblly shaped area
21:34:12 <ais523> `run ls bin/?list
21:34:14 <HackEgo> bin/olist
21:34:20 <ais523> boily: that would probably have been easier ;)
21:34:30 <boily> I'm bored. I need something to do.
21:34:35 <shachaf> ais523: Don't spoil boily's fun.
21:34:45 <shachaf> boily: Go learn Dylan, like Sgeo is.
21:34:56 <Taneb> list could be renamed hlist or mlist for consistency
21:34:59 <ais523> boily: see if you can beat my BF Joust programs :)
21:35:14 <shachaf> Taneb: I thought o stood for oerjan.
21:35:36 <Taneb> h for "Hussie" and m for "Me"
21:35:43 <boily> shachaf: I said bored, not sleep deprived :p
21:35:48 <Taneb> `list
21:35:50 <HackEgo> Taneb atriq Ngevd Fiora nortti Sgeo ThatOtherPerson alot
21:35:51 <boily> but yeah. bfjousting sounds like a good idea.
21:37:34 <Taneb> (that wasn't an actual list, I was just seeing what it said)
21:37:37 <Taneb> (sorry)
21:37:44 <ais523> hmm
21:37:47 <ais523> `cat bin/list
21:37:49 <HackEgo> echo Taneb atriq Ngevd Fiora nortti Sgeo ThatOtherPerson alot
21:37:53 <ais523> ah, boring
21:37:58 <ais523> I thought it would be a list of all the people who had done `list
21:38:02 <fizzie> ^show list
21:38:02 <fungot> (Taneb atriq Ngevd Fiora nortti Sgeo ThatOtherPerson alot)S
21:38:04 <ais523> that would be interesting
21:38:14 <shachaf> `run mv bin/{,s}list
21:38:22 <HackEgo> No output.
21:38:27 <elliott> `cat quine
21:38:28 <HackEgo> cat: quine: No such file or directory
21:38:32 <elliott> `cat bin/quine
21:38:33 <HackEgo> cd /var/irclogs/_esoteric; cat $(ls ????-??-??.txt | tail -1) | tail -1 | sed 's/[^>]*> //' #Worst cheating quine ever?
21:38:54 <elliott> `run cd /var/irclogs/_esoteric; cat $(ls ????-??-??.txt | tail -1) | tail -1 | sed 's/[^<]*<//; s/>.*//'
21:38:57 <HackEgo> elliott
21:39:04 <Taneb> `ls /var/
21:39:06 <HackEgo> irclogs
21:39:10 <Taneb> `ls /var/irclogs
21:39:12 <HackEgo> _ai \ _corewars \ _esoteric \ _esoteric-chess-variants \ _esoteric-minecraft \ _glogbot \ index.php \ log \ log.css \ log.js \ _plof \ raw \ _scapegoat \ stalker.php
21:39:21 <elliott> hm
21:39:49 <Taneb> `ls /var/irclogs/_esoteric-minecraft
21:39:51 <HackEgo> 2011-03-19-raw.txt \ 2011-03-19.txt \ 2011-03-20-raw.txt \ 2011-03-20.txt \ 2011-03-21-raw.txt \ 2011-03-21.txt \ 2011-03-22-raw.txt \ 2011-03-22.txt \ 2011-03-23-raw.txt \ 2011-03-23.txt \ 2011-03-26-raw.txt \ 2011-03-26.txt \ 2011-03-27-raw.txt \ 2011-03-27.txt \ 2011-03-28-raw.txt \ 2011-03-28.txt \ 2011-03-29-raw.txt \ 2011-03-29.txt \ 2011-03-
21:40:02 <boily> there was a minecraft?
21:40:06 <Sgeo> Do HackEgo commands get access to the name of the person issuing the command?
21:40:07 <Taneb> Yeah
21:40:12 <Taneb> We had our own server at one point
21:40:13 <elliott> `run echo "#!/bin/sh" >bin/list; echo 'cd /var/irclogs/_esoteric; name=$(cat $(ls ????-??-??.txt | tail -1) | tail -1 | sed "s/[^<]*<//; s/>.*//"); sed -i "s/.\$nam[e]./$name \&" bin/list; echo "$name"' >>bin/list
21:40:16 <HackEgo> No output.
21:40:18 <elliott> `run chmod +x bin/list
21:40:21 <Sgeo> There was. There is, but there was too
21:40:22 <HackEgo> No output.
21:40:22 <elliott> `list
21:40:24 <Taneb> `list
21:40:28 <HackEgo> sed: -e expression #1, char 20: unterminated `s' command \ Taneb
21:40:29 <HackEgo> sed: -e expression #1, char 22: unterminated `s' command \ HackEgo
21:40:31 <elliott> oerjan: you fix it
21:40:34 <elliott> ais523: or you
21:41:11 <ais523> `run echo "#!/bin/sh" >bin/list; echo 'cd /var/irclogs/_esoteric; name=$(cat $(ls ????-??-??.txt | tail -1) | tail -1 | sed "s/[^<]*<//; s/>.*//"); sed -i "s/.\$nam[e]./$name \&/" bin/list; echo "$name"' >>bin/list
21:41:15 <HackEgo> No output.
21:41:18 <ais523> `list
21:41:21 <HackEgo> sed: can't read bin/list: No such file or directory \ ais523
21:41:29 <boily> I wonder if I can buy surströmming in this city...
21:41:31 <ais523> oh, the cd
21:41:32 <elliott> er, what?
21:41:33 <elliott> oh
21:41:47 <elliott> ais523: it should probably also not add duplicates >:)
21:42:06 <shachaf> ais523: You should instead make bin/list update itself.
21:42:13 <ais523> `run echo "#!/bin/sh" >bin/list; echo 'oldpwd=`pwd`; cd /var/irclogs/_esoteric; name=$(cat $(ls ????-??-??.txt | tail -1) | tail -1 | sed "s/[^<]*<//; s/>.*//"); cd $oldpwd; sed -i "s/.\$nam[e]./$name \&/" bin/list; echo "$name"' >>bin/list
21:42:16 <HackEgo> No output.
21:42:20 <ais523> shachaf: elliott did, I just fixed it
21:42:28 <elliott> `list
21:42:33 <ais523> this doesn't eliminate duplicates yet
21:42:34 <HackEgo> elliott
21:42:38 <elliott> `list
21:42:40 <shachaf> I strongly disapprove of a version that just searches the logs.
21:42:42 <HackEgo> sed: -e expression #1, char 23: unterminated `s' command \ shachaf
21:42:42 <Sgeo> `list
21:42:45 <HackEgo> sed: -e expression #1, char 23: unterminated `s' command \ Sgeo
21:42:46 <ais523> hmm
21:42:49 <ais523> shachaf: it doesn't search the logs
21:42:55 <ais523> it just looks at the logs to see who sent the command
21:43:07 <shachaf> Oh.
21:43:11 <Sgeo> :/ what if it gets it wrong
21:43:20 <Sgeo> If I say `list then ais523 says something unrelated
21:43:22 <elliott> it coudl grep `list
21:43:25 <elliott> to remove most false positives
21:43:27 <elliott> u*could
21:43:31 <elliott> *jasd
21:43:42 <shachaf> I see.
21:44:04 <elliott> ais523: I think the constraint of a program that can only keep state by modifying its own file is interesting
21:44:11 <elliott> unless you cheat and just store all the data in a string or whatever
21:44:32 <ais523> hmm
21:45:30 <ais523> `run echo "#!/bin/sh" >bin/list; echo -n 'oldpwd=`pwd`; cd /var/irclogs/_esoteric; name=$(cat $(ls ????-??-??.txt | tail -1) | tail -1 | sed "s/[^<]*<//; s/>.*//"); cd $oldpwd; echo -n $name '' >> bin/list; echo '
21:45:34 <HackEgo> oldpwd=`pwd`; cd /var/irclogs/_esoteric; name=$(cat $(ls ????-??-??.txt | tail -1) | tail -1 | sed "s/[^<]*<//; s/>.*//"); cd $oldpwd; echo -n $name >> bin/list; echo
21:45:38 <ais523> err
21:45:53 <ais523> `run echo "#!/bin/sh" >bin/list; echo -n 'oldpwd=`pwd`; cd /var/irclogs/_esoteric; name=$(cat $(ls ????-??-??.txt | tail -1) | tail -1 | sed "s/[^<]*<//; s/>.*//"); cd $oldpwd; echo -n $name "" >> bin/list; echo '
21:45:55 <HackEgo> oldpwd=`pwd`; cd /var/irclogs/_esoteric; name=$(cat $(ls ????-??-??.txt | tail -1) | tail -1 | sed "s/[^<]*<//; s/>.*//"); cd $oldpwd; echo -n $name "" >> bin/list; echo
21:46:03 <ais523> `run echo "#!/bin/sh" >bin/list; echo -n 'oldpwd=`pwd`; cd /var/irclogs/_esoteric; name=$(cat $(ls ????-??-??.txt | tail -1) | tail -1 | sed "s/[^<]*<//; s/>.*//"); cd $oldpwd; echo -n $name "" >> bin/list; echo ' >> /bin/list
21:46:04 <HackEgo> bash: /bin/list: Read-only file system
21:46:09 <ais523> `run echo "#!/bin/sh" >bin/list; echo -n 'oldpwd=`pwd`; cd /var/irclogs/_esoteric; name=$(cat $(ls ????-??-??.txt | tail -1) | tail -1 | sed "s/[^<]*<//; s/>.*//"); cd $oldpwd; echo -n $name "" >> bin/list; echo ' >> bin/list
21:46:13 <HackEgo> No output.
21:46:17 <ais523> `list
21:46:24 <HackEgo> No output.
21:46:28 <ais523> `list
21:46:35 <HackEgo> ais523
21:46:38 <ais523> elliott: there we go
21:46:38 <elliott> hmm
21:46:44 <elliott> but it doesn't list your name the first time you do it
21:46:49 <ais523> indeed, it tells you the old list
21:46:58 <ais523> let me see if I can fix it to avoid duplicates
21:47:44 <ais523> `run echo "#!/bin/sh" >bin/list; echo -n 'oldpwd=`pwd`; cd /var/irclogs/_esoteric; name=$(cat $(ls ????-??-??.txt | tail -1) | tail -1 | sed "s/[^<]*<//; s/>.*//"); cd $oldpwd; fgrep -q "$name" bin/list || echo -n "$name " >> bin/list; echo ' >> bin/list
21:47:47 <HackEgo> No output.
21:47:51 <ais523> `list
21:47:57 <HackEgo> No output.
21:47:59 <ais523> `list
21:48:01 <HackEgo> ais523
21:48:03 <ais523> `list
21:48:06 <HackEgo> ais523
21:48:14 <ais523> `run echo "#!/bin/sh" >bin/list; echo -n 'oldpwd=`pwd`; cd /var/irclogs/_esoteric; name=$(cat $(ls ????-??-??.txt | tail -1) | tail -1 | sed "s/[^<]*<//; s/>.*//"); cd $oldpwd; fgrep -q "$name" bin/list || echo -n "$name " >> bin/list; echo ' >> bin/list
21:48:18 <HackEgo> No output.
21:48:20 <ais523> there we go
21:48:28 <ais523> now we have a `list working just like I wanted it to :)
21:48:34 <elliott> `list
21:48:34 <boily> `list
21:48:41 <HackEgo> No output.
21:48:41 <elliott> uh oh
21:48:44 <HackEgo> boily
21:48:45 <boily> uuuh...
21:48:48 <boily> ah!
21:48:50 <ais523> up to hackego concurrency issues
21:48:52 <elliott> ais523: there is a way it could work even when multiple people do it
21:49:03 <ais523> nah, I like the randomness
21:49:13 <Taneb> `list
21:49:14 * elliott thinks it should include your name even if you weren't previously on the list
21:49:19 <HackEgo> boily elliott
21:49:20 <elliott> because who doesn't like being pinged?
21:49:36 <ais523> elliott: this way it's harder to figure out what it does
21:49:44 <boily> `list
21:49:45 <HackEgo> ​/hackenv/bin/list: 2: Syntax error: Unterminated quoted string
21:49:49 <ais523> hmm
21:49:53 <boily> darn.
21:49:56 <ais523> `cat bin/list
21:49:58 <HackEgo> ​#!/bin/sh \ oldpwd=`pwd`; cd /var/irclogs/_esoteric; name=$(cat $(ls ????-??-??.txt | tail -1) | tail -1 | sed "s/[^<]*<//; s/>.*//"); cd $oldpwd; fgrep -q "$name" bin/list || echo -n "$name " >> bin/list; echo boily elliott 21:49:14: * elliott thinks it should include your name even if you weren't previously on the list
21:50:03 <elliott> lol
21:50:08 <boily> ha ha ha!
21:50:12 <ais523> elliott: this is your fault :)
21:50:12 -!- epicmonkey has quit (Ping timeout: 248 seconds).
21:52:16 <ais523> `run echo "#!/bin/sh" >bin/list; echo -n 'oldpwd=`pwd`; cd /var/irclogs/_esoteric; name=$(cat $(ls ????-??-??.txt | tail -1) | tail -1 | sed "s/[^<]*<//; s/>.*//; s/.*\* //; s/ .*//"); cd $oldpwd; fgrep -q "$name" bin/list || echo -n "$name " >> bin/list; echo ' >> bin/list
21:52:19 <HackEgo> No output.
21:52:24 <ais523> elliott: now it can get the wrong name from a /me too :)
21:52:35 <elliott> what about a /quit?
21:52:41 <ais523> that won't work
21:53:02 <ais523> probably
21:53:25 <boily> ~echo `list
21:53:25 <cuttlefish> `list
21:53:31 <HackEgo> No output.
21:53:35 <boily> `list
21:53:42 <HackEgo> cuttlefish
21:53:47 <boily> good enough.
21:53:55 <ais523> quintopia: which year did anticipation top the hill? 2012 or 2013?
21:53:56 <elliott> `list
21:54:03 <HackEgo> cuttlefish boily
21:54:24 <elliott> ais523: join the list!
21:54:32 <Taneb> `list
21:54:39 <HackEgo> cuttlefish boily elliott
21:54:40 <ais523> nah, I like seeing how long I can go before I join it by accident
21:54:50 <elliott> ais523: I would guess... forever
21:54:57 <elliott> `list
21:54:57 <elliott> `list
21:54:58 <elliott> `list
21:54:58 <elliott> `list
21:54:59 <elliott> `list
21:55:03 <HackEgo> cuttlefish boily elliott Taneb
21:55:04 <HackEgo> cuttlefish boily elliott Taneb
21:55:04 <elliott> let's see if that duplicate checking works
21:55:09 <HackEgo> cuttlefish boily elliott Taneb
21:55:13 <HackEgo> cuttlefish boily elliott Taneb
21:55:16 <HackEgo> cuttlefish boily elliott Taneb HackEgo
21:55:18 <ais523> bonus points if you get HackEgo on the list
21:55:18 <elliott> hahaha
21:55:22 <boily> `list `list
21:55:23 <elliott> i was hoping that would happen
21:55:25 <HackEgo> cuttlefish boily elliott Taneb HackEgo
21:55:26 <ais523> so was I
21:55:39 <Taneb> ^echo `list
21:55:40 <fungot> `list `list
21:55:43 -!- HackEgo has quit (Remote host closed the connection).
21:55:50 <shachaf> Taneb.............................
21:55:53 <Taneb> Do I get an award?
21:56:02 <shachaf> did you segfault Gregor
21:56:03 <boily> how did hagb4rd get on the list himself???
21:56:14 <ais523> boily: race condition
21:56:16 <boily> s/hagb4rd/HackEgo
21:56:24 <elliott> boily: because hackego said the list
21:56:26 <elliott> and then the script ran
21:56:29 <elliott> looked at the last line in the logs...
21:56:46 <elliott> so wait, why did HackEgo crash there?
21:57:10 <boily> ~eval "a\8b"
21:57:10 <cuttlefish> "a\bb"
21:57:27 <shachaf> ~eval "a\8\&8b"
21:57:27 <cuttlefish> "a\b8b"
21:57:54 <boily> > putStrLn "\8"
21:57:56 <lambdabot> No instance for (GHC.Show.Show (GHC.Types.IO ()))
21:57:56 <lambdabot> arising from a use of ...
21:58:28 <ais523> elliott: something wrong with the bot blacklist?
21:59:06 <elliott> hmm, maybe
22:00:12 <boily> why would we blacklist bots? we have such a nice variety of them here.
22:00:37 <oerjan> <Sgeo> Do HackEgo commands get access to the name of the person issuing the command? <-- no, although i suggested it to Gregor
22:01:42 <ais523> boily: to prevent botloops
22:01:49 <ais523> the bots are designed to ignore each other
22:01:56 <ais523> because otherwise someone gets the bots to spout commands for the other bots
22:02:02 <ais523> and you need a bot owner or an op in to stop the spam
22:02:05 <elliott> boily: there is no good reason.
22:02:08 <elliott> it is because people hate happiness
22:02:27 <zzo38> Should there also be a environment variable for the recipient of the command (either some channel, or HackEgo directly)? And of the glogbot timestamp of the message?
22:03:01 <boily> ais523: I like elliott's explanation better.
22:03:24 <ais523> zzo38: yeah, that seems like a good idea
22:03:26 <Sgeo> There should be an opped bot capable of detecting ... hmm
22:03:55 <Sgeo> Well, no, no way to catch all botloops, is there?
22:03:56 <ais523> just kick anyone who says the same line three times in a row, could help
22:03:58 <Sgeo> Maybe a spam filter
22:04:07 <ais523> but you can get loops that avoid that
22:04:11 <Sgeo> ais523, get the bots to increment a number
22:04:15 <ais523> alternatively, anyone who posts too many posts in a set time
22:04:17 <elliott> ais523: that's mean
22:04:17 <elliott> ais523: that's mean
22:04:18 <elliott> ais523: that's mean
22:04:28 <zzo38> Although to prevent bots from reading commands from other bot outputs I would prefer a different ,much simpler, siolution: To make their output to be NOTICE message rather than PRIVMSG.
22:04:33 <ais523> it's hard to get the bots to intentionally slow down the loop
22:04:47 <boily> bah, too much effort.
22:05:05 <ais523> actually, you wouldn't kick
22:05:08 <ais523> you'd +m the channel for a few seconds
22:05:08 -!- boily has quit (Quit: Poulet!).
22:05:11 -!- cuttlefish has quit (Remote host closed the connection).
22:05:31 <ais523> or +q one of the affecte dusers for a few seconds
22:05:34 <ais523> *affected
22:09:26 <zzo38> I think using NOTICE messages would be the simplest and best solution and the one recommended by the RFC. However, there are others. One would be to not take commands inside the channel and only private, although sometimes you want the results to be public so it might not best. Another is if they added a user mode to prevent receiving channel messages from someone having the same mode.
22:11:04 <ais523> hmm, that's an interesting idea for a mode
22:11:49 <zzo38> The server would have to be changed to do that, though.
22:13:30 <zzo38> I would recommend and prefer to just make them NOTICE messages.
22:15:02 <Sgeo> So, if `list is for something, what's the old list?
22:15:08 <elliott> what old list
22:15:09 <Sgeo> `run ls bin/?list
22:15:13 <elliott> this is the only list there ever was
22:15:16 <elliott> and the only list anyone needs
22:15:32 <oerjan> Sgeo: slist
22:15:51 <oerjan> also someone get zzo38 out of his autobotloop, please.
22:16:36 <Sgeo> Is hackego.. dead?
22:16:41 <Sgeo> :(
22:16:44 -!- Phantom__Hoover has quit (Ping timeout: 255 seconds).
22:16:56 <oerjan> really most sincerely dead
22:17:00 -!- Phantom__Hoover has joined.
22:27:15 -!- augur has quit (Remote host closed the connection).
22:29:32 -!- oerjan has quit (Quit: leaving).
22:32:31 -!- oerjan has joined.
22:48:59 -!- Taneb has quit (Quit: Leaving).
22:52:56 <ais523> Gregor: Taneb managed to get fungot to kill HackEgo
22:52:57 <ais523> ^ul (pong)S
22:52:57 <ais523> what's up with fungot?
22:52:57 <fungot> ais523: they say that you should try another one.
22:52:57 <fungot> pong
22:52:57 <fungot> ais523: they say that real hackers never sleep near invisible ring wraiths.
22:53:03 <ais523> are, there we go
22:54:46 <elliott> oerjan: good mornign
23:01:18 <oerjan> elliott: good midnight
23:01:22 <elliott> oerjan: happy birth
23:03:21 <ais523> oerjan: it's not midnight for me and elliott for another 57 minutes or so
23:03:36 <Phantom__Hoover> nobody ever remembers Phantom__Hoover
23:03:51 <shachaf> @quote nobody.*remembers
23:03:51 <lambdabot> No quotes match. You untyped fool!
23:04:01 <ais523> Phantom__Hoover: if HackEgo were here, you could read the `list
23:04:04 <ais523> then people would remember you
23:04:07 <shachaf> Oh.
23:04:46 <kmc> shachaf: apparently i am going to have some kind of snowpocalypse
23:05:01 <shachaf> oh no
23:05:05 <shachaf> flee to california
23:05:15 <kmc> too late
23:05:26 <shachaf> it's never too late to go west
23:05:32 <kmc> i've just got to buy lucky charms
23:05:32 <Phantom__Hoover> build snow california
23:25:37 -!- carado has quit (Ping timeout: 246 seconds).
23:31:24 -!- oerjan has quit (Quit: leaving).
23:40:58 <kmc> so what are the legitimate use cases for printf's %n?
23:42:17 <ais523> kmc: things like tabular output
23:42:24 <ais523> where you're printing spaces to make things line up
23:42:33 <kmc> mm
23:42:55 -!- DHeadshot has joined.
23:43:07 <zzo38> You can count the output by the return of printf, though. You can also use alignment in the formats to line up columns.
23:44:35 -!- oerjan has joined.
23:50:32 <shachaf> kmc: Now you're migrating conversations across channels you're not even in.
23:52:28 <kmc> i am?
23:53:43 <shachaf> Perhaps it's just a coïncidence that %n came up in multiple places.
23:54:07 <kmc> where else did it come up?
23:54:20 <oerjan> Gregor: HackEgo is missing HTH HELP
23:56:17 <shachaf> #cslounge
23:56:22 <kmc> ok
23:56:27 <kmc> then maybe it's because lexande asked me about %n
23:56:35 <kmc> a grand circuitous route
23:56:49 <shachaf> OK then that would be it.
23:56:55 <elliott> oerjan: HANH (Have A Nice Help)
23:57:11 <ais523> is a HTH like a CTCP?
23:57:19 <oerjan> MAYBE
23:57:25 -!- Nisstyre-laptop has joined.
←2013-02-06 2013-02-07 2013-02-08→ ↑2013 ↑all