00:04:16 -!- Akaibu has quit. 00:06:45 -!- boily has quit (Quit: MELTING CHICKEN). 00:13:12 -!- erkin has quit (Quit: Ouch! Got SIGABRT, dying...). 00:18:11 -!- oerjan has joined. 00:25:46 my touchpad driver has an annoying feature where sometimes if i scroll down a bit (with two fingers) and release, it immediately starts scrolling fast in the opposite direction... is this common? 00:28:00 hm i cannot seem to reproduce it on purpose 00:28:04 Are you maybe accidentally touching it in another place at the same time? 00:28:16 It sounds familiar but I don't think I've had that exact issue. 00:28:56 could be? i've tried to disable all manner of extra gestures (although the driver keeps removing options, now it no longer allows me to do nothing for 3 fingers) 00:29:30 have you tried installing a different operating system hth 00:29:36 no hth 00:29:56 Is it the Asus 00:29:59 yep 00:30:03 ? 00:30:10 OK. 00:30:23 also this is in IE, so technically that could have the blame too... 00:30:50 Is the channel topic supposed to be quoting that Adams thing? 00:31:00 If so, it's doing it very badly. 00:31:23 * oerjan doesn't use any other programs with scrolling, so wouldn't know 00:31:55 it is. what would be better? 00:32:25 oh 00:32:45 -!- oerjan has set topic: The channel almost, but not quite, entirely without esolang discussions | 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 | For extensive phở testing, use #esoteric-blah. 00:32:55 i guess i should have actually looked it up 00:33:38 * oerjan did now 00:35:45 incidentally, there's a PPCG question that's a miniature esolang design contest 00:35:53 I've designed an esolang for it but am having problems proving it TC 00:36:06 which is not surprising, as the language is something of a cross between Incident and Malbolge 00:36:39 you'd think. 00:37:08 . o O ( just use Malbolge Unshackled hth) 00:37:14 * ) 00:38:00 did y'all prove that other thing I/O-complete yet? 00:38:24 someone said it had spread to a discord chat 00:38:40 moony, i think 00:40:44 ais523: if it combines incident's ability to use whichever tokens with malbolge's insistence of having specific character subsets in specific spots, it could get awkward 00:40:56 what other thing? []+=`? 00:41:00 yeah 00:41:22 well, the language is much more elegant than Incident /or/ Malbolge 00:41:51 ah. 00:42:02 also less syntactically complex than either, which is probably good for my sanity 00:43:07 `which rhino 00:43:12 ​/usr/bin/rhino 00:45:53 `rhino -e test 00:45:54 Invalid option "-e test" \ Usage: java org.mozilla.javascript.tools.shell.Main [options...] [files] \ Valid options are: \ -?, -help Displays help messages. \ -w Enable warnings. \ -version 100|110|120|130|140|150|160|170 \ Set a specific language version. \ -opt [-1|0-9] Set opti 00:46:04 `` rhino -e test 00:46:07 js: uncaught JavaScript runtime exception: ReferenceError: "test" is not defined. 00:46:24 `` rhino -e print "Hi" 00:46:26 js: Couldn't read source file "Hi: Hi (No such file or directory)". 00:46:37 `` rhino -e 'print "Hi"' 00:46:39 js: "", line 1: missing ; before statement \ js: print "Hi" \ js: .........^ 00:46:55 `` rhino -e 'print "Hi";' 00:46:56 js: "", line 1: missing ; before statement \ js: print "Hi"; \ js: .........^ 00:47:24 `` rhino -e 'print("Hi");' # it's just a function call 00:47:26 Hi 00:47:33 ah. 00:47:47 . o O ( did i mention i don't actually know javascript ) 00:48:08 `mkx rhino-e//rhino -e "$1" 00:48:10 rhino-e 00:48:38 `rhino-e print(+[]); 00:48:38 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: rhino-e: not found 00:48:43 oops 00:48:56 `` mv {,bin/}rhino-e 00:48:59 No output. 00:49:02 `rhino-e print(+[]); 00:49:05 0 00:51:28 `rhino-e print(+[]==+[]); 00:51:30 true 00:51:44 `rhino-e print(+[]==[]); 00:51:46 true 00:52:21 `rhino-e print(+[]==[]+[]); 00:52:23 true 00:52:35 * oerjan isn't doing this very well 00:52:43 `rhino-e print([]==[]_ 00:52:44 `rhino-e print([]==[]) 00:52:45 js: "", line 1: missing ) after argument list \ js: print([]==[]_ \ js: ............^ 00:52:46 false 00:52:58 WHY 00:53:48 `rhino-e print([][+[]]); 00:53:50 undefined 00:53:52 yay 00:54:53 `rhino-e print([][+[]][+[]]); 00:54:55 js: uncaught JavaScript runtime exception: TypeError: Cannot read property "0.0" from undefined 00:55:17 `js print("we had this"); 00:55:19 we had this 00:55:20 -!- FreeFull has quit (Ping timeout: 260 seconds). 00:55:24 oh 00:55:27 `url bin/js 00:55:27 http://hackego.esolangs.org/fshg/index.cgi/file/tip/bin/js 00:55:52 I was going to move your rhino-e into bin/js for simplicity, but there was one already. 00:56:01 It's a lot more elaborate. 00:56:14 `` which rhino 00:56:15 ​/usr/bin/rhino 00:56:25 Can't get an URL to that. :/ 00:56:54 I'm guessing it might look quite similar except without the "-e". 00:57:23 `file /usr/bin/rhino 00:57:24 ​/usr/bin/rhino: POSIX shell script, ASCII text executable 00:57:35 `1 cat /usr/bin/rhino 00:57:36 1/2:#!/bin/sh \ \ JAVA_CMD="/usr/bin/java" \ JAVA_OPTS="" \ JAVA_CLASSPATH="/usr/share/java/js.jar:/usr/share/java/jline.jar" \ JAVA_MAIN="org.mozilla.javascript.tools.shell.Main" \ \ ## \ ## Remove bootclasspath overriding for OpenJDK since \ ## it now use a mangled version of Rhino (in sun.org.mozilla.rhino package) \ ## \ ## Referen 00:57:40 Yeah. 00:57:55 `` diff /usr/bin/rhino bin/js 00:57:56 8,11c8,10 \ < ## \ < ## Remove bootclasspath overriding for OpenJDK since \ < ## it now use a mangled version of Rhino (in sun.org.mozilla.rhino package) \ < ## \ --- \ > ## Fix for #512498 \ > ## Change Bootclasspath when using OpenJDK because OpenJDK6 \ > ## bundle his own release of Rhino. \ 16c15,19 \ < ## \ --- \ > isOpenJDK=`$JAVA_CMD -versi 00:58:25 Probably a different version. 00:58:50 sled bin/js//s,\$@,$*, 00:58:56 `sled bin/js//s,\$@,$*, 00:58:58 bin/js//#!/bin/sh \ \ JAVA_CMD="/usr/bin/java" \ JAVA_OPTS="" \ JAVA_CLASSPATH="/usr/share/java/js.jar:/usr/share/java/jline.jar" \ JAVA_MAIN="org.mozilla.javascript.tools.shell.Main" \ \ ## Fix for #512498 \ ## Change Bootclasspath when using OpenJDK because OpenJDK6 \ ## bundle his own release of Rhino. \ ## References: \ ## I don't think the "$@" was really a good idea there, because there was already that implicit -e. True, you could provide extra arguments, but they would have had to go *after* the source. 01:01:55 mhm 01:02:33 `js print([[][+[]]+[]][+[]][+[]]); 01:02:35 u 01:03:22 -!- hppavilion[1] has joined. 01:05:37 fizzie: No one's using `edit #scow 01:07:54 I don't think people have been editing much in general. 01:16:01 fizzie, how does x86 protected mode segmentation work again 01:16:29 like does it actually involve segment registers or is it a page table type thing 01:17:16 It does sort of involve segment registers, in that you put "descriptors" in them, and the descriptors are basically some flag bits + an index into one of the descriptor tables. 01:17:43 And the descriptor table entry then contains the segment base address, limit (size) and more boring bits. 01:18:06 right 01:18:18 and sizeof (void *) is... what, just the address part? 01:18:57 -!- krok_ has quit (Remote host closed the connection). 01:19:24 Well, I mean, everyone pretty much just configures it to be as close to a flat memory model as possible, and just does "architectural" things with segments. 01:19:46 So C pointers are just the offset part, and the segments are implied from context. 01:22:36 Sorry, terminology fail on my behalf. 01:22:43 What you load in the segment register is a "selector". 01:23:01 A "descriptor" is the descriptor table entry, which is what the selector is referring to. 01:23:19 in 64 bit mode, the segment registers are actually forced to cover the whole 64 bit address space, with the exception of gs, which has a base stored in an MSR. 01:23:28 fs as well. 01:23:50 ah, right. 01:24:25 And there was something a little complicated with the vestigial segmentation in 64-bit mode. 01:24:46 (hmm, I wonder what the intended use for the second one is... thread local storage, and user accessible part of some kernel level thread info? 01:24:49 ) 01:25:22 Something like while the fs/gs base was in an MSR so that you could load a full 64-bit address there, you could also load them via descriptors, or some-such. 01:25:48 fizzie, well right, i'm aware that in practice it was just flat 01:25:50 hmm, I don't know 01:26:06 (and I have no real need to find out either) 01:26:15 but i'm curious how, conceptually, you're meant to represent non-flat pointers in the c memory model 01:27:05 Phantom__Hoover: Well, I mean, you could implement it so that pointers (segment selector, offset) pairs, and every memory allocation adds a new segment descriptor in the table. 01:27:24 If you intend to have *standard* C semantics, you'd have to have pointers be (segment selector, offset) pairs. 01:27:27 (You'd run out of descriptors pretty fast.) 01:27:43 why would you need a new descriptor for each allocation 01:27:48 And if you wish to have objects span segments (e.g. real mode segments) you need to have complicated pointer arithmetic. 01:28:22 Phantom__Hoover: Well, because then deallocation would be just removing the descriptor. 01:28:36 So okay, you wouldn't exactly "need" that. 01:28:51 But it's the obvious kind of mapping for leveraging all the segmentation synergies. 01:31:11 Also the one where you could conceivably get into trouble with invalid pointers before actually dereferencing them, since loading an invalid selector to a segment register would cause a #GP. 01:31:40 Though I can't think of a concrete example where you'd be doing that without intending to access some memory there. 01:32:15 The somewhat more likely use case would be using it a bit like (crap) pages. 01:32:42 Particularly for the 286's 16-bit protected mode. 01:34:17 pikhq: For context, this was re the C rationale's explanation for why any use of an invalid pointer is undefined, not only dereferencing: http://sprunge.us/SfKi 01:34:57 Ah, yes. 01:35:20 I suspect such an implementation would be *most* likely on a VM architecture. 01:35:34 There was some non-segmented architecture that that was problematic for, wasn't there? 01:35:50 ... Say, one crafted to make C memory fuckups hard to do anything with other than crash. 01:35:59 when are we all switching to the mill twh 01:37:00 -!- ais523 has quit. 01:38:29 pikhq: you should invest your spare CHF in mill computing inc. hth 01:39:18 * pikhq screws up, invests it in a computerized flour mill 01:43:00 -!- Jafet has quit (Ping timeout: 268 seconds). 01:43:05 darn, there computing progress ground to a halt 01:44:33 computing progress goes boinc 01:49:38 shachaf: People always mention that "some computers" [weasel words][citation needed] will cause a fault of some sort if you load an invalid pointer to an "address register", but they never seem to actually cite sources. 01:49:55 [wiki] [[Talk:///]] https://esolangs.org/w/index.php?diff=51097&oldid=45032 * Challenger5 * (+437) 01:55:02 "I remember this coming up when we were considering porting Multics to a (then) new Honeywell process (I think it was the DPS/88). -- The new hardware trapped when loading addresses into pointer registers, --" (random forum posting) 01:56:07 Ah, here's a little better quote, with an example as well: https://groups.google.com/forum/#!topic/comp.std.c/VoPl6SiejEk 01:56:09 -!- Jafet has joined. 01:56:15 (Maybe should've gone to comp.std.c in the first place.) 02:10:46 [wiki] [[Talk:///]] https://esolangs.org/w/index.php?diff=51098&oldid=51097 * Oerjan * (+117) /* Even Faster Counter */ *BONK* 02:13:34 I thought the "Future Systems" computer would be error if you load an invalid address? 02:24:12 -!- Jafet has quit (Ping timeout: 240 seconds). 02:38:28 -!- Jafet has joined. 02:38:33 -!- Phantom__Hoover has quit (Read error: Connection reset by peer). 02:50:40 `unidecode x and x 02:50:41 ​[U+0078 LATIN SMALL LETTER X] [U+0020 SPACE] [U+0061 LATIN SMALL LETTER A] [U+006E LATIN SMALL LETTER N] [U+0064 LATIN SMALL LETTER D] [U+0020 SPACE] [U+0078 LATIN SMALL LETTER X] 03:16:22 lol 03:22:59 `unidecode lol 03:23:00 ​[U+006C LATIN SMALL LETTER L] [U+006F LATIN SMALL LETTER O] [U+006C LATIN SMALL LETTER L] 03:23:04 (had to check) 03:30:53 hаh 03:39:50 -!- Jafet has quit (Ping timeout: 260 seconds). 03:44:48 -!- Jafet has joined. 04:46:13 -!- Jafet has quit (Ping timeout: 260 seconds). 05:00:09 -!- Jafet has joined. 05:08:47 -!- oerjan has quit (Quit: Nite). 05:22:54 -!- xfix has joined. 05:25:40 -!- zgrepc_ has joined. 05:26:45 -!- xfix_ has quit (Quit: No Ping reply in 180 seconds.). 05:28:27 -!- nitrix_ has joined. 05:29:58 -!- hppavilion[1] has quit (Ping timeout: 240 seconds). 05:30:05 -!- APic has quit (Ping timeout: 255 seconds). 05:33:29 -!- lynn has quit (Ping timeout: 252 seconds). 05:33:29 -!- zgrepc has quit (Ping timeout: 252 seconds). 05:33:29 -!- nitrix has quit (Ping timeout: 252 seconds). 05:35:12 -!- zgrepc_ has changed nick to zgrepc. 05:52:57 <\oren\> guten matin ha! 06:04:06 -!- MDude has joined. 06:34:28 -!- Jafet has quit (Ping timeout: 240 seconds). 06:39:39 -!- Jafet has joined. 06:48:13 -!- hppavilion[1] has joined. 07:20:37 -!- lynn has joined. 09:04:06 -!- Jafet has quit (Quit: Jafet). 09:22:59 -!- augur has quit (Remote host closed the connection). 09:47:19 -!- AnotherTest has joined. 09:54:57 -!- erkin has joined. 09:56:15 -!- Jafet has joined. 09:57:22 -!- vasya_ has joined. 10:08:47 -!- augur has joined. 11:03:29 -!- APic has joined. 11:10:53 -!- Zarutian has joined. 11:16:29 -!- erkin has quit (Quit: Ouch! Got SIGABRT, dying...). 11:19:54 -!- Lord_of_Life has quit (Excess Flood). 11:21:59 -!- Lord_of_Life has joined. 11:22:01 -!- vasya_ has left. 11:43:24 -!- DHeadshot has joined. 11:55:26 -!- LKoen has joined. 12:01:28 -!- hppavilion[1] has quit (Ping timeout: 240 seconds). 12:04:12 -!- 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.”). 12:35:41 -!- augur_ has joined. 12:38:43 -!- kiko has joined. 12:39:23 -!- augur has quit (Ping timeout: 255 seconds). 12:54:11 -!- kiko has left ("ByrdIRC"). 13:10:23 -!- FreeFull has joined. 13:19:04 -!- augur_ has quit (Remote host closed the connection). 13:38:54 -!- DHeadshot has quit (Ping timeout: 260 seconds). 14:52:44 -!- ^v has quit (Ping timeout: 240 seconds). 14:58:21 -!- ^v has joined. 14:59:10 -!- ^v has quit (Excess Flood). 14:59:18 -!- ^v has joined. 15:00:34 -!- Jafet has quit (Ping timeout: 260 seconds). 15:02:27 -!- DHeadshot has joined. 15:13:07 -!- Jafet has joined. 15:40:32 -!- atrapado_ has joined. 16:02:49 -!- LKoen has joined. 16:44:09 -!- oerjan has joined. 16:44:59 well that was a fast log to read 16:46:52 -!- wob_jonas has joined. 16:47:01 `ftoc 107 16:47:02 107.00°F = 41.67°C 16:47:15 wow, you're so fast today, HackEgo 16:47:53 wtf do you have that temperature at this season 16:48:16 no 16:52:04 good, good 16:52:51 the quick-footed shadowboxing oerjan jumps over the lazy log 16:53:51 `ping 16:53:52 pong 16:54:07 > nub $ sort "the quick-footed shadowboxing oerjan jumps over the lazy log" 16:54:08 . o O ( almost surfing at the speed of light! ) 16:54:10 " -abcdefghijklmnopqrstuvwxyz" 16:54:54 hm thought you'd missed the r but there's another one. 16:55:09 two 16:55:15 fiendish 16:55:51 okay, another one, if you look at what's left of the original 16:56:47 yeah, right, that's TOTALLY what i did, um. 16:58:52 shachaf: have you looked at "girls love robots"? 17:00:27 . o O ( "my boyfriend is so metal" ) 17:01:27 girls love robots and pizza and hate nerds; however they don't mind being near nerds if they have pizza. 17:01:47 I'm not sure what kind of message this game is supposed to convey, but the puzzles are kind of fun. 17:02:16 (though very repetetive, but there are a few cute twists) 17:03:20 *repeteteve 17:03:49 `grwp repe[^ ]*ve 17:03:52 int-e: have not 17:04:01 repetive:A repetive action is one that tries to repeat something, but fails miserably. 17:06:31 int-e: when you said you did some nonobvious puzzles, did you mean that the solutions were nonobvious or that the puzzles themselves were nonobvious twh 17:12:54 shachaf: the former. one case where I had trouble finding the right rule because the training example I encountered at first were too simple. 17:13:18 Which type? 17:13:21 and maybe two cases where the environment played into the puzzle in a surprising way 17:13:55 which cases twh 17:14:08 would it 17:14:18 what game is this? 17:14:27 The Witness 17:14:29 the poochness 17:14:41 It might? 17:15:45 -!- Phantom_Hoover has joined. 17:36:27 The spec of the language I'm writing contains the following text: 'Please note that if `A` is a Character variable containing `"7"` and `B` is a Character variable containing `"0"` and `C` is a String variable containing `"0"`, that `A - B` yields a Character containing BEL (the Bell Character), but that `A - C` yields a String `"55"` (55 being the ASCII value of 7).' 17:36:42 It's a little weird... 17:37:32 why... 17:37:57 oh, char vs string 17:38:26 It makes sense when you think really hard about it, but not much to the average user... 17:39:00 Note that if both "7" and "0" are strings, the result is "7" (a string). 17:41:44 At least it's not a BrainFuck clone... 17:44:14 "At least it's not a BrainFuck clone" may be a little weird, but at At least it's not a BrainFuck clone. 17:44:20 oops 17:44:24 stupid paste 17:50:52 ? 17:51:02 the extra At 17:51:08 oh 17:52:35 Incidentally, this function I've been working on for about a week is now 4000 lines long and counting... I probably should have broken it up more. 17:53:14 break it up now 17:54:27 Too late 17:54:53 And it's not even finished, though I may be half-way through now... 18:08:46 You mention "The Witness" game but do you know "The Wit.nes" game? 18:22:29 `quote 18:22:30 614) * oerjan concludes that unsafeCoerce has no effect on strictness 18:23:16 why would it, beyond possibly confusing the strictness analysis... 18:24:19 if you converted a lazy field to a strict one, perhaps. i don't remember what i was testing. 18:24:32 (or the other way) 18:24:59 hm how does unsafeCoerce work with the new levity stuff... 18:25:55 @quote kind-preserving 18:25:56 int-e says: What, unsafeCoerce# is kind-preserving? how boring :/ 18:26:07 . o O ( is that still true? ) 18:34:00 `scheme 18:34:01 Which of You Burns Brightest? 18:34:03 mwhahahaha 18:34:58 :t GHC.Prim.unsafeCoerce# 18:35:00 a -> b 18:35:11 i got something else in ghci 18:35:23 unsafeCoerce# :: 18:35:23 forall (q :: GHC.Types.RuntimeRep) (r :: GHC.Types.RuntimeRep) (a :: TYPE 18:35:23 q) (b :: TYPE r). 18:35:26 a -> b 18:35:45 which looks like it _doesn't_ require the same kind 18:35:54 (8.0.1) 18:37:25 int-e: so, apparently no. 18:39:33 Prelude GHC.Prim> unsafeCoerce# (1# :: Int#) :: Int 18:39:33 Segmentation fault/access violation in generated code 18:40:36 @quote unsafeCoerce# 18:40:36 ghc says: Dangerous-looking argument. Probable cause: bad unsafeCoerce# 18:40:44 Oh, I meant the one above. 18:41:08 WAY AHEAD OF YOU 19:04:31 GHC has a -XUnicodeSyntax extension, but I think should also have -XAntiUnicodeSyntax extension which allow you to import modules that have names containing non-ASCII characters without needing any non-ASCII characters in your own file. 19:05:02 (You can combine these extensions, although there wouldn't be much point in doing so.) 19:05:31 the Haskell standard is Unicode-based, deal with it. 19:09:34 JavaScript allow you to avoid needing non-ASCII character in your file even if importing something that does use non-ASCII character in their identifiers, by using \u in the names. The same syntax would not be suitable for Haskell so a new kind should be needed 19:10:06 you can probably do it with template haskell 19:10:34 e.g. quasiquotes 19:14:34 -!- LKoen has quit (Remote host closed the connection). 19:15:33 Yes, I suppose so. That would be a way to do it without a new extension 19:27:23 -!- oerjan has quit (Quit: Later). 19:27:38 -!- erkin has joined. 20:03:04 -!- augur has joined. 20:15:13 -!- augur has quit (Remote host closed the connection). 20:52:34 -!- augur has joined. 21:11:21 -!- sebbu2 has joined. 21:14:24 -!- sebbu has quit (Ping timeout: 240 seconds). 21:20:50 -!- LKoen has joined. 21:31:19 -!- Phantom_Hoover has quit (Remote host closed the connection). 21:35:03 -!- Phantom_Hoover has joined. 21:42:21 -!- atrapado_ has quit (Quit: Leaving). 21:45:14 -!- DHeadshot has quit (Ping timeout: 255 seconds). 22:20:06 -!- yorick_ has changed nick to yorick. 22:29:57 Another thing is that although JavaScript has this "anti-Unicode" syntax it is not needed so much as Haskell would be, due to how JavaScript is working. 22:34:38 true 22:36:37 because of that proof that shows you can write any javascript with like just six different characters or something 22:37:17 -!- AnotherTest has quit (Quit: ZNC - http://znc.in). 22:40:38 Yes, although it isn't really what I quite meant anyways; I meant having to do with how objects in JavaScript, you will have all of the functions imported from another module probably as properties on some object, so you can use the [ ] syntax to access instead of . syntax so it can be a string literal or a string constant name (declared by "const" at the top of your program for example) 22:42:08 zzo38: yes, that's basically what that ()[] javascript thingy does 22:49:34 five, according to ais523 http://codegolf.stackexchange.com/a/111002 22:50:56 it's a TC subset though 22:56:09 -!- DHeadshot has joined. 23:00:57 Jafet: probably six for what zzo38 wants, but that's very interesting, I haven't seen it yet 23:01:33 -!- erkin has quit (Quit: Ouch! Got SIGABRT, dying...). 23:10:05 -!- sebbu2 has changed nick to sebbu. 23:14:03 -!- wob_jonas has quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client). 23:19:47 -!- hppavilion[1] has joined. 23:20:11 -!- DHeadshot has quit (Ping timeout: 264 seconds). 23:20:41 -!- Lord_of_Life has quit (Excess Flood). 23:21:29 -!- Lord_of_Life has joined. 23:22:57 -!- tromp__ has joined. 23:22:57 -!- tromp has quit (Read error: Connection reset by peer). 23:29:43 -!- hppavilion[1] has quit (Ping timeout: 268 seconds). 23:33:39 -!- LKoen has quit (Remote host closed the connection). 23:35:56 -!- LKoen has joined. 23:41:05 -!- Zarutian has quit (Quit: Zarutian). 23:59:51 -!- krok_ has joined.