00:04:33 -!- sprocklem has quit (Ping timeout: 264 seconds).
00:05:09 <fizzie> I need to say something with all kinds of formatting, to test a thing. It should even have background colors.
00:09:33 <boily> mysterious V format.
00:09:52 <fizzie> The reverse video I didn't do.
00:10:09 <boily> fizziello. will you put the logs in the /topic?
00:10:13 <fizzie> Because https://modern.ircdocs.horse/formatting.html said it's a little unclear.
00:10:18 <fizzie> As soon as they're ready.
00:11:07 <HackEgo> #esoteric is the only channel that exists. After monqy left it became slightly off-centër. It's a 7-codimensional hyperenchilada about 30 m (100 ft) across. oerjan seems to be making a lawn in the northern part, but it keeps getting dug up by free ranging moons. Currently located in the Atlantis Exclusion Zone.
00:12:33 <fizzie> There's about five TODOs to address before I think the logs would be ready enough to publicize.
00:14:33 <fizzie> (1) Add a blurb (probably at the bottom of the index page) with explanations and links to other logs; (2) start the log-server as a service rather than just running it in a screen manually; (3) read the config from a file instead of it being hardcoded; (4) publish the source code; and (5) make the CSS not *horribly* broken on mobile.
00:14:33 <boily> have you heard of our lord and saviour Cucumber, of the Holy Acceptance Test-Driven Development?
00:16:12 -!- Phantom_Hoover has quit (Remote host closed the connection).
00:21:06 <fizzie> Oh, tests would be nice too.
00:22:52 -!- LKoen has joined.
00:27:37 -!- LKoen has quit (Ping timeout: 256 seconds).
00:54:31 <boily> fungot: are your nostrils dæmoniac?
00:57:32 -!- sprocklem has joined.
01:02:25 -!- jaboja has joined.
01:09:27 <fizzie> 5 done-ish. It's not *good* by any means, but I added extra line spacing in the index for @media (pointer:coarse), and then added a @media (max-width: 640px) breakpoint on the logs page to switch to a "time <nick>\nmessage\n\n"-style layout instead.
01:09:43 <fizzie> There's still one CSS trick I've not managed, and that is to have in the desktop experience, simultaneously, (a) the message body section take up any extra space without scripting, (b) the messages to line-wrap aligned to where they start, and (c) the end result be copy-pasteable without horrible extra newlines.
01:09:48 <fizzie> I ended up doing (a) & (b) by "display: flex", but now there's newlines everywhere. When I tried non-flexboxy ways which did (c) well, either I had to specify a width or the lines would wrap to the left edge.
01:09:58 <fizzie> Webdev is hard and unpleasant. :/
01:12:27 <shachaf> fizzie: The one-page version is much more convenient.
01:14:19 <fizzie> It was behaving real sluggishly for me. I can add an "all" view, but I think I'll still keep the default as the most recent year.
01:15:49 <shachaf> Is it going to have codu.org's stalker mode?
01:18:49 <fizzie> That's a v2 thing. Maybe? I didn't check yet how that's implemented, though I think I saw some XHR being involved.
01:19:49 <fizzie> Guess it should be websockets these days.
01:24:05 -!- jaboja has quit (Ping timeout: 240 seconds).
01:26:22 -!- hppavilion[1] has joined.
01:41:51 -!- UnB_Z has joined.
01:44:30 -!- FreeFull has quit (Quit: Lost terminal).
01:47:04 -!- Guest6549 has joined.
01:48:07 -!- Slereah_ has quit (Ping timeout: 268 seconds).
02:07:59 -!- hppavilion[1] has quit (Ping timeout: 248 seconds).
02:11:03 -!- UnB_Z has left.
02:12:04 -!- doesthiswork has joined.
02:19:49 -!- sleffy has quit (Ping timeout: 256 seconds).
02:28:11 -!- boily has quit (Quit: DUTCH CHICKEN).
02:30:01 -!- Soni has quit (Ping timeout: 250 seconds).
02:58:26 -!- sleffy has joined.
03:08:51 -!- sleffy has quit (Quit: Leaving).
03:09:09 -!- sleffy has joined.
03:12:01 -!- hppavilion[1] has joined.
03:19:07 -!- hppavilion[1] has quit (Read error: Connection reset by peer).
03:19:30 -!- hppavilion[1] has joined.
03:20:56 -!- doesthiswork1 has joined.
03:21:14 -!- doesthiswork has quit (Read error: Connection timed out).
03:31:00 -!- variable has joined.
03:45:02 -!- FreeFull has joined.
03:51:38 -!- hppavilion[1] has quit (Quit: HRII'FHALMA MNAHN'K'YARNAK NGAH NILGH'RI'BTHNKNYTH).
03:52:26 -!- hppavilion[1] has joined.
03:59:24 -!- variable has changed nick to constant.
04:37:41 -!- doesthiswork has joined.
04:37:41 -!- doesthiswork1 has quit (Read error: Connection reset by peer).
04:42:50 -!- xkapastel has joined.
05:05:01 -!- doesthiswork1 has joined.
05:05:01 -!- doesthiswork has quit (Read error: Connection reset by peer).
05:06:05 -!- doesthiswork has joined.
05:06:05 -!- doesthiswork1 has quit (Read error: Connection reset by peer).
05:08:24 -!- doesthiswork1 has joined.
05:08:24 -!- doesthiswork has quit (Read error: Connection reset by peer).
05:10:00 -!- doesthiswork has joined.
05:10:00 -!- doesthiswork has quit (Client Quit).
05:10:00 -!- doesthiswork1 has quit (Read error: Connection reset by peer).
05:30:16 -!- doesthiswork has joined.
05:49:29 -!- hppavilion[1] has quit (Ping timeout: 256 seconds).
05:58:35 -!- ais523 has quit (Quit: quit).
06:17:20 -!- augur_ has joined.
06:20:45 -!- augur has quit (Ping timeout: 264 seconds).
06:57:57 -!- augur_ has quit (Remote host closed the connection).
07:03:09 -!- doesthiswork has quit (Quit: Leaving.).
07:05:00 -!- FreeFull has quit.
07:06:56 -!- joast has quit (Ping timeout: 268 seconds).
07:08:50 -!- MDead has joined.
07:08:50 -!- MDead has changed nick to MDude.
07:08:51 -!- MDude has quit (Excess Flood).
07:09:10 -!- MDude has joined.
07:11:29 -!- AnotherTest has joined.
07:27:11 -!- AnotherTest has quit (Ping timeout: 240 seconds).
07:43:43 -!- AnotherTest has joined.
08:04:58 -!- hppavilion[1] has joined.
08:12:34 <esowiki> [[Purple]] https://esolangs.org/w/index.php?diff=53574&oldid=53520 * Quintopia * (-25) golf python interpreter
08:13:28 -!- constant has quit (Quit: Found 1 in /dev/zero).
08:15:37 <esowiki> [[Purple]] M https://esolangs.org/w/index.php?diff=53575&oldid=53574 * Quintopia * (-1) just one more byte, i promise
08:23:20 <esowiki> [[Purple]] https://esolangs.org/w/index.php?diff=53576&oldid=53575 * Quintopia * (-20) okay a few more bytes off python interpreter
08:25:29 <esowiki> [[Purple]] https://esolangs.org/w/index.php?diff=53577&oldid=53576 * Quintopia * (-3) okay i swear these are the last two bytes for the night
08:49:36 -!- sleffy has quit (Ping timeout: 272 seconds).
09:21:59 -!- hppavilion[1] has quit (Ping timeout: 256 seconds).
09:25:25 -!- Soni has joined.
09:32:57 -!- AnotherTest has quit (Ping timeout: 240 seconds).
09:45:32 -!- AnotherTest has joined.
10:22:40 <Taneb> Whoa #esoteric is 15?
10:24:40 <Taneb> shachaf: the topic disagrees it would seem
10:42:16 -!- xkapastel has quit (Quit: Connection closed for inactivity).
11:17:07 <b_jonas> fizzie: "how are you supposed to remember the difference between learn_append and learn_append2?" => you just have to remember that wisdoms are stored as plain text files in the wisdom directory, lowercased and with a trailing s stripped from their name, and the `? rules of wisdom
11:17:14 <HackEgo> unless essential for the entry‘s humor, should: be understandable without the lookup key, be single spaced and end in a newline with no space before that, and use proper capitalization and punctuation
11:17:42 <b_jonas> then you can manipulate them with ordinary unix tools. this is the whole point of using plain text for all sort of source files and configuration files, that we can use the same tools for each of them
11:18:04 <b_jonas> you can make custom tools if you prefer, but you're not required to use other people's custom tools
11:18:49 -!- jaboja has joined.
11:26:40 <fizzie> b_jonas: Manipulating them with standard tools is exactly what I do, but people complain I don't use the tools.
11:26:40 -!- jaboja has quit (Remote host closed the connection).
11:28:13 <shachaf> `slwd rules of wisdom//s/should/they &/
11:28:15 <HackEgo> rules of wisdom//unless essential for the entry‘s humor, they should: be understandable without the lookup key, be single spaced and end in a newline with no space before that, and use proper capitalization and punctuation
11:29:16 <HackEgo> #!/bin/bash \ topic="$(echo "$1" | lowercase | sed 's/s\? .*//')" \ stuff=$(echo "$1" | cut -d' ' -f2-) \ perl -i -p -e 's/\n/ /' "wisdom/$topic" \ echo "$stuff" >>"wisdom/$topic" \ echo -n "Learned '$topic': " \ cat "wisdom/$topic"
11:29:18 <HackEgo> cat: bin/learn_append2: No such file or directory
11:29:30 <shachaf> fizzie: seems p. easy to remember to me hth
11:36:05 -!- boily has joined.
11:38:18 <b_jonas> do we have a command for (1) looking up a wisdom from name and returning its filename, or (2) doing normalization on the name of a new wisdom and returning the filename you should create it as?
11:42:23 -!- h0rsep0wer has joined.
11:57:37 -!- sebbu has quit (Quit: reboot (update)).
11:59:42 <boily> b_jellonas. I think we settled on normalization hth
12:01:31 <b_jonas> boily: we didn't settle. someone changed the handling of leading backtick just half a year ago or something.
12:08:16 <HackEgo> unless essential for the entry‘s humor, they should: be understandable without the lookup key, be single spaced and end in a newline with no space before that, and use proper capitalization and punctuation
12:10:39 <HackEgo> A hand in the bush is better than a stoned bird.
12:10:46 <b_jonas> that applies to case (1) only I think
12:11:07 <b_jonas> who knows, maybe next time we'll install a stemmer or something
12:11:20 <b_jonas> that would make hand-normalization pretty much impossible
12:14:51 <b_jonas> oh, a tutorial for making up misattributed quotes: http://www.qwantz.com/index.php?comic=3225
12:22:17 -!- boily has quit (Quit: AIR CHICKEN).
12:39:07 <esowiki> [[WLoop]] https://esolangs.org/w/index.php?diff=53578&oldid=53572 * Sacchan * (+135)
12:39:27 <esowiki> [[User:Sacchan]] https://esolangs.org/w/index.php?diff=53579&oldid=43739 * Sacchan * (+12)
13:05:20 -!- h0rsep0wer has quit (Quit: Leaving).
13:43:07 -!- joast has joined.
13:49:04 -!- doesthiswork has joined.
14:49:36 -!- `^_^v has joined.
15:03:23 -!- doesthiswork has quit (Quit: Leaving.).
15:08:23 -!- sebbu has joined.
15:19:32 -!- ski_ has changed nick to ski.
15:22:33 -!- fizzie has set topic: Welcome to the international hub for esoteric programming language discussion, design, development and deployment! | http://esolangs.org | logs: http://esolangs.org/logs/ http://codu.org/logs/_esoteric/ http://tunes.org/~nef/logs/esoteric/?C=M;O=D | https://www.dropbox.com/s/fyhqyvy3i8oh25m/wisdom.pdf.
15:22:39 <fizzie> Might as well have it there.
15:23:51 <fizzie> Not sure if the canonical links in the topic should be https://.
15:24:46 <fizzie> It is set up like that in the wiki configuration, but AFAIK that only affects two things: the links in the recent changes posted by the bot, and the links included in any automated emails.
15:27:47 -!- LKoen has joined.
15:34:22 <Taneb> b_jonas: HackEgo is completely unreasonable
15:38:13 <esowiki> [[Esolang:Community portal]] https://esolangs.org/w/index.php?diff=53580&oldid=49124 * Fizzie * (+42) /* #Esoteric */ Add local logs link.
16:07:37 -!- jaboja has joined.
16:08:19 <b_jonas> So in github, to create a pull request, I still have to clone the repository to a github account, right?
16:08:58 -!- zseri has joined.
16:15:09 <Taneb> b_jonas: if you don't have write permission to the repo, according to Github's help doc
16:23:01 -!- jaboja has quit (Ping timeout: 256 seconds).
16:36:24 -!- ais523 has joined.
16:51:52 -!- LKoen has quit (Remote host closed the connection).
17:05:16 -!- FreeFull has joined.
17:07:10 -!- ais523 has quit (Quit: sorry for my connection).
17:07:23 -!- ais523 has joined.
17:57:41 <esowiki> [[Esolang:Community portal]] https://esolangs.org/w/index.php?diff=53581&oldid=53580 * Ais523 * (-236) /* Information */ rm section; not much point in supporting an esolang section on Stack Overflow Documentation when the entire site has shut down
18:08:45 <\oren\_> how to delete all files in /tmp/ belonging to me?
18:09:40 <zseri> rm -rf /tmp/ as you?
18:10:00 <\oren\_> zseri: that will also delete files that I have write access to
18:10:28 <zseri> find /tmp/ -user ... -rm ?
18:10:51 <\oren\_> hmmm find... yeah I'll look at teh manpage
18:11:45 <\oren\_> find -maxdepth 1 -user oren -delete
18:16:45 -!- CoffeeCatt_ has joined.
18:17:46 -!- CoffeeCatt_ has left.
18:18:38 <zseri> I should introduce a cursor class into zsdatab for context browsing, e.g. access of fields by name in each row
18:19:03 <int-e> fizzie: hmm, dead link?
18:23:12 * int-e was bitten by an outdated entry in /etc/hosts ...
18:23:17 -!- sleffy has joined.
18:29:53 -!- xkapastel has joined.
18:33:48 -!- Phantom_Hoover has joined.
18:42:25 -!- oerjan has joined.
18:46:37 -!- Phantom__Hoover has joined.
18:47:47 -!- Phantom__Hoover has quit (Client Quit).
18:52:52 <HackEgo> 303) <monqy> my most fresh dream is one where I'm at a soup contest and a chicken really wants to participate but he's disqualified so he becomes the judge. when all the soups are done and he's ready to taste them he just stares at the soup and then I become the chicken and I really want to make soup \ 601) <Darth_Cliche> There's British KFC? Kent
18:57:28 <int-e> Monday's Freefall was nice.
18:58:58 <int-e> (I liked the twist on "we're the worst people to do it")
19:15:41 <esowiki> [[CJam]] M https://esolangs.org/w/index.php?diff=53582&oldid=53021 * Nooodl * (-2) fix attribution
19:27:09 <oerjan> fizzie: looked at the new logs index, somehow all the months show as overlapping each other.
19:27:30 <oerjan> (probably can blame IE somehow.)
19:28:33 * oerjan falls back to address bar editing, which is how he usually accesses the logs anyway
19:28:43 <fizzie> oerjan: CSS is hard. :/ I probably shouldn't have even attempted to make it use several columns, I was just annoyed at the lots of wasted screen real estate.
19:29:24 <fizzie> Well, it's not really columns. It's a flexbox.
19:29:42 <fizzie> https://caniuse.com/#search=flexbox says IE 11 but "Partial support is due to large amount of bugs present (see known issues)".
19:30:23 <fizzie> Which version of IE are you interested in?
19:31:03 <oerjan> well i'm using 11, which is the final one.
19:36:10 <fizzie> Looking at those known issues, maybe I can make some tweaks. Wonder if there's good free ways to test with IE.
19:45:57 <oerjan> it's not that big of a deal for me, anyway
19:49:08 <\oren\_> fizzie: you can get a free windows 10 virtual box on microsoft website
19:53:27 -!- augur has joined.
19:53:39 <oerjan> <fizzie> b_jonas: Manipulating them with standard tools is exactly what I do, but people complain I don't use the tools. <-- to be more precise, what i complain about is any kind of edit where i cannot see from what happens in the channel whether you messed something up. which is why the HackEgo tools all display the resulting file.
19:57:07 <oerjan> (and for wisdoms, whether there was one previously.)
19:57:30 -!- augur_ has joined.
19:57:51 -!- augur has quit (Ping timeout: 248 seconds).
20:22:34 -!- wob_jonas has joined.
20:23:21 <wob_jonas> fizzie: a next/previous link in the HTML version of the new logs might make sense
20:26:35 <int-e> hmm, today gog speaks russian with me
20:31:16 <esowiki> [[Special:Log/newusers]] create * Minin * New user account
20:35:28 <int-e> a drm free game shop
20:39:41 <int-e> it seems that their front page is served from a cache which isn't good at guessing languages. it's amusing.
20:42:44 <wob_jonas> youtube is sometimes stupid at finding musical numbers from phrases in their lyrics. you have to use the title.
20:43:30 <wob_jonas> if I search for 'oda is eljőnek szüzek szép leányok' directly in youtube, it finds random nonsense, even though if I search for that in the main google search, it knows which song that is from
20:43:36 -!- Warrigal has quit (*.net *.split).
20:43:37 -!- izabera has quit (*.net *.split).
20:43:45 -!- Warrigal has joined.
20:44:19 -!- izabera has joined.
20:52:47 -!- LKoen has joined.
20:57:31 -!- LKoen has quit (Ping timeout: 255 seconds).
21:01:55 <fizzie> wob_jonas: Agreed, was going to add one.
21:03:47 -!- `^_^v has quit (Quit: This computer has gone to sleep).
21:14:59 -!- Slereah_ has joined.
21:15:43 -!- Guest6549 has quit (Ping timeout: 248 seconds).
21:21:35 <esowiki> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=53583&oldid=53560 * Minin * (+262) /* Introductions */
21:22:05 <esowiki> [[User:Minin]] N https://esolangs.org/w/index.php?oldid=53584 * Minin * (+13) Created page with "me me big boy"
21:22:26 <esowiki> [[User talk:Minin]] N https://esolangs.org/w/index.php?oldid=53585 * Minin * (+3) Created page with "no."
21:23:51 <wob_jonas> also, I wonder if it would be worth splitting to fewer pages, not one per day, but like one per week or one per two weeks
21:25:49 <HackEgo> esowiki: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: <http://esolangs.org/>. (For the other kind of esoterica, try #esoteric on EFnet or DALnet.)
21:32:46 <int-e> fizzie: fwiw, I like the 1 day granularity.
21:36:06 <oerjan> <int-e> hmm, today gog speaks russian with me <-- * briefly reads that as "dog"
21:36:23 <fizzie> Days are sort of the convention. That's not to say I couldn't offer other granularities as well, e.g. as /weeks.html for the index and /YYYY-wNN.{html,txt} for the logs.
21:39:10 <fizzie> They're actually saved as logs/Y/M/D.pb(.br) with no padding of dates, which I kind of regret, because ls sorts the months "1 10 11 12 2 3 ..." and so on. (There's probably an option.)
21:40:16 -!- `^_^v has joined.
21:45:45 -!- zseri has quit (Quit: Leaving).
21:46:50 <int-e> fizzie: I'm kind of tempted to suggest marking the days of the week, thus: http://int-e.eu/~bf3/tmp/e.html
21:47:53 <int-e> (I did that manually so I stopped after 1 1/2 months)
21:51:27 <wob_jonas> fizzie: longer files would help searches
21:52:22 <esowiki> [[User:Minin]] https://esolangs.org/w/index.php?diff=53586&oldid=53584 * Minin * (+42)
21:52:54 <esowiki> [[Kappa]] N https://esolangs.org/w/index.php?oldid=53587 * Minin * (+57) Created page with "kappa is a language coded by humans, this page is a w.i.p"
21:58:15 <esowiki> [[Special:Log/newusers]] create * K1nzy * New user account
21:59:55 * ais523 vaguely wonders why IRC documentation would use a .horse domain name
22:01:03 * int-e wonders whether ais523 has looked at Countercall in the past month.
22:02:11 <ais523> int-e: I look at recent changes sometimes but can easily miss changes to my watchlist as a result
22:02:12 <ais523> http://esolangs.org/wiki/Countercall
22:02:23 <int-e> (I'm still annoyed by how difficult it is to reason about, despite being obviously non-TC ;-) )
22:02:27 <ais523> nope, nobody's changed it
22:02:32 <ais523> also I'm not convinced it's non-TC
22:02:42 <int-e> I know, hence the smiley.
22:02:45 <ais523> if it is non-TC, it's for a bizarre reason that isn't shared with most other languages
22:02:51 <int-e> In fact you state the opposite on the wiki page.
22:02:54 <ais523> as opposed to one of the usual ones
22:03:16 <ais523> like, some sort of chicken-and-egg style problem where to do anything in the language you need to do something else first
22:03:48 <wob_jonas> ais523: ah yes, that crazy language
22:03:52 <int-e> Anyway, the thing still bugs me.
22:04:09 <wob_jonas> int-e: what? how is it "obviously non-TC"?
22:04:41 <wob_jonas> ais523: I really can't make up my mind on whether it's TC
22:05:03 <wob_jonas> sometimes I think it's non-TC and there's probably an easy proof for that but it's hard to find
22:06:05 <ais523> int-e: I thought about countercall a bit because of the interview
22:06:11 <ais523> but haven't come to conclusions
22:06:20 <ais523> I don't think this is something I could do a TCness proof for in my head
22:06:24 <ais523> (which is my preferred way to do them)
22:07:06 <wob_jonas> yeah. I did a proof that dofuck is TC in my head, and only has the very minimal limitations with IO that are obvious, but never written them down
22:07:22 <wob_jonas> also some proofs about my messed up Amycus with certain primitives removed
22:07:26 <esowiki> [[Kappa]] https://esolangs.org/w/index.php?diff=53588&oldid=53587 * Minin * (+436)
22:08:01 <wob_jonas> but in the case of Amycus, finding out that the originally intended language is much less of an esolang made me abandon that
22:08:43 <wob_jonas> I also know that the language I want to create is TC, and more, it can simulate a pointer machine "efficiently", with only polylog factor of time slowdown
22:08:48 <int-e> ais523: did you know that the typed lambda calculus is not TC even if you add a family of fixed point combinators? (a family, because you may need one for every type.)
22:09:28 <wob_jonas> but that one is easier, because I'm deliberately creating that language to be expressive, unlike Countercall which you deliberately define to be hard to use
22:09:41 <ais523> int-e: no, in fact that would greatly surprise me
22:09:54 <ais523> is the problem that there are only finitely many functions of any given type?
22:10:08 <ais523> wob_jonas: countercall was aiming for the edge between TC and not
22:10:13 <wob_jonas> ais523: as in the typed lambda calculus with no algebraic data type?
22:10:14 <ais523> but I think it hit it more precisely than I was expecting
22:10:40 <int-e> (Richard Statman proved that the halting problem is still, somehow, decidable in that calculus. (The paper is called "On The Lambda Y Calculus"))
22:11:07 <int-e> wob_jonas: yes, no algebraic datatypes
22:11:08 <ais523> wob_jonas: you can simulate sum and product types in typed lambda calculus
22:11:19 <wob_jonas> ais523: yeah, but I want recursive types too
22:11:32 <ais523> ah right, recursive types are more power than typed lambda calculus has
22:11:50 <int-e> Adding any non-empty recursive type (and fixed point combinators) will make it TC.
22:12:09 <wob_jonas> int-e: yes, I know, I wrote a loop combinator that way
22:13:17 <zemhill> web.forward: points -44.00, score 0.00, rank 46/47
22:13:20 <zemhill> web.forward: points -44.00, score 0.00, rank 46/47 (--)
22:13:23 <wob_jonas> hmm wait, maybe that's not just one type
22:13:29 <zemhill> web.forward: points -44.00, score 0.00, rank 46/47 (--)
22:14:32 <wob_jonas> but I guess you could just use one recursive type that's a union of everything, simulate a weakly typed language, and then, if you prefer, simulate a strongly typed language in that weakly typed language
22:14:37 <int-e> natural numbers (ala data Nat = Z | S Nat) suffice
22:15:11 <wob_jonas> http://math.bme.hu/~ambrus/pu/olvashato/t2n.olv -- yeah, that's not one type, that's in fact two type constructors with two type parameters each. sorry.
22:15:27 <ais523> huh, someone's playing BF Joust
22:16:43 <wob_jonas> and yeah, I also use the built-in integer number types to do useful things with that loop
22:17:03 <wob_jonas> although lists aren't technically necessary
22:19:52 <wob_jonas> I wish rust had an attribute to tell that a given type parameter in a generic fn definition is a phantom parameter, as in that changing it won't change the generated code. the compiler could check this and allow it only if it can prove that it's indeed phantom in that sense.
22:20:11 <wob_jonas> of course this is hard to define precisely without knowing how rust represents certain types.
22:20:42 <zemhill> oerjan.hmmm: points -46.00, score 0.00, rank 47/47
22:20:45 <ais523> wob_jonas: does PhantomData do what you want?
22:21:03 <wob_jonas> ais523: PhantomData does something else
22:21:20 <ais523> I know what PhantomData does but not really what you want
22:21:25 -!- moony has joined.
22:21:29 <ais523> do you mean "uninspected", as in the code just copies around the value without looking at it?
22:21:38 <ais523> oerjan: this reminds me, has there been a new hilltopper in 2017 at all?
22:21:42 <ais523> I used to do one a year
22:21:51 <ais523> but I'm out of ideas and am worried that BF Joust has been solved
22:21:55 <ais523> http://esolangs.org/wiki/BF_Joust_strategy
22:22:02 <ais523> http://esolangs.org/wiki/BF_Joust_strategies
22:22:09 <esowiki> [[Kappa]] https://esolangs.org/w/index.php?diff=53589&oldid=53588 * Minin * (+549)
22:22:33 <oerjan> i think things got haywire after that beat-everything-on-the-hill program someone wrote
22:22:54 <ais523> right, there was some sort of automatic winning program generator, wasn't there?
22:22:58 <quintopia> i'm so gld they did because if they didn't i was going to
22:23:00 <ais523> which means you'd have to keep source secret in the future
22:23:04 <wob_jonas> ais523: no, it can't even copy around such values, because it would have to know at least the size of that type for that, and we can't express a constraint that implies the size of a type, except possibly in a degenerate way that only zero or one types satisfy
22:23:32 <ais523> wob_jonas: it can copy around pointers to them though
22:23:37 <quintopia> ais523: actually, you wouldn't need secret source if you either a) added some source of randomness or b) made the hill infinite
22:23:43 <ais523> like, with a Box<T> you don't care what the T is
22:23:53 <wob_jonas> ais523: it could copy pointers, yes, but it's also possible that it doesn't do even that
22:23:58 <ais523> quintopia: I think a) would ruin the game
22:24:08 <ais523> and b) doesn't really work because it'd still only have finitely many programs at any given point
22:24:47 <quintopia> ais523: b) works because you could submit a family of programs, all similar, such that it was impossible for the same strategy to beat all of them (i think)
22:25:16 <oerjan> well we already constructed one such family
22:25:18 <ais523> quintopia: yes but you need a huge number of them
22:25:30 <esowiki> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=53590&oldid=53583 * K1nzy * (+193) /* Introductions */
22:25:30 <quintopia> but you could generate them automatically
22:25:30 <ais523> I constructed them a while back, I think
22:25:38 <quintopia> it's a different game, but it isn't broken
22:25:38 <ais523> also it's only to avoid being beaten on all tape lengths and polarities
22:25:49 <ais523> specifically they win on tape length 10
22:26:22 <quintopia> and several hundred programs is not a problem for an infinite hill, is it?
22:26:27 <wob_jonas> ais523: wait, so what does it guarantee exactly?
22:26:39 <esowiki> [[Kappa]] https://esolangs.org/w/index.php?diff=53591&oldid=53589 * K1nzy * (-654)
22:27:07 <wob_jonas> ais523: does it guarantee that against any fixed program, at least one of your family on at least one polarity will not lose on tape length 10?
22:27:25 <wob_jonas> several hundred doesn't sound too bad
22:27:29 <ais523> wob_jonas: that in the group of 768 programs, against any fixed program, at least one of those 768 programs will beat it on tape length 10 for any specific polarity
22:28:17 <quintopia> ais523: why would a source of randomness ruin the game? for instance, why wouldn't "bf joust except every tape cell starts with value x, with x chosen uniformly at random from 0 to 255" be a bad game?
22:29:29 <ais523> quintopia: that proposal might not ruin things (apart from the small random chance every program would have of dying if the same rule applied to the flags), but in general randomness allows you to set decoys much more easily than you can deal with them
22:29:39 <wob_jonas> I mean, you might try to start such a construction by taking all possible strategies a program can do in the first 100000 steps, which would be like 5**2**100001 distinguishable strategies, and then construct a program against each
22:29:46 <wob_jonas> then you'd have a rather large infinite family
22:29:51 <moony> BF Jousting? Why not. *begins research*
22:30:33 <ais523> wob_jonas: there's a time limit
22:30:40 <ais523> so there are only finitely many possible BF Joust programs in theory
22:30:41 <wob_jonas> and since you keep writing proofs about two-counter machines, which have a double-exponential slowdown from sane computing models, I don't think it's strange that I think of that when you mention a finite family
22:30:42 <quintopia> ais523: re: the flags, just make it so that winning/dying involves having the flag set to x+128 instead of zero
22:30:44 <ais523> (the space is very large tohugh)
22:30:58 <wob_jonas> ais523: yes, exactly, the time limit is 100000 turns. that's what I said.
22:31:20 <ais523> quintopia: so what you have now is equivalent to BF Joust where [ and ] test for a random (but consistent) number rather than 0
22:31:24 <ais523> writing a program for that seems painful
22:31:52 <ais523> like, even if you know where the enemy flag is, zeroing it would require quite a lot of code
22:32:14 <wob_jonas> and there probably aren't much less than 2**c**100001 different strategies for some not too small constant c if you allow exponentially large program source codes
22:32:23 <ais523> !zjoust runner (>)*8(>[-])*21
22:32:23 <zemhill> ais523.runner: points -12.48, score 10.90, rank 44/47
22:32:26 <shachaf> This is a nice idea for a self-modifying game: https://www.youtube.com/watch?v=Ca5BYKRVXHM
22:32:28 <quintopia> would you rather the initial tape value just didn't apply to the flags?
22:32:34 <ais523> whereas a simple attack is trivial to write
22:32:46 <ais523> quintopia: still doesn't help much
22:33:00 <quintopia> wait, why is it a good thing that a simple attack is trivial to write?
22:33:03 <ais523> the fact is that [-] is much simpler and shorter than any routine for setting a cell to some fixed value for which you don't even know what it is
22:33:06 <quintopia> isn't it supposed to be hard to win?
22:33:18 <ais523> and I imagine that in practice every program would have 256 different variants, copy-and-pasted
22:33:21 -!- sprocklem has quit (Ping timeout: 264 seconds).
22:33:28 <ais523> also, the skill of BF Joust is about exploiting patterns in what your opponents do
22:33:39 <ais523> just look at growth2, for example
22:33:40 <esowiki> [[Kappa]] https://esolangs.org/w/index.php?diff=53592&oldid=53591 * K1nzy * (+441)
22:33:59 <quintopia> wait wait...why would it not help if we had "bf joust except that every tape value /except the flags/ is uniformly random x"?
22:34:02 <ais523> if very basic things require very complex code, the patterns will be hard to exploit because they'll be complex in your own right
22:34:32 <wob_jonas> that would ruin the beauty and simplicity of bfjoust
22:34:50 * int-e eyes wob_jonas suspiciously.
22:34:52 <ais523> quintopia: because in that case, decoys don't really work because most code won't be able to distinguish them from the original value anyway
22:34:54 <quintopia> wob_jonas: beauty+simplicity=solved. the whole goal here is to ruin it in some small way
22:35:11 <quintopia> ais523: decoys wouldn't be an important strategy in this new game
22:35:40 <ais523> well, what /would/ be an important strategy?
22:35:55 <ais523> nearly all the attack innovations are designed to deal with decoys
22:36:03 <int-e> So what would be a strategy? Go forward 10 steps, and start clearing?
22:36:31 <wob_jonas> also that's a search space of like 257**28 different starting patterns, although the server would probably only do a statistical test on a set of starting patterns chosen crypto randomly, but still, there might be a lot of pairs of programs that beat each other very close to 1/2 the time, and that would be hard to judge
22:36:33 <esowiki> [[Language list]] https://esolangs.org/w/index.php?diff=53593&oldid=53550 * K1nzy * (+12) /* Non-alphabetic */
22:36:34 <quintopia> turtle would still be viable. defense would still be viable. a lot of other things would require innovation from scratch.
22:36:51 <int-e> Basically the whole art of defense would probably be lost... and there's no reasonable way of guessing the tape length anymore.
22:38:25 <quintopia> well if everyone abandons decoys...it would be possible to check tape length by looking at tape cells and seeing if they have the same value. it's slower, but maybe that's a good thing.
22:38:54 <quintopia> then it becomes useful to modify the tape cells to be slightly different from their sstarting values, and decoys come back
22:40:00 -!- LKoen has joined.
22:40:05 <ais523> quintopia: well what probably happens is that people write 256 different versions of their code and just change between them based on the second tape element
22:40:25 <ais523> you can't practically interfere with that; a fast rush program could do so in current BF Joust but you can't write fast rush programs in this variant because they can't safely move fast enough
22:41:06 <quintopia> okay here's a weird idea for a game-that-totally-isn't-bf-joust: the jousters start with opposite values of zero and opposite flag heights. what A thinks is zero, B thinks is 128, and while A thinks its flag is zeroed, B thinks A's flag is 128. And vice versa.
22:41:42 <ais523> what are the values in between?
22:42:27 <quintopia> ais523: idunno. maybe they alternate between 64 and -64
22:42:54 <ais523> I think a key strategic point of BF Joust is the fact that a cell without a decoy is very easy to skip past
22:42:56 <wob_jonas> quintopia: in L:TG, the players number slots from the opposite direction, so when you can reference slot 0 the easiest and slot 1 the next easiest, those are harder for your opponent to reference
22:43:42 <wob_jonas> quintopia: https://esolangs.org/wiki/Lambda:_the_Gathering
22:45:45 -!- `^_^v has quit (Quit: This computer has gone to sleep).
22:47:20 -!- Phantom__Hoover has joined.
22:48:29 <quintopia> ais523: so what if all the cells between are set to 64 or -64 (alternating) but there is a new conditional {} that detects either of those values specifically.
22:49:13 <ais523> it's getting more complex but starting to be maybe viable
22:49:17 <ais523> I still prefer the original game I think though
22:50:05 <ais523> come to think of it, you can just make the in-between cells 64 for both programs, making - for one program the same as + for the other
22:51:16 <wob_jonas> but then you want to think of that as renormalized by shifting all values with -64 and modifying the loop statements
22:51:18 -!- Phantom_Hoover has quit (Ping timeout: 272 seconds).
22:52:14 <ais523> wob_jonas: it's basically BF Joust except that the flags start at 64 and you win by changing them to -64
22:52:26 <ais523> actually, come to think of it
22:52:34 <ais523> stealth programs do way too well in this variant
22:52:38 <wob_jonas> ais523: sort of. you also have two extra statements
22:52:48 <ais523> you just set your own flag to look the same as the filler on the tape
22:53:27 <ais523> and the only way the opponent can stop that is by either a fast rush (those things are typically easy to stop), or by adjusting every filler element by 64 to see if it's actually a flag in disguise
22:53:40 <ais523> whereas stealth programs in regular BF Joust have to constantly stay on their flag to avoid losing
22:53:50 <wob_jonas> ais523: you still have another statement, don't you?
22:54:02 <wob_jonas> one that tests for exactly the value you have to attain in the goal square
22:54:25 <quintopia> ais523: yeah i was thinking the same about making them all 64, except i would allow both the sieve and kettle polarities. there shouldn't be a way to tell the difference between polarity and flag height by testing
22:54:31 <ais523> but that still takes 128 cycles
22:54:59 <ais523> quintopia: the only reason sieve and kettle exist is so that players don't have to write their programs both ways round to see which is better
22:55:12 <ais523> in retrospect, it'd have worked better to start flags at 100 or so and break the symmetry that way
22:56:16 <quintopia> ais523: oh but they do so much more than that. it makes it so you have to optimize your program to work best on the sum of both polarities rather than just one of the two
22:56:27 <wob_jonas> I was thinking about games that are both multiplayer classic german-style board games, but at the same time their visible state can be written in a small enough space that you could play them easily in IRC with an IRC bot handling the game rules but only ordinary IRC clients on the player's side
22:56:34 <wob_jonas> some classical card games are technically like that
22:56:50 <ais523> wob_jonas: also, their hidden state needs to be player-specific
22:56:55 <wob_jonas> whereas games with rectangular boards typically aren't like that
22:57:08 <wob_jonas> because you need to draw a large rectangular board that's hard to put in one irc line
22:57:08 <ais523> like, it's hard to do something like poker over IRC if you only have one deck
22:57:20 <ais523> because how do you stop people drawing the same cards as each other?
22:57:59 <wob_jonas> ais523: the irc bot can handle the hidden state, but it's even better to have games where there's no state hidden from just one player, only randomness that's hidden equally from all players
22:57:59 <quintopia> okay not eurogames. i've played apples to apples cards against humanity and seen mafia played with a bot. there's no reason that basically any game that doesn't require complicated art work couldn't work the same
22:58:42 <wob_jonas> a game that I think would work well is Niagara, which has a really small state and no hidden state at all
22:58:56 <wob_jonas> but requires at least three players, at least four preferred, which is sort of a drawback
22:59:29 <quintopia> i can think of a few games that have those properties
22:59:41 <quintopia> but i don't see what's wrong with player-specific hidden state?
23:00:03 <wob_jonas> quintopia: player-specific hidden state can work too, sure, like in poker
23:00:24 <ais523> player-specific hidden state is fine, you just need it to be independent really
23:00:32 <ais523> i.e. correlations between the hidden states are hard to set up without a bot
23:00:41 <wob_jonas> ais523: but I did say there'd be a bot
23:00:56 <ais523> I think it's more interesting to have games you could play without
23:01:03 <wob_jonas> ais523: the bot can be fancy, only the UI the players have to install can't be, it must work with any plain IRC client on their side
23:01:03 <ais523> there are some zero-hidden-state games like chess
23:01:41 <wob_jonas> and yes, chess definitely works, people have been playing correspondence chat way before irc existed
23:02:04 <quintopia> there is a framework for them: https://github.com/Zarthus/irc-games-bot
23:02:14 <LKoen> well, in your defense, people have been playing correspondence chat way before chess existed
23:03:50 <LKoen> most hidden state issues can be solved with hash functions, but it can make the game tedious
23:04:06 <wob_jonas> LKoen: yes, but you need either a trusted bot or a special client for that
23:04:07 <quintopia> why the frameworks hate? it seems awfully useful to be able to add a new game by just adding a small amount of code to an existing bot designed for the purpose
23:04:21 <wob_jonas> you can't expect people to compute cryptographically safe functions in their head
23:04:31 <LKoen> oh, yes, but the bot can be offline
23:04:56 <LKoen> and unless there is money involve in the game, you're probably fine with something as unsafe as md5
23:04:58 <wob_jonas> quintopia: because the irc protocol is so simple that you can do that without a framework, a framework usually just makes it harder in the "now I have two problems" way
23:05:16 <wob_jonas> LKoen: doesn't matter, people don't complain md5 in their head either
23:05:23 <quintopia> wob_jonas: sounds like you've used some bad frameworks :)
23:05:29 <wob_jonas> you need a real computer, and these days a very cheap real computer can compute secure hashes too
23:06:09 <wob_jonas> quintopia: yes, my work involves computer stuff, including trying to work with programs co-workers write
23:07:15 <fizzie> oerjan: I think I fixed the IE11 thing. At least this IE11 screenshotting website (which originally showed them overlapping, like you said) now renders right.
23:07:55 <wob_jonas> ais523: by the way, about that cryptographical stuff I was asking about, I understand now that people use spihash when a birthday attack isn't a problem, because then you can get away with half as long a hash then normally, and the 64 bits of hash tables seems enough at least to avoid hash table performance degradation attacks, but
23:08:21 <ais523> wob_jonas: "attacks, but"
23:08:40 <wob_jonas> (1) I think people are also abusing siphash for things where, although you can indeed get away with a half-sized hash because birthday attacks aren't a problem, 64 bits seems suspiciously slow, and
23:09:02 <ais523> that's not enough text to have been cut off :-P
23:10:24 <ais523> but either something very weird is going on or you're just screwing me
23:10:33 <ais523> or one of us got disconnected when you were using newline as punctuation
23:10:36 <wob_jonas> (2) I still don't understand why a 64 bit long hash would allow a different construction and be fundamentally cheaper than any ordinary 256 bit hmac
23:10:51 <wob_jonas> ais523: I'm just delibeartely breaking text to multiple lines so that I don't get cut off
23:10:59 <wob_jonas> and I'm typing slowly and thinking in between what to say
23:11:04 <wob_jonas> and not adding sentence boundaries
23:11:23 <ais523> I use newline as punctuation sometimes but normally I think of the rest of the sentence first
23:11:39 <wob_jonas> Also I write sentences ending with a conjunction to make it clear that I have more to add.
23:11:41 <ais523> or press it by accident trying to hit backspace, that happens too
23:12:09 <wob_jonas> Yes, I should probably try to add sentence breaks instead.
23:12:31 <wob_jonas> So anyway, I still only get part of what this whole siphash thing is about.
23:13:10 <wob_jonas> Even if there are valid uses, it still seems to me like it's overhyped and overused and will bite some careless people in the back.
23:13:43 <wob_jonas> But then, crypto is always like that. Careless people will write bad code,.
23:15:56 <pikhq> wob_jonas: The 64-bit hash thing in SipHash is actually not what buys them *radically* better performance.
23:16:18 <wob_jonas> pikhq: yes, that's what point (b) is about.
23:16:45 <pikhq> Rather, what buys them better performance is they're trying to get properties out of the function that are much cheaper.
23:16:46 <wob_jonas> How can it have radically better performance if it's just a hmac that's a quarter as long as sha256-hmac, unless it is actually broken,
23:17:07 <wob_jonas> or has some sort of weaker guarantee besides being one quarter the size that I really don't understand.
23:17:31 <pikhq> They try to guarantee that, given hash(x, k), where x is the message and k is the key, you don't know anything about k, or anything about hash(y, k).
23:17:38 -!- boily has joined.
23:17:39 <wob_jonas> pikhq: that's exactly my problem. I can't believe you can get free lunch by that. Something must be wrong about what they think.
23:18:03 <pikhq> SHA, and by extension HMAC-SHA, tries to guarantee that you cannot find x, y such that hash(x) == hash(y).
23:19:24 <pikhq> SipHash does not guarantee no collisions, it only guarantees you cannot discover the hash of something without knowing the key, and that you can't find the key.
23:19:51 <pikhq> But given the key, it seems it'd actually be rather easy to produce collisions.
23:19:59 <wob_jonas> pikhq: they try to guarantee a bit more about siphash. they try to guarantee that even if you can send x to query hash(x,k) from an adversary with a hidden k, you can know nothing about hash(y,k) for any y that you haven't sent in a query yet
23:20:17 <pikhq> That's what I said.
23:20:25 <pikhq> If you know hash(x, k) you can't know hash(y, k).
23:20:39 <wob_jonas> pikhq: and I think if you guarantee that AND the hash is 256-bit long, not just 64 bits, then that implies that you can't find a collision
23:20:54 <pikhq> I'm unclear on that.
23:21:10 <wob_jonas> ok, maybe it only guarantees that you can't find a collision if you don't know k
23:21:54 <pikhq> It's also really worth knowing the particular context that SipHash is intended for.
23:22:09 <wob_jonas> can we have something in between the two, for signing messages with a hidden key where a birthday attack isn't a problem, but with a 128 bit hash?
23:22:28 <wob_jonas> pikhq: what is the context? is it only to avoid hash table performance degradation?
23:22:46 <pikhq> The main one is to avoid hash table performance degradation from active attackers.
23:23:20 <pikhq> Which explains its small output: larger output would buy you nothing, and cost you more to compute.
23:24:26 <wob_jonas> So is the speed gain because of this weakened guarantee, where if you knew k you could break the hash, or is it not because of that, but only from the quarter size output?
23:24:46 <pikhq> It's because of both of those.
23:25:37 <wob_jonas> I'll probably just be cautious because I don't understand the crypto enough, and just not use siphash directly , except possibly through the ready-made hash table libraries or programs.
23:25:58 <wob_jonas> As long as I don't need much performance, I can get away with using a slower hash function, like sha256 or sha3-256.
23:26:08 <pikhq> The weaker guarantee lets them use a much simpler compression function, but the smaller output and smaller state lets them have to work on less memory (which is faster)
23:26:29 <wob_jonas> And the HMAC construction based on those two of course.
23:26:46 <pikhq> That's probably wise. When choosing any algorithms, you really, really should know what you do and do not get from the algorithm.
23:26:59 <pikhq> Especially with ones that are somewhat new with less established wisdom on how to use them.
23:27:14 <wob_jonas> This difference between the guarantees, it's similar to what ais was explaining about crypto random sources, right?
23:27:47 <wob_jonas> pikhq: yes, I know what I want to do, although there are several different things I want to do with different requirements.
23:28:46 <ais523> wob_jonas: wait, I thought I explained that several years ago and in #nethack4
23:29:04 <ais523> "was explaining" seems like an understatement
23:29:14 <wob_jonas> ais523: possible, but you also explained that a few weeks ago here when I asked about them
23:29:16 <pikhq> Some of the biggest screwups in crypto I've seen are from people not knowing WTF crypto algorithms do and do not buy them.
23:29:45 <pikhq> And, unsurprisingly, when you assume a function guarantees something it doesn't, you have a bad time.
23:29:54 <ais523> wob_jonas: hmm, clearly my memory's getting less good
23:30:00 <wob_jonas> ais523: I think back with nh4, I was only listening to the part where you replaced a clearly non-crypto rng with something that does some sort of crypto, but didn't look at the details
23:30:15 <wob_jonas> ais523: it's possible that you explained more about it, but I forgot or wasn't listening
23:30:20 <ais523> NH4's RNG isn't cryptosecure in the normal sense (unlike AdeonRNG, which is)
23:30:28 <ais523> it's missing one of the requirements, the other ones are the ones I cared about
23:30:42 <wob_jonas> ais523: yes, that's what you explained here a few weeks ago
23:30:55 <ais523> maybe I just explain it in a couple of sentences each time the topic comes up
23:31:04 <ais523> rather than as a fully detailed discussion
23:31:22 <wob_jonas> Namely that for nh4, you don't need the requirement that if someone finds out about the current state of the rng, they can't guess anything about the previous values.
23:32:09 <wob_jonas> I know it was something about finding out the hidden key.
23:33:23 <ais523> right, in NH4 knowledge of the internal state lets you predict previous outputs
23:33:35 <ais523> with any RNG, it allows you to predict future outputs, which is typically more useful
23:33:48 <wob_jonas> This came up in #esoteric when I asked about why there seem to be different sort of crypto random generators, and why some of them need a repeated source of outside entropy (I'm still not sure which ones do),
23:34:31 <wob_jonas> and I also told about a specific requirement I wanted to solve and could solve with a crypto-RNG but wondered if there was a cheaper solution.
23:38:43 <wob_jonas> And it seems an RNG with nethack's crypto requirements solves that, but nothing cheaper than that that we know of.
23:41:24 <wob_jonas> Btw, the new version of libtomcrypt has an SHA-2 implementation, which shows that the maintainer who took over actually does work on it more than just bugfixes.
23:41:48 <wob_jonas> That is always encouraging when you consider which library you want to use.
23:41:59 <wob_jonas> Even if libtom might not be the best performance-wise.
23:42:44 <wob_jonas> With its decent documentation it might be a good choice when I don't need very high performance.
23:43:22 <wob_jonas> There's also this https://tls.mbed.org/ library recommended to me, which exports both crypto primitives, and an interface for ssl/tls.
23:47:17 -!- AnotherTest has quit (Ping timeout: 255 seconds).
23:51:32 -!- augur_ has quit (Remote host closed the connection).
23:55:26 <\oren\_> https://www.youtube.com/watch?v=QIFGWe3KHXA google translate is my favorite vocaloid
23:57:26 -!- hppavilion[1] has joined.