00:00:08 <fizzie> shachaf: Right, the thing you can't have. But still.
00:00:11 <shachaf> fizzie: What's the deal with programs not having a "no chat visible" mode, anyway? So annoying.
00:00:24 <orin> b_jonas: biguate: to make something biguous, or less ambiguous
00:00:26 <fizzie> In plain Hangouts I think you could have a "no chat visible" mode.
00:00:39 <shachaf> When I use Slack -- which I try not to -- I keep having to type "C-k sla<ret>" to switch to Slackbot, as a semi-neutral thing.
00:00:52 <shachaf> In Pidgin I gave up and I just leave focus on the first tab.
00:01:00 <b_jonas> fizzie: there has to be an original heart suit, doesn't there? there's a heart suit character in both cp437 and in windows Symbol font
00:01:18 <b_jonas> and those are encodings they've encoded in unicode
00:01:56 <b_jonas> orin: I thought that's called "disambiguating", or "dambing" for short in Wikipedia jargon
00:02:26 <orin> but that "disam" seems like two negative prefixes in a row
00:02:31 <fizzie> b_jonas: That does't mean it needs to have an ambiguous "original heart suit". I think the CP437 heart suit character is just translated to the BLACK HEART SUIT.
00:02:54 <b_jonas> fizzie: sure, it's possible that one or more of those characters is the original one
00:02:55 <orin> "noninflammable"
00:03:36 <b_jonas> one or both of the Commodore PET/64 charsets also have a heart suit
00:03:37 <shachaf> "am" is a negative prefix?
00:04:08 <b_jonas> shachaf: no, but "a" is, and taking just one letter off from a word that isn't actually prefixed would be misunderstandible
00:04:18 <b_jonas> also "an" is a negative prefix, and "am" is close
00:05:12 <fizzie> Also the Unicode official CP437 table -- https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/PC/CP437.TXT -- doesn't actually translate the <' ' characters to their graphical equivalents, but to the corresponding control characters.
00:05:22 <orin> https://www.dictionary.com/browse/an-
00:05:56 <b_jonas> fizzie: how about the translation tables from symbol and petscii?
00:06:08 <kmc> so many bytes and codepoints wasted on never used ascii control characters :(
00:06:25 <orin> kmc: that's why I often go out of my way to use them
00:06:55 <b_jonas> kmc: they aren't never used. they were used as control characters in terminal/console keyboard input.
00:07:10 <kmc> but they're very rarely used today
00:07:14 <b_jonas> the high controls not that much
00:07:14 <kmc> and C1 control characters even less so
00:07:30 <kmc> you can send ECMA-48 codes using them, but people mainly use the low escapes instead
00:07:54 <b_jonas> kmc: these days we aren't stuck with a font of 128 characters burnt into ram, so there's no such thing as "wasted" characters really
00:08:28 <orin> for example, one can avoid many problems by using \37 as your separator in CSV files
00:08:45 <kmc> b_jonas: you could have shorter UTF-8 strings if some of the two byte characters were representable in one byte
00:08:58 <kmc> instead those bytes are practically unused
00:09:34 <b_jonas> orin: yes, I currently use \x1F as a sort of separator in a text file I write from one program and read from another program, where I have to save text that can in theory contain arbitrary unicode characters, though rarely does
00:09:51 <fizzie> b_jonas: I found the "IBM PC memory-mapped video graphics to Unicode" table -- https://unicode.org/Public/MAPPINGS/VENDORS/MISC/IBMGRAPH.TXT -- and that one maps the 03 to 2665 BLACK HEART SUIT, so that's arguably the original.
00:10:28 <b_jonas> I also use \x10 as an escape prefix for certain control characters, plus \x11 to represent a crlf in the original
00:10:45 <b_jonas> I don't even have code to read the \x10 escapes by the way, because they've never come up yet
00:10:50 <b_jonas> I only have code to write it
00:10:55 <shachaf> Oh, this new emoji people are using is SHOCKED FACE WITH EXPLODING HEAD 🤯
00:10:58 <b_jonas> the \x11 comes up, because some of the strings have crlf
00:11:26 <b_jonas> sorry, I think I actually use \x0B to represent a crlf
00:12:03 <orin> oh, \37 is underline in IRC
00:12:19 <fizzie> In any case, HEAVY BLACK HEART clearly hasn't been intended to be related to any of that, it's in the "Punctuation ornaments" subsection of the "Dingbats" with the FLORAL HEART and HEAVY HEART EXCLAMATION MARK ORNAMENT and ROTATED HEAVY BLACK HEART BULLET and suchlike.
00:12:37 <fizzie> (It's very unfortunate that it got co-opted to be the standard red heart on systems.)
00:13:34 <kmc> yeah, that seems weird to me
00:14:05 <fizzie> I'm guessing nobody was willing to wait for the actual emoji stuff?
00:14:07 <fizzie> (The black and white heart suits are part of Miscellaneous Symbols / Playing card symbols.)
00:22:13 <shachaf> fizzie: The specific use case of a sparse set that needs efficient iteration is a good one, I guess.
00:22:29 <shachaf> Because you'd want something like the dense array anyway.
00:59:01 -!- tromp has joined.
00:59:43 -!- neanias has joined.
00:59:46 -!- dingwat has joined.
01:11:49 <fizzie> Every time I use a C++17 if with an init-statement, I get the feeling I'm actually writing Go instead.
01:12:24 <shachaf> fizzie: Did you know you can declare variables in the middle statement of a for loop?
01:18:08 <fizzie> Have you always been able to do that? Apparently at least from C++11 onwards, and also in the condition part of while and if.
01:19:33 <fizzie> I guess you always have. Or at least from C++03, which is far enough.
01:19:44 <fizzie> Odd. In C you definitely can't.
01:20:35 <pikhq> Huh. Yeah, and it was kinda new you could do it in the first statement of a for loop.
01:20:54 <fizzie> I guess it's not quite as useful as the init-statement if/while, but could still be useful.
01:21:19 <pikhq> The init statement if/while is pretty useful.
01:21:46 <shachaf> I mean, it's as useful as doing it in a while, which I did know C++ allowed.
01:22:04 <shachaf> Well, no, it allows the Go-style init-statement in a while.
01:22:12 <shachaf> I suppose that's not the same.
01:22:19 <pikhq> (no reason it couldn't be in C that I know of, for that matter)
01:26:21 <fizzie> The init statement makes this more useful with iterators. For pointers you could've done `if (auto p = find(x)) use(p);` even before, but now you can also `if (auto it = x.find(y); it != x.end()) use(it);`
01:28:01 <kmc> did they add statement expressions ever
01:29:46 <shachaf> In my until-end-of-block if statement, you don't need initialization statements as a special feature.
01:30:06 <shachaf> You write "if (x := y; z) { ... }" as "{ x := y; if(z); ... }"
01:35:31 -!- xkapastel has quit (Quit: Connection closed for inactivity).
01:43:52 <Sgeo__> https://web.archive.org/web/20070829102324/http://www.ccs3.lanl.gov/mega-math/infinity.map <3
01:46:29 -!- b_jonas has quit (Quit: leaving).
01:48:25 -!- paul2520 has joined.
01:50:26 -!- arseniiv has quit (Ping timeout: 240 seconds).
01:52:55 -!- arseniiv has joined.
02:06:21 <zzo38> What is the god of snow?
02:11:33 <esowiki> [[User:A]] https://esolangs.org/w/index.php?diff=59807&oldid=59657 * A * (+22)
02:11:57 <esowiki> [[User:A]] https://esolangs.org/w/index.php?diff=59808&oldid=59807 * A * (+56)
02:12:22 <esowiki> [[User:A]] https://esolangs.org/w/index.php?diff=59809&oldid=59808 * A * (+67)
02:13:53 <esowiki> [[User:A]] https://esolangs.org/w/index.php?diff=59810&oldid=59809 * A * (+15)
02:14:12 <esowiki> [[User:A]] https://esolangs.org/w/index.php?diff=59811&oldid=59810 * A * (-17)
02:14:41 <esowiki> [[User:A]] https://esolangs.org/w/index.php?diff=59812&oldid=59811 * A * (+78) /* Custom links */
02:15:20 <esowiki> [[User talk:A]] https://esolangs.org/w/index.php?diff=59813&oldid=57455 * A * (-4602) Blanked the page
02:15:36 <esowiki> [[User:A]] https://esolangs.org/w/index.php?diff=59814&oldid=59812 * A * (+51)
02:17:48 <esowiki> [[User:A]] https://esolangs.org/w/index.php?diff=59815&oldid=59814 * A * (+25)
02:18:06 <esowiki> [[User:A]] https://esolangs.org/w/index.php?diff=59816&oldid=59815 * A * (+7) /* Custom links */
02:21:21 <esowiki> [[User:A]] https://esolangs.org/w/index.php?diff=59817&oldid=59816 * A * (+101) /* Custom links */
02:31:44 <esowiki> [[User:A]] https://esolangs.org/w/index.php?diff=59818&oldid=59817 * A * (+814)
02:32:33 <esowiki> [[User:A]] https://esolangs.org/w/index.php?diff=59819&oldid=59818 * A * (+0) Redirected page to [[User:A]]
02:33:20 -!- arseniiv has quit (Ping timeout: 246 seconds).
02:34:29 <esowiki> [[User:A]] https://esolangs.org/w/index.php?diff=59820&oldid=59819 * A * (-3)
02:35:20 <esowiki> [[User:A]] https://esolangs.org/w/index.php?diff=59821&oldid=59820 * A * (+32)
02:42:33 <esowiki> [[User:A]] https://esolangs.org/w/index.php?diff=59822&oldid=59821 * A * (+456)
02:42:58 <esowiki> [[User:A]] https://esolangs.org/w/index.php?diff=59823&oldid=59822 * A * (+0) /* How to cook your delicious computer */
02:45:31 <esowiki> [[User:A]] https://esolangs.org/w/index.php?diff=59824&oldid=59823 * A * (+62) /* How to cook your delicious computer */
02:53:09 <esowiki> [[User:A]] https://esolangs.org/w/index.php?diff=59825&oldid=59824 * A * (-56) /* How to cook your delicious computer */
02:55:29 <esowiki> [[User:A]] https://esolangs.org/w/index.php?diff=59826&oldid=59825 * A * (+57)
02:58:45 <esowiki> [[User:A]] https://esolangs.org/w/index.php?diff=59827&oldid=59826 * A * (+120)
02:59:32 <esowiki> [[User:A]] https://esolangs.org/w/index.php?diff=59828&oldid=59827 * A * (+29) /* How to cook your delicious computer */
03:00:29 <esowiki> [[User:A]] https://esolangs.org/w/index.php?diff=59829&oldid=59828 * A * (-79)
03:00:55 <esowiki> [[User:A]] https://esolangs.org/w/index.php?diff=59830&oldid=59829 * A * (+24)
04:49:57 -!- FreeFull has quit.
05:14:32 -!- rodgort has quit (Quit: Leaving).
05:19:32 <esowiki> [[User:A]] https://esolangs.org/w/index.php?diff=59831&oldid=59830 * A * (+468)
05:20:52 <esowiki> [[User:A]] https://esolangs.org/w/index.php?diff=59832&oldid=59831 * A * (+13) /* Function innovation */
05:23:55 -!- rodgort has joined.
05:27:33 <esowiki> [[User:A]] https://esolangs.org/w/index.php?diff=59833&oldid=59832 * A * (+6)
05:28:00 <esowiki> [[User:A]] https://esolangs.org/w/index.php?diff=59834&oldid=59833 * A * (-1) /* Impossible to describe function? */
05:42:46 <esowiki> [[User:A]] https://esolangs.org/w/index.php?diff=59835&oldid=59834 * A * (+299) /* Impossible to describe function? */
05:44:12 <esowiki> [[User:A]] https://esolangs.org/w/index.php?diff=59836&oldid=59835 * A * (+4) /* Impossible to describe function? */
05:46:14 <esowiki> [[User:A]] https://esolangs.org/w/index.php?diff=59837&oldid=59836 * A * (+201) /* Impossible to describe function? */
05:47:00 <esowiki> [[User:A]] https://esolangs.org/w/index.php?diff=59838&oldid=59837 * A * (-14) /* Impossible to describe function? */
05:47:19 <esowiki> [[User:A]] https://esolangs.org/w/index.php?diff=59839&oldid=59838 * A * (-17) /* Impossible to describe function? */
05:50:03 <esowiki> [[User:A]] https://esolangs.org/w/index.php?diff=59840&oldid=59839 * A * (-1906)
05:51:26 <esowiki> [[User:A]] https://esolangs.org/w/index.php?diff=59841&oldid=59840 * A * (+49)
05:54:04 <esowiki> [[User:A]] https://esolangs.org/w/index.php?diff=59842&oldid=59841 * A * (+155)
05:55:53 <esowiki> [[User:A]] https://esolangs.org/w/index.php?diff=59843&oldid=59842 * A * (+89)
05:57:24 <esowiki> [[User:A]] https://esolangs.org/w/index.php?diff=59844&oldid=59843 * A * (+14)
05:57:42 <esowiki> [[User:A]] https://esolangs.org/w/index.php?diff=59845&oldid=59844 * A * (+0)
05:58:02 <imode> I don't know what he's on about.
05:58:17 <imode> he doesn't seem to know much if anything.
05:58:36 <imode> he made a two-variable factorial function.
06:04:38 <esowiki> [[User:A]] https://esolangs.org/w/index.php?diff=59846&oldid=59845 * A * (-11)
06:05:07 -!- rodgort has quit (Quit: Leaving).
06:06:28 <esowiki> [[User:A]] https://esolangs.org/w/index.php?diff=59847&oldid=59846 * A * (+62)
06:14:35 -!- rodgort has joined.
06:33:57 -!- oerjan has quit (Quit: Nite).
06:39:44 -!- copumpkin has quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…).
08:49:22 <shachaf> I download IRC logs with wget -c
08:49:42 <shachaf> I think something about the configuration of the HTTP server makes it so it tries to redownload a fully-downloaded file?
08:50:09 <shachaf> http://esolangs.org/logs/2019-01.txt doesn't have a Content-Length
08:50:48 <shachaf> Maybe these are generated from a database or something instead of being real files.
08:53:20 <int-e> shachaf: those aren't files; they are generated from a database on the spot
08:53:34 <int-e> (confirming what you wrote)
08:58:05 <shachaf> How am I supposed to download IRC logs, anyway?
08:58:14 <shachaf> What I do now is make a list of files and wget -ci it
08:58:27 <shachaf> I add newer files at the top
09:06:55 -!- tromp has quit (Remote host closed the connection).
09:40:41 -!- tromp has joined.
09:45:03 -!- tromp has quit (Ping timeout: 245 seconds).
09:46:04 -!- tromp has joined.
10:04:42 -!- imode has quit (Ping timeout: 250 seconds).
10:05:43 -!- AnotherTest has joined.
10:06:45 -!- Sgeo__ has quit (Read error: Connection reset by peer).
10:07:11 -!- Sgeo__ has joined.
10:25:52 <esowiki> [[Special:Log/newusers]] create * Luqui * New user account
10:38:03 <esowiki> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=59848&oldid=59749 * Luqui * (+190) /* Introductions */
10:38:16 <esowiki> [[User talk:A]] https://esolangs.org/w/index.php?diff=59849&oldid=59813 * Luqui * (+193) /* Impossible */ new section
10:38:30 <esowiki> [[User talk:A]] https://esolangs.org/w/index.php?diff=59850&oldid=59849 * Luqui * (-17)
10:38:41 <esowiki> [[User talk:A]] https://esolangs.org/w/index.php?diff=59851&oldid=59850 * Luqui * (+1) /* Impossible */
10:46:37 <esowiki> [[User talk:A]] https://esolangs.org/w/index.php?diff=59852&oldid=59851 * Luqui * (+195) /* Impossible */
10:47:40 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=59853&oldid=59852 * Luqui * (+19)
10:54:17 -!- arseniiv has joined.
10:57:56 -!- arseniiv_ has joined.
10:57:56 -!- arseniiv has quit (Read error: Connection reset by peer).
10:59:11 <fizzie> shachaf: I don't know, it's tricky. The "real" files are essentially the daily -raw.txt ones, except in https://github.com/fis/esolangs/blob/master/esologs/log.proto form and with the past (immutable) days Brotli-compressed.
10:59:29 <fizzie> shachaf: I could easily expose those real files, but maybe you don't want to download them in that form.
11:01:37 <fizzie> shachaf: Supporting Content-Length to the formatted monthly files would involve either scanning all the logs twice, or buffering it all in memory, and that'd be sad to do when not absolutely necessary.
11:08:39 <fizzie> shachaf: I *could* send a Last-Modified header with the files, and support the If-Modified-Since request header, which would at least allow you to use "wget -Ni" to not download the files that haven't changed, although it would still redownload the unmodified prefix that you already had of the most recent month every time.
11:13:47 -!- arseniiv has joined.
11:13:47 -!- arseniiv_ has quit (Read error: Connection reset by peer).
11:16:54 <fizzie> shachaf: I might also consider supporting Range requests, but it would be a bit more work, and for that to be useful you'd need to wget to work in some sort of "append mode" where it just sends "Range: bytes N-" where N is the size of the local file it has.
11:17:07 <fizzie> s/to wget/to convince wget/
11:17:40 <fizzie> I guess it might be doing that with -c, I don't know.
11:18:35 -!- arseniiv_ has joined.
11:20:03 -!- arseniiv has quit (Ping timeout: 245 seconds).
11:20:03 <fizzie> AFAICT, doing that would still need me to essentially compute Content-Length, because while the Content-Range header can say something like "bytes N-M/*" to indicate the instance length is unknown, it must still provide concrete numbers M and N before streaming the response body.
11:22:09 -!- Sgeo_ has joined.
11:25:29 -!- Sgeo__ has quit (Ping timeout: 244 seconds).
11:33:11 <fizzie> shachaf: ...or maybe you could just make your download script do something like (where $f is the "2019-02.txt" or equivalent): if [[ $(date -r $f +%Y-%m.txt) > $f ]]; then true; else wget https://esolangs.org/logs/$f; fi
11:36:22 <fizzie> shachaf: I think that should only download files one extra time after the titular month is complete. Feel free to use ! in the condition instead of the "then true; else" nonsense, I'm always too afraid of Bash conditional expressions to.
11:46:15 -!- Sgeo__ has joined.
11:49:08 -!- Sgeo_ has quit (Ping timeout: 250 seconds).
11:55:05 -!- Lord_of_Life has quit (Ping timeout: 246 seconds).
11:57:51 -!- Lord_of_Life has joined.
12:04:26 -!- wob_jonas has joined.
12:06:36 <wob_jonas> zzo38: the handy reference chart at http://www.giantitp.com/comics/oots0999.html claims that the god of snow is Hoder.
12:08:03 <wob_jonas> zzo38: although according to Age of Mythology it's Skadi https://ageofempires.fandom.com/wiki/Skadi
12:50:25 <wob_jonas> re https://esolangs.org/logs/2019-01.html#l2mb , you know there are these nouns and adjectives associated with operations: "addition, additive" for plus, "subtraction, subtractive" for minus, "multiplication, multiplicative" for times, "conjunction, conjunctive" for and, "disjuction, disjuctive" for or. Is there such a fancy name for xor? Or do we
12:50:25 <wob_jonas> just called that "exclusive disjuction, exclusive disjunctive"?
12:58:16 -!- Sgeo_ has joined.
13:01:18 -!- Sgeo__ has quit (Ping timeout: 245 seconds).
13:01:46 <wob_jonas> There's "implication, implicative" for logical le, but the normal term for logical xnor is "equivalence", which doesn't end in "ation" so it dosen't help us. I think there was an obscure synonym "biimplication" though, so for xor we could use the term "inbiimplication, inbiimplicative", only that sounds horrible
13:02:43 <wob_jonas> hmm, https://en.wikipedia.org/wiki/Logical_connective mentions "bi-implication" and "biconditional".
13:05:37 <fizzie> I think it might just be that "exclusive disjunction".
13:05:52 <fizzie> Although I fully support all efforts to add new obscure terms.
13:19:09 -!- AnotherTest has quit (Ping timeout: 244 seconds).
13:23:40 <wob_jonas> fizzie: well, "bitwise exclusive disjunctive" is obscure enough I think
13:25:19 <wob_jonas> how about min and max, are there such terms for those operations too?
13:25:41 <wob_jonas> "maximization" is already taken for something else
13:27:17 <wob_jonas> perhaps that would be "greatest common division, greatest common divisive" and "least common multiplication, least common multiplicative"
13:29:58 <wob_jonas> I'll have to read what Knuth and Iverson use for these, they might give good ideas for words
13:33:07 <wob_jonas> could we use something like "masonry" and "carpentry" for min and max respectively, given that Iverson associates them with floor and ceiling? are there adjective forms of "mason" and "carpenter"?
13:36:45 <wob_jonas> or maybe some terms associated with heaven and hell.
13:37:52 <wob_jonas> or "descension, descensive" and "ascension, ascensive"?
13:38:25 -!- copumpkin has joined.
13:40:15 <wob_jonas> ah! apparently the term for xor is "exclusion, exclusive"
13:40:29 <Taneb> Foundation, foundative for "floor"?
13:40:29 <wob_jonas> no need to mess with "exclusive disjunctive"
13:40:55 <wob_jonas> Taneb: I'd like a matching pair, naming min and max in a related way
13:43:20 -!- AnotherTest has joined.
13:44:13 <wob_jonas> I don't think "demonization, demonizative" and "angelization, angelizative" works.
13:44:43 <wob_jonas> or it could be something about hills and valleys
13:47:42 <fizzie> Biggizing, biggisive; smallizing, smallisive.
13:50:44 <wob_jonas> there's also "inflation" and "deflation"
13:51:09 <wob_jonas> economists use lots of fancy jargons, we could ask them what they call something that causes inflation and deflation resp
13:51:37 <wob_jonas> or doctors for what they call something that causes growth (or welling) and shrinking resp
13:52:08 <fizzie> There's that whole bull/bear/hawk/dove thing that I can never keep straight.
13:52:10 <wob_jonas> they must have fancy latin terms for these
13:52:30 -!- wob_jonas has quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client).
13:52:46 <fizzie> https://www.binaryoptions.co.uk/trading-terms for a random up-the-top Google link.
13:52:51 <fizzie> Opinions not endorsed.
13:54:17 <fizzie> Oh, "have to go" as in right now.
13:54:48 <fizzie> @tell wob_jonas https://esolangs.org/logs/2019-02-12.html#lOd
13:56:44 <int-e> "binary options" in the domain? that's not inspiring any confidence.
13:57:14 <fizzie> They have a nice wavy rainbow logo, that has to count for something.
13:58:57 <int-e> . o O ( "I've bought a binary option at the horse races." )
13:59:38 -!- Lymia has quit (Read error: Connection reset by peer).
13:59:45 * int-e almost went for a lottery ticket but those tend to have multiple payout options.
14:00:09 <int-e> ... which makes them non-binary.
14:04:34 -!- arseniiv_ has changed nick to arseniiv.
14:17:27 -!- Lymia has joined.
14:46:48 -!- AnotherTest has quit (Ping timeout: 250 seconds).
15:32:48 <int-e> "I usually thank the Prime Minister for an advance copy of her statement, but it was handed to me just as I left my office to come down here, so I can only assume she entrusted the Transport Secretrary to deliver it to me." -- Corbyn made a joke :)
16:21:05 -!- xkapastel has joined.
17:05:03 -!- poq has joined.
17:05:28 * poq love ion and elliot
17:05:36 * poq pours out drink for them.
17:05:47 -!- poq has left.
17:18:57 -!- oerjan has joined.
17:21:55 -!- imode has joined.
17:22:56 -!- b_jonas has joined.
17:24:55 <b_jonas> there's "contraction", "extension", and a second sort-of pair "compaction", "expansion"
17:25:15 <b_jonas> you can even say "contractive" and "extensive" too if you want adjectives
17:39:47 -!- AnotherTest has joined.
17:43:31 <b_jonas> and then there's "position, positive" and "negation, negative" for some reason
17:45:24 <imode> stateful automata really do form the backbone of any given model of computation. stitching states together, you can yield any control flow construct you'd like. this differs from things like assembly, where the state structure is implicit and line/address/label-oriented.
17:49:35 <imode> we should embrace automata-based programming.
17:50:58 <imode> it's inherently visual and textual, lends itself well to composition and algebraic manipulation of code, and the underlying concepts are simple and relatively commonplace.
18:01:49 <shachaf> fizzie: I don't think it's worth putting very much effort in at all. When I wrote that without realizing the whole database situation.
18:03:11 <shachaf> fizzie: The reason I do it by hand is probably that I used to download IRC logs for a channel where they were pretty haphazard, sometimes collected from multiple sources etc., so there were many files with non-canonical names. That's not particularly relevant here.
18:04:15 <b_jonas> they're sort of haphazard here too, in the sense that there are two or three different collections of irc logs that you may have to download
18:06:19 <fizzie> The esolangs.org logs are an attempt to merge the existing collections. Though I should really look into redundancy about gaps since it started recording "natively".
18:06:58 <shachaf> int-e: what do you have against binary options twh
18:07:19 <b_jonas> fizzie: you mean like collect logs on multiple machines, to cover the time when one machine loses connection to the internet server?
18:07:33 <imode> I'm willing to donate server time on imode.tech for that.
18:07:38 <b_jonas> and even auto-connect to different halves of the irc network in case of netsplits :-)
18:08:11 <b_jonas> sadly right now I don't have a usable server of mine set up, one that's connected to the internet continuously. I should pay for one eventually.
18:08:30 <fizzie> Something like that. Not going to be on top of the priority list either, though.
18:08:32 <imode> imode.tech is up 24/7.
18:09:24 <fizzie> I think there has been more downtime for freenode reasons than for the current esolangs.org server reasons.
18:09:53 <imode> it's just a droplet that's hosting some hobby projects, but it has a public IP and a short domain name. I'm not sure how you handle logs but I wouldn't be remiss at least being a forwarder for redundancy.
18:10:49 <b_jonas> fizzie: right, but the servers where I ran stuff so far had more runtime for non-freenode reasons. and the ISP at home here is terrible, it cuts off for hours some nights.
18:11:14 <imode> I could have a ruby script sitting idle and scraping this channel from multiple parts of the network, dumping to disk and forwarding on to another server in batches if you guys want.
18:11:34 <b_jonas> imode: sorry, the multiple parts of the network was just a joke, don't take it seriously
18:11:48 <imode> netsplits are reeeeeal.
18:12:02 <b_jonas> imode: you can try to collect logs on a disk if you want, and manage the sharing later
18:12:44 <fizzie> Right now the way I handle logs isn't really set up for merging streams. Not that it couldn't be done, just I don't think I'll be attempting to do it in the very near future.
18:13:04 <imode> do you store compressed logs?
18:14:02 <fizzie> I store length-delimited https://github.com/fis/esolangs/blob/master/esologs/log.proto messages (without the event_id field, it's implicit) in a "one file per day" scheme with past days Brotli-compressed.
18:14:05 <imode> I could set up a system where we have a series of buffers that hold incoming log information from multiple sites, and we do N-way merges based on line count and then store the deltas.
18:15:42 <fizzie> I think merging multiple streams recorded from different freenode servers needs a little bit of heuristics, because there's no canonical order of messages.
18:16:26 <b_jonas> and there was that really infamous netsplit when there was twenty minutes of lag between some servers or something
18:19:16 <fizzie> I'm sure you could get it mostly correct. But I'd definitely archive all the original sequences losslessly, and only use the merged version for serving. Just so it's possible to backfill if things go wrong. Anyway, this is really not in scope right now.
18:19:54 <imode> better idea: multiple bots hosted on a single server, each DMing eachother and timing the response times. a single bot is designated as the primary scraper, and the primary scraper is based on response times. if the primary can't communicate to the other bots, a different bot with the smallest average response time to the others is selected as the primary scraper.
18:20:28 <b_jonas> imode: the problem is that if they run on a single server, then they'll all cut off when that server loses net connection
18:20:34 <b_jonas> or when that server goes down
18:20:50 <b_jonas> they need to be on different servers, ideally by very different internet service providers
18:20:51 <imode> correct, but that server is monitoring a single channel.
18:21:17 <imode> and it's also in a datacenter under monitor.
18:21:36 <b_jonas> perhaps in that indefinite future when I host a proper server, I'll make irc logs of my own, and share the ones for publically logged channels
18:21:49 <b_jonas> but that indefinite future is always years in the future no matter when you ask
18:21:57 <imode> I could do this right now.
18:22:50 <imode> ruby makes this pretty easy. let me see what I can do.
18:23:06 -!- FreeFull has joined.
18:23:13 <b_jonas> and I should do the stuff that doesn't require an always on server, just downloading stuff and processing
18:23:19 <b_jonas> and storing on my disk for later use
18:36:27 -!- ibot0 has joined.
18:36:37 -!- ibot1 has joined.
18:36:45 -!- ibot2 has joined.
18:36:51 -!- ibot1 has quit (Read error: Connection reset by peer).
18:36:51 -!- ibot2 has quit (Read error: Connection reset by peer).
18:36:52 -!- ibot0 has quit (Write error: Connection reset by peer).
18:37:04 <imode> well. that was a start.
18:37:44 <imode> they all said hi to eachother and all died.
18:40:49 -!- ibot0 has joined.
18:40:50 -!- ibot1 has joined.
18:41:23 <imode> I have to wonder how far apart I should space communication between them.
18:43:01 <imode> I should have a producer/consumer process for logs: toss a local timestamp + the message to something like RabbitMQ and have something else pick it up.
18:43:29 -!- tromp has quit (Remote host closed the connection).
18:45:17 -!- ibot1 has quit (Ping timeout: 258 seconds).
18:45:32 -!- ibot0 has quit (Ping timeout: 268 seconds).
18:53:10 -!- tromp has joined.
18:56:54 -!- lldd_ has joined.
18:57:10 -!- lldd_ has quit (Client Quit).
18:58:22 <fizzie> imode: #esoteric-blah is for testing bots, by the way.
18:58:31 <fizzie> It was some suffix, anyway.
18:58:39 <imode> sorry! I'll keep that in mind.
19:01:25 <fizzie> No, that's fine, it's just that testing can easily get out of hand. :)
19:01:27 -!- nfd has joined.
19:01:54 -!- AnotherTest_ has joined.
19:02:46 -!- zemhill_______ has joined.
19:04:23 -!- Bob- has joined.
19:04:35 -!- zemhill______ has quit (Ping timeout: 240 seconds).
19:04:35 -!- AnotherTest has quit (Ping timeout: 240 seconds).
19:04:35 -!- probablymoony has quit (Ping timeout: 240 seconds).
19:04:35 -!- sftp has quit (Ping timeout: 240 seconds).
19:04:36 -!- APic has quit (Ping timeout: 240 seconds).
19:04:36 -!- rain1 has quit (Ping timeout: 240 seconds).
19:04:37 -!- nfd9001 has quit (Ping timeout: 240 seconds).
19:04:37 -!- bobby has quit (Ping timeout: 240 seconds).
19:04:37 -!- Melvar has quit (Ping timeout: 240 seconds).
19:04:37 -!- AnotherTest_ has changed nick to AnotherTest.
19:05:01 -!- APic has joined.
19:05:07 -!- moony has joined.
19:05:33 -!- Melvar has joined.
19:05:35 -!- sftp has joined.
19:05:53 -!- rain1 has joined.
19:10:35 <esowiki> [[Special:Log/newusers]] create * CubixThree * New user account
19:15:18 <esowiki> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=59854&oldid=59848 * CubixThree * (+280) /* Introductions */
19:40:17 <HackEso> #esoteric-blah blah blah. Blah blah, blah blah blah blah. Blah blah blah!
19:58:41 -!- arseniiv_ has joined.
19:58:41 -!- arseniiv has quit (Read error: Connection reset by peer).
20:22:05 -!- gurmble has joined.
20:22:27 -!- grumble has quit (Read error: Connection reset by peer).
20:22:43 -!- gurmble has changed nick to grumble.
20:45:59 <esowiki> [[User talk:A]] https://esolangs.org/w/index.php?diff=59855&oldid=59853 * Plokmijnuhby * (+230)
21:03:00 -!- arseniiv has joined.
21:06:10 -!- arseniiv_ has quit (Ping timeout: 240 seconds).
21:31:08 -!- shikhin has quit (Changing host).
21:31:08 -!- shikhin has joined.
21:54:18 -!- moei has quit (Quit: Leaving...).
22:24:41 <zzo38> In Glulx, the "ushiftr" instruction makes an unsigned shift right. The shift amount is treated as unsigned, and anything more than 32 will make the result to be zero (all bits are shifted out). So, to change 0 to 1 and all other numbers to 0, I used shifting right 1 by the input number.
22:27:49 <shachaf> kmc: https://twitter.com/lunasorcery/status/1095446373812658179
22:28:37 <shachaf> I guess you should have a compiler warning on non-explicit constructors, unless they're explicitly non-explicit?
22:30:42 <kmc> that's terrible
22:30:51 <kmc> C++ is the best
22:39:37 <j4cbo> enum color { Red, Green, Blue }; void f(char* param); f(Red)
22:39:49 <j4cbo> compiles in C, maybe C++ too
22:40:00 <j4cbo> because Red is 0 is null
22:40:12 <b_jonas> j4cbo: that actually depends on the version of C++
22:40:29 <b_jonas> or the version of C, I'm not sure which
22:40:39 <b_jonas> so these days it will no longer compile
22:40:52 <b_jonas> they restricted the rules for what counts as a null pointer expression
22:41:23 <b_jonas> but mind you, that's the theory
22:41:27 <fizzie> It should work in C, assuming no requirements beyond the standard ones.
22:41:36 <b_jonas> gcc actually accepted expressions that even the old rules said shouldn't be allowed
22:41:47 <kmc> C++ has way too much implicit behavior
22:42:06 <fizzie> "An integer constant expression with the value 0 -- is called a /null pointer constant/." "An /integer constant expression/ shall have itneger type, and shall only have operands that are -- enumeration constants, --"
22:42:13 <b_jonas> in particular, gcc used to allow { int x = 8; f(x-x); } because it figured that x-x had the value 0
22:42:21 <b_jonas> but the standard never accepted that, because it's not a constant expression
22:42:29 <fizzie> Yes, but enum constant values are integer constant expressions.
22:42:31 <b_jonas> the old rule was that any integer-valued constant expression with the value 0 worked
22:42:33 <j4cbo> one of the things that pisses me off is that the committee is so unwilling to make changes for fear of breaking existing code
22:42:43 <j4cbo> but also, sometimes they break existing code anyway
22:42:54 <b_jonas> the new rule basically only allows a simple integer literal, of any type, perhaps with parenthesis too, I'm not sure about the details
22:43:03 <j4cbo> I have personally had my code break because of a poorly thought out DR
22:43:10 <fizzie> b_jonas: Then it rejects conforming code.
22:43:24 <b_jonas> fizzie: you can actually detect the difference with overloading
22:43:27 <fizzie> I mean, if you're talking about C.
22:43:40 <b_jonas> with overloading in C++ that is
22:43:56 <b_jonas> fizzie: no, it used to accept non-conforming code
22:44:17 <kmc> shachaf: isn't it great that there are contexts where "return x;" is fine but "return (x);" is UB?
22:44:18 <b_jonas> f(x-x) is non-comforming because x-x is just a plain integer expression, so it can't be implicitly cast to a pointer (in C++)
22:44:36 <fizzie> b_jonas: Sure, I was talking from the C perspective.
22:44:41 <kmc> that is my favorite "fuck you" in C++
22:45:01 <kmc> b_jonas: it has to do with the rules for decltype(auto)
22:45:13 <kmc> which are different for an identifier vs. an expression
22:45:34 <b_jonas> every programming language is terrible
22:45:39 <b_jonas> they all have their crazy quirks
22:46:02 <shachaf> therefore they are literally all equal
22:46:26 <shachaf> might as well write everything in whitespace
22:46:27 <b_jonas> shachaf: no, some of them are much worse
22:46:34 <j4cbo> https://bugs.llvm.org/show_bug.cgi?id=23812
22:46:39 <j4cbo> I was so mad about this
22:46:50 <kmc> b_jonas: when it's an expression, it tries to make a reference
22:47:21 <fizzie> b_jonas: Looks like (again talking still only about C) GCC has no qualms about using an enum constant as a null pointer constant, but Clang has added a -Wnon-literal-null-conversion flag.
22:47:48 <fizzie> (Which just says "expression which evaluates to zero treated as a null pointer constant".)
22:48:07 <b_jonas> kmc: also, I found out that there are some cases when glibc fscanf explicitly works slightly differently from what the standard allows, in how many bytes it consumes when it fails to read certain inputs as a number, and the glibc maintainers know that but claim it's a problem with the standard
22:48:20 <b_jonas> there's a bug ticket about it
22:49:14 <shachaf> the real problem is C-style strings, anyway
22:49:53 <b_jonas> kmc: that doesn't even seem to mention return
22:50:57 <kmc> b_jonas: https://gcc.godbolt.org/z/rKLxrZ
22:52:01 <b_jonas> kmc: ah, it's in a function with the return type given as decltype(auto)
22:52:39 <kmc> this pathological example is given in _Effective Modern C++_ by Scott Meyers
22:52:44 <kmc> that book is tg
22:53:06 <b_jonas> kmc: what? but isn't that book older than decltype(auto) as function return type?
22:53:13 <kmc> the contents are very good and also the bird on the cover is top notch
22:53:23 <kmc> b_jonas: it covers C++14
22:53:38 <b_jonas> kmc: hmm. I thought it was older.
22:53:51 <b_jonas> or deduced function return type newer
22:53:56 <esowiki> [[Glutton]] N https://esolangs.org/w/index.php?oldid=59856 * CubixThree * (+4373) Created page with "Glutton is an object-based stack-based language created by [[User:CubixThree|CubixThree]]. In it, you prepare dishes made with ingredients, similar to [[Chef]], however with o..."
22:54:16 <kmc> often it presents the C++11 way, explains the drawbacks and then how C++14 improves it
22:54:39 <kmc> because 14 is more about fixing awkward stuff in 11, as opposed to a conceptual overhaul like 03 -> 11
22:55:16 <zzo38> In what case is fscanf working differently?
22:56:54 <b_jonas> zzo38: I'm not sure of the exact example, but it's one of those cases when you need a bit of lookahead, like when with format "%g" you try to scan "3.00E-scow", or with format "%i" you try to scan "0xscow"
22:57:36 <b_jonas> oh yeah, those are actually cases when the read of the number succeeds... I dunno
22:57:40 <b_jonas> it was something related to that
23:00:46 <kmc> shachaf: did you know that C++14 has polymorphic lambdas
23:00:48 <kmc> pretty fancy
23:01:40 <b_jonas> zzo38: https://sourceware.org/bugzilla/show_bug.cgi?id=12701 I think this is it
23:02:17 <shachaf> lack of fanciness is the reason i wasn't using c++
23:04:26 <shachaf> kmc: oh man, i just indexed into "counts[256]" with a char which turned out to be signed
23:04:43 <kmc> i like that one
23:04:47 <kmc> what were you doing?
23:05:05 <shachaf> trying to look for strings matching a particular pattern
23:05:09 -!- AnotherTest has quit (Ping timeout: 252 seconds).
23:05:47 <zzo38> I have avoided those problem by always using a & operator if a char value is used in that way, such as x&255 or some other number
23:06:19 <shachaf> That is avoiding the problem by thinking about the problem.
23:06:31 <kmc> I think there should be part of the C spec which specifies stronger guarantees on things where the only reason for crazy behavior is compatibility with ancient machines
23:06:34 <shachaf> My problem was that I didn't think about it. If I had I'd've taken care of it.
23:06:54 <kmc> and then compilers can support this as a language variant
23:07:19 <kmc> gcc at least warns on indexing w/ signed char
23:07:39 <zzo38> Why are you trying to write a program without thinking of the program?
23:07:58 <shachaf> I guess I should've used -Wall for this 20-line throwaway program.
23:08:05 <kmc> -Wall always
23:08:10 <shachaf> I was thinking of the program, just not of this particular edge case with char.
23:08:50 <shachaf> can i add -Weffc++ when compiling in c mode
23:09:02 <shachaf> just to make it clear why i'm compiling in c mode
23:09:35 <kmc> gcc -Whatthe -fuck
23:10:02 <kmc> gcc -funroll-me-harder
23:12:26 <shachaf> kmc: I used to think the thing about C++ being an esolang was a joke, but now I think it's a perfectly reasonable thing to say.
23:12:39 <shachaf> Not the entire language but a pretty large part of it.
23:12:59 <kmc> i mean it is a joke
23:13:03 <kmc> it's funny because it's true
23:13:21 <kmc> C++ is a hot mess
23:13:35 <shachaf> writing fancy template code appeals to the same twisted part of your mind that writing esolang code appeals to
23:13:37 -!- tromp has quit (Remote host closed the connection).
23:14:31 <kmc> esolang skills have actual uses
23:14:50 <kmc> i have often described writing exploits as weaponized esoprogramming
23:14:52 <shachaf> i mean, rop is also an esolang, but that's a legitimate reason
23:14:54 <kmc> at least sometimes
23:15:11 <kmc> weird machines
23:15:27 <shachaf> But if you're a non-eso language designer, requiring your users to esolang seems like a scow move.
23:16:01 <kmc> well templates are the quintessential feature that grew far beyond its original purpose
23:16:41 <kmc> and more specifically, SFINAE
23:17:43 <zzo38> What does "SFINAE" means?
23:17:55 <kmc> zzo38: "Substitution Failure Is Not An Error"
23:18:26 <shachaf> substituion failure is naughty and exciting
23:18:28 <kmc> zzo38: it means, if C++ tries to instantiate a template function and there is some error (type mismatch, missing method etc) then it will go on to the next overload rather than aborting compilation
23:19:13 <kmc> this was intended simply so that unrelated template functions of the same name would not interfere
23:19:24 <kmc> but it turns out to add a lot of power to template metaprogramming
23:19:55 <shachaf> there should be a version of gcc where substitution failure deletes your source file
23:20:30 <kmc> for example it makes type traits and conditional overloads possible
23:20:31 <kmc> https://shaharmike.com/cpp/sfinae/
23:20:46 <shachaf> maybe the go people had the right idea
23:22:01 <zzo38> I think this substitution failure is not error is make sense, if there is a next overload (otherwise all of the accumulated errors should be displayed, since presumably it is unable to continue in such a case, if there isn't any to continue)
23:22:05 <kmc> shachaf: there is so much complexity in C++ from the fact that references aren't first class :(
23:22:17 <kmc> zzo38: yeah
23:22:19 <shachaf> kmc: do you think a language without lvalues makes sense
23:22:23 <shachaf> where you only have pointers
23:22:35 <kmc> what are the advantages
23:22:51 <shachaf> lvalues and pointers are almost the same thing but different
23:23:15 -!- tromp has joined.
23:23:24 <shachaf> all sorts of complexity from that, which c++ tries to address with references?
23:23:38 <zzo38> I think BLISS does not use lvalues like C and BASIC, but rather it is the pointer, and to read it you must add the operator to read it. (Forth also needs explicit operators for read or write, although Forth is more flexible so you can make it possible to hide if you want to do.)
23:23:42 <pikhq> Templates are kinda fascinating. In that they were _designed_ for very simple use cases, but to make them fit in they managed to make them far more complex and general than is needed.
23:23:44 <shachaf> even in a language like c, there's a distinction between a value and a memory location that contains that value
23:23:55 <shachaf> c muddles it up a lot but it's there
23:24:09 <kmc> pikhq: yep
23:24:27 <shachaf> did you know, the "memory read" operation in c is the implicit coercion from lvalue to rvalue
23:25:06 <shachaf> zzo38: Yes, BLISS does that.
23:25:10 <pikhq> With that view in mind (and I don't think it's a bad one), what's * anyways?
23:25:13 <pikhq> A type conversion?
23:25:29 <kmc> converts a pointer rvalue to a lvalue, I suppose
23:25:31 <shachaf> * takes an rvalue-of-pointer-to-T to lvalue-of-T
23:25:49 <shachaf> A pointer is a location of a thing in memory. An lvalue is a thing that has a location in memory.
23:26:12 <pikhq> So yeah, it kinda is a type conversion.
23:26:17 <shachaf> See also http://slbkbs.org/ski-mercury.txt
23:26:21 <pikhq> Though with an rvalue to lvalue conversion in there too.
23:26:55 <shachaf> Also, given "struct A { int x, y; };", "e.y" has a different meaning depending on whether e is an lvalue or an rvalue.
23:27:12 <fizzie> It's a shame the TGCEEC contest died out.
23:27:49 <pikhq> shachaf: It's funny people act as though C is a low-level language in some absolute sense, isn't it?
23:28:11 <pikhq> (or for that matter, that "low vs. high level" has any absolute meaning)
23:28:17 <fizzie> The incomplete round had a one-shot entry (-fmax-errors=1) of <= 256 bytes of source that generated 1.5 gigabytes of error.
23:28:17 <shachaf> C is a lower-level language than most languages people use?
23:28:31 <pikhq> It is, but that's a relative statement.
23:29:01 <shachaf> fizzie: Pft, with 256 bytes I want at least Ackermann levels of error.
23:30:03 <pikhq> A high-level assembler is higher level than raw machine code, yet lower than C.
23:30:29 <shachaf> OK, but "high-level" and "low-level" aren't really precise terms anyway.
23:31:26 <zzo38> There is also different kind of assembly language for different computers (and VMs), and also different assemblers have different features for macros and so on.
23:31:55 <kmc> zzo38: which assemblers do you like?
23:32:34 <kmc> zzo38: also, do you prefer Intel or AT&T syntax?
23:32:51 <zzo38> kmc: I have used MMIXAL, and otherwise mainly assemblers I either wrote myself (e.g. the MIXPC assembler, and Glasm) or modified for my use (e.g. MagicKit)
23:33:17 <shachaf> plan 9 syntax, obviously, hth
23:33:18 <imode> fizzie: got a link to that? I'm gonna be AFK but I'd love to see it.
23:33:32 <pikhq> kmc: Knowing zzo38, the answer is "neither" whenever you present two common choices.
23:34:24 <shachaf> If you had a single-use halting oracle, what would you ask it?
23:35:34 <pikhq> I wonder if there is a way to use a single-use halting oracle to get a more general solution.
23:35:54 <zzo38> Yes, that was my first idea too
23:35:56 <fizzie> imode: https://tgceec.tumblr.com/ was the site.
23:39:19 -!- tromp has quit (Remote host closed the connection).
23:46:39 -!- tromp has joined.
23:47:03 <zzo38> Do you have opinion of XYZABCDE.ZZT game and possibly the sequel (and possibly sequel of the sequel)? At the end of the first one the main character's wing is fixed, but the operetta house has been destroyed by Giant Who Hate Liberty Bell March. The sequel might not be ZZT; in that case, perhaps any magic diamonds you have had by the end of the first one, are now worthless
23:49:00 <b_jonas> kmc: I would recommend yasm if you want an assembler for x86
23:50:00 <zzo38> I have not used modern x86 assembly language
23:50:28 <shachaf> zzo38: Do you like the Mill?
23:50:52 <zzo38> I have been unable to find much information about Mill last time I checked
23:51:27 <shachaf> Unfortunately most information is in videos.
23:52:54 <b_jonas> have you ever seen an electrocardiograph machine that had a built-in CRT display?
23:55:30 -!- Lord_of_Life_ has joined.
23:57:37 -!- Lord_of_Life has quit (Ping timeout: 246 seconds).
23:57:47 -!- Lord_of_Life_ has changed nick to Lord_of_Life.