00:18:12 -!- lahwran has quit (Quit: ZNC - http://znc.sourceforge.net).
00:25:27 -!- lahwran has joined.
00:32:51 -!- oklopol has quit (Ping timeout: 260 seconds).
00:44:01 -!- sebbu has quit (Read error: Connection reset by peer).
00:44:29 -!- sebbu has joined.
00:45:46 -!- sebbu2 has joined.
00:49:18 -!- sebbu has quit (Ping timeout: 245 seconds).
01:06:04 -!- sebbu2 has quit (Read error: Connection reset by peer).
01:06:29 -!- sebbu has joined.
01:06:29 -!- sebbu has quit (Changing host).
01:06:29 -!- sebbu has joined.
01:09:31 -!- zzo38 has quit (Remote host closed the connection).
01:21:23 -!- sebbu has quit (Ping timeout: 245 seconds).
01:25:09 <quintopia> @ask ais523 does stealth lose track of where its own flag is during the deep poke? how much bigger would it be if it didnt?
01:25:56 * GreyKnight looks baffled, picks up the comment, rotates it, looks baffled again
01:26:22 <ais523> quintopia: yes, and exponentially larger
01:26:22 <lambdabot> ais523: You have 1 new message. '/msg lambdabot @messages' to read it.
01:26:28 <lambdabot> quintopia asked 1m 18s ago: does stealth lose track of where its own flag is during the deep poke? how much bigger would it be if it didnt?
01:26:47 <ais523> stealth clear is a new sort of clear loop that I should document
01:26:57 <ais523> but it has limitations
01:27:13 <ais523> specifically, it has an order of recognised decoy sizes
01:27:35 <ais523> and from one decoy to the next, it can move any distance forwards in the order, but only up to 1 backwards
01:28:00 <ais523> stealth uses 0,-1,1,2,-2,-3,3,5,1,0
01:28:14 <ais523> the 5 is to recognise its own decoys, when it's forgotten where its flag is
01:28:31 <ais523> actually I should remove that in the long-tape case given that its decoys in that case aren't actually size 5
01:28:44 <ais523> so it doesn't get caught on its own decoys
01:28:54 <ais523> then the 1,0 is for once it's got past its own decoys
01:29:04 <ais523> adding the 1 there makes it faster on a row of 0s
01:29:18 <quintopia> i just noticed that the usual reason it loses is that the decoys it leaves near its own flag are always abysmally small. so other pokes go through them like shit through a goose
01:29:20 <ais523> it's an algorithm with a lot of drawbacks
01:29:27 <ais523> yeah, it's a fast rush
01:29:30 <ais523> we haven't had one of those for /months/
01:29:39 <ais523> however, there's an innovation
01:29:50 <ais523> once the clear loop finds something that's larger than its wiggle
01:29:55 <ais523> then it goes back and sets some large decoys
01:30:06 <ais523> somewhere vaguely approximately near its flag
01:30:22 <quintopia> its a fast rush? it spends an awful lot of time building decoys for a fast rush
01:30:39 <quintopia> i would expect a fast rush to start clearing once it found an unrecognized decoy.
01:30:44 <ais523> in fact, much of the logic near the end, apart from the deep undermine, is to do with trying to guess where its own flag is
01:31:02 <ais523> quintopia: well my definition is that it attacks before setting any large decoys
01:31:46 <ais523> it sets large decoys when it finds the first opposing medium or larger decoys on the long-tape cases
01:31:53 <quintopia> (where we define attack as actually trying to clear a flag of course)
01:31:54 <ais523> like, it actually interrupts the clear to set decoys
01:32:22 <ais523> this is mostly a bad idea if it's actually on the enemy flag at the time, but the odds of that are pretty low
01:32:39 <ais523> but the idea is to try its best to get /inside/ the opposing decoy setup
01:33:16 <ais523> hmm… an alternative definition is to say that a fast rush aims to interact with the opponent while it's setting decoys
01:33:21 <quintopia> does it. in the programs i played it against, the extra decoys end up so far from its flag it would have been better off just trying to clear. which programs does it help against? or is it a short tape thing?
01:33:23 <ais523> whereas a slow rush instead prefers to make its own decoys secure
01:33:54 <ais523> they mostly help against slow rushes
01:33:57 <ais523> actually they might not help any more
01:34:20 <ais523> they help in the case where an enemy poke sets up large-ish decoys first
01:34:24 <ais523> it used to be that I trailed to avoid pokes
01:34:29 <ais523> but it turned out to work better if I didn't
01:35:14 <quintopia> and so pokes can mostly beat it now
01:35:36 -!- oerjan has quit (Quit: Good night).
01:35:41 <ais523> nah, against pokes it normally finds the enemy flag before they even get back
01:36:23 <ais523> it does against most of the others though
01:36:28 <ais523> anyway, I tried removing the large decoys as a test
01:36:50 <quintopia> it ends up doing some crazy building of medium decoys across the middle of the tape instead of finding the flag
01:37:01 <ais523> it hurts against basically all the rush programs
01:37:05 <ais523> it helps against space_elevator and defence
01:37:25 <ais523> yeah, the medium decoy spam is basically because it buys considerably more time than it costs against slow rushes
01:37:37 <ais523> like, I can set those up faster than I could clear one decoy
01:37:39 <quintopia> did you optimize the size of the large decoys at all?
01:37:53 <ais523> it was important not to set too many
01:38:00 <ais523> I tried smallish ones and largish ones
01:38:03 <ais523> but the very large ones worked best
01:39:02 <quintopia> interesting. cant wait to see the docs on the new strategies
01:39:39 <ais523> but it hasn't won, so there won't be any :(
01:39:45 <ais523> apart from the clear loop itself
01:39:53 <ais523> anyway, look at its trace against quintopia_poke, if you want an example
01:39:59 <ais523> basically it gets /inside/ poke's decoy setup
01:40:17 <ais523> and so it finds the flag first, whereas poke finds its interim decoy on cell 3
01:41:05 <ais523> it sets the extra decoys too far from its flag to matter
01:41:13 <ais523> but it doesn't matter because it's already found the enemy flag in that case
01:41:47 <ais523> if you want an example of them helping, look at it against space_hotel on length 25
01:42:17 <ais523> it gets the flag down first by like 10 cycles :)
01:43:25 <ais523> oh, it also coincidentally helps by completely throwing off the timing of tripwire-based defence algorithms
01:43:26 <quintopia> i'm discounting poke...it's a very stupid program :P
01:45:03 <quintopia> why did you decide that decoy size order
01:45:21 <ais523> it's fast rushing so it can't afford to set large decoys early
01:45:27 <ais523> it needs to find the opponent first, and even start clearing
01:45:39 <ais523> once it's found something it can't clear efficiently, then it sets the large decoys
01:45:59 <ais523> because clearing a large decoy takes forever, so setting large decoys doesn't significantly slow it down
01:46:59 <ais523> anyway, the other new strat is the deep undermine (or, well, shallow undermine)
01:47:20 <ais523> on long tapes, if it finds an enemy large decoy a little beyond its own
01:47:32 <ais523> so medium-length tapes
01:47:45 <ais523> it assumes reverse decoy setup with potential trail, and looks for the trail behind the enemy decoys
01:47:58 <ais523> then it restores it so the opponent can't detect that it's been infiltrated
01:48:09 <ais523> if the opponent's using forward decoy setup, it runs off the end in that case
01:48:18 <ais523> but that case is very hard to trigger with a forward decoy setup
01:48:30 <ais523> some programs can do it on very short tapes
01:50:10 <ais523> but I just sacrificed those
01:50:21 <ais523> so I guess the program has different short/medium/long modes
01:50:53 <ais523> quintopia: oh, looking at this against fast rushes, I know what the medium decoys are for
01:51:02 <ais523> they're set up fast enough that they can typically overtake the opponent's clear lopo
01:56:10 <ais523> hmm, I wonder how I can make stealth better
01:56:17 <ais523> it doesn't lose very much, but its losses are expected ones
01:56:32 <ais523> and it does win against the things it's meant to win against
01:56:41 <ais523> (cookie cutter deep poke with breadcrumb decoy programs)
01:56:55 <ais523> space_elevator isn't really cookie cutter, it's a bit too old for that
01:58:00 -!- sebbu has joined.
02:07:49 -!- greyooze has joined.
02:08:29 -!- GreyKnight has quit (Ping timeout: 255 seconds).
02:09:02 <quintopia> ais523: i meant the list of sizes to check
02:09:22 <ais523> quintopia: oh, it's just 1-3 because those are the only commonly used reverse tripwires
02:09:27 <ais523> plus its own decoys so it doesn't get caught on them
02:10:38 <ais523> anyway, it doesn't actually do a deep poke
02:10:47 <ais523> unless you consider the interrupted clear to be a poke, which it is in a way
02:10:57 <ais523> it does a shallow poke
02:11:23 <ais523> the decoy size list is mostly used in the clear loop
02:12:02 <ais523> so it's a wiggle clear, with the twist that the wiggle restores the decoys before moving on
02:12:15 <ais523> oh and it also uses the inflexible timer clear pattern, in order to fit everything in
02:12:18 <ais523> this explains the weird behaviour
02:12:22 <ais523> or is it the flexible one?
02:12:26 <ais523> but there isn't an actual timer clear
02:12:50 <ais523> I could try to add one, but I don't think it'd help that much
02:14:54 -!- DH____ has quit (Read error: Connection reset by peer).
02:14:59 -!- DHeadshot has joined.
02:20:50 -!- greyooze has changed nick to GreyKnight.
02:24:20 <GreyKnight> A little light entertainment courtesy of #nethack: Linus chewing out a kernel maintainer: https://lkml.org/lkml/2012/12/23/75
02:26:58 <ais523> GreyKnight: that's been going round Reddit and Slashdot several days ago
02:27:29 <GreyKnight> sorry I'm not really in "the loop" :-P
02:27:53 <GreyKnight> IRC is pretty much the high water mark of my online socialising
02:32:04 <kmc> yeah i don't find it that entertaining
02:32:17 <kmc> i think it's a real problem that open source development is dominated by assholes
02:32:50 <kmc> we tell ourselves it's a meritocracy but it's really about who can dish out and take the most abuse on mailing lists without burning out
02:34:41 <GreyKnight> I don't think this was a typical exchange, perhaps Linus was having a bad day and they will kiss and make up later
02:34:59 <ais523> GreyKnight: I've heard that Linus gets very annoyed at people who are in charge of something when they're not doing their jobs properly
02:35:08 <ais523> (that's a subsystem maintainer, who's meant to be keeping bad code out)
02:35:17 <ais523> in the hope that it'll reform them without having to actually fire them
02:36:54 <TeruFSX> i think he went a bit too far there but the base complaint was valid
02:37:05 <TeruFSX> maybe a bit less profanity
02:37:28 <kmc> it's no surprise how many open source projects end up getting forked and renamed just to escape the toxic ruins of a developer community
02:37:51 <kmc> the substance of the complaint doesn't matter, the only reason anyone is paying attention is the tone
02:39:40 <kmc> among other things, it's a diversity problem
02:39:56 <ais523> GreyKnight: that's never been particularly forked or renamed
02:40:05 <ais523> and then subsequently returned
02:40:15 <ais523> (something that /doesn't/ happen to open source projects often)
02:40:17 <kmc> the people who will put up with mailing list assholes are disproportionately going to be privileged white men who have been told practically from birth that they are god's gift to code
02:40:19 <ais523> but the name has been the same constantly
02:41:21 <kmc> if you're from an underrepresented group that already gets tons of "you don't belong here" signals, are you going to put up with that shit?
02:41:25 <kmc> a few people will, but it's a huge barrier
02:41:49 -!- augur has quit (Read error: Connection reset by peer).
02:41:59 -!- augur has joined.
02:42:10 <kmc> i also feel like every time linus talks about how it's good to offend people, it emboldens some hacker news asshole who thinks that putting hardcore pornography in conference slides is a great way to stick it to the man
02:42:52 <GreyKnight> ais523: "We stole this but it was so terrible we'd like to give it back"? :o)
02:43:03 <Sgeo> There has been inappropriate imagery in conference slides
02:43:07 <kmc> http://geekfeminism.wikia.com/wiki/Sexualized_presentation
02:43:25 <ais523> GreyKnight: actualy what happened was that Donald Knuth got involved
02:43:26 <kmc> it's particularly characteristic of the Rails community
02:43:36 <ais523> which prompted ESR to investigate, and he then noticed it had been stolen
02:43:41 <kmc> they combine immature broishness with a misguided sense of rebellion
02:43:46 <kmc> but it happens everywhere
02:45:04 <Sgeo> What has been stolen?
02:48:37 <GreyKnight> Someone stole it, and then a crack team of ace detectives headed by Donald Knuth and ESR tracked the thieves to their lair downtown. There was a shootout and C-INTERCAL was eventually retrieved and returned to its rightful owners. The end.
02:49:02 <ais523> GreyKnight: basically, what happened was, that C-INTERCAL had been mostly dormant
02:49:14 <GreyKnight> oh and Professor Knuth got the girl (of course)
02:49:27 <ais523> and so when I patched it, I decided to just arbitrarily become maintainer, and released the patched version with the next available version number in the same place
02:49:30 <kmc> if you're interested in a vision of open source which is more friendly and inclusive, check out https://openhatch.org
02:49:45 <ais523> and it worked like a charm; at least, the entire esolang community went along with it, also Debian
02:49:56 <kmc> they work on helping beginners find suitable stuff to work on
02:50:04 <kmc> and helping them learn skills they need, online or at in-person workshops
02:50:24 -!- sebbu2 has joined.
02:50:25 <ais523> then Knuth decided (for reasons best known to himself) that he badly needed and esolang compiler
02:50:43 <GreyKnight> most open source stuff is friendly and inclusive, at least at the beginning ;-)
02:50:44 -!- sebbu2 has quit (Changing host).
02:50:44 -!- sebbu2 has joined.
02:50:58 <ais523> and, basically, emailed ESR with "hey, aren't you working on an INTERCAL compiler? I need one"
02:51:06 <ais523> then ESR discovered it had been maintained in his absence
02:51:11 <ais523> and now we're comaintainers
02:51:14 <ais523> (he contributed a test suite)
02:51:24 <ais523> (to the latest version I'd released)
02:52:42 <kmc> a crack team of ace detectives headed by Donald Knuth and ESR escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune.
02:53:03 <kmc> ais523: what's it like working with ESR?
02:53:25 -!- sebbu has quit (Ping timeout: 265 seconds).
02:53:36 <ais523> kmc: he believes we agree with each other more than I believe we agree with each other
02:53:57 <GreyKnight> If you need an algorithm, if no one else can help, and if you can find them, maybe you can hire the λ-Team.
02:55:19 <ais523> kmc: also he broke the build by not understanding why the autotools stuff was too complex
02:55:28 <ais523> although to his credit, he reverted when I explained
02:55:55 <ais523> (basically, it was a case involving cross-compilation)
02:56:12 <ais523> yeah, C-INTERCAL does even Canadian Crosses just fine
02:57:04 -!- sebbu has joined.
02:58:58 <GreyKnight> ais523 reading between the lines here and earlier, but have you gone and created the most advanced usage of autotools in the world :-I
02:59:32 -!- sebbu2 has quit (Ping timeout: 248 seconds).
02:59:51 <ais523> I thought that, I may as well do autotools properly
02:59:56 <ais523> because probably nobody has before ever
03:00:00 <ais523> except possibly in automake's test suite
03:02:17 <ais523> GreyKnight: let me put it this way: INTERCAL's mission is "different from everything else"
03:02:23 <ais523> note that this doesn't imply "worse", just "different"
03:02:36 <ais523> in cases where all existing projects ignored the standards, I made a point of following them
03:02:45 <ais523> for instance, there's a POSIX standard for tarballs that nobody actually uses
03:03:13 <ais523> (note that luckily, all standard tar programs can read POSIX standard tarballs; you know, just in case)
03:04:53 <ais523> "autotools but correctly" is thus pretty much closer to INTERCAL's mission statement than almost anything else
03:05:16 <Jafet> There exists a correct use of autotools?
03:05:21 <ais523> it even has automated tests that, e.g., out-of-tree builds work correctly – as part of generating the distribution tarball
03:05:25 <GreyKnight> Does C-INTERCAL also do things like checking the return code from printf()?
03:05:40 <ais523> GreyKnight: I'm not sure; it should, but that doesn't mean it does
03:05:58 <ais523> (and of course there's the usual issue of "what are you going to do if you get a short write anyway?", with typical uses of printf)
03:06:18 <Jafet> Okay, I have written programs that do that
03:06:39 <ais523> OTOH, checking the return value from /close/ is actually useful
03:06:43 <ais523> and yet people hardly ever do that either
03:06:48 <Jafet> http://codepad.org/xVFNe2LP
03:07:18 <ais523> also flush, which is even rarer
03:07:36 <Jafet> When does fclose fail
03:08:16 <kmc> GreyKnight: ♫
03:08:27 <ais523> Jafet: most commonly, if you've tried to write data since the last flush, it does that asynchronously (because, you know, you didn't flush), and it runs out of disk space trying to complete the async write
03:08:46 <ais523> there are other ways to set that up, but that particular scenario is actually even a plausible one
03:09:02 <Jafet> Not on my 2TB disks
03:09:22 <ais523> this is what things like tiny tmpfses and /dev/full are for
03:09:42 <ais523> $ cat /etc/passwd > /dev/full
03:09:43 <ais523> cat: write error: No space left on device
03:09:49 <ais523> /dev/full is one of my favourite special files ever
03:10:06 <ais523> it's notionally a zero-byte file on a filesystem with a quota of zero
03:10:11 <GreyKnight> WP says (on [[INTERCAL]]) "[...] C-INTERCAL, formerly maintained by Eric S. Raymond [...]"
03:10:22 <GreyKnight> Surely ais523 counts as famous by this stage
03:10:27 <ais523> because I didn't have a reliable source to prove I maintained it
03:10:33 <ais523> and yet it's easy to prove that ESR maintained it once
03:10:38 <ais523> GreyKnight: the wikipedia page on me was deleted
03:10:42 <ais523> it was probably the right decision
03:11:07 <kmc> autotools is ridiculous and strange, but it does solve a problem that few other tools handle
03:11:18 <GreyKnight> Jafet: data expands to fill the space available :-)
03:11:32 <kmc> my opinion of autotools actually improved after doing some non-trivial configure.ac editing
03:11:48 <quintopia> "alex smith, the guy who did one cool thing in life, but also happens to maintain c-intercal" best wikipedia article ever"
03:12:02 -!- sebbu2 has joined.
03:12:02 -!- sebbu2 has quit (Changing host).
03:12:02 -!- sebbu2 has joined.
03:12:30 <kmc> ais523: you're still mentioned on the disambig though
03:12:43 <ais523> yeah, seems about right
03:12:53 <ais523> am I still the world's 11th most famous alex smith?
03:12:57 <ais523> this is an accolade I can get behind
03:13:05 <GreyKnight> maintaining C-INTERCAL counts as cool surely
03:13:06 <Sgeo> I don't see him in disambig
03:13:09 <ais523> (it is a very common name)
03:13:13 <Jafet> kmc: mainly because nobody wants to write another tool that does that autotools does
03:13:14 <ais523> Sgeo: disambig for "alex smith"
03:13:23 <ais523> it needs a /lot/ of disambiguating
03:13:34 <ais523> but it's still in early stages
03:13:36 <Jafet> ais523: google only shows 10 results per page
03:13:44 <ais523> Jafet: based on Wikipedia
03:13:44 <Jafet> But we have faith in you
03:13:47 <GreyKnight> for the lazy: http://en.wikipedia.org/wiki/Alex_Smith_%28disambiguation%29
03:13:52 <ais523> which is awful at distinguishing alex smiths from each other
03:14:12 <GreyKnight> [[Alex Smith]] is some American football player, yawn
03:14:12 <Jafet> You're getting it mixed up. Wikipedia is a source of nobility. Google is the source of fame.
03:14:13 <ais523> it's added a bunch more footballers
03:14:55 <kmc> Jafet: yeah... Git uses a 3000 line Makefile which is full of explicit "ifeq ($(uname_S),FreeBSD)", rather than testing for the respective features
03:15:09 <kmc> https://github.com/git/git/blob/master/Makefile
03:15:19 -!- sebbu has quit (Ping timeout: 252 seconds).
03:15:28 <GreyKnight> I tried to read the [[Alex Smith]] page but I got *bored out of my mind*
03:15:41 <ais523> GreyKnight: yeah, that isn't me :)
03:15:46 <Jafet> At first I read that it was calling uname like 3000 times
03:16:33 <kmc> i'm sure this approach is better in some ways, but it's not exactly ponies and rainbows
03:16:49 <Jafet> Makefile conditionals are fun. There isn't an "elseif" directive
03:17:44 <Jafet> endif endif endif endif endif endif endif endif endif endif endif endif endif endif endif endif endif endif
03:17:57 <ais523> oh, btw, C-INTERCAL actually compiles on DOS
03:18:11 <ais523> (admittedly you need a DOS port of bash, but they aren't massively hard to come by)
03:18:15 <kmc> i used to think that the stuff autoconf tests is irrelevant on modern systems
03:18:21 <GreyKnight> "In week 5, Smith was booed at home and the crowd chanted for his backup, David Carr, before leading the 49ers to two scoring drives to close within three points." I don't understand why we can have pages and pages of this but no Pokemon articles
03:18:35 <kmc> then i worked on Mosh and saw how much conditional stuff was required to build that on just Linux, FreeBSD, and OS X
03:18:40 <kmc> (and by now a few other platforms)
03:19:00 <kmc> of course we also check for a ton of stuff that's irrelevant on modern systems just because
03:19:11 <ais523> kmc: autotools removed its test for the existence of #! :(
03:19:12 <kmc> checking if size_t is an integer and not a bobcat... ok
03:19:16 <ais523> so I had to rewrite it by hand
03:19:29 <ais523> it's actually relevant on DOS
03:19:30 <kmc> you couldn't just revert their removal?
03:19:49 <ais523> dnl Yes, that is a valid email address. If your mailer doesn't support nested
03:19:51 <ais523> dnl comments, then get a better mailer.
03:19:54 <ais523> kmc: I can't commit to autoconf's codebase
03:20:28 <kmc> ok but you couldn't rip out whatever macro they had and bundle it?
03:20:28 <ais523> oh yeah, and autoconf is kind-of buggy in other ways too
03:20:30 <ais523> dnl Don't assume yacc exists just because bison doesn't (wtf autoconf...)
03:20:35 <ais523> kmc: I pretty much did that
03:21:26 <kmc> that is fairly wtf
03:21:34 <GreyKnight> checking if sizeof(int) is non-negative... ok
03:21:47 <ais523> GreyKnight: which configure script is this? :)
03:22:15 <ais523> I'm actually running C-INTERCAL's now, just for fun
03:22:16 <GreyKnight> ...I assumed the bobcat one was made-up too but you never know I guess
03:22:29 <ais523> (./config.status --recheck in the build dir)
03:22:51 <ais523> nothing there is massively crazy
03:23:27 <ais523> although "checking for clock_gettime... no" looks like a bug
03:23:34 <ais523> because I'm moderately sure clock_gettime exists on Linux
03:23:45 <ais523> perhaps it's a missing -lrt in the test
03:23:57 <ais523> really, autotools should let you know what libraries the functions you request exist in
03:24:23 <ais523> aimake does that, although in order to avoid it scanning the entirety of /usr/lib for functions (which it can do but takes a while), you currently have to suggest to it names of libraries it they might be in
03:25:08 <ais523> aimake is awesome, but unfinished and a little buggy
03:25:21 <ais523> in particular, I can't figure out how to get it to make shared libraries, due to a chicken-and-egg problem
03:25:55 <ais523> (basically, you need to know if the functions included in a file are destined to go into a shared library to know what options to give when compiling it, but need to compile it to see which functions it contains)
03:26:08 <ais523> the aim of aimake is low-configuration builds that just work
03:26:46 <ais523> here's a nice comparison: http://sprunge.us/KPED
03:28:12 <ais523> and here's aimake.config itself: http://sprunge.us/bMJZ
03:29:01 <ais523> note that nothing in aimake.config could reasonably be guessed by the build system
03:29:20 <ais523> except maybe the rule for .o
03:30:35 <GreyKnight> I like this. I have parts of a lisp make system with a similar end in mind
03:30:50 <GreyKnight> just make it *work* and get out of the way
03:31:33 <ais523> aimake is written in Perl, and the reason is, because I realised there were only two languages it could possibly be written in
03:31:42 <ais523> both have to be widely installed already on people's systems
03:31:48 <ais523> I think I even backported it to Perl 5.8
03:31:59 <ais523> oh and it can't use any libraries that aren't part of a standard minimal distribution
03:32:23 <kmc> you forgot posix sh
03:32:32 <ais523> this is why it uses Perl syntax for the config file (parseable using Safe+eval, which is part of Perl's standard distribution), rather than something like YAML, which needs libraries or else rewriting a parser from scratch
03:32:42 <ais523> kmc: I have a feeling that wouldn't work
03:32:51 <ais523> also, Perl works just fine on Windows
03:32:59 <ais523> aimake doesn't, but only because of missing entries for Windows in its config files
03:33:04 <Jafet> kmc: hey, you wouldn't even need to test for a usable shell then!
03:33:08 <GreyKnight> I only use my thing for my own use so I could at least rely on stuff being installed ;-)
03:34:09 <ais523> I haven't really used it for anything but nh4
03:34:12 <ais523> and a few test programs
03:34:16 <ais523> actually the nh4 repo is the aimake repo atm
03:34:24 <ais523> I originally had them separate but it was too much effort
03:34:40 <ais523> the other thing I did with aimake was to ensure that it was all one file
03:34:42 <ais523> that you could just ship
03:34:56 <ais523> well you can't atm because I haven't put explicit licensing conditions on it
03:35:17 <ais523> probably I'd go GPLv3 eventually
03:35:25 <Jafet> Is anyone using nh4 yet
03:35:28 <ais523> given that it's a build system and thus doesn't need to have the same license as the thing it's building
03:35:36 <ais523> Jafet: sure; there's a public server, people play on it
03:36:26 <ais523> someone's playing it atm, actually
03:40:24 <ais523> it's not as popular as 3.4.3 yet, though
03:40:29 <ais523> partly because it's rather unfinished
03:42:57 <Sgeo> Hmm, maybe I should start playing Brogue again
03:42:59 <Jafet> I was playing powder the other day
03:43:03 <Sgeo> There are no Brogue servers :(
03:43:24 <Jafet> It has an interactive tutorial, where at one point there are items on the ground and you are asked to use-identify them
03:43:37 <Jafet> But the items are randomly generated in each tutorial
03:43:44 <kmc> unfortunately if you use GPL then a lot of people and companies will irrationally shun your software
03:43:55 <kmc> even if they are totally capable of complying with the terms
03:44:19 <kmc> using BSD or MIT license will reduce the amount of bullshit and trolls directed your way
03:44:24 <Sgeo> kmc, what about public domain? Does that get shunned?
03:44:30 <kmc> this might be a bad reason to do something, but there you go
03:44:52 <kmc> Sgeo: no, only by pedants (like me) who point out that it's legally ambiguous at best
03:45:08 <Jafet> wtfpl is fairly unambigious
03:45:11 <Sgeo> I thought we were talking about shunning because of a fear of open source in general
03:45:17 <Sgeo> An idea that proprietary is better
03:45:23 <kmc> not all jurisdictions have a concept of "public domain" and even if they do, you can't necessarily place things into it other than by dying and waiting 70 years
03:45:37 <kmc> Sgeo: no, i'm talking about a hatred of the GPL and a fear of its viral clauses
03:45:51 <kmc> a lot of companies forbid the use of any GPL software internally, or require explicit approval
03:45:56 <kmc> and are perfectly fine with permissive licenses
03:46:13 <kmc> they are terrified that a bit of GPL code will get into something they make and that 10 years later they will get sued for some huge amount
03:46:30 <kmc> WTFPL is amusing but you should at least pair it with a warranty clause if you're distributing software
03:46:34 <Jafet> Actually, that is not an unrealistic fear
03:46:44 <Jafet> Do warranty clauses even mean anything
03:46:54 <kmc> CC0 is a long-winded but comprehensive waiver of all copyright and associated rights
03:47:06 <kmc> Jafet: i don't know, IANAL, but people i've talked to seme to think it's important
03:47:23 <kmc> and specifically that parts need to be in ALL CAPS because case law holds that warranty disclaimers must be prominent
03:47:38 <Jafet> It's not like software writers assume themselves to be held liable for any bugs anyway
03:47:58 <kmc> Jafet: yeah, it's not totally unrealistic fear; otoh I think some parties go way too far
03:47:58 <GreyKnight> can we have an HTML license with blink tags for prominence :-I
03:48:13 <kmc> also if you use GPL then random trolls who have no interest in your software will join your IRC channel to tell you to burn in hell
03:48:19 <kmc> it's really remarkable
03:48:58 <kmc> Jafet: it doesn't matter if you assume yourself to be liable; it matters if the courts hold you liable
03:49:34 <kmc> and there's some idea that you are liable by default, but can disclaim some of that
03:49:36 <Sgeo> Some open-sourced project's project manager attempted to put the project under public domain, without asking any of the contributors (myself included)
03:49:54 <Jafet> If the courts have held programmers liable before, they would not think that they are so liable
03:50:09 <Jafet> I wonder how much case law is there for this
03:50:17 <kmc> yeah, i don't know
03:51:42 <kmc> Sgeo: sucks
03:51:42 <Jafet> <H1><BLINK><MARQUEE>THIS SOFTWARE IS PROVIDED WITH ABSOLUTELY NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. THE AUTHORS DISCLAIM RESPONSIBILITY FOR ALL LOSS OR DAMAGE CAUSED BY THIS SOFTWARE, EVEN IF USED IN AIR TRAFFIC CONTROL, MOTOR VEHICLES, NUCLEAR REACTORS OR PACEMAKERS IF YOU ARE CRAZY ENOUGH TO DO THAT. DO YOUR EARS HURT YET?</MARQUEE></BLINK></H1>
03:53:59 <ais523> kmc: the all caps thing is because the law just says "prominent"< which is a little hard to define
03:54:07 <ais523> but there's case law saying that all caps is sufficient
03:54:15 <kmc> yeah that is what i have heard as well
03:54:19 <ais523> and faced with a strategy that's known to work, and several others which might or might not work
03:54:24 <Jafet> You never see warranty disclaimers in "about" dialogs though
03:54:27 <ais523> lawyers tend to take the safe route
03:54:35 <ais523> Jafet: there's one in jettyplay's, fwiw
03:54:35 <kmc> i think the intent of the law was to avoid people putting disclaimers in tiny text
03:54:45 <kmc> Jafet: huh, i think i have seen them
03:55:08 <ais523> hmm, let me look at the EULA the lawyers at work wrote
03:55:34 <ais523> for anyone else who wants to laugh, https://sites.google.com/site/thegeometryofsynthesis/download/licence
03:55:59 <Jafet> Isn't licence a verb
03:56:07 <ais523> but that's the spelling the lawyers gave us
03:56:11 <ais523> and who am I to fix it?
03:56:26 <ais523> (also I'm pretty sure I made that mistake myself in jettyplay)
03:57:08 <ais523> apart from the teaching
03:57:10 <ais523> which is also my day job
03:57:13 <ais523> I have two part-time jobs atm
03:57:39 -!- etb has joined.
03:59:16 <GreyKnight> dammit stop being good at everything >:-(
03:59:26 <ais523> I'm not good at everything
03:59:32 <ais523> but I tend to talk mostly on subjects I'm good at
04:00:05 <quintopia> ais523: stealth does a shallow poke, then builds some decoys before doing its wiggle clear, right?
04:00:25 <ais523> 5 with a nearby enemy, 7 if it was further away
04:00:31 <ais523> oh and if it reaches tape length 11, it builds them anyway
04:00:37 <ais523> then does a wiggled undermine
04:00:52 <quintopia> what if you made the decoy closest to its flag have a value equal to its distance from the flag
04:00:56 <ais523> if the enemy sets decoys to 11 in the meantime
04:01:07 <ais523> quintopia: huh, why would that help?
04:01:37 <ais523> (the wiggled undermine only helps in a specific range of tape lengths, but it's awesome there and beats basically every BF Joust program in existence)
04:02:03 <ais523> quintopia: you mean to work out where on the tape we were? it's both vulnerable to enemy interference, and requires way too long to check
04:02:10 <quintopia> it could clear it to figure out instantly where its own flag was
04:02:18 <quintopia> and then build the large decoys in front of its flag
04:02:46 <ais523> quintopia: yeah but if it encounters, say, a "2"
04:02:49 <ais523> is that two spaces from its own flag
04:02:52 <ais523> or the enemy trailing 2s
04:02:55 <ais523> (space_hotel trails 2s)
04:03:35 <quintopia> it could be fooled for sure, but it has a series of 5s in front, so it will probably be back there before the enemy changes it
04:04:34 <quintopia> alternately you could have a sequence of decoys that increase away from the flag. then you will know where you are from any of them and also have error correction built in
04:04:37 <ais523> especially against the programs it's trying to beat
04:04:58 <ais523> actually the medium-sized decoys, I might gain a bit more time by mixing the reverse and forward setup
04:05:19 <ais523> and the initial decoy setup, I cannot really stall on
04:05:22 <ais523> time there is really previous
04:05:33 -!- copumpkin has quit (Ping timeout: 252 seconds).
04:05:39 <ais523> the 5 on cell 3 is basically the biggest compromise I'm willing to make
04:05:54 <ais523> and that's only to ensure that pokes don't find the flag itself
04:06:05 -!- copumpkin has joined.
04:06:14 <quintopia> i dont propose to change that setup
04:06:28 <quintopia> im only talking about the decoy build after the shallow poke
04:06:39 <quintopia> while you still know where you are
04:07:21 <ais523> actually originally that code didn't know where it was
04:07:28 <ais523> I split it out for a little finer control
04:07:36 <ais523> so I guess I could make the medium build vary
04:08:20 <quintopia> if you dont try the increasing decoys away from the flag thing, i might. it seems like it could provide a lot of data if you could figure out how to analyze it
04:08:57 <ais523> quintopia: I'd be interested to see what you come up with
04:09:03 <ais523> actually, I'm kind of happy that stealth isn't #1
04:09:14 <ais523> it beats the current "best programs", at least over half the time
04:09:20 <ais523> but it loses to more normal stuff
04:09:23 <quintopia> i didnt actually see where it landed
04:09:27 <ais523> hopefully this will get a bit of diversity back in the hill
04:09:35 <ais523> but much higher on points
04:10:07 <ais523> it's #4 on points, though
04:10:13 <ais523> and just churn at the bottom of the hill
04:11:35 <ais523> http://esolangs.org/wiki/BF_Joust
04:11:43 <ais523> kind-of surprised you haven't noticed it in the past
04:11:51 <ais523> but it's the best competitive eso sport ever
04:11:58 <ais523> (possibly because there aren't many competitive eso sports)
04:12:31 <kmc> not to be confused with competitive ero sport
04:12:39 <Jafet> I wonder what's become of corewars
04:12:53 <kmc> i'm impressed with how deeply BF Joust strategy is developed
04:13:25 <ais523> yeah, the current rules have kept on giving
04:13:32 <ais523> although defence is mostly dead nowadays
04:13:45 <ais523> shudderlock is my best attempt at that and it's #12
04:14:24 <kmc> MIT runs an AI competition game every year
04:14:33 <kmc> i guess it is not much like corewars though
04:14:39 <kmc> http://www.battlecode.org/
04:15:21 <kmc> i like the artificial life research that grew out of corewars
04:16:48 <ais523> quintopia: how does space_hotel deal with shudderlock, btw?
04:17:27 <ais523> flexible timer clear, by the look of it
04:17:50 <ais523> I'm annoyed at that existing, even though I invented it
04:19:54 <ais523> wait, is space_hotel vulnerable to triplocks? seriously?
04:20:07 <ais523> ah, but only on small decoys
04:20:47 <ais523> !bfjoust small_triplock >>>+++<++([]+++)*-1
04:20:59 <EgoBot> Score for ais523_small_triplock: 1.8
04:21:02 <ais523> yeah, that's a good compromise
04:21:13 <Jafet> "BF Joust was introduced as a contest within the nomic Agora"
04:21:17 <ais523> no way you're going to be able to do an entire full tape clear in four cycles
04:22:22 <ais523> it's probably vibratable, actually, but only for a draw not for a win
04:34:07 <kmc> *-1 produces a notionally infinite program, right?
04:39:00 <Jafet> I feel that programs should also be scored on their lengths
04:39:30 <Jafet> Against which competitors does !bfjoust joust?
04:40:04 <ais523> a selection of 48 programs through BF Joust history
04:40:35 <ais523> if considering those 48 programs and your new submitted program, your new program doesn't come last
04:40:40 <ais523> then it pushes the last of those 48 off
04:40:53 <ais523> so good programs stay for ages because 48 better programs are needed to push them off
04:41:02 <ais523> but even quite bad programs can stay on the hill for a while if they were submitted recently
04:41:07 <ais523> because all that's needed is for them to not be last
04:41:26 <ais523> you can delete programs for the hill if you need to for some reason (most commonly because they're near-duplicates of another)
04:43:20 <EgoBot> Score for Jafet__: 8.0
04:43:34 <ais523> that is not a very good program
04:43:58 <ais523> it moves to the second cell, attempts to zero it (it's already zero), moves to the third cell, then just stops
04:44:17 <ais523> !bfjoust the_first_program_ever [>-]
04:44:20 <EgoBot> Score for ais523_the_first_program_ever: 0.0
04:44:24 <ais523> err, what did I get wrong there
04:44:31 <ais523> !bfjoust the_first_program_ever [>[-]+]
04:44:34 <EgoBot> Score for ais523_the_first_program_ever: 7.0
04:44:36 <ais523> that was the first program ever
04:45:27 <ais523> it… doesn't do too well nowadays
04:46:12 <kmc> !bfjoust (>)*9([-]>)*21
04:46:12 <EgoBot> Use: !bfjoust <program name> <program> . Scoreboard, programs, and a description of score calculation are at http://codu.org/eso/bfjoust/
04:46:20 <kmc> !bfjoust dumb (>)*9([-]>)*21
04:46:23 <EgoBot> Score for kmc_dumb: 18.4
04:47:24 <etb> !bfjoust suicide (>)*9[[(-)*128.>]>]
04:47:26 <EgoBot> Score for etb_suicide: 8.4
04:47:39 <etb> !bfjoust suicide <
04:47:42 <EgoBot> Score for etb_suicide: 0.0
04:47:45 <ais523> etb: your loop structure is a little broken there, isn't it?
04:48:04 <ais523> !bfjoust naive_turtle (>)*8(>(-)*128)*21
04:48:07 <EgoBot> Score for ais523_naive_turtle: 1.4
04:48:15 <etb> !bfjoust suicide (>)*9([(-)*128.>]>)*21
04:48:15 <ais523> !bfjoust naive_turtle (>)*8(>(-)*128.)*21
04:48:18 <EgoBot> Score for etb_suicide: 19.6
04:48:19 <EgoBot> Score for ais523_naive_turtle: 3.9
04:48:29 <ais523> should be at least non-naive enough not to fall off the tape if all works well
04:48:45 <ais523> suicide's actually good enough to just make the hill
04:49:12 <ais523> I doubt it'll survive there long :)
04:49:19 <ais523> waterfall2 got pushed off
04:49:19 <EgoBot> Score for Jafet_test: 8.0
04:49:30 <ais523> Jafet: that program consistently scores like 8, and has done for ages
04:49:42 <Jafet> How is score calculated?
04:49:47 <etb> ah i'm off now too
04:49:59 <ais523> Jafet: basically, you get more points for beating better programs
04:50:09 <ais523> and don't lose score for losing
04:50:19 <ais523> this leads to a circular dependency between scores, but it just solves the equations
04:50:49 <Jafet> So every program is rescored each time a new program gets to the hill
04:51:25 <ais523> new programs entering at the bottom can shuffle the order on the hill
04:51:32 <ais523> and when waterfall3 was added and beat every existing program
04:51:42 <ais523> someone managed to screw up the hill by submitting 47 copies of it
04:51:45 <ais523> and we had to restore from backups
04:52:01 <ais523> in the end, they went to just one copy, then I tweaked it to beat the old version of itself too :)
04:53:36 <Jafet> !bfjoust test (+)*100000
04:53:40 <EgoBot> Score for Jafet_test: 13.7
04:53:50 <ais523> Jafet: that program is submitted frequently
04:54:00 <ais523> !bfjoust this_test_worked_better (+--)*-1
04:54:04 <EgoBot> Score for ais523_this_test_worked_better: 17.0
04:54:07 <Jafet> I wouldn't be surprised
04:54:31 <Jafet> I imagine the programs on the hill detect it
04:54:46 <ais523> the problem with shudders like that is that they're very easy to add in protection against
04:54:52 <ais523> without compromising your main strategy at all
04:55:24 <ais523> something like [-][+[+.++]] is only one cycle than [-] if the opponent isn't actively defending
04:55:30 <ais523> *only one cycle slower
04:55:41 <etb> entering [ with *p==0 moves to after companion ]?
04:56:02 <ais523> but the matching ] doesn't
04:56:48 <kmc> is the idea of +-- to cross zero more often, so that the opponent will be tricked into falling off the end?
04:57:21 <ais523> kmc: I don't know, I wasn't involved in the early days of shudder
04:57:25 <ais523> I always preferred vibration
04:57:41 <ais523> !bfjoust vibration >(+)*128<(+)*128(+-)*-1
04:57:45 <EgoBot> Score for ais523_vibration: 29.9
04:58:07 <ais523> oh come on, it's at #18 :)
04:58:10 <kmc> and why the decoy?
04:58:19 <ais523> can't set the flag to 0 in time without it
04:58:35 <ais523> the idea's that most programs move straight on if they see a 0 on a cell
04:58:40 <ais523> so you can trick them off the end of the tape
04:58:46 <ais523> !bfjoust vibration >>>(+)*128<<<(+)*128(+-)*-1
04:58:49 <EgoBot> Score for ais523_vibration: 30.0
05:00:00 <ais523> etb: also re patience: it's generally considered polite to submit programs in-channel so that people can discuss them, all the programs are public knowledge anyway
05:00:18 <ais523> especially because you're blowing away useful breakdown results
05:00:21 <ais523> !bfjoust vibration >>>(+)*128<<<(+)*128(+-)*-1
05:00:25 <EgoBot> Score for ais523_vibration: 30.0
05:00:53 <ais523> how is this beating all these top programs?
05:01:01 <ais523> Gregor: ffspg loses to vibration, of all things!
05:01:13 <Jafet> I assume bfjoust is anything but transitive
05:01:31 <ais523> Jafet: definitely, it'd be no fun if it were
05:01:33 <etb> didn't want to clutter it in here with beginner experiments
05:02:07 <ais523> etb: if you want a private place for experiments, there's http://codu.org/eso/bfjoust/egojsout/
05:02:12 <ais523> which is an online BF Joust debugger
05:02:17 <Gregor> ais523: All the femdom girls have weird failure cases.
05:02:24 <etb> ais523: thanks
05:02:46 <ais523> Gregor: I'm more amused at all the ways I've discovered to beat it since it utterly dominated the hill
05:02:51 <ais523> if only I'd found them at the time :)
05:03:23 <ais523> !bfjoust vibration >(+)*128<(+)*128(+-)*-1
05:03:23 <Jafet> ais523: but why is the hill ranked then
05:03:27 <EgoBot> Score for ais523_vibration: 28.3
05:03:32 <ais523> !bfjoust vibration >>>(+)*128<<<(+)*128(+-)*-1
05:03:36 <EgoBot> Score for ais523_vibration: 30.0
05:03:41 <ais523> Jafet: it measures how you do against a wide selection of programs
05:03:54 <ais523> like, there are good old programs, and hot new newcomers
05:04:02 <ais523> and defensive programs and slow rushes and fast rushes
05:04:06 <ais523> so it's a nice cross-section
05:04:12 <ais523> and if a strategy starts dominating, you can pick on it
05:04:49 <etb> !bfjoust mimic (>(+)*128)*5(<)*5(+)*128(+-)*-1
05:04:53 <EgoBot> Score for etb_mimic: 14.8
05:05:44 <ais523> try reading the article on reverse decoy setup on the wiki for an explanation as to why that typically doesn't work
05:05:48 <Gregor> Jafet: Yeah, the hill is a very living entity. There's not even such a concept as a truly "best" program.
05:06:30 <Sgeo> ...there's a BF Joust wiki?
05:07:03 <Sgeo> Cool, there's a website called programminggames.org
05:07:08 <ais523> no, the strategies page on esolangs
05:07:17 <etb> http://esolangs.org/wiki/BF_Joust_strategies
05:08:38 <etb> !bfjoust mimic (>)*9(+)*128(<)*9(+)*128(+-)*-1
05:08:42 <EgoBot> Score for etb_mimic: 15.9
05:09:04 <Sgeo> http://tclrobots.org/sample-robots/
05:09:05 <etb> i called it mimic because i'm just copying vibration
05:09:12 <Sgeo> I seem to be reminded of how beautiful Tcl is
05:09:35 <ais523> etb: this sort of experimentation is fine, it's how everyone got started
05:09:44 <Jafet> tcl is beautiful in the sense that it isn't
05:10:10 <Bike> and truly, isn't that the greatest beauty of all
05:10:19 <ais523> Jafet: as an elaboration on what Gregor is saying, something like space_hotel is top of the hill for good reason, but under a metric like "is good at defeating the top programs on the hill", something like stealth does better
05:10:32 <ais523> well, space_hotel beats everything, or used to at least
05:10:59 <Sgeo> Tcl's rather elegant, just needs a different standard library
05:11:16 -!- copumpkin has quit (Ping timeout: 248 seconds).
05:11:32 <quintopia> !bfjoust tetris_slowrush >++++++>(+)*15>(-)*40(>[>>>>(>(+)*40[-][+][-])*25]------>[>>>>(>(-)*40[+][-][+])*25](+)*15> [>>>>(>(+)*40[-][+][-])*25](-)*40>[>>>>(>(-)*40[+][-][+])*25]------>[>>>>(>(+)*40[-][+][-])*25](+)*15> [>>>>(>(-)*40[+][-][+])*25](+)*40)*26
05:11:35 <EgoBot> Score for quintopia_tetris_slowrush: 18.4
05:11:41 -!- ogrom has joined.
05:11:56 -!- copumpkin has joined.
05:12:03 <ais523> that's using the collision strategy, right?
05:12:32 <quintopia> its just a basic slowrush that skips some decoys
05:12:41 <ais523> well I meant the >>>> in the loop
05:13:15 <ais523> I should revisit collision some time, really
05:13:49 <ais523> in this age of everything building loads of decoys, it would make fast rushes faster without really hurting them at all
05:14:01 <ais523> just fast rush is a bit underrepresented atm
05:14:48 <ais523> quintopia: oh, I have a request to make
05:15:02 <ais523> can you submit an edited version of space_elevator that doesn't use parens in comments, please?
05:15:13 -!- TeruFSX has quit (Ping timeout: 252 seconds).
05:15:22 <ais523> cranklance seems not to care, but juiced bitches at it (probably correctly)
05:15:30 <ais523> it sees ( and ), which are valid commands
05:15:35 <ais523> but no %n or *n after it
05:15:43 <ais523> my personal BF Joust interp that I use for testing
05:16:15 <ais523> basically, ( and ) aren't actually comments in BF Joust
05:16:34 <ais523> I guess I could just change juiced to be more bug-compatible with cranklance
05:16:35 -!- Frooxius has quit (Ping timeout: 255 seconds).
05:16:38 <ais523> but I don't like doing that
05:16:45 <ais523> I bitched enough about the whitespace between * and number thing
05:17:03 <quintopia> i think there's only the one set of parens in space_elevator that isnt code
05:17:57 <quintopia> why not just add a line to juiced that globally replaces ) not followed by * with )*0 and saves it
05:18:04 <quintopia> then you arent touching your core code
05:18:06 <etb> !bfjoust tinkle >[]<(+)*-1
05:18:12 <EgoBot> Score for etb_tinkle: 13.7
05:18:17 <ais523> EgoBot: if you're trying to tripwire
05:18:21 <ais523> set the cell to something nonzero
05:18:28 <ais523> or your loop will just end immediately
05:18:41 <etb> is the playing field not randomized?
05:18:53 <etb> that makes a big difference, hehe
05:19:00 <ais523> it's at the core of decoy setting
05:19:11 <etb> !bfjoust tinkle >-[]<(+)*-1
05:19:12 <quintopia> ...but thats an interesting idea :P
05:19:15 <EgoBot> Score for etb_tinkle: 9.6
05:19:17 <ais523> quintopia: no it isn't
05:19:27 <ais523> it's basically a race of "who writes the best tuned reverse offset clear"
05:20:10 <ais523> because it'd take way too long to clear your own decoys to be able to set them to appropriate values
05:20:18 <ais523> quintopia: no, just the implications are reasonably clear
05:20:25 <ais523> it's basically "both programs have infinite free decoys"
05:20:53 <ais523> thus, there's no incentive to use any sort of clear loop but turtle and reverse offset
05:20:59 <etb> on a general note, the history section on the wiki lacks any actual dates
05:21:02 <quintopia> if the playing field was a bilaterally symmetrical distribution selected from {-3,-2,-1,0,1,2,3}?
05:21:03 <ais523> and the matching defensive programs
05:21:15 <ais523> we could try to determine them, I guess
05:21:23 <ais523> quintopia: oh, that's more interesting than purely random
05:21:34 <ais523> wouldn't be too dissimilar to what we have atm, except that fast pokes wouldn't exist
05:21:37 <etb> at least an approximate year would be good to know
05:21:43 <ais523> and reverse tripwire setting would take a little longer
05:22:22 <etb> "At the beginning of a battle, every cell is set to zero" whoops
05:22:53 -!- nys has quit (Quit: quit).
05:23:01 <quintopia> the one where you implement a palindrome detector that guesses when its in the "backwards" half of the palindrome and then jumps right the other flag
05:23:30 <quintopia> which is foiled by the other player putting decoys in random places etc
05:26:30 <etb> !bfjoust geddy_lee (>)*9(((+)*3[-].>)>)*21
05:26:34 <EgoBot> Score for etb_geddy_lee: 0.0
05:26:57 <etb> hm, as good as the original suicide <
05:27:13 * ais523 looks for obvious problems
05:27:17 <ais523> oh, you have unmatched parens
05:27:23 <ais523> a () without a * or % afterwards
05:27:39 <ais523> seems like cranklance interprets that as commenting out everything in between
05:27:42 <etb> !bfjoust geddy_lee (>)*9((+)*3[-].>)*21
05:27:45 <EgoBot> Score for etb_geddy_lee: 9.6
05:29:04 <EgoBot> Use: !bfjoust <program name> <program> . Scoreboard, programs, and a description of score calculation are at http://codu.org/eso/bfjoust/
05:29:14 <EgoBot> Score for shachaf_hi: 13.6
05:29:46 <ais523> shachaf: that's just a polarity inverted always-increment program
05:29:50 <ais523> so will have the same score
05:30:04 <ais523> the best name I ever saw for that program was "you_spin_me_right_round", I forget who came up with it
05:30:18 <EgoBot> Score for shachaf_ho: 13.6
05:30:24 <Jafet> !bfjoust 'lo (+-)*-1
05:30:28 <EgoBot> Score for Jafet__lo: 10.1
05:30:36 <shachaf> Maybe I should read the rules.
05:30:37 <Jafet> Probably a parity thing
05:31:15 <Jafet> !bfjoust __ (+-+-+-+)*-1
05:31:19 <EgoBot> Score for Jafet___: 12.7
05:31:52 <ais523> !bfjoust vibration >>>(+)*128<<<(+)*128(+-)*-1
05:31:56 <EgoBot> Score for ais523_vibration: 30.0
05:31:59 <ais523> let's try without the decoy
05:32:03 <ais523> !bfjoust vibration (+)*128(+-)*-1
05:32:06 <EgoBot> Score for ais523_vibration: 28.0
05:32:18 <EgoBot> Score for shachaf_hi: 11.7
05:32:21 <ais523> !bfjoust vibration >>>>(+)*128<<<<(+)*128(+-)*-1
05:32:25 <EgoBot> Score for ais523_vibration: 21.1
05:32:29 <ais523> !bfjoust vibration >>(+)*128<<(+)*128(+-)*-1
05:32:32 <EgoBot> Score for ais523_vibration: 30.0
05:32:50 <ais523> using no decoy would beat leviathan
05:32:58 <ais523> but is less good against various other programs
05:33:27 <ais523> !bfjoust vibration >>(+)*128<<.(+)*128(+-)*-1
05:33:31 <EgoBot> Score for ais523_vibration: 17.8
05:33:37 <ais523> haha, look at that parity dependence :)
05:33:41 <ais523> !bfjoust vibration >>(+)*128<<(+)*128(+-)*-1
05:33:44 <EgoBot> Score for ais523_vibration: 30.0
05:34:04 <Jafet> !bfjoust communism (>(+)*128.)*-1
05:34:07 <EgoBot> Score for Jafet_communism: 8.4
05:34:37 <ais523> those did really well back when they were invented
05:34:44 <ais523> then people started taking countermeasures against them
05:34:50 <ais523> and now they're sprinkled throughout the hill
05:35:54 <etb> !bfjoust quixote (>)*9[>+]
05:35:57 <EgoBot> Score for etb_quixote: 7.0
05:36:12 <etb> ha expected much worse
05:36:15 <Jafet> Has anyone tried genetic programming for bfjoust
05:36:22 <ais523> yeah, that's likely to jam unless it hits an enemy decoy
05:36:31 <Jafet> I assume it didn't work then
05:36:36 <ais523> evo1 fell off the hill eventually
05:36:47 -!- GreyKnight has quit (Ping timeout: 265 seconds).
05:36:48 <ais523> it was produced by evolving some of the example programs from the wiki, IIRC
05:37:04 <ais523> the problem is that a good complex clear loop can't really be generated by evolving at a low level
05:37:13 <ais523> without way too many tests
05:37:39 <Jafet> Well, evolving at the instruction level isn't going to work
05:38:38 -!- Bike has quit (Ping timeout: 255 seconds).
05:40:38 <etb> looking at space_hotel now... my.
05:40:58 <ais523> normally, there's some sort of pattern
05:41:02 -!- Bike has joined.
05:41:15 <ais523> just one more complex than can be encoded with ()* and ({})%
05:42:03 <Jafet> Also, they are brainfuck programs
05:42:09 <Jafet> "what do you expect"
05:43:12 <etb> compared to our one-liners
05:43:22 <etb> 6700 lines of generated bf code
05:43:32 <etb> it looks goooood
05:45:13 <etb> ++++++++++[>++++++++>++++++++++>+++>++++++++++++>+++++++++++<<<<<-]><+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.>>+.>++.<++.>>>+++++++.--.+.<<<<<+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
05:48:17 <ais523> you can often do pretty well just with one-liners
05:48:25 <ais523> triplock3 was a one-liner, and did great when it first came out
05:48:33 <ais523> basically because nobody had invented the countermeasure yet
05:48:45 <ais523> nowadays everyone protects their code from triplocking
05:48:55 <ais523> and as such, triplocking fell off the hill altogether
05:49:03 <Bike> how many people are involved with this
05:49:43 <ais523> see for yourself: http://codu.org/eso/bfjoust/in_egobot/report.txt
05:50:14 <ais523> submitting username is listed on the hill
05:50:28 <ais523> both for namespacing to avoid clashes, and so we know who to talk to about it
05:56:37 <quintopia> etb: space_hotel is not generated. its all hand-coded with help of copy/paste
05:56:48 <etb> quintopia: hott
05:57:26 <etb> quintopia: that's impressive
05:58:04 <quintopia> look at gregor's stuff for examples of generated programs
05:58:16 <Fiora> has someone made a bf programming language with a preprocessor to automate copypasting and the like?
05:58:31 <etb> !bfjoust fools_odds (>)*15[-].
05:58:34 <EgoBot> Score for etb_fools_odds: 3.8
05:58:58 <Bike> Fiora: there are some with procedures and stuff.
05:59:09 <shachaf> Fiora: Isn't that what the bfjoust thing does?
05:59:25 <Bike> and yeah, i was assuming the numbers were some kind of rep count.
05:59:36 <Bike> wait. run-length encoding. i already asked this.
05:59:47 <Jafet> That seems to be missing the point of brainfuck
05:59:55 -!- TeruFSX has joined.
06:00:05 <Bike> the shortest possible compiler?
06:00:08 <shachaf> !bfjoust ([+++>(+-)*8]>(-+)*8[+>])*8
06:00:08 <EgoBot> Use: !bfjoust <program name> <program> . Scoreboard, programs, and a description of score calculation are at http://codu.org/eso/bfjoust/
06:00:11 <shachaf> !bfjoust hi ([+++>(+-)*8]>(-+)*8[+>])*8
06:00:14 <EgoBot> Score for shachaf_hi: 2.8
06:00:25 <etb> how can bf jump to subroutine?
06:00:30 <quintopia> !bfjoust long_tapes (>)*15(>(-)*120(-.)*16)*14
06:00:33 <EgoBot> Score for quintopia_long_tapes: 2.7
06:00:52 <Fiora> yeah, but the joust thing obviously isn't flexible enough to avoid heavy copypasting in the creation of, like, space hotel, right?
06:01:03 <Fiora> since it's just RLE
06:01:04 <quintopia> !bfjoust long_tapes (>++)*14(>(-)*120(-.)*16)*14
06:01:07 <EgoBot> Score for quintopia_long_tapes: 2.1
06:01:13 <Bike> obviously what is needed is a system that uses brainfuck to generate brainfuck
06:01:25 <Jafet> And then jousts the resulting brainfuck
06:01:51 <Jafet> And maybe jousts the generating brainfuck, too
06:01:59 <quintopia> !bfjoust long_tapes >(+)*15(>)*14(>[(-)*120(-.)*16])*14
06:02:00 <Fiora> how about it jousts them until it converges
06:02:02 <EgoBot> Score for quintopia_long_tapes: 7.3
06:02:31 <etb> ISO Brainfuck 2013...
06:02:55 <EgoBot> Use: !bfjoust <program name> <program> . Scoreboard, programs, and a description of score calculation are at http://codu.org/eso/bfjoust/
06:03:00 <EgoBot> Score for shachaf_hi: 0.0
06:03:07 <EgoBot> Score for shachaf_hi: 10.1
06:03:13 <quintopia> Fiora: do you mean until their scores don't change?
06:03:24 <Fiora> or something? I don't know
06:04:28 <etb> but seriously, it's impossible, right? you can't carry a cell in tow to count how far to move the pointer
06:04:36 <etb> damn bf, so limiting . . . :P
06:05:01 <etb> brainfuck jump to subroutine
06:05:12 <Jafet> What is a subroutine
06:05:16 <quintopia> you can have a macro language that does it though
06:05:47 <Fiora> all subroutines are inlined
06:05:51 <Jafet> Perhaps bfjoust should have macros
06:06:04 <etb> it seems to already
06:06:39 <etb> if you can call this * and % business macros
06:06:40 <Jafet> They should not be allowed to be recursive, though, so the interpreter should topologically sort the program beforehand
06:07:09 <quintopia> perhaps bfjoust should have many things, but there is no consensus that a particular extension should be added. people pretty much like it as it is.
06:08:36 <ais523> Jafet: I actually use non-recursive macros for generating programs for submission sometimes
06:08:56 <ais523> stealth was made like that, together with reindenting the output using emacs brainfuck-joust-mode
06:09:05 <etb> it's like cyberpunk blindfolded chess played against every dead master in succession
06:09:17 <etb> i like it. good idea, guys.
06:09:18 <Jafet> brainfuck-joust-mode
06:09:42 <Bike> you. made an emacs mode?
06:09:43 <ais523> don't worry, it isn't part of the emacs standard distribution
06:09:50 <ais523> but I already had brainfuck-mode lying around
06:09:53 <ais523> so it wasn't much modification
06:11:04 <ais523> also, if only I could come up with a way to do anticipation that doesn't require omitting cases that aren't actually used just to be able to stay on the hill
06:11:31 <ais523> etb: % and * are nice because although they notionally expand to BF, so you aren't adding anything to the language at all
06:11:46 <ais523> modern interps can process them way faster than they could process the equivalent expanded code
06:11:50 <ais523> so you get your results from the hill in faster
06:12:12 <Bike> have you yet established a journal for brainfuck optimization strategies
06:13:17 <ais523> the two-competing-programs aspect makes JITting it a little awkward
06:13:20 <ais523> although not impossible
06:13:37 <Fiora> actually here's an idea
06:13:43 <Fiora> instead of using chars lke '>'
06:13:46 <Fiora> use machine instructions
06:13:48 <Jafet> Just make a language that consists of two programs running in parallel
06:13:51 <Fiora> so like '>' is actually an 'inc'
06:14:03 <Bike> Fiora: so... compile it?
06:14:15 <Fiora> Bike: yeah, but like, let's say one program overwrites the other program or whatever
06:14:23 <Fiora> instead of outputting a '>', it also outputs an inc
06:14:27 <Fiora> is this different from corewars
06:14:40 <Fiora> I should have checked exactly how it worked first <_>
06:15:51 <Bike> asking questions and reading is the devil, fiora.
06:15:57 <Fiora> okay so how does bfjoust work
06:16:06 <Bike> there's an article on it on esolang.
06:17:05 <Bike> from glancing it looks like they're not in the data, so not so much like corewars
06:17:32 <Fiora> here's an idea to allow two programs executed simultaneously with a JIT
06:17:52 <Fiora> compile the two programs, interleave them, and create N copies, one for each possible combination of addresses in the two programs
06:18:12 <Fiora> and then create a state machine
06:18:20 <Fiora> so like, if one program has a jump but the other doesn't, you transition to the appropriate new program
06:19:34 <Fiora> oh huh. > and < move to and from the opponent, not specific directions
06:20:10 <Jafet> bfjoust programs can have thousands of instructions
06:20:29 <Fiora> that would be kinda instruction cache murdernig I guess
06:22:01 -!- sirdancealot has quit (Ping timeout: 246 seconds).
06:23:30 -!- sirdancealot has joined.
06:23:55 <etb> think i could add an eso lang to esolangs under jokes > brainfuck derivatives?
06:24:23 <Bike> I think making a brainfuck derivative makes you immediately eligible for death by sky burial.
06:25:47 * Sgeo is eligible for death by sky burial.
06:26:10 <etb> probably numerous people here are up for one then
06:26:16 <etb> "the Bin Laden"
06:27:20 <Sgeo> I can't help but wonder if BF Joust counts as a BF derivative...
06:27:56 <Bike> Worms, the lot of you. Die.
06:28:21 <kmc> Worms! Oh my god worms!
06:29:48 <Sgeo> We are worms, we're the best, and we've come to win the war.
06:30:05 -!- ogrom has quit (Read error: Connection reset by peer).
06:33:49 <Fiora> brainfuck derivative: a language that records the change over time in a brainfuck program
06:34:08 <shachaf> Wouldn't it be the type of one-hole contexts?
06:34:11 <kmc> Fiora: c.c
06:35:29 <Bike> Fiora: there's reversible brainfuck.
06:41:11 <shachaf> So the way holes in types correspond to the various simple derivative rules (D(f+g) = D(f)+D(g), D(f*g)=f*D(g)+g*D(f)) is actually pretty obvious if you think about it.
06:41:24 <shachaf> The corresponding rules for "normal" derivatives don't seem so obvious.
06:42:04 <Bike> what is a hole in a type?
06:42:52 <shachaf> Bike: For example, if you have a type Foo a = (a,a,a), then a Foo with a hole in it would involve replacing one of the "a"s with a "hole".
06:43:04 <shachaf> So you might get (_,a,a) or (a,_,a) or (a,a,_)
06:43:49 <shachaf> So "(a,a,a) with one hole" corresponds to data WhichOne = First | Second | Third; (WhichOne,a,a)
06:44:23 <shachaf> I wonder whether there's a way to carry the intuition back to "normal" derivatives.
06:44:53 * shachaf doesn't remember how much Haskell Bike knows.
06:44:59 <shachaf> Bike: (Also you should /nick bicycle.)
06:45:02 <Fiora> ohhh, so it's the pattern matching thin
06:45:26 <shachaf> It's not pattern matching.
06:45:29 <Fiora> I usually remember _ being used for pattern matching
06:45:32 <Fiora> oh, then what is it?
06:45:59 <shachaf> Let's say you had a dynamically typed language, and a tuple.
06:46:16 <shachaf> You could replace one of the numbers with a "hole" value.
06:46:25 <shachaf> There are three numbers you could pick.
06:46:45 <shachaf> So you might say (Hole,10,20) or (5,Hole,20) or (5,10,Hole)
06:47:11 -!- Nisstyre-laptop has joined.
06:47:26 -!- TeruFSX has quit (Ping timeout: 265 seconds).
06:47:35 <shachaf> Does that part make sense?
06:47:41 <shachaf> (These are values now, not types.)
06:47:49 <shachaf> (Sometimes the Haskell type/value punning is a bit unfortunate.)
06:48:35 <Fiora> but wouldn't that change the type?
06:48:55 <shachaf> Sure, but ignoring the type, does the idea of a "hole" make sense?
06:49:05 <Bike> As just a distinguished thingamajig?
06:49:07 <shachaf> Given a thing with a hole in it, you could find the hole and put something in it, and so on.
06:49:57 <shachaf> It's one position that would normally have a value but now has a hole instead, as a sort of placeholder.
06:51:48 <Sgeo> Could I call a lambda a hole, or can I do things with holes that I can't with functions?
06:52:17 <Sgeo> As in, the (5, _, 10) hole, can I call that \h -> (5, h, 10), or is it possible to look at the first and third without feeding an argument?
06:52:53 * Sgeo guesses the latter
06:53:05 <shachaf> It's not really the same thing.
06:53:18 <shachaf> Closer to the latter, yes.
06:54:26 <kmc> :t fst . ($ undefined)
06:56:57 <Sgeo> I was about to ask how it could possibly return a b when given just a function and no a, but then I saw the undefined again
06:57:07 <Sgeo> undefined is cheaty
06:57:22 <kmc> sorry, i'm doing the "derailing explanation with confusing lambdabot output" thing
06:57:40 <shachaf> newtype T = T (T -> T) -- "pretty cool type"
06:57:54 <shachaf> kmc: I think the explainees have lost interest or something.
06:58:15 <shachaf> Anyway this isn't #haskell.
06:58:17 <Bike> It's kind of discouraging to see "well, that's sort of like a hole, except not"
06:58:36 <kmc> oh but this derivatives thing is so cool!
06:58:50 <shachaf> It's exactly like a hole. :-) The trouble is communicating exactly what a hole means.
06:58:58 <kmc> perhaps you need to approach it from navigation / zippers rather than just holes
06:59:01 <shachaf> I thought I'd start with an analogy and proceed with feedback.
06:59:31 <shachaf> I think explaining zippers is more complicated than explaining holes, though.
07:00:07 <Bike> I mean, it makes me think I'm probably better off understanding derivatives as operators etc
07:00:33 <Sgeo> If I have a type (Functor F) => F A, is a hole effectively a F (Maybe A)?
07:00:51 <Sgeo> Hmm, allows for too many holes
07:01:09 <shachaf> Yes. The trick is that you want there to be exactly one hole.
07:01:13 <shachaf> But I haven't gotten to that yet.
07:01:43 <shachaf> Bike: If the things I say are confusing it probably means I'm doing a bad job. Only you can help me get better!
07:03:33 <Bike> well, i don't know what this hole thing is. sgeo's earlier try makes me think a tuple (Hole,4) would be like an object that can take a "left" message (which returns... Undefined?), a "right" message (4), and a fill_left_hole message so that later left messages bla bla i haven't even used smalltalk what is wrong with me
07:04:02 <shachaf> I think it's simpler to think of data than of objects.
07:04:23 <shachaf> Hmm, maybe a smaller types is better.
07:04:39 <shachaf> Let's say you have (10,20). That's a pair of two integers. So far does that make sense?
07:05:24 <shachaf> Now let's say we want to poke a "hole" in it. You're not really expected to know precisely what a "hole" is yet; that's why I'm giving examples.
07:05:40 <shachaf> Here are the two options we have: (<HOLE>,20) and (10,<HOLE>)
07:06:30 <shachaf> When we look at that thing, we get two pieces of information: The integer that *isn't* the hole, and the position of the hole.
07:06:41 <shachaf> (Is this where it stops making sense?)
07:07:18 <Bike> no, I get that much I think.
07:08:00 <Bike> So about the pair (Hole,20) we can know "it has a hole, at position 0" and "20" (no position? no length of the tuple?)
07:08:33 <Sgeo> In Haskell, the length of a tuple is part of the type
07:08:33 <shachaf> It has the hole (let's say there's only ever one hole) at position 0, and 20 at position 1.
07:08:38 <shachaf> The tuple is always of length 2.
07:09:14 <Sgeo> You could derive (no pun intended) the position of the 20 from the position of the hole
07:09:51 <Sgeo> ...above statement not applicable to >2-tuples, so ignore me
07:09:55 <Bike> I'm trying to make as few assumptions as I can.
07:10:01 <shachaf> Bike: So let's say we wanted a type that captured exactly "a pair of two integers where one of them has been replaced with a hole".
07:10:17 <Bike> Ok. Such a type would include both (Hole,20) and (10,Hole), yes?
07:10:29 <shachaf> So we know that the information we have is (a) an integer, and (b) where the hole is.
07:10:48 <shachaf> (We also know where the integer is, but that's kind of implied, since there are only two possible positions.)
07:12:05 <shachaf> So we can define a type: data Where'sTheHole = FirstPosition | SecondPosition
07:12:29 <shachaf> And now we can say that IntegerWithHole = (Where'sTheHole, Integer)
07:12:50 <shachaf> That stores the exact information, right?
07:13:02 <Bike> Oh, so the type tuple is just a representation, it's got nothing to do with the data tuple position-wise or anything.
07:13:37 <shachaf> I'm not quite sure what you mean, but it sounds right. :-)
07:14:24 <Jafet> Also, one tree is isomorphic to seven
07:14:26 <Sgeo> Bike, yes. The IntegerWithHole is just two pieces of information together
07:14:37 <Jafet> But six are not isomorphic to none
07:14:42 <shachaf> So our Where'sTheHole type is equivalent to a boolean.
07:15:09 <Sgeo> Although you would need more data for larger tuples I guess, hmm.
07:15:23 <shachaf> seven isomorphic trees in a single 24-hour rotation
07:15:35 <shachaf> Bike: OK, so now let's say we had a bigger tuple:
07:15:52 <Bike> presumably an n-tuple with one hole could just use a mod-n integer, sgeo.
07:16:20 <shachaf> OK, so now let's say we had Either
07:16:27 <shachaf> You know how Either works?
07:16:28 <Jafet> The so-called scientific authorities babble that 24 is not divisible by 7. They want to eat your children.
07:16:41 <Bike> Probably I do, yes.
07:16:48 <shachaf> Hmm, I think Jafet should finish this explanation.
07:17:55 <Jafet> I have already supplied the logical conclusion
07:25:36 -!- asiekierka has quit (Excess Flood).
07:26:12 -!- asiekierka has joined.
07:42:36 -!- copumpkin has quit (Ping timeout: 252 seconds).
07:43:16 -!- copumpkin has joined.
07:55:35 <kmc> there should be a sim game where you fly the giant stone head from Zardoz
07:58:20 -!- kmc has set topic: Beyond 1984, beyond 2001, beyond love, beyond death | http://codu.org/logs/_esoteric/.
08:23:53 -!- Bike has quit (Quit: leaving).
08:33:48 -!- monqy has quit (Quit: hello).
08:43:16 -!- WeThePeople has quit (Quit: Leaving).
09:01:40 -!- DHeadshot has quit (Ping timeout: 248 seconds).
09:50:12 -!- epicmonkey has quit (Ping timeout: 248 seconds).
10:33:14 -!- AnotherTest has joined.
10:41:36 -!- Nisstyre-laptop has quit (Ping timeout: 264 seconds).
10:54:34 -!- epicmonkey has joined.
11:27:52 -!- nooodl_ has joined.
11:29:02 -!- nooodl has joined.
11:32:36 -!- nooodl_ has quit (Ping timeout: 248 seconds).
12:00:18 -!- ais523 has quit.
12:10:13 -!- Zerker has joined.
12:16:52 -!- nooodl has quit (Ping timeout: 248 seconds).
12:49:51 -!- olsner has joined.
13:25:24 -!- glogbackup has joined.
13:30:42 -!- Taneb has joined.
13:31:43 -!- sebbu2 has changed nick to sebbu.
13:38:03 -!- sebbu has quit (Ping timeout: 245 seconds).
13:59:05 -!- nooodl has joined.
14:06:03 -!- sebbu has joined.
14:18:03 -!- sebbu has quit (Ping timeout: 245 seconds).
14:42:49 -!- sebbu has joined.
14:54:06 -!- DHeadshot has joined.
15:08:36 -!- sebbu has quit (Ping timeout: 276 seconds).
15:10:35 -!- atslash has joined.
15:10:42 -!- epicmonkey has quit (Ping timeout: 250 seconds).
15:41:30 -!- TeruFSX has joined.
15:58:50 -!- sebbu has joined.
16:03:25 -!- WeThePeople has joined.
16:06:29 -!- TeruFSX has quit (Ping timeout: 244 seconds).
16:14:15 -!- epicmonkey has joined.
16:31:21 -!- Frooxius has joined.
16:53:33 <Taneb> That, by far. was my most successful game of Brogue
16:55:59 -!- WeThePeople has quit (Changing host).
16:55:59 -!- WeThePeople has joined.
16:58:42 -!- sebbu2 has joined.
16:59:01 -!- sebbu2 has quit (Changing host).
16:59:01 -!- sebbu2 has joined.
17:01:48 -!- sebbu has quit (Ping timeout: 245 seconds).
17:01:52 -!- Zerker has quit (Quit: Colloquy for iPad - Timeout (10 minutes)).
17:25:38 -!- atslash has quit (Quit: This computer has gone to sleep).
17:43:23 -!- WeThePeople has quit (Quit: Leaving).
17:53:41 -!- oerjan has joined.
17:55:05 -!- oerjan has set topic: Beyond 1984, beyond 2001, beyond 2525, beyond love, beyond death | http://codu.org/logs/_esoteric/.
17:56:06 <oerjan> i find it somewhat disturbing that shachaf keeps hallucinating me
17:56:47 <oerjan> Taneb: he keeps greeting me when i'm not here
17:57:37 <oerjan> shachaf: ARE YOU SURE I'M REALLY HERE
17:58:16 <oerjan> also, Proxy transformers are ugly :(
17:59:40 <oerjan> i assume tekmo has some technical reason not to use the ordinary transformers, but eww
18:00:07 <oerjan> (also StateP should _not_ split the state across >->, eww)
18:01:07 <oerjan> yes it is and it has been discussed on reddit. but that's not my main point anyway.
18:02:06 <oerjan> although i _do_ like the runIdentityP trick for getting shorter contexts, but that function needs a shorter name
18:04:28 -!- Bike_ has joined.
18:11:00 -!- DHeadshot has quit (Read error: Connection reset by peer).
18:20:19 -!- sebbu2 has quit (Ping timeout: 248 seconds).
18:38:01 -!- DHeadshot has joined.
18:38:07 -!- AnotherTest has quit (Read error: Connection reset by peer).
18:38:18 -!- AnotherTest has joined.
18:44:47 <kmc> fizzie: oh, you are at aalto.fi, right?
18:44:54 <kmc> i just realized http://tsunami-udp.sourceforge.net/ is from there
18:45:38 <fizzie> I have a friend at the Metsähovi place too.
18:47:49 -!- Bike_ has changed nick to Bike.
18:51:15 <fizzie> Doing his master's thesis, the topic of which I keep forgetting. (I've forgotten it again.)
18:56:27 -!- WeThePeople has joined.
18:58:50 -!- WeThePeople has quit (Changing host).
18:58:50 -!- WeThePeople has joined.
19:03:59 -!- sebbu has joined.
19:04:00 -!- sebbu has quit (Changing host).
19:04:00 -!- sebbu has joined.
19:08:02 <oerjan> <Bike> you. made an emacs mode?
19:08:22 <HackEgo> 270) <ais523> elliott: hey, thinking's easier than using the Internet
19:08:36 <HackEgo> 233) <ais523> OK, I give up, logging into Wikia is harder than writing a Firefox extension
19:08:56 -!- WeThePeople has quit (Quit: Leaving).
19:08:57 <oerjan> ais523 does strange things
19:09:16 <HackEgo> 836) <oerjan> `welcome Rawlie * zzo38 has joined #esoteric <Rawlie> thank you <zzo38> You're welcome.
19:09:34 <HackEgo> 837) <elliott> seriously q is the best fucking letter in the alphabet
19:09:49 <HackEgo> 836) <oerjan> `welcome Rawlie * zzo38 has joined #esoteric <Rawlie> thank you <zzo38> You're welcome.
19:10:50 -!- WeThePeople has joined.
19:11:15 -!- WeThePeople has quit (Changing host).
19:11:15 -!- WeThePeople has joined.
19:11:24 <shachaf> I'm not sure how I got all that karma.
19:11:27 <oerjan> shachaf has a full deck
19:11:30 <shachaf> Did someone write a script or something?
19:11:41 <Taneb> shachaf shall be reincarnated as king
19:12:02 <lambdabot> Plugin `more' failed with: thread killed
19:12:02 <shachaf> See? There's no way I should be at 52.
19:12:22 <kmc> lambdabot++
19:12:25 <lambdabot> You can't change your own karma, silly.
19:13:04 <oerjan> ^ul ((shachaf-- )S:^):^ *MWAHAHAHAHA*
19:13:05 <fungot> shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shac ...too much output!
19:13:26 <shachaf> oerjan: That was excessive. :-(
19:13:33 <oerjan> ^ul ((shachaf++ )S:^):^ *MWAHAHAHAHA*
19:13:34 <fungot> shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shac ...too much output!
19:14:08 <nortti> ^ul ((shachaf++ )S:^):^
19:14:09 <fungot> shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shachaf++ shac ...too much output!
19:15:21 <Taneb> ^ul ((shachaf++ shachaf--)S:^):^
19:15:21 <fungot> shachaf++ shachaf--shachaf++ shachaf--shachaf++ shachaf--shachaf++ shachaf--shachaf++ shachaf--shachaf++ shachaf--shachaf++ shachaf--shachaf++ shachaf--shachaf++ shachaf--shachaf++ shachaf--shachaf++ shachaf--shachaf++ shachaf--shachaf++ shachaf--shachaf++ shachaf--shachaf++ shachaf--shachaf++ shachaf--shachaf++ shachaf--s ...too much output!
19:15:32 <lambdabot> shachaf--shachaf has a karma of 16
19:15:47 <shachaf> @@ @@ (concat $ replicate 100 "(@karma+ nortti) ")
19:15:47 <lambdabot> (concat $ replicate 100 "(@karma+ nortti) ")
19:15:54 <Taneb> For that I shall leave forever
19:15:54 <shachaf> @@ @@ (@run concat $ replicate 100 "(@karma+ nortti) ")
19:15:56 <lambdabot> "(@karma+ nortti) (@karma+ nortti) (@karma+ nortti) (@karma+ nortti) (@karm...
19:16:05 -!- Taneb has quit (Quit: leaving forever).
19:16:05 <shachaf> @@ @@ (@read (@run concat $ replicate 100 "(@karma+ nortti) "))
19:16:07 <lambdabot> Plugin `compose' failed with: Prelude.read: no parse
19:16:12 <shachaf> @@ @@ @read (@run concat $ replicate 100 "(@karma+ nortti) ")
19:16:13 <lambdabot> Plugin `compose' failed with: Prelude.read: no parse
19:16:15 <shachaf> I've forgotten how to do it.
19:16:48 <shachaf> @@ (@run concat $ replicate 5 "(@karma+ nortti) ")
19:16:50 <lambdabot> "(@karma+ nortti) (@karma+ nortti) (@karma+ nortti) (@karma+ nortti) (@karm...
19:17:01 <shachaf> @@ @@ @read (@run concat $ replicate 5 "(@karma+ nortti) ")
19:17:03 <lambdabot> Plugin `compose' failed with: Prelude.read: no parse
19:17:16 <shachaf> @@ @@ @read (@run concat $ replicate 1 "(@karma+ nortti) ")
19:17:22 <shachaf> @@ @@ @read (@run concat $ replicate 5 "(@karma+ nortti) ")
19:17:23 <lambdabot> Plugin `compose' failed with: Prelude.read: no parse
19:17:26 <shachaf> @@ @@ @read (@run concat $ replicate 4 "(@karma+ nortti) ")
19:17:28 <lambdabot> nortti's karma raised to 3. nortti's karma raised to 4. nortti's karma raised to 5. nortti's karma raised to 6.
19:17:29 -!- monqy has joined.
19:17:40 <shachaf> Hmm, one time I worked out a way to batch those.
19:17:51 <shachaf> @@ @@ @read (@run concat $ replicate 4 "(@karma- nortti) ")
19:17:53 <lambdabot> nortti's karma lowered to 5. nortti's karma lowered to 4. nortti's karma lowered to 3. nortti's karma lowered to 2.
19:18:09 <shachaf> @@ @@ (@run text $ concat $ replicate 5 "(@karma- nortti) ")
19:18:10 <lambdabot> Plugin `compose' failed with: Missing ')' in nested command
19:18:22 <oerjan> no wonder poor lambdabot is overworked
19:18:33 <shachaf> @@ @@ (@run text $ concat $ replicate 5 (chr 64 : "(karma- nortti) "))
19:18:35 <lambdabot> Plugin `compose' failed with: Missing ')' in nested command
19:18:41 <shachaf> @@ @@ (@run text $ concat $ replicate 4 (chr 64 : "(karma- nortti) "))
19:18:42 <lambdabot> nortti's karma lowered to -7. nortti's karma lowered to -8. nortti's karma lowered to -9. nortti's karma lowered to -10.
19:19:06 <shachaf> @@ @@ (@run text $ concat $ replicate 4 (chr 64 : "(karma+ nortti) "))
19:19:07 <lambdabot> nortti's karma raised to -9. nortti's karma raised to -8. nortti's karma raised to -7. nortti's karma raised to -6.
19:19:11 -!- TeruFSX has joined.
19:19:17 <shachaf> I don't remember how it worked. :-(
19:20:09 <shachaf> @@ @@ (@run text $ concat $ replicate 4 (chr 64 : "(karma+ nortti) "))
19:20:11 <lambdabot> nortti's karma raised to -5. nortti's karma raised to -4. nortti's karma raised to -3. nortti's karma raised to -2.
19:20:25 <shachaf> How to do things in lambdabot.
19:21:07 <shachaf> nortti++ # achieved balance
19:38:06 -!- WeThePeople has quit (Quit: Leaving).
19:40:54 -!- WeThePeople has joined.
19:41:19 -!- TeruFSX has quit (Ping timeout: 260 seconds).
19:48:12 -!- WeThePeople has quit (Quit: Leaving).
19:49:18 -!- WeThePeople has joined.
19:50:03 -!- WeThePeople has quit (Read error: Connection reset by peer).
19:50:12 -!- DHeadshot has quit (Ping timeout: 244 seconds).
19:50:22 -!- WeThePeople has joined.
19:51:39 -!- DHeadshot has joined.
19:58:34 -!- DHeadshot has quit (Read error: Connection reset by peer).
19:58:54 -!- DHeadshot has joined.
20:01:05 -!- Taneb has joined.
20:03:04 -!- WeThePeople has quit (Quit: Leaving).
20:03:27 -!- WeThePeople has joined.
20:06:40 -!- WeThePeople has quit (Client Quit).
20:07:03 -!- WeThePeople has joined.
20:07:54 -!- WeThePeople has quit (Read error: Connection reset by peer).
20:08:13 -!- WeThePeople has joined.
20:09:42 <FreeFull> @@ @@ (@run text "(karma+ lambdabot)")
20:09:59 <FreeFull> @@ @@ (@run text ":(karma+ lambdabot)")
20:10:37 <FreeFull> @@ @@ (@run text $ chr 64 : "(karma+ lambdabot)")
20:14:30 -!- WeThePeople has quit (Quit: Leaving).
20:14:57 -!- WeThePeople has joined.
20:18:25 <fizzie> I see a karmageddon happened here.
20:20:12 <kmc> 'Commercial hacker hunters -- who refer to the team as the Comment group, for the hidden program code they use known as “comments”'
20:22:01 -!- TeruFSX has joined.
20:25:06 -!- WeThePeople has quit (Quit: Leaving).
20:25:56 -!- WeThePeople has joined.
20:34:08 -!- WeThePeople has quit (Quit: Leaving).
20:34:28 -!- zzo38 has joined.
20:34:38 -!- WeThePeople has joined.
20:36:41 -!- Nisstyre-laptop has joined.
20:41:13 -!- Vorpal has joined.
20:45:12 -!- WeThePeople has quit (Changing host).
20:45:12 -!- WeThePeople has joined.
20:49:31 -!- WeThePeople has quit (Quit: Leaving).
20:49:45 -!- WeThePeople has joined.
20:49:46 -!- WeThePeople has quit (Changing host).
20:49:46 -!- WeThePeople has joined.
20:50:28 -!- epicmonkey has quit (Ping timeout: 248 seconds).
21:10:23 -!- AnotherTest has quit (Quit: Leaving.).
21:10:32 -!- asiekierka has quit (Excess Flood).
21:10:38 -!- asiekierka has joined.
21:14:36 -!- Vorpal has quit (Ping timeout: 245 seconds).
21:17:56 -!- Vorpal has joined.
21:24:02 -!- GreyKnight has joined.
21:24:19 <GreyKnight> <kmc> 'Commercial hacker hunters -- who refer to the team as the Comment group, for the hidden program code they use known as “comments”'
21:26:15 <Bike> http://www.businessweek.com/articles/2012-08-02/chinas-comment-group-hacks-europe-and-the-world
21:26:44 -!- asiekierka has quit (Excess Flood).
21:28:35 <ion> Make <!-- … --> illegal!
21:29:46 <FreeFull> -- But this is a comment too, in some languages
21:30:19 <ion> The aritcle referred to HTML comments specifically. “The collective’s tactic, hacking computers using hidden HTML code known as comments, earned it another name in private security circles: the Comment Group.”
21:30:44 -!- sebbu has quit (Ping timeout: 260 seconds).
21:31:12 -!- asiekierka has joined.
21:31:31 <GreyKnight> all this technology and we're still using multipage news articles
21:31:37 <GreyKnight> FreeFull: don't forget Whitespace comments!
21:32:04 <FreeFull> GreyKnight: I was thinking brainfuck
21:32:29 <GreyKnight> What are its comments like? Just non-command characters I suppose
21:33:58 <GreyKnight> what's the actual exploit here, anyway
21:36:22 <GreyKnight> injecting JS via an HTML comment form or something?
21:39:45 -!- asiekierka has quit (Excess Flood).
21:39:51 -!- asiekierka_ has joined.
21:54:53 -!- epicmonkey has joined.
22:30:02 -!- sebbu has joined.
22:30:02 -!- sebbu has quit (Changing host).
22:30:02 -!- sebbu has joined.
22:34:35 -!- GreyKnight has quit (Remote host closed the connection).
22:45:24 -!- ineiros_ has quit (Remote host closed the connection).
22:45:32 -!- ineiros has joined.
22:57:41 -!- TeruFSX has quit (Ping timeout: 255 seconds).
22:59:25 <Sgeo> A group I'm part of in Second Life is running a charity drive, but I don't know how to be certain that the money will in fact reach its destination
23:00:11 <olsner> hint: the charity drive is actually money laundering
23:00:12 -!- asiekierka_ has quit (Excess Flood).
23:00:14 <Bike> does givewell have a presence in second life
23:00:18 -!- asiekierka has joined.
23:00:34 <Sgeo> Erm, as in, it's supposed to be going towards a specific charity
23:00:40 <Sgeo> Not as in its acting as a charity in itself
23:02:18 <kmc> so donate to that charity directly yourself
23:02:54 <Sgeo> It would be much easier for me to donate via SL
23:03:16 <Sgeo> So much so that it's pretty much a choice between donating via SL or not donating
23:05:37 <Bike> oh just do it then, at worst you'll just be contributing a bit to some douchebag's jacuzzi
23:10:08 -!- sebbu2 has joined.
23:10:09 -!- sebbu2 has quit (Changing host).
23:10:09 -!- sebbu2 has joined.
23:12:38 -!- sebbu has quit (Ping timeout: 245 seconds).
23:17:08 <Sgeo> ....I donated to the wrong box
23:17:20 <Sgeo> The location has a donation box for keeping the place open too
23:21:14 -!- epicmonkey has quit (Ping timeout: 250 seconds).
23:28:54 <Sgeo> Sent him a message about it, and also donated some money into the charity box
23:31:58 <Sgeo> http://www.fark.com/comments/7509256/Rush-Limbaugh-warns-that-president-is-becoming-Barack-Hussein-Kardashian-This-is-bad-news-for-Bajorans
23:32:09 * Sgeo is only linking for the DS9 reference
23:35:45 -!- Nisstyre-laptop has quit (Quit: Leaving).
23:45:14 <hagb4rd> have you ever heard of hollands astronomer cornelis de jager and his satire on pseudo-scientific-religions called "radosophie" (engl. bike-o-sophie)? de jager was able to calculate some of natures physical constants combining some measurements of his bike in simple mathematical formulas
23:50:39 <hagb4rd> to completely understand his approach you need to know holland has more bikes than people living in it
23:51:44 <Bike> Mm, yes, very interesting.
23:55:24 -!- DHeadshot has quit (Ping timeout: 260 seconds).