←2016-07-19 2016-07-20 2016-07-21→ ↑2016 ↑all
00:04:08 -!- tromp_ has joined.
00:20:10 -!- deltab has quit (Quit: leaving).
00:20:24 -!- tromp_ has quit (Remote host closed the connection).
00:20:25 -!- deltab_ has changed nick to deltab.
00:37:22 -!- tromp_ has joined.
00:37:27 -!- Akaibu has quit (Quit: Connection closed for inactivity).
00:44:07 -!- myndzi\ has joined.
00:44:46 <\oren\> the svn poltergeist strikes
00:45:10 <boily> he\\oren\. the Ghost in the Repository?
00:45:15 <boily> @massages-loud
00:45:15 <lambdabot> quintopia asked 5d 12m 19s ago: how goes the courging?
00:45:15 <lambdabot> Taneb said 4d 16h 14m 3s ago: I'm fairly sure I'm alive
00:45:25 <quintopia> hmm
00:45:33 <quintopia> has lambda been reset?
00:45:39 <\oren\> somehow checking out a new working copy and copying my changes over solved a bug
00:45:46 <quintopia> could have sworn you'd already received those massages
00:45:48 <boily> quinthellopia. no, I'm just not very esotericking as of lately hth
00:45:52 <quintopia> oh
00:46:02 <\oren\> yes, the ghost in the repository
00:46:40 <boily> quintopia: I definitely got yours, as I replied to it. I wasn't Tanebmessageacknowledged yet.
00:47:08 <\oren\> this is why i hate untracked files. my tgz "repositories" always track all files
00:47:38 <shachaf> Oh, you were the git h8r.
00:47:40 <shachaf> git is tg
00:49:40 <\oren\> well I have to say, at least git has a command to delete all untracked files
00:50:11 <boily> git clean -fd is fun :D
00:50:35 <\oren\> svn doesn't have any such command. instead you have to rm -rf project and then svn co "url" project
00:51:11 <\oren\> which caused a phantom bug to resolve itself
00:53:31 <\oren\> Untracked files is a stupid idea anyway
00:53:53 <\oren\> if your build process creates .o files or whatever, it should also delete them
00:54:20 <\oren\> or you should have a make clean type command to run before checkin
00:55:03 <boily> untracked files is nice.
00:56:32 -!- myndzi\ has quit.
00:56:51 -!- hppavilion[1] has joined.
01:29:27 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
01:47:38 -!- jaboja has quit (Ping timeout: 272 seconds).
01:49:01 -!- PinealGlandOptic has joined.
01:49:24 <\oren\> ok, now I've gotten home
01:49:48 <\oren\> time to work on my font
01:53:41 -!- centrinia has joined.
01:56:03 -!- sebbu has quit (Ping timeout: 240 seconds).
02:12:18 -!- boily has quit (Quit: ANOTHER CHICKEN).
02:44:59 <\oren\> you can track my progress in a new way: http://www.orenwatson.be/joyo-kyoiku.htm
02:49:36 -!- Akaibu has joined.
02:50:07 <quintopia> \oren\: are you having a hard time tracking your own progress?????????
02:50:18 <quintopia> gotta get other to track it for you now?
02:52:45 <\oren\> quintopia: well I was having trouble remebering what kanji I had already done
02:53:18 <\oren\> so I'm putting a list up on my website that I can look in
02:55:27 <\oren\> and more importantly which kanji I need to do
03:00:51 <pikhq> \oren\: I do hope you're targetting kanji that are reasonably used first.
03:01:20 <pikhq> Ah, so you are. Looks like you're targeting jōyō and kyōiku kanji first.
03:02:11 <\oren\> pikhq: I've covered all the kyoiku kanji from grades 1-6
03:02:39 <pikhq> Unfortunately, to cover real-world Japanes text you need most of the list, not just the first 6 grades.
03:03:24 <pikhq> (though I belive most of the most *frequent* kanji are grouped up in there)
03:03:48 <\oren\> yeah so I'm gonna do the rest of the Joyo, and then the ones for names, I forget what that list was called
03:04:23 <pikhq> Jinmeiyō.
03:05:53 <pikhq> With the jōyō + jinmeiyō you'll get tripped up on some literary text, but you'll *mostly* be fine.
03:07:35 <\oren\> eventually, not anytime soon, I'll try to do the simplified chinese characters... hopefully the chinese government has a list
03:09:07 <lifthrasiir> \oren\: probably you can start with IICore
03:09:23 <pikhq> Yeah, simplified Chinese characters are enumerated. IIRC the PRC has a list of Unicode codepoints that software in the country must support.
03:25:04 -!- centrinia has quit (Quit: Leaving).
04:01:33 -!- Kaynato has quit (Ping timeout: 240 seconds).
04:26:54 -!- adu has quit (Quit: adu).
04:33:16 -!- tromp_ has quit (Remote host closed the connection).
04:46:20 <HackEgo> [wiki] [[FOSCode]] https://esolangs.org/w/index.php?diff=48944&oldid=48943 * Darkrifts * (+52)
04:47:36 <shachaf> What's the slowest-growing complexity of an algorithm you can come up with? Something slower than inverse Ackermann?
04:51:02 <izabera> log(inverse ackermann)
04:51:22 <shachaf> Am I going to have to go through the same thing here that I went through in the other channel?
04:51:30 <shachaf> 20:37 <shachaf> Do you have an algorithm with runtime that grows that slowly?
04:51:30 <shachaf> 20:38 <shachaf> I can add "non-contrived" to the question to avoid that kind of answer.
04:51:40 <izabera> i haven't read it in the other channel
04:51:51 <shachaf> 20:39 <shachaf> But I'd even be OK with a contrived answer if it was significantly slower than inverse Ackermann (not just something you make by composing inverse Ackermann composed with itself like that).
04:51:57 <shachaf> I know.
04:52:43 <shachaf> Oh, maybe you can do something with shelves.
05:12:13 -!- Vorpal has quit (Ping timeout: 244 seconds).
05:16:51 -!- Vorpal has joined.
05:16:51 -!- Vorpal has quit (Changing host).
05:16:51 -!- Vorpal has joined.
05:33:31 -!- hppavilion[1] has quit (Ping timeout: 240 seconds).
05:33:54 -!- tromp_ has joined.
05:38:11 -!- tromp_ has quit (Ping timeout: 240 seconds).
05:48:36 -!- nisstyre has quit (Read error: Connection reset by peer).
05:49:40 -!- PinealGlandOptic has quit (Quit: leaving).
06:03:52 -!- choochter has quit (Read error: Connection reset by peer).
06:56:16 -!- hppavilion[1] has joined.
07:07:01 -!- augur has quit (Remote host closed the connection).
07:10:50 <HackEgo> [wiki] [[FOSCode]] https://esolangs.org/w/index.php?diff=48945&oldid=48944 * Darkrifts * (+151) /* Documentation */
07:16:12 <HackEgo> [wiki] [[FOSCode]] https://esolangs.org/w/index.php?diff=48946&oldid=48945 * Darkrifts * (+612)
07:21:39 -!- sebbu has joined.
07:34:14 -!- tromp_ has joined.
07:38:33 -!- tromp_ has quit (Ping timeout: 240 seconds).
07:46:31 -!- hppavilion[1] has quit (Ping timeout: 240 seconds).
07:52:21 -!- augur has joined.
08:04:33 <izabera> i've been spamming a few channel with similar questions, and got no answer so far. why does this fail for floats? https://ideone.com/gcOipZ
08:33:19 -!- AnotherTest has joined.
08:38:28 <Cale> izabera: Interesting, I'd expect it to have more instances of NO than that.
08:41:08 <shachaf> C type compatiblity is odd.
08:41:13 <shachaf> Apparently it's not transitive.
08:41:42 <Cale> I'm just reading that here: https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html#index-g_t_005f_005fbuiltin_005ftypes_005fcompatible_005fp-4246
08:43:27 <Cale> http://en.cppreference.com/w/c/language/type#Compatible_types
08:43:28 <Cale> ...
08:43:50 <mitchs> is it the empty paramater lists causing the strangeness?
08:43:58 <Cale> I wonder if it's these caveats about default argument promotions
08:44:02 <Cale> yeah
08:44:07 <shachaf> I guess it has to do with -- yes, what Cale said.
08:44:37 <shachaf> C9x draft section
08:44:39 <mitchs> without the typo
08:46:17 <mitchs> (adding parameter const float a in nullfunfloat makes them all yes)
08:47:51 <shachaf> Oh, a float would get promoted to a double.
08:47:54 <izabera> yeah but i wanted a generic function pointer
08:48:24 <shachaf> This parameterless function declaration thing isn't something you should be using anyway.
08:48:27 <shachaf> It's scow.
08:48:32 <izabera> why?
08:49:05 <izabera> also i don't know what scow means
08:49:18 <izabera> `? scow
08:50:48 <HackEgo> Scow (S-cow) is canned meat made from cows with a lisp.
08:51:01 <shachaf> `cwlprits scow
08:51:30 <HackEgo> oerjan
08:52:01 <shachaf> whoa whoa whoa
08:52:15 <shachaf> void f(c) char c; { ... } isn't the same as void f(char c) { ... }?
08:52:25 <shachaf> According to http://stackoverflow.com/a/1255818
08:52:28 <shachaf> That's a big scow.
09:00:34 <mitchs> (changing the empty paramater lists to void causes the corresponding comparisons to fail)
09:01:00 <mitchs> damn it i did the typo again
09:02:14 <shachaf> is that how they spelled it at your alma mater
09:02:32 <shachaf> probably a direct pun on latin "mater" would have been better here
09:02:42 <shachaf> now i'm just making it look like i don't know latin
09:02:46 <shachaf> which i don't
09:02:59 <shachaf> but cultured people know a little bit of latin and act like they know even more than they do
09:03:00 -!- choochter has joined.
09:03:05 <shachaf> so i'm giving myself away here
09:03:21 <mitchs> ita vero
09:03:45 <shachaf> `welcome mitchs
09:04:01 <HackEgo> mitchs: 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.)
09:04:56 <Taneb> I think I'm going to go through the category theory textbook I've had out of my uni's library for like two years and actually do the exercises
09:05:45 <shachaf> Which book?
09:06:03 <mitchs> thanks but this isn't my first time here
09:06:10 <Taneb> shachaf, it's called Categories
09:06:18 <Taneb> By a chap called Schubert
09:06:19 <shachaf> They all are.
09:06:49 <shachaf> Ah.
09:06:56 <shachaf> How much category theory do you know?
09:07:18 <Taneb> Well, I can get through chapter one and part of chapter two without any difficulties
09:08:19 <shachaf> Which chapters are those?
09:09:03 <Taneb> Chapter 1 is the definition of categories, isomorphisms, additive categories, and subcategories
09:09:32 <shachaf> Additive categories in chapter 1? Odd.
09:09:40 <Vorpal> <shachaf> void f(c) char c; { ... } isn't the same as void f(char c) { ... }? <-- no, the former promotes to int in parameter passing I believe
09:09:43 <Taneb> 2 is functors (covariant and contravariant), dual categories, bifunctors, and natural transformations
09:09:48 <shachaf> Vorpal: Right.
09:09:52 <Taneb> I can't get natural transformations in my head
09:10:27 <HackEgo> [wiki] [[Talk:Spoon]] https://esolangs.org/w/index.php?diff=48947&oldid=48932 * Rdebath * (+182) Just uploaded
09:10:31 <Vorpal> shachaf, why are you using K&R syntax though?
09:10:35 <Vorpal> There is a reason it is bad
09:10:43 <shachaf> Vorpal: I'm not, but I thought it was the same.
09:10:47 <Vorpal> Ah
09:10:54 <shachaf> I was going to use it as a prank in my next job interview that asked me to write C code.
09:11:16 <Vorpal> shachaf, K&R promotion rules still apply to varargs (i.e. printf(const char*, ...)
09:11:18 <Vorpal> )
09:11:21 <shachaf> Right.
09:11:34 <shachaf> Actually I think it's kind of elegant syntax in the C mindset of the world.
09:11:41 <Vorpal> Oh?
09:11:43 <shachaf> In the "declaration follows use" spirit.
09:11:52 <Vorpal> You lost me
09:13:02 <shachaf> You know, int (*f[3])() means that (*f[i])() is an int.
09:13:50 <shachaf> And so int f(x, y) char x; int y; { .... } means that f(x, y) is an int, whenever x is a char and y is an int.
09:13:56 <shachaf> At least, that was my theory
09:14:20 <shachaf> And "f(x, y)" actually looks like function call syntax as an expression, unlike f(char x, int y), which looks like a syntax error.
09:14:26 <shachaf> (As an expression.)
09:14:48 <Vorpal> Heh
09:14:49 <shachaf> Taneb: Categories were invented to talk about natural transformations.
09:15:47 <shachaf> The original paper that introduced categories is kind of funny to read in that respect.
09:17:40 <shachaf> Taneb: What do you mean by get them in your head?
09:19:13 <Taneb> Learn them to the point where they make sense intuitively to me
09:19:37 <shachaf> Aha.
09:19:44 <shachaf> There are a whole bunch of senses.
09:21:55 <shachaf> How about this sense: Take a very small category, like the category 3 with three objects and six arrows.
09:22:04 <shachaf> And look at functors : 3 -> Set
09:23:05 <shachaf> What are those?
09:23:59 <shachaf> Maybe you don't want this sort of thing right now.
09:25:14 <Taneb> I'm working through the exercises in the book to make sure I haven't missed anything and that everything is clear in my head
09:25:22 <Taneb> If once I've done that I'm still unsure, I'll get back to you
09:25:40 <shachaf> sgtm
09:29:39 -!- LKoen has joined.
09:46:23 <fizzie> Oh, man: is it the old-style function definition syntax why we can't have braces optional in function definitions?
09:47:18 <fizzie> Because in all kinds of statements (if, for, switch, etc.) the body's just an arbitrary statement, but for functions it's always required to be a compound-statement.
09:55:34 <b_jonas> all mathematicians are crazy, but they're crazy in very different ways. I think it's a requirement for the profession.
09:55:54 <b_jonas> (all doctors are also crazy, mind you.)
09:56:37 <b_jonas> Also, it seems I was probably wrong yesterday. It seems it's not (yet) obvious to find out which project I'm working on for my job with some interenet searches.
10:02:42 <Vorpal> fizzie, We should make a version of C with indentation based syntax. Like python or haskell has
10:03:39 <shachaf> Haskell-style is better: It has a fairly straightforward translation to {}/; syntax.
10:03:48 <Vorpal> Hm I guess so
10:04:24 <fizzie> izabera: Despite what __builtin_types_compatible_p might say, I'm pretty sure calling nullfunX via the corresponding funX pointer is undefined.
10:04:35 <izabera> aww
10:04:46 <izabera> undefined as in it will work fine in gcc?
10:05:11 <Vorpal> izabera, undefined as in "that might depend on CPU architecture and calling convention"
10:05:15 <fizzie> Well, it won't work fine if the function is using the Windows stdcall calling convention.
10:05:17 <b_jonas> shachaf: python would have a fairly straightforward translation to {} style too, only it already uses curly braces for something else which is syntactically incompatible, so you'd need to use some ugly tokens instead
10:05:29 <fizzie> It won't even link, because the number of parameters (kinda-sorta) is part of the name mangling.
10:05:48 <b_jonas> shachaf: in fact, the language docs describes python syntax in terms of tokens including newline, indent, and dedent tokens.
10:05:48 <izabera> no name mangling in c so it's all good?
10:05:59 <fizzie> I mean the C name mangling.
10:06:01 <Vorpal> izabera, um, on Windows there is in C
10:06:02 <b_jonas> oh yes, python also uses semicolons in an incompatible way
10:06:11 <Vorpal> izabera, Also it will still crash during runtime there
10:06:36 <izabera> oooook this thing wouldn't work on windows anyway
10:06:54 <Vorpal> izabera, I would suggest just using nullfunc(int ignored1, int ignored2) instead if you don't care about the arguments in some cases
10:07:14 <fizzie> Okay, slight correction -- since it's a function pointer, the name mangling isn't necessarily an issue. But it should still crash and burn on runtime.
10:07:16 <Vorpal> izabera, anyway you are invoking undefined behaviour and it might break on some non-windows too
10:07:20 <b_jonas> the problem is sort of like in some BASIC dialects, where a colon separates statements, but an IF cond THEN ... has any number of colon-separated statements up to the end of line as its body
10:07:28 <b_jonas> so you can't just rewrite all newlines to colons
10:07:36 <Vorpal> izabera, better just to not do it that way
10:07:48 <shachaf> I do wish I could write nested one-liners in the Python REPL.
10:07:56 <b_jonas> (this is made worse by those dialects of basic that have two different IF-THEN syntaxen, the one-line and the block one)
10:08:54 <shachaf> do you pay taxen
10:09:11 <Vorpal> shachaf, I think ipython kind of allows that?
10:09:17 <b_jonas> Haskell is much better, because you can write everything with only braces and semicolons, without newlines or indents, and it's easy if you know what syntax tree you want to write, it's only sometimes hard to tell how braceless code you didn't write parses.
10:09:24 <Vorpal> shachaf, Or at least it handles enter presses much better
10:09:36 <fizzie> izabera: FWIW (since you mentioned a "generic function pointer"), any pointer-to-function can be safely converted to any other pointer-to-function (with a cast), as long as you convert it back for the call. So arguably anything (say void (*)(void)) can work as a generic function pointer in some sense.
10:09:41 <shachaf> I don't one to write multi-liners, though.
10:10:53 <fizzie> ("A pointer to a function of one type may be converted to a pointer to a function of another type and back again; the result shall compare equal to the original pointer. If a converted pointer is used to call a function whose type is not compatible with the referenced type, the behavior is undefined." C11
10:11:41 <shachaf> fizzie: So why is it undefined behavior?
10:11:53 <b_jonas> fizzie: meh, those rules for pointer-to-function being convertible (and pointer-to-struct being not only convertible but also have the same representation) are just for efficiency. if you are a theorist, you can always just write typesafe code by allocating the right kind of pointer somewhere, and referencing it only indirectly when you don't know its type.
10:11:57 <shachaf> Those function types seem to be compatible.
10:14:27 <fizzie> shachaf: "For two function types to be compatible -- If one type has a parameter type list and the other type is specified by a function definition that contains a (possibly empty) identifier list, both shall agree in the number of parameters, --" (C11
10:15:12 <fizzie> Here e.g. funint has a parameter type list, nullfunint is specified by a function definition that contains an (empty) identifier list, and they don't agree in the number of parameters.
10:15:22 <fizzie> So they can't be compatible.
10:15:56 <izabera> so you guys are saying that this thing may be slightly unportable https://arin.ga/oogx5Q/raw
10:16:25 <fizzie> With all that __builtin_crap, it's by nature unportable.
10:16:50 <izabera> that works in gcc and clang
10:17:00 <fizzie> And of course those are the only two compilers in the world.
10:17:31 <fizzie> Anyway, time(NULL) % 2 is unportable too.
10:17:33 <izabera> that's all the portability i care about for this thing
10:17:37 <izabera> oh come on
10:18:06 <fizzie> time_t can be any real type (actually even complex before C11), and the operands of % must be integer types (it's a constraint violation if not).
10:18:20 <izabera> that's really not important now -_-
10:18:34 <fizzie> Hey, you're the one who said "portable".
10:18:56 <izabera> i was talking about the you know what part
10:19:10 <mitchs> hey, don't knock imaginary time
10:19:37 <shachaf> Where's the original code?
10:19:47 <shachaf> Ah.
10:20:14 <shachaf> Because those are definitions, not declarations.
10:20:33 <shachaf> Or something. Maybe I was looking in the wrong place.
10:21:56 <shachaf> I was looking at "If one type has a parameter type list and the other type is specified by a function declarator that is not part of a function definition and that contains an empty identifier list, the parameter list shall not have an ellipsis terminator and the type of each parameter shall be compatible with the type that results from the application of the default argument promotions."
10:22:45 <fizzie> Yes. It would (probably) be okay to have a declaration of int blah(); and a function pointer of int (*p)(int a, int b) = blah; and then call p(1, 2) if the blah function actually did take two ints.
10:22:56 <fizzie> But here the corresponding definition is one which takes no parameters.
10:23:08 <b_jonas> eww, pre-ANSI style functions
10:23:13 <b_jonas> best to juts leave those alone
10:23:34 <shachaf> Those are great, for the reason I explained above.
10:23:40 -!- hppavilion[1] has joined.
10:23:43 <shachaf> Except they don't work the way I thought, so that's scow.
10:23:46 <b_jonas> (unless you're like deliberately trying to do eso, of course)
10:23:52 <hppavilion[1]> In any other country, do people usually join the 1.60934 km high club?
10:24:57 <mitchs> only if they're 22.86cm nails fans
10:25:13 <izabera> ew
10:25:32 <izabera> it doesn't sound nearly as bad when it's in units i don't understand
10:25:56 <fizzie> izabera: Anyway, yes, it can be unportable. Even in gcc, for some contexts. (See https://gcc.gnu.org/onlinedocs/gcc-4.5.3/gcc/i386-and-x86_002d64-Options.html -mrtd: "Use a different function-calling convention, in which functions that take a fixed number of arguments return with the ret num instruction, which pops their arguments while returning. -- In addition, seriously incorrect code will ...
10:26:02 <fizzie> ... result if you call a function with too many arguments.")
10:26:41 <fizzie> It might be portable enough for your purposes.
10:27:08 <izabera> yay
10:35:15 -!- augur has quit (Remote host closed the connection).
10:35:57 -!- tromp_ has joined.
10:40:22 -!- tromp_ has quit (Ping timeout: 252 seconds).
10:42:46 <b_jonas> `ping
10:43:30 <HackEgo> pong
10:43:41 <b_jonas> `echo 6JMYWsY9kHzLZUFffWSTViYUTmDbBZzx0nz/UI7uuuw
10:43:52 <HackEgo> 6JMYWsY9kHzLZUFffWSTViYUTmDbBZzx0nz/UI7uuuw
10:49:51 -!- hppavilion[1] has quit (Ping timeout: 240 seconds).
11:07:29 <Vorpal> shachaf, what do you mean with "scow"?
11:09:29 <Vorpal> fizzie,
11:09:36 <Vorpal> what about non-x86?
11:09:53 <Vorpal> What is the ARM and MIPS calling conventions?
11:10:33 <shachaf> Vorpal: "the scow of X" means something like "the worst speciment of X"
11:10:48 <Vorpal> shachaf, is that a common wording?
11:10:51 <Vorpal> izabera, oh and what is your end goal with all of this?
11:10:53 <shachaf> Not very.
11:11:13 <Vorpal> okay
11:11:26 <izabera> i don't like that question because then my end goal never seems importan enough
11:11:41 <Vorpal> oh?
11:12:14 <Vorpal> izabera, I'm just curious you are trying to do something this seemingly over-complicated (in addition to being non-portable)
11:12:46 <izabera> i just wanted to make a generic no-op function that i can assign to a function pointer
11:13:09 <Vorpal> Okay, for what purpose though? Or just as an exercise in and of itself?
11:13:11 <izabera> then i can just call the function with whatever argument and it will do nothing
11:17:42 <izabera> they sorta do it here https://github.com/9fans/plan9port/blob/master/src/cmd/dd.c but it's not at all generic
11:18:04 <izabera> their null and cnull functions do something very specific
11:18:12 <izabera> i just wanted some no-op
11:21:12 <izabera> i think it's a useful idea, and if one could just assign NULL to a function pointer and then call that function i'd use that
11:23:21 <Vorpal> izabera, yeah it sounds nice. Sadly I think C is the wrong language to do that portably. Also what about the return value? It only makes sense for functions returning void doesn't it
11:23:27 <Vorpal> I.e. functions with side effects
11:23:57 <izabera> my no ops just return 0
11:24:18 <Vorpal> izabera, what for a function returning a struct on the stack though?
11:24:19 <izabera> but yeah it's more useful if you don't care about the return value
11:24:32 <izabera> that's work in progress
11:25:19 <Vorpal> I think this would be easier in C++ actually, At least C++11 and later. Since then you could probably just use a lambda wherever to do this.
11:34:43 -!- boily has joined.
11:37:03 -!- idris-bot has joined.
11:48:25 -!- LKoen has quit (Remote host closed the connection).
12:04:15 -!- LKoen has joined.
12:07:19 <fizzie> Vorpal: The x86-32 stdcall one is the only widespread one I know of where extra arguments aren't silently ignored.
12:07:46 <fizzie> Possibly because variable-argument functions are inherently problematical for the callee clean-up scheme.
12:07:54 <fizzie> (And C is all about varargs.)
12:25:56 -!- boily has quit (Quit: BOUQUET CHICKEN).
12:36:55 -!- tromp_ has joined.
12:41:30 -!- tromp_ has quit (Ping timeout: 258 seconds).
12:42:45 -!- LKoen has quit (Remote host closed the connection).
12:50:54 <Vorpal> fizzie, I dispute that last statement
12:51:01 <Vorpal> I think it is a very small part of the language
12:51:50 <Vorpal> fizzie, what about various register based calling conventions?
13:01:02 -!- LKoen has joined.
13:22:39 <fizzie> Well, it's all about varargs compared to some other languages, which don't have anything analogous.
13:23:00 <fizzie> As for register-based conventions, they all tend to have some sort of "rest are spilled on the stack" fallback.
13:25:07 <fizzie> Weird thought: it won't take that long until RFC numbers are going to need five digits.
13:30:05 <int-e> blasphemy... surely the right solution is to return some no longer useful RFC addresses to a pool from which they can be sold to the highest bidder.
13:31:35 <fizzie> Or move to a "RFD" prefix, it has a reasonably analogous expansion ("Request for Discussion").
13:31:46 <fizzie> And then up to RFE (Request for Elaboration), and so on.
13:33:55 <fizzie> In related news, I hadn't somehow realized Psyduck is water-type.
13:34:09 <fizzie> I mean, it makes sense (ducks and water), just somehow surprised me.
13:37:49 -!- tromp_ has joined.
13:39:49 <int-e> oh, *F*eedback. (I was wondering how much trouble "RFF" would be asking for but this is a quite natural word to use in this context)
13:41:21 <fizzie> Request for Gabble.
13:41:28 <fizzie> @wn gabble
13:41:33 <lambdabot> *** "gabble" wn "WordNet (r) 3.0 (2006)"
13:41:33 <lambdabot> gabble
13:41:33 <lambdabot> n 1: rapid and indistinct speech [syn: {jabber}, {jabbering},
13:41:33 <lambdabot> {gabble}]
13:41:33 <lambdabot> v 1: speak (about unimportant matters) rapidly and incessantly
13:41:35 <lambdabot> [3 @more lines]
13:41:47 <fizzie> Maybe a little bit too on-the-nose?
13:42:15 -!- tromp_ has quit (Ping timeout: 250 seconds).
13:43:29 <fizzie> Request for Gossip, maybe.
13:58:51 -!- ais523 has joined.
14:04:53 <Vorpal> <fizzie> In related news, I hadn't somehow realized Psyduck is water-type. <-- shouldn't it be flying/water
14:06:22 <Vorpal> bbiab
14:06:42 <zzo38> I don't think so, I think they can't fly?
14:06:46 <b_jonas> Vorpal: wait, "psy" but it's not psychic?
14:07:11 <Vorpal> Okay? Normal ducks can afaik
14:07:23 <Vorpal> b_jonas, good point too
14:07:33 <zzo38> Yes normal ducks can
14:07:45 <zzo38> Also, each pokemon cannot have more than two types anyways
14:07:58 -!- atrapado has joined.
14:08:05 <b_jonas> zzo38: yes, so it shouldn't be flying
14:08:21 <Vorpal> Hm I think I have a weird systemd issue. Says "Started (null)" as the output during the boot at one point
14:09:24 <Vorpal> I should probably upgrade my PC to windows 10 before the end of the free upgrade period... It is on Windows 7
14:10:20 <Vorpal> Need to make a backup and such first
14:10:56 <fizzie> 9 more days.
14:11:17 <Vorpal> yeah
14:11:31 <Vorpal> fizzie: you upgraded yet? Any major issues?
14:12:02 <fizzie> I upgraded quite a while ago, but I haven't booted it in months.
14:12:15 <fizzie> Don't think I encountered any issues either, though.
14:13:02 <Vorpal> Hm
14:13:45 <fizzie> My wife's ThinkPad's bundled Lenovo crapware was a little bit dodgy post-upgrade, but I dare say the current versions are likely 10-tolerant. (The hard disk, on the other hand, apparently wasn't, since it broke; and she switched to Ubuntu at that point.)
14:14:19 <fizzie> (For the record, the drive broke a month or two after the upgrade, and very likely had nothing to do with it.)
14:15:12 <Vorpal> fizzie: right. I heard some people had issues with the software for Saitek X52 Pro, a throttle and joystick setup that I have
14:15:16 <Vorpal> So that is slightly worrying
14:16:21 <fizzie> I don't have any exotic hardware.
14:16:38 <Vorpal> Okay... so where are the rest of the backup hard drives? I only found the Linux backup HDD so far...
14:18:15 <Vorpal> Ah found it. Also found another thing I didn't think I had any more.
14:36:13 -!- oerjan has joined.
14:40:57 <oerjan> tunes is not loading?
14:42:53 <ais523> oerjan: not for me either, but the server appears to have at least some activity
14:43:12 <oerjan> well clog is here...
14:43:41 <ais523> oerjan: re your lambdabot message, "article_text" is badly named
14:43:53 <oerjan> it actually means title?
14:43:57 <oerjan> ok then.
14:44:15 <ais523> oerjan: title without namespace
14:44:49 <b_jonas> ais523: I'm not sure if you're interested, but there's some recent discussion about mathematics and ordinals and stuff in the comment stuff of https://johncarlosbaez.wordpress.com/2016/07/07/large-countable-ordinals-part-3/ that you might want to look at
14:44:49 -!- LKoen has quit (Remote host closed the connection).
14:45:53 <b_jonas> it is partly continued from the previous two parts of that blog entry
14:47:01 <ais523> b_jonas: not really interested, sorry
14:47:08 <b_jonas> ok
14:49:32 -!- Guest7241 has joined.
14:51:19 <oerjan> hm looks like a tough guy, that high conservator.
14:57:53 -!- LKoen has joined.
15:04:16 -!- LKoen has quit (Remote host closed the connection).
15:04:23 <int-e> oerjan: did you look at my hydra killing machine? I realize that the hydra is severely handicapped... but it's actually better than I hoped.
15:04:54 <oerjan> int-e: no. there are no logs at the moment tdnh
15:04:54 <int-e> (I mean http://int-e.eu/~bf3/tmp/hydra2.xhtml )
15:06:25 <fizzie> int-e: Thanks, now I've got that Ylvis "Jan Egeland" song stuck in my head.
15:06:40 <int-e> fizzie: What did I do?
15:06:45 <oerjan> hm i haven't heard that.
15:07:09 <fizzie> You said "hydra killing machine"; the song lyrics contain the words "peacekeeping machine".
15:07:14 <fizzie> I admit that's bit of a stretch.
15:08:00 <int-e> oh, lucky... The hydra currently has: 0 segments, 0 heads, and depth 0. Hercules has cut 74 heads so far.
15:08:02 <fizzie> oerjan: Oh, right, they're your countrymen.
15:08:35 -!- LKoen has joined.
15:08:42 <b_jonas> int-e: is this the dire one or the hydra0 one? and did you reroll at the start for few starting segments?
15:09:02 <oerjan> i'm a bit nervous of opening the wrong kind of tab while doing the automatic hydra. sometimes my browser decides to crash tabs and reload because of what happens in unrelated ones.
15:09:20 <int-e> b_jonas: this is the dire thing, my hydra2.xhtml, automated strategy, I didn't check the initial depth.\
15:09:50 <int-e> oerjan: you might also like to know that I stopped the left-most hydra experiment after 1.5 Million chops.
15:09:56 <oerjan> gah.
15:09:58 <b_jonas> int-e: roll until you get a 11 high hydra :-) (or is that possible only with the non-dire one?)
15:10:35 <b_jonas> I think the dire one starts at most 8 hgih
15:11:13 <int-e> I've got a 10
15:12:32 <int-e> with this result: The hydra currently has: 0 segments, 0 heads, and depth 0. Hercules has cut 633 heads so far.
15:12:43 <\oren\> `unidecode لأ
15:12:52 <b_jonas> ncie
15:13:27 <\oren\> interesting...
15:14:20 <\oren\> it appears blank even though that letter is supported in my font
15:14:40 <oerjan> int-e: stop sabotaging my experiment with demotivating facts!
15:14:51 <\oren\> which implies that it's some contextual form that is blank
15:15:06 <int-e> oerjan: your time would be better spent on implementing your own chopping strategy in javascript!
15:15:30 <b_jonas> oerjan: can you just create multiple browser profiles, run them each separately (in separate browser processes), and run the hydra in a special one?
15:15:47 <b_jonas> oerjan: I run two browser processes because of a bad-behaved internal webpage I need to use
15:16:38 <b_jonas> it can be a bit tricky because firefox needs a magic incantation for this, but once you know the right incantation for your version of browser, it's not that hard
15:16:51 -!- gamemanj has joined.
15:16:58 <\oren\> how does arabic even work?
15:17:07 <oerjan> b_jonas: i use IE hth (idn)
15:17:10 <b_jonas> \oren\: ... it's complicated
15:17:29 <b_jonas> oerjan: I don't know how to do the same in most other browsers
15:18:16 <oerjan> once more, people are giving me advice that i've explicitly hinted i don't want. will they never learn?
15:19:26 <\oren\> Like, most of the letters seem to be connected ever since I added the contextual forms in Arabic Presentation Form-A
15:19:31 <int-e> oerjan: fwiw, it was intended to be unsolicited advice.
15:19:50 <\oren\> But some aren't
15:19:51 <int-e> oerjan: I receive a bit of that myself and it usually gets ignored.
15:20:19 <oerjan> yay
15:23:03 -!- Kaynato has joined.
15:24:11 <\oren\> Argh, which codepoints do I need?
15:25:12 <b_jonas> ah, I see!
15:26:09 <int-e> heh, http://unicode.scarfboy.com/ seems to display a random one by default
15:27:18 <int-e> http://unicode.scarfboy.com/?s=U%2b132E6 looks useful
15:27:40 <int-e> (for electrical engineering :-P)
15:34:18 <gamemanj> remember, people
15:34:26 <gamemanj> the egyptians invented the lightbulb: http://unicode.scarfboy.com/?s=U%2b132e9
15:35:07 <b_jonas> gamemanj: that's a pacifier, not a lightbulb
15:35:40 <gamemanj> That's what they want you to think... :)
15:38:58 <int-e> b_jonas: heh, I got a depth 12 seed... let's kill that.
15:40:02 <int-e> but perhaps it doesn't make any difference whether it's depth 9,10,11 or 12... the first few cuts will simply not result in any replication because that would make the hydra too deep.
15:40:12 <int-e> in fact, The hydra currently has: 0 segments, 0 heads, and depth 0. Hercules has cut 491 heads so far.
15:40:44 <b_jonas> int-e: depth 12 dire or non-dire?
15:41:09 <int-e> b_jonas: dire
15:41:17 <b_jonas> nice
15:41:18 <int-e> I'm not playing with the non-dire one at all
15:41:24 <b_jonas> I didn't know 12 was even possible
16:16:05 <quintopia> i ran the hydra for a while. it was making pretty good progress by the time it hit the 4k mark then vbox crashed and forced a reboot
16:16:55 <quintopia> i postulate that "leftmost head" may be the most (or nearly the most) pessimal chopping strategy
16:17:19 <ais523> what is this hydra thing?
16:17:19 <LKoen> "leftmost head" sounds pretty random
16:18:12 <quintopia> ais523: http://www.madore.org/~david/math/hydra.xhtml
16:18:29 <ais523> thanks
16:19:55 <b_jonas> ais523: it's related to the ordinals I was talking about
16:20:06 <gamemanj> so in other news I think I just had a premonition of a future NetHack enemy...
16:20:29 <b_jonas> ais523: the description is at http://www.madore.org/~david/weblog/d.2008-03-27.1537.html , and the games at http://www.madore.org/~david/math/hydra.xhtml and http://www.madore.org/~david/math/hydra0.xhtml
16:20:32 <ais523> DCSS has hydras, but they don't quite work like that
16:21:13 <b_jonas> ais523: does it have hydras with at most 7 heads?
16:21:18 <b_jonas> or even at most 6 heads?
16:21:40 <ais523> they cap out at 27, and grow 2 heads when you cut off 1 with a non-flaming edged weapon
16:21:59 -!- Vorpal has quit (Ping timeout: 244 seconds).
16:22:03 <b_jonas> ais523: waho... non-flaming? so acid doesn't help?
16:22:13 <b_jonas> oh, edged weapon only
16:22:16 -!- Vorpal has joined.
16:22:17 -!- Vorpal has quit (Changing host).
16:22:17 -!- Vorpal has joined.
16:22:17 <gamemanj> so, not cute and cuddly then.
16:22:18 <b_jonas> so you can just club them to death
16:22:21 <b_jonas> although they'll eat you first
16:22:32 <b_jonas> ais523: does it also have water hydras?
16:23:01 <ais523> b_jonas: no
16:27:47 <oerjan> <quintopia> i postulate that "leftmost head" may be the most (or nearly the most) pessimal chopping strategy <-- my theory too
16:28:29 -!- LKoen has quit (Remote host closed the connection).
16:32:31 <oerjan> it means you're nearly always cutting off the smallest branches, which means that when you finally get to a large branch, the result will be almost as large and have plenty of room to grow.
16:33:06 <ais523> I think optimal may be to cut off the head furthest from the root
16:33:23 <ais523> is leftmost equivalent to cutting off the head nearest to the root?
16:33:35 <oerjan> no.
16:34:05 <oerjan> because a dire cut can add height.
16:35:10 <oerjan> ais523: that may be optimal although i'm not sure whether it's _also_ worth it to avoid dire cuts in some circumstances (which i've been doing)
16:36:33 <ais523> well, I guess we can simplify it by saying that the hydra always makes 1 more than the minimum number of copies
16:36:48 <ais523> (I know that'd defeat the ordinals thing, but it'd make it possible to compare algos objectively)
16:37:22 <oerjan> ais523: note that the js version is _very_ much constrained by the restriction on how much total junk it'll allow.
16:37:37 <ais523> yes
16:37:47 <oerjan> without that, as i said, you'd probably not beat it in the lifetime of the universe.
16:39:16 <ais523> right, it hardly ever copies
16:39:18 -!- tromp_ has joined.
16:43:33 -!- tromp_ has quit (Ping timeout: 240 seconds).
16:48:38 -!- LKoen has joined.
16:50:25 <oerjan> almost got to cut the oldest dire branch there...
16:51:29 <oerjan> i mean prune. still a y shape on top of it.
17:07:59 -!- LKoen has quit (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”).
17:12:32 <quintopia> 4155 and only one dire neck left
17:12:44 <quintopia> oh it just duplicated
17:12:50 <quintopia> triplicated i mean
17:14:29 <oerjan> quintopia: i got to that point _relatively_ fast too.
17:14:52 <oerjan> you need to look at how much is on top it, alas.
17:14:57 <oerjan> (i think)
17:15:15 <oerjan> *+of
17:15:59 <int-e> quintopia: this one, http://int-e.eu/~bf3/tmp/hydra.png still looked healthy a million chops later.
17:16:43 <int-e> even though it regularly cut all the wait to the rightmost subtree on level 2.
17:17:46 <oerjan> int-e: well my rightmost subtree on level 2 is much smaller than that.
17:17:52 <quintopia> int-e: mine is much further along than that. (it got lucky with no copies in the first 3 chops)
17:18:14 <oerjan> (at 74400 heads about now.)
17:19:43 <oerjan> well that's good.
17:23:21 <quintopia> 74400 heads? or cuts? i don't think the app can fit 74400 heads on screen, though it would be interesting to try and force it to
17:24:10 <oerjan> cuts
17:25:53 <oerjan> https://imgur.com/a/CKzBn
17:28:24 <ybden> Ooh, what's this?
17:28:57 <oerjan> http://www.madore.org/~david/math/hydra.xhtml
17:29:01 <ybden> oerjan: thanks
17:32:03 <quintopia> oerjan: i think my rightmost subtree is even further than that. it's a dire at level 2, but above only three normals at level 3. that Y on yours could result in far more than that. hard to say though.
17:32:47 <oerjan> quintopia: i agree, that's at least a smaller "ordinal"
17:34:23 <oerjan> as in, it's easy to produce your shape by taking steps from mine
17:35:35 <quintopia> oerjan: https://imgur.com/a/iB9r1
17:36:09 <oerjan> as i thought.
17:36:26 -!- idris-bot has quit (Quit: Terminated).
17:37:38 <oerjan> i need at least two cuts on my rightmost second level to get something like that.
17:38:06 <oerjan> i do expect that to take less than a million cuts, though.
17:38:29 <oerjan> hopefully less than 100000
17:38:58 -!- Melvar has quit (Quit: thunderstorm).
17:39:15 <gamemanj> this is an urgent appeal from the ESPEH (Esoteric Society for the Protection of Endangered Hydrae)
17:39:47 <gamemanj> hundreds of hydras are being slaughtered every day by merciless murderers who do it for the "fun of solving them"...
17:40:02 -!- MoALTz has joined.
17:40:34 <gamemanj> to save these poor, defenseless hydras, please donate just <currency> a month.
17:42:03 <quintopia> gamemanj: a hydra is like an anthill. it gets into your pantry and starts eating all your food, and any time you see a head, you squish it without thinking about it. but you really need poison to even make a dent in the hill
17:42:36 <gamemanj> nonsense
17:42:38 <quintopia> er...i got my simile confused with the thing it was symbolizing there
17:42:44 <quintopia> but you get the idea
17:42:50 <gamemanj> No, I don't
17:43:03 <gamemanj> people keep murdering these poor innocent hydrae, who can't even defend themselves
17:43:07 <quintopia> in any case, hydrae are pests and need to be killed as much as possible
17:43:31 <gamemanj> (also I love how my linguistic misinformation plan is working so well)
17:44:13 <gamemanj> (the best part is I wasn't even being consistent about it)
17:44:13 <quintopia> i read that xkcd too. i can knowingly participate in such pranx
17:44:47 <int-e> gamemanj: my impression is that they're grooming their hydras and eating the cut off heads.
17:45:08 <gamemanj> ...isn't that painful for the hydrae?
17:45:24 <int-e> The hydras don't feel pain.
17:45:49 <gamemanj> Have you read the Herzei Study On The Biology Of Hydrae?
17:46:26 <int-e> cf. http://www.gocomics.com/nonsequitur/1993/04/03
17:47:08 <zzo38> I don't have any money called "<currency>".
17:47:15 <int-e> gamemanj: I have not, and I intend to keep it that way.
17:50:18 <quintopia> hydrae is actually an accepted plural of hydra
17:50:47 <quintopia> zzo38: would you donate it if you did?
17:51:07 <int-e> quintopia: But I don't care how you call hydras!
17:52:14 <quintopia> int-e: O KAY
17:53:33 <ybden> \o/ it's dead
17:53:51 <ybden> Took 1568 cuts
17:53:51 <quintopia> ybden: by hand? how many cuts?
17:53:53 <quintopia> ok
17:53:56 <ybden> quintopia: by hand
17:54:05 <quintopia> seems high for manual. strategy?
17:54:07 <zzo38> quintopia: If I had enough, and the stuff it is meant to donate for is valid, then I might.
17:54:30 <quintopia> oerjan: progress! only 2 above that rightmost dire now
17:55:40 <oerjan> yay
17:56:35 <gamemanj> if anyone wants the "how to donate <currency>" text I just sent to zzo38, ask :)
17:56:44 <gamemanj> (hint: it's not actually currency at all)
17:57:00 <oerjan> currently i don't want it.
18:00:39 <quintopia> this whole donation thing no longer has currency
18:00:51 <ybden> quintopia: It took a while for me to create a strategy. Just tried again with the strategy that I formed, took 403 cuts
18:01:03 <quintopia> ybden: what is i
18:01:10 <ybden> Trying to work out how to describe it
18:02:20 -!- AnotherTest has quit (Ping timeout: 272 seconds).
18:02:37 <ybden> I think that it was pretty much breadth-first, prioritising the removal of higher levels and dire segments
18:03:19 <ybden> (but higher levels over dire segments)
18:03:25 <quintopia> breadth first from where?
18:03:54 <ybden> as in, which direction? Top-downwards
18:04:03 <ybden> Trying to remove tips
18:04:18 <ybden> Well, I suppose that isn't exactly breadth-first
18:04:23 <quintopia> left to right?
18:04:30 <ybden> I didn't really pick an order
18:04:53 <quintopia> i tried a similar strategy and it was very poor, though i think i may have prioritized dire segments over height
18:05:15 <ybden> for multiple tips at the same level, I tried to remove the ones with less normals, although in hindsight I should probably have done it the other way round
18:05:36 <ybden> Given that this would probably have resulted in less duplication
18:06:07 <ybden> quintopia: Yeah, I think I was prioritising dire segments over height partway through the first time, and then switched to height
18:06:10 <ybden> It went better after that
18:06:53 <ybden> I think that it made quite a significant difference, actually
18:07:13 <ybden> Is there any known best algorithm for efficient hydra chopping?
18:07:39 <quintopia> not known because we don't know the algorithm for head regrowth
18:07:47 <ybden> Because it's random?
18:09:40 <quintopia> well
18:09:50 <quintopia> i guess we could look at the code
18:09:56 <quintopia> it is javascript after all
18:10:23 <quintopia> there is a probability distribution on head growth, plus also certain constraints that prevent it from recursing/copying too much
18:11:26 <myname> is there some kind of pumping lemma for picture languages?
18:14:12 <tromp> what do you mean by picture language?
18:15:33 <myname> there are languages that extend regular expressions by operators that act downwards instead of sideways
18:15:42 <myname> resulting in twodimensional results
18:15:42 <ybden> quintopia: tried again, but prioritising normals with more heads, took 487
18:15:55 <ybden> quintopia: I'm pretty sure this is worse, even though this is random
18:16:34 <myname> this would - i guess - result in regular pictures
18:16:44 <myname> but you can also define the same for grammars
18:31:13 <izabera> does anyone know why does posix_memalign return int instead of void * like _every_ other function that allocates memory?
18:31:46 <quintopia> myname: you mean like snails?
18:32:01 <ais523> izabera: it's so that it can have more than one error code
18:32:07 <ais523> without needing to rely on errno
18:32:23 <izabera> what's the problem with errno?
18:32:47 <myname> no. let's assume i add a $-operator to,RE that acts like + but downwards. (0+)$ would be a rectangle of 0
18:33:39 <ais523> izabera: it's globalisih state that can be surprisingly hard to deal with
18:33:42 <myname> if i also add some kind of downwards concatenation i could make a chessboard
18:33:53 <ais523> it tends to get accidentally overwritten quite easily, for example
18:33:54 <izabera> ais523: but every other function uses it
18:33:59 <ais523> and causes headaches for threading libraries
18:34:05 <myname> ((10)+ D (01)+)$
18:34:09 <ais523> I think POSIX is moving away from errno for newly designed functions
18:34:20 <tromp> what is down concatenation of strings of different length?
18:34:45 <myname> i'd say either undefined or having blanks
18:34:56 <ais523> myname: regular expressions already have a $ assertion
18:35:01 <ais523> you might want to use some other character
18:35:23 <myname> yeah well, pcre do
18:35:41 <myname> i donjt care about notation really
18:36:48 <quintopia> https://github.com/feresum/PMA/blob/master/doc.md SNAILS
18:37:16 -!- mitchs has left.
18:40:45 -!- tromp_ has joined.
18:44:00 <ybden> quintopia: What's your lowest chop count (by hand)?
18:45:27 -!- tromp_ has quit (Ping timeout: 264 seconds).
18:47:49 <izabera> ais523: so why does aligned_alloc return void* and set errno?
18:47:53 <izabera> that's in c11
18:48:25 <ais523> because C11 and POSIX kind-of compete with each other
18:48:50 <izabera> so one of the two is a bad decision
19:12:08 <oerjan> <shachaf> isn't it easily going to go to ackermann numbers <-- my guess is that the general hydras last even longer than that, since their halting is unprovable in peano arithmetic. but this one is limited by screen size, which means it obviously cannot be more than about exponential in that.
19:12:52 <oerjan> (is graham's number stuff provable in peano arithmetic?)
19:13:08 <oerjan> (tunes finally loaded hth)
19:13:19 <oerjan> although i must be going ->
19:13:21 <shachaf> oerjan: I don't remember the context but I think I was just going to make some sort of pun.
19:13:39 <oerjan> shachaf: no, that was the next line
19:13:41 <shachaf> oerjan is a real groucho these days
19:13:48 <shachaf> oerjan: I think it was just setup.
19:13:49 <oerjan> groucho?
19:13:53 <oerjan> OKAY
19:14:19 <shachaf> https://www.youtube.com/watch?v=_YrNQaXdOxU
19:15:42 -!- oerjan has quit (Quit: OKAY).
19:19:34 -!- Melvar has joined.
19:36:47 <ais523> @metar EGBB
19:36:48 <lambdabot> EGBB 201820Z 30010KT 9999 VCSH FEW033 SCT039TCU 24/15 Q1010
19:37:38 <int-e> @metar LOWI
19:37:38 <lambdabot> LOWI 201820Z VRB01KT 9999 FEW070 25/16 Q1016 NOSIG
19:37:51 <int-e> cooling down slowly...
19:39:26 -!- AnotherTest has joined.
19:43:05 -!- Phantom_Hoover has joined.
19:45:28 -!- ^v has quit (Ping timeout: 258 seconds).
19:50:00 -!- ^v has joined.
19:50:51 -!- Nithogg_ has quit (Ping timeout: 264 seconds).
19:54:55 -!- ais523 has quit.
19:55:11 -!- Nithogg_ has joined.
20:01:45 -!- lordofheads has joined.
20:03:45 <lordofheads> any hacker in d house
20:05:20 -!- lordofheads has left.
20:05:22 -!- hppavilion[1] has joined.
20:05:36 <int-e> brilliant.
20:06:33 -!- ^v has quit (Ping timeout: 258 seconds).
20:07:02 -!- ^v has joined.
20:08:28 <myname> also, people are too stupid to use the pumping lemma
20:09:01 <myname> we had some that chose i = 1 to get a word that's not in the language ...
20:09:25 <int-e> it could work!
20:09:36 <int-e> (if you made a mistake earlier)
20:11:30 <myname> we had a language L = {1^(k^2) | k in N+}
20:11:40 <myname> one guy noticed that epsilon is not in there
20:11:59 <myname> so he chose i < 0 small enough to anihilate all other 1s in the given word
20:12:04 <int-e> uh, this gives me an idea for a wrong proof... showing that the empty set is not regular... for assume it's regular and consider any word from the language that is longer than the pumping constant... pumping gives a word that is not in the language because the language is empty... which is a contradiction... find the error!
20:12:59 <int-e> myname: that's a nice trick too.
20:13:42 <myname> yeah, but stupid as fuck to write in something that gets graded
20:13:51 <int-e> @tell oerjan uh, GG... could that be Zola?
20:13:51 <lambdabot> Consider it noted.
20:14:36 -!- ^v has quit (Ping timeout: 258 seconds).
20:18:03 -!- ^v has joined.
20:20:57 -!- MoALTz has quit (Quit: Leaving).
20:22:39 -!- ^v has quit (Ping timeout: 258 seconds).
20:23:36 -!- idris-bot has joined.
20:39:20 -!- augur has joined.
20:51:20 <zzo38> That kind of deciding character encoding is not so good I think; the encoding should be defined explicitly instead. (For compatibility purpose, it could do what it does now if no character encoding is explicitly defined)
21:02:38 <pikhq> What sort of character encoding deciding? I seem to be missing context for that statement.
21:04:20 <zzo38> The one documented in https://github.com/feresum/PMA/blob/master/doc.md
21:04:56 <pikhq> Hrm.
21:08:41 -!- atrapado has quit (Quit: Leaving).
21:18:26 -!- hppavilion[2] has joined.
21:21:51 -!- hppavilion[1] has quit (Ping timeout: 240 seconds).
21:46:06 <\oren\> Oh my god why!
21:46:32 <\oren\> why would someone use macros to generate templates that generate the actual code that is crashing
21:46:42 <\oren\> why
21:49:39 <int-e> are you asking *about* meta-meta-code?
21:51:07 <\oren\> Wait... I didn't even knwo you could do this with templates
21:52:06 <\oren\> When did template functions with variable numbers of variably type arguments become a thing?
21:52:30 <\oren\> And why would anyone even
21:53:09 <gamemanj> you're in #esoteric
21:53:11 <gamemanj> this is normal
21:53:24 <int-e> "C++11 - New features - Variadic templates" http://www.cplusplus.com/articles/EhvU7k9E/ has a few usecases
21:53:41 <\oren\> gamemanj: I did not expect to see this in actual, production code
21:53:56 <int-e> not necessarily convincing ones... maybe the motivation was to do less C preprocessor magic.
21:53:57 <\oren\> Or really, anything remotely resebling this
21:54:59 <\oren\> I'm looking at this stuff and I'm thinking; no wonder our builds take an hour to compile
21:55:39 <\oren\> the code that uses this is also generated
21:55:41 <pikhq> Tip: templates compile for reach translation unit they're present in.
21:55:58 <pikhq> As such, templates are the secret to slow C++ compile times.
21:56:02 <pikhq> *each
21:57:31 <\oren\> and this stuff is just there as syntax sugar mostly
21:57:41 <\oren\> god, why
21:59:02 <\oren\> variadic template functions generated by macros and used by another writhing abomination somewhere else
21:59:37 <gamemanj> (So in other news I'll be watching TheDailyWTF)
22:01:02 <\oren\> Oh I forgot to mention what this is doing
22:01:29 <\oren\> it allows C++ code that writes HTML to have the same nested structure as the HTML is generates
22:01:49 <\oren\> the horror
22:01:52 <int-e> so it's an EDSL!
22:02:19 <int-e> Now we're in buzzword-compatible sane territory again ;-)
22:02:37 <int-e> Well, as long as it works :P
22:03:09 <gamemanj> But why does it need to have that structure...
22:03:17 <gamemanj> ow.
22:03:20 <gamemanj> my sanity.
22:03:33 <gamemanj> it's gone.
22:04:07 <\oren\> you can then write htmlout.start_a("href","someurl").text("link name").end_a();
22:04:21 <\oren\> or something?
22:04:28 -!- int-e has set topic: The intradisciplinary hub of insanity matrices and esoteric magic card design and deployment | http://esolangs.org/ | logs: http://codu.org/logs/_esoteric/ http://tunes.org/~nef/logs/esoteric/?C=M;O=D | https://dl.dropboxusercontent.com/u/2023808/wisdom.pdf.
22:04:43 <\oren\> it's hard to tell because the functionsa are generated by a macro
22:05:49 -!- wob_jonas has joined.
22:05:58 <\oren\> and we rarely use this code directly
22:06:37 <myname> well, in rust, you can use macros to basically inline html to generate a dom object
22:06:41 <\oren\> it's through a templating system in a proprietary subset of an obscure open source language invented by the chief architect
22:07:21 <gamemanj> which obscure open source language?
22:07:36 <gamemanj> (you can't have an open source language under an NDA, surely?)
22:07:36 <\oren\> "Salmon"
22:08:20 <\oren\> it's almost impossible to find info on it other than two mailing list posts by the chief architect
22:08:41 <gamemanj> at comp.compilers?
22:08:46 <\oren\> I think so
22:09:02 <gamemanj> Seems it supposedly had a website at one point.
22:09:24 <\oren\> oh there's an archive
22:09:26 <\oren\> http://www.cod5.org/archive/s/salmon.html
22:09:33 <gamemanj> Is this it? https://web.archive.org/web/20140105015657/http://salmonpl.net/
22:09:33 <\oren\> "Imperitive"
22:09:41 <\oren\> gamemanj: yep
22:10:14 <\oren\> our build system is written in it, instead of makefiles
22:10:19 <wob_jonas> gamemanj: you could have something that's not open source but people lie about it and claim it's open source (this is common); or you could have something that has an open source license (usually because of copyleft) but isn't distributed except within very tight circles.
22:10:41 <gamemanj> yes, I know about the people who lie and claim something is open source when it isn't... but those are usually people who are actually dodgy
22:10:42 <wob_jonas> \oren\: wait, your build system is written in a templating system?
22:10:59 <gamemanj> like "77zip", woah was *that* a fun mess to clean off of someone's computer
22:11:07 <gamemanj> (Not to be confused with "7-zip")
22:11:36 <\oren\> wob_jonas: no, in Salmon, an obscure programming language
22:11:57 <gamemanj> "procedure" and "function" are different things for some reason
22:12:16 <\oren\> which is used for many purposes here because it's the pet language of the chief architect
22:12:30 <gamemanj> oh, for... reduced fractions
22:12:33 <wob_jonas> And of course you can also have something under an MIT-like license but distribute only binary form or other deliberately obfuscated form that's hard to decode or modify.
22:12:46 <\oren\> Luckily, the production things are all in C++
22:13:05 <wob_jonas> Big companies sometimes try to pull that when some legal court forces them to release the source of some software
22:14:00 <gamemanj> BTW, apparently Salmon comments are C-like, except when they're Python-like. Oh, but apparently comments can be nested, I'm sure THAT's fun
22:14:00 <wob_jonas> \oren\: heh, I'm glad our chief architect doesn't have an obscure pet language... oh wait, cmake. damnit.
22:14:04 <\oren\> gamemanj: reduced fractions?
22:14:15 <gamemanj> oren: https://web.archive.org/web/20120114192459/http://salmonpl.net/docs/basic_examples.html
22:14:16 <gamemanj> read
22:14:18 <gamemanj> carefully
22:15:11 <\oren\> oh geez
22:15:37 <wob_jonas> gamemanj: well in C, ifdefs can be nested
22:15:46 <wob_jonas> that can be fun
22:16:33 <gamemanj> yes, but that makes SENSE
22:16:35 <int-e> !"Hello, world!" <-- didn't some basic dialects use ! for abbreviating PRINT?
22:17:02 <wob_jonas> gamemanj: can Salmon do /* crazy /*/ alternating /*/ comments /*/ with /*/ non-comments /*/ like /*/ this /*/ ? /**/
22:17:19 <\oren\> I use #if 0 for bcommenting things out in C anyway
22:17:21 <wob_jonas> int-e: no, basic dialects use a question mark to abbreviate print
22:17:24 <wob_jonas> not an exclamation mark
22:17:31 <int-e> damn.
22:17:41 <gamemanj> I have no idea what would happen, Salmon's not my language, and I don't ever want to run it on any computer I own
22:17:48 <gamemanj> now, someone else's computer maybe
22:17:55 <wob_jonas> \oren\: yes, that's useful for commenting out entire code blocks when they may contain short comments. I do it a lot
22:18:49 <wob_jonas> (some of my co-workers instead put a // in front of each line, even when commenting out a whole code block. that's horrible. #if 0 nests cleanly, both with other #if 0 and with comments.)
22:19:24 <\oren\> and then you can use #if 1 if you want to reenbale it temporarily
22:19:43 <\oren\> (while keeping the grouping handy)
22:20:03 <wob_jonas> \oren\: exactly. and #else for two blocks of which you enable one, or even named #ifdef
22:20:07 <int-e> @google enbale
22:20:08 <lambdabot> https://www.facebook.com/public/Melaku-Enbale
22:20:13 <int-e> eww.
22:21:07 <int-e> it evoked associations with "embalm" for me. fun typo.
22:21:07 <wob_jonas> (and in some cases, I can just use if (0) { ... } to disable a block.)
22:22:47 <int-e> . o O ( salmon looks fishy )
22:27:19 -!- tromp_ has joined.
22:28:41 <\oren\> Oh, so I can do tag_a("href","url","text");
22:29:12 <\oren\> might as well dive right into the tempateing horror
22:31:38 <wob_jonas> wait, they printed a red Donate sorcery, costing only 2R, that works on any type of permanent? that's crazy!
22:32:08 -!- tromp_ has quit (Ping timeout: 272 seconds).
22:40:31 <\oren\> yeah, this thing actually works pretty well
22:40:57 <\oren\> other than being a convulsing horror
22:41:09 <wob_jonas> yeah
22:42:34 <\oren\> I've seen cmake in several projects though
22:42:52 <\oren\> is cmake turing complete by itdelf?
22:42:56 <wob_jonas> wait, cmake?
22:43:15 <wob_jonas> maybe cmake works well, but it definitely doesn't work well the way it's used here
22:43:28 <wob_jonas> the build system is horrible, and probably only part of that is that it's in cmake
22:43:29 <\oren\> I'm not talking about cmake before
22:43:49 <\oren\> I was talking about the massive templateing horror that generates html
22:43:50 <wob_jonas> "convulsing horror" does describe the build scripts we're using really
22:43:57 <wob_jonas> oh, that?
22:44:12 <wob_jonas> I thought it was the Eldritch Moon set in general
22:44:18 <wob_jonas> because that one is convulsing horror
22:44:40 <wob_jonas> and I think cmake is turing-complete by itself, but I don't really know. I don't program cmake. the chief architect does that.
22:45:13 <\oren\> right. I don't write anything in Salmon, I merely copypaste it when I need to add things
22:45:13 <shachaf> why are all build systems scow
22:45:26 <hppavilion[2]> Putting the Cthulhu back in Ph’nglui mglw’nafh Cthulhu R’lyeh wgah’nagl fhtagn.
22:45:59 <wob_jonas> shachaf: we talked about that before. figuring out what you have to rebuild and what you can reuse is one of the two hard problems in computer science
22:46:08 <quintopia> ybden: bad
22:46:12 <shachaf> wob_jonas: just rebuild everything
22:46:13 <wob_jonas> someone told that today
22:46:17 <ybden> quintopia: rough count?
22:46:28 <wob_jonas> shachaf: yes, but the problem is, this build system doesn't work even if you rebuild everything,
22:46:36 <shachaf> right
22:46:41 <shachaf> therefore: why are all build systems scow
22:46:43 <wob_jonas> shachaf: because it builds things in the wrong order, so it tries to build something before building its deps
22:46:49 <\oren\> shachaf: if we did that, testing any change would take 40 minutes instead of 5
22:46:56 <wob_jonas> seriously
22:47:00 <\oren\> the man tests take 4 hours
22:47:04 <\oren\> *main
22:47:12 <shachaf> just send it to your data center and run it on a zillion computers
22:47:26 <shachaf> Also I don't actually mean to just rebuild everything.
22:48:01 <\oren\> the servers are in the room across from Dave.
22:48:24 <\oren\> (his name isn't Dave)
22:48:38 <shachaf> DANGEROUS DAVE
22:48:39 <shachaf> DAVE.EXE
22:48:53 <wob_jonas> that, yes
22:49:08 <\oren\> sometimes we have to go in there and hold the power button to reboot it
22:49:25 <\oren\> or get someone in California to do that
22:50:44 <\oren\> I think the actual production servers are in a data centre
22:50:50 <\oren\> ...maybe
22:51:06 <shachaf> What's a centre?
22:51:12 <shachaf> Do you mean a centrë?
22:51:13 <\oren\> but the dev servers are in the other room
22:54:26 <\oren\> of course, I'm fairly certain that if I ran linux on my macbook i could run the server on it
22:54:42 <\oren\> how much memory does a macbook pro have?
22:55:23 <shachaf> I don't think I know any MacBook pros.
22:55:36 <shachaf> But I know some people who know a lot about Apple computers in general.
22:55:38 <\oren\> wait no, it probably doesn't have enough hard disk
22:55:40 <shachaf> They have pretty good memories.
22:55:57 <shachaf> "the server"?
22:56:12 <\oren\> the... thingy. that my code goes into
22:56:38 <\oren\> the thingy that I run and it tells me if I did a good job... or somehting
22:56:55 <\oren\> if the output is colored red i did a bad job
22:57:31 <shachaf> aww
22:57:34 <\oren\> but if it's green, hooray I can type svn ci
22:57:41 <hppavilion[2]> People are upset about https://youtu.be/7rZOMY2sOnE apparently
22:57:53 <shachaf> I'm upset about it without even clicking the link.
22:57:58 <shachaf> So I'll keep not clicking it.
22:58:13 <wob_jonas> Our servers have raid array of hard disks, larger than any workstation does (but still not VERY large), plus at least some server has a tape drive for backups.
22:58:16 <hppavilion[2]> shachaf: It's an ad for Campbell's soup that has a gay couple in it
22:58:31 <hppavilion[2]> (also, Star Wars. Yes, they make an "I am your father" pun.)
22:58:33 <shachaf> Oh, that would definitely upset me.
22:58:35 <ybden> quintopia: \o/ managed to kill it in 123 cuts with a good starting configuration and that strategy
22:58:37 <shachaf> I don't like ads.
22:58:48 <hppavilion[2]> shachaf: But it allows me to make jokes
22:59:12 <hppavilion[2]> Nobody tell the conservatives that it isn't a gay marriage; the other parents just aren't shown onscreen
22:59:48 <quintopia> ybden the cut topmost and then dire strat?
22:59:58 <ybden> quintopia: yes
23:00:06 <\oren\> Another problem with c++ templates is that I can get several tens of kilobytes of error messages
23:00:42 <\oren\> all colored red thanks to our wonderful build system
23:00:46 <shachaf> You'll need a TENS machine to handle those error messages.
23:00:51 <ybden> quintopia: also attempting to ensure that when cutting normals at the same level, that any growth would result in the smallest number of duplication
23:02:32 <\oren\> luckily I know the -R switch for less
23:03:00 <wob_jonas> I can also get tons of error messages. I usually search for "fatal" in them first, which means that the compiler stopped, either because there were too many error messages, because an #inlcude wasn't found, or because parenthesis or #ifs were unbalanced or some other preprocessor error,
23:03:30 <wob_jonas> and always imply that there will be much more error messages once I fix the fatal error, so I shouldn't be too happy with the error list being so short
23:04:25 <\oren\> Oh, he never defined a template specialization for std::string only for char*
23:04:32 <\oren\> ok
23:04:38 <shachaf> \oren\: C++17 is going to be TG
23:05:13 <\oren\> will C++17 make std::string the builting string type instead of char*?
23:06:21 <\oren\> so that "hello world" is an std::string?
23:07:26 <wob_jonas> \oren\: no, and that would be almost impossible anyway. but you can use a user-defined literal that gives a std::string, and the standard library will probably define such a udl
23:07:53 <wob_jonas> so eg. "hello world"s will be a std::string, possibly with some other suffix instead of s
23:08:07 -!- lleu has joined.
23:08:07 -!- lleu has quit (Changing host).
23:08:07 -!- lleu has joined.
23:11:48 <\oren\> wob_jonas: that's an ok compromise, but I still think std::string and std::vector should be made builtins with dedicated syntax
23:12:26 <\oren\> user defined literals sound like they will cause conflict
23:12:52 <wob_jonas> \oren\: part of the problem is that to create a std::string (even if the literal gives a const &), the compiler would have to know about the abi of std::string (which actually differs in different versions of libstdc++), how to allocate memory (which can depend on the version of libstdc++, compilation options, the libc used, etc), and
23:13:12 <wob_jonas> when to allocate the memory (not too late so it can cause an exception in the function where the literal is used, but not too early before libc isn't ready to malloc)
23:13:32 <wob_jonas> \oren\: I definitely don't think std::string or std::vector should be builtins
23:14:07 <\oren\> strings and arrays are builtins in most languages, why not in C++?
23:14:44 <wob_jonas> \oren\: most languages aren't like C++, and C++ syntax is now powerful enough that you can define your own new array-like or string-like class in C++, which is basically what the library does
23:14:50 <\oren\> then you could standardize the ABI for them
23:14:55 <pikhq> It's rather nontrivial with C and C++ having the interesting feature of supporting freestanding implementations.
23:15:03 <wob_jonas> (all this applies for modern C++, not for ancient C++)
23:15:06 <pikhq> That is, implementations *without a libc at all*.
23:15:09 <wob_jonas> (but you don't want to use ancient C++)
23:15:09 -!- AnotherTest has quit (Quit: ZNC - http://znc.in).
23:15:39 <pikhq> (this is an explicit feature in both C and C++. It's in the spec, and it's relied upon by some users.)
23:17:13 <\oren\> but isn't the spec's definition of a freestanding environment, to say most things are now implementation defined?
23:17:30 <wob_jonas> \oren\: the best ABI depends on details of the underlying machine, and as a result has also changed in time (although in huge rare steps because it's a pain to change), it's a low-level detail that the C++ language itself shouldn't standardize it. but part of the ABIs are standard enough, in the sense that they're documented and implemented by many
23:17:30 <wob_jonas> different compilers (the libstdc++ part are somewhat worse in this than the C and posix part)
23:18:17 <pikhq> Some portions of a freestanding environment are implementation defined. Not, however, the runtime semantics or syntax...
23:18:58 <pikhq> Having std::string built in would give you a substantial library that would be required to be defined in freestanding environments.
23:19:14 <\oren\> does the C standard mandate that an implementation have floats?
23:19:23 <pikhq> Yes.
23:19:38 <wob_jonas> \oren\: yes, although it's quite lenient about what kind of floats they are
23:20:04 <\oren\> could a conforming implementation use fixed point for floats?
23:20:07 <wob_jonas> luckily most modern machines and compiler environments give you SANE floats too, not just floats
23:20:13 <pikhq> Yes, there's no requirement that they're IEEE floats at all, and what's required in freestanding implementations is just the basic operators and some macros.
23:20:15 <wob_jonas> \oren\: no
23:21:08 <pikhq> Another big problem is that C++ attempts to have a large common subset with C.
23:21:22 <pikhq> Changing core semantics like the meaning of a string literal, would break that.
23:21:32 <\oren\> yes, that is a big problem. they need to stop doing that
23:21:50 <wob_jonas> \oren\: they did sort of stop
23:22:02 <gamemanj> is this by any chance referring to wide characters?
23:22:03 <pikhq> It would also break existing C++ code, which is frowned upon in new standard versions.
23:22:30 <wob_jonas> in the sense that they aren't supporting some of the useful more recent C features, and sometimes are specifically incompatible with them (otoh at least they also don't support some of the BAD recent features of C)
23:22:38 <wob_jonas> gamemanj: no
23:22:54 <pikhq> wob_jonas: But then, it's trivial to write valid C90 that's invalid C++.
23:23:11 <\oren\> int class = 2;
23:23:18 <pikhq> char *foo = malloc(1); /* Woops. */
23:23:23 <wob_jonas> pikhq: sure
23:24:14 <pikhq> But, yeah. C++ breaking existing C++ is basically not going to happen if it's avoidable.
23:24:18 <fizzie> There's a macro __STDC_IEC_559__ which, if defined, signals that the floats satisfy an extra annex that's mostly the IEEE things.
23:24:26 <wob_jonas> \oren\: meh, most C code stopped using class as a keyword. ruby uses klass instead to denote ruby classes.
23:25:09 <wob_jonas> there's lots of C vs C++ compatibility things that can trip you up more frequently
23:25:27 <wob_jonas> including pointer conversions like you already mentioned, but there's more
23:26:23 <\oren\> c++ doesn't let you convert a void pointer to anyhting?
23:26:28 <pikhq> Not implicitly.
23:26:47 <pikhq> wob_jonas: That one's one of the worse ones specifically because it breaks nearly all idiomatic C.
23:26:55 <wob_jonas> \oren\: and also doesn't let you use an assignment statement to convert a pointer to an integer, or something like that
23:27:27 <wob_jonas> pikhq: no, it's not one of the worse ones, because it gives an error message. the worse ones are the ones that compile silently but do the wrong thing
23:27:29 <fizzie> Even without, the floats need to follow a model where a floating-point number is defined by x = s * b^e * sum_{k=1..p} f_k b^-k, with s either 1 or -1, some integer b > 1, integers e_min <= e <= e_max, and nonnegative integers f_k < b.
23:27:36 <pikhq> Oh, good point.
23:27:38 <wob_jonas> you can get them with some of the overloaded maths functions
23:27:47 <wob_jonas> min, max, abs especially
23:28:20 <pikhq> Nasty things like function names getting mangled in C++ but not C can be real problems.
23:28:21 <fizzie> (Although things like the accuracy of operations is implementation-defined.)
23:29:15 <pikhq> There's probably some other cases of things which syntactically work the same in both but have subtly different semantics, but I can't think of 'em right now.
23:29:41 <pikhq> Well, there's also the struct and typedef namespaces being identical in C++.
23:30:24 <wob_jonas> pikhq: yes, although that (struct and typedef and enum namespaces) rarely seems to cause compatibility problems
23:30:28 <pikhq> Though if you typedef a struct of a given name to the same name it still works in C++, and if you do a different typedef then it just gives you a compilation error.
23:30:37 <wob_jonas> pikhq: there's also some difference in scoping that I forgot, which also rarely causes problems
23:30:42 <fizzie> To be picky, there's no typedef namespace. Those are just ordinary identifiers.
23:30:55 <wob_jonas> fizzie: yes
23:31:14 <wob_jonas> and when the struct namespace causes problems, it's usually (but not always) compilation errors
23:33:57 <wob_jonas> there are lots of other compatiblity problems but I keep forgetting about them
23:34:29 <wob_jonas> I don't work much with C these days, and keep assuming that it does everything just like C++ but without destructors and features like that and with C99 complexes
23:34:50 -!- gamemanj has quit (Ping timeout: 272 seconds).
23:35:07 <wob_jonas> then I get surprised when people tell me that C works differently
23:35:14 <wob_jonas> and promptly forget about it
23:49:36 -!- wob_jonas has quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client).
23:54:11 -!- hppavilion[2] has quit (Ping timeout: 240 seconds).
23:58:47 -!- tromp_ has joined.
23:59:29 -!- Guest7241 has quit (Read error: Connection reset by peer).
23:59:53 -!- I has joined.
←2016-07-19 2016-07-20 2016-07-21→ ↑2016 ↑all