←2019-03-04 2019-03-05 2019-03-06→ ↑2019 ↑all
00:08:52 <Phantom_Hoover> fizzie, the chief problem with rewriting your opponent in redcode is that it's extremely difficult to manipulate the actual instruction part
00:10:50 <Phantom_Hoover> like if you have mov b, 30 at some address or whatever, it's easy to read, write and do logic on the operands, but the 'mov' part itself can only be written by copying a preexisting mov instruction from elsewhere over that cell
00:11:19 <Phantom_Hoover> and to 'read' it, i.e. perform useful logic based on the operation in a given instruction, i don't even know
00:15:06 -!- Melvar has quit (Ping timeout: 250 seconds).
00:15:34 -!- Melvar has joined.
00:16:32 -!- Phantom_Hoover has quit (Remote host closed the connection).
00:23:03 -!- Lord_of_Life_ has joined.
00:24:47 -!- Lord_of_Life has quit (Ping timeout: 240 seconds).
00:25:25 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
00:33:36 -!- oerjan has joined.
00:39:29 -!- housecarpenter has quit (Read error: Connection reset by peer).
00:39:56 -!- housecarpenter has joined.
00:42:56 -!- housecarpenter has quit (Read error: Connection reset by peer).
00:43:20 -!- housecarpenter has joined.
00:44:47 <fizzie> @tell Phantom_Hoover The SEQ/SNE instructions (compare two instructions, skip next instruction if they are/aren't equal) can apparently "read" the instruction part, but as far as I can tell with the .I modifier it compares *all* fields, so it'd be hard to use to branch by instruction type.
00:44:47 <lambdabot> Consider it noted.
00:56:34 <oerjan> @tell Taneb I think you're mistaken about monoid homomorphisms: (f<>g)(a<>b) has a similar problem, becoming either f(a)<>f(b)<>g(a)<>g(b) or f(a)<>g(a)<>f(b)<>g(b) dependent on how you expand it.
00:56:34 <lambdabot> Consider it noted.
01:02:25 <oerjan> <b_jonas> huh what? <-- . o O ( b_jonas has already forgotten boily ;_; )
01:07:29 -!- housecarpenter has quit (Read error: Connection reset by peer).
01:07:54 -!- housecarpenter has joined.
01:20:01 -!- housecarpenter has quit (Read error: Connection reset by peer).
01:20:24 -!- housecarpenter has joined.
01:26:30 -!- Essadon has quit (Quit: Qutting).
01:31:32 <moony_> oerjan, ?? has boily gone somewhere? Where's my chicken quit messages?
01:34:52 <oerjan> moony_: i see him occasionally in my reddit friends list, but he hasn't been here on the channel in a long time
01:35:45 <shachaf> bon soirjan
01:36:19 <moony_> ):
01:36:39 <oerjan> shalomchaf
01:37:07 <moony_> this channel is slowly falling apart from what i can tell
01:37:08 <moony_> RIP
01:37:28 <shachaf> oerjan: I thought that was a first, but apparently it's a 10th.
01:37:43 <oerjan> 10th what?
01:37:54 <shachaf> time that's been said in this channel
01:38:23 <oerjan> which one
01:38:35 <shachaf> the thing you said
01:38:49 <oerjan> aha. i don't recall having seen it.
01:38:50 <shachaf> Which I don't want to repeat because it'll ruin my future grep counts.
01:39:14 <shachaf> Wait, no, I double counted old and new logs.
01:39:24 <shachaf> It's a fifth.
01:39:36 <oerjan> . o O ( minor or major fifth? )
01:40:16 <shachaf> What's a major and minor fifth?
01:40:26 <shachaf> I know what a perfect fifth is.
01:40:45 <shachaf> Minor fifth is 650 cents apparently.
01:41:06 <shachaf> And perfect fifth is 700 cents.
01:41:27 <shachaf> > 2**(700/1200)
01:41:29 <lambdabot> 1.4983070768766815
01:41:32 <shachaf> > 2**(650/1200)
01:41:34 <lambdabot> 1.4556531828421873
01:41:58 <shachaf> Wasn't there a function to find a rational number close to a real number?
01:42:13 <oerjan> yes, continued fraction cutoff
01:42:33 <oerjan> or rationalize or something in scheme
01:42:49 <shachaf> I mean, in Haskell.
01:42:51 <shachaf> Or in lambdabot.
01:42:58 <oerjan> > rationalize
01:43:00 <lambdabot> error:
01:43:00 <lambdabot> • Variable not in scope: rationalize
01:43:00 <lambdabot> • Perhaps you meant ‘rational’ (imported from Text.PrettyPrint.HughesPJ)
01:45:14 <oerjan> @let rationalize (a,b) | a <= 0 && b>= 0 = 0 | f <- floor a = a % 1 + 1 / rationalize (1/(b-f), 1/(a-f))
01:45:15 <lambdabot> Defined.
01:45:24 <oerjan> > rationalize (pi, exp 1)
01:45:26 <lambdabot> error:
01:45:26 <lambdabot> • Ambiguous type variable ‘b0’ arising from a use of ‘show_M301665704346...
01:45:27 <lambdabot> prevents the constraint ‘(Show b0)’ from being solved.
01:45:32 <oerjan> fnord
01:46:12 <oerjan> @let rationalize :: RealFrac a => (a,a) -> Rational
01:46:13 <lambdabot> .L.hs:163:28: error:
01:46:13 <lambdabot> • Couldn't match type ‘a’ with ‘Integer’
01:46:14 <lambdabot> ‘a’ is a rigid type variable bound by
01:46:30 <oerjan> oh
01:46:32 <oerjan> @undef
01:46:33 <lambdabot> Undefined.
01:46:54 <oerjan> @let rationalize (a,b) | a <= 0 && b>= 0 = 0 | f <- floor a = a % 1 + 1 / rationalize (1/(b-f), 1/(a-f)) :: Rational
01:46:55 <lambdabot> .L.hs:161:10: error:
01:46:55 <lambdabot> • No instance for (RealFrac Integer) arising from a use of ‘floor’
01:46:56 <lambdabot> • In a stmt of a pattern guard for
01:47:04 <oerjan> oh duh
01:47:16 * moony_ still doesn't understand haskell. He has a good grasp on x86-64 assembly tho
01:47:37 <oerjan> @let rationalize (a,b) | a <= 0 && b>= 0 = 0 | f <- floor a = a % 1 + 1 / rationalize (1/(b-fromIntegral f), 1/(a-fromIntegral f)) :: Rational
01:47:38 <lambdabot> .L.hs:161:10: error:
01:47:38 <lambdabot> • No instance for (RealFrac Integer) arising from a use of ‘floor’
01:47:38 <lambdabot> • In a stmt of a pattern guard for
01:48:04 <oerjan> @let rationalize (a,b) | a <= 0 && b>= 0 = 0 | f <- floor a = f % 1 + 1 / rationalize (1/(b-fromIntegral f), 1/(a-fromIntegral f)) :: Rational
01:48:05 <lambdabot> Defined.
01:48:17 <oerjan> > rationalize (pi, exp 1)
01:48:19 <lambdabot> *Exception: Ratio has zero denominator
01:48:24 <oerjan> ...
01:49:51 <oerjan> ic
01:50:25 <oerjan> @undef
01:50:25 <lambdabot> Undefined.
01:51:59 <oerjan> oh duh
01:52:07 <oerjan> @let rationalize (a,b) | a <= 0 && b>= 0 = 0 | f <- floor a = f % 1 + 1 / rationalize (1/(b-fromIntegral f), 1/(a-fromIntegral f)) :: Rational
01:52:09 <lambdabot> Defined.
01:52:22 <oerjan> > rationalize (exp 1, pi)
01:52:29 <lambdabot> mueval-core: Time limit exceeded
01:52:41 <oerjan> something is still fishy
01:54:43 -!- moony__ has joined.
01:57:08 -!- moony_ has quit (Ping timeout: 244 seconds).
02:01:44 <oerjan> @undef
02:01:44 <lambdabot> Undefined.
02:03:16 <kmc> nyaa
02:12:33 <oerjan> @let rationalize (a,b) | b <= 0 = -rationalize(-b,-a) | a < 0 = 0 | b <= 1 = 1/rationalize(1/b,1/a) | otherwise = 1 + rationalize(a-1,b-1)
02:12:34 <lambdabot> Defined.
02:12:42 <oerjan> > rationalize (exp 1, pi)
02:12:44 <lambdabot> 3.0
02:12:47 <oerjan> whee
02:13:39 <oerjan> > rationalize (sqrt 5, exp 1)
02:13:42 <lambdabot> 2.5
02:13:46 <oerjan> oops
02:13:51 <oerjan> > rationalize (sqrt 5, exp 1) :: Rational
02:13:54 <lambdabot> 5 % 2
02:14:36 <oerjan> this formulation depends on Double Infs, i think
02:15:38 <oerjan> > rationalize (-pi, sqrt 2)
02:15:40 <lambdabot> 0.0
02:15:53 <oerjan> @let rationalize :: (Double, Double) -> Rational
02:15:54 <lambdabot> Defined.
02:17:30 <oerjan> > rationalize (2,3)
02:17:33 <lambdabot> 5 % 2
02:17:43 <oerjan> it's open interval hth
02:20:23 <oerjan> > rationalize (pi, 1/0)
02:20:26 <lambdabot> 4 % 1
02:22:15 <oerjan> shachaf: there's also toRational of course, although that's more of "convert float to exact"
02:22:35 <oerjan> > toRational pi
02:22:38 <lambdabot> 884279719003555 % 281474976710656
02:23:09 <oerjan> while rationalize finds the simplest fraction in an interval
02:23:52 <oerjan> (minimal abs of numerator/denominator)
02:27:13 <shachaf> No, I thought there was a function that took a precision or some other parameter.
03:02:16 -!- Sgeo has quit (Read error: Connection reset by peer).
03:03:23 -!- Sgeo has joined.
03:25:37 -!- S_Gautam has quit (Quit: Connection closed for inactivity).
03:28:05 <oerjan> shachaf: well scheme's rationalize does that.
03:29:54 <shachaf> OK, but I thought it was in Haskell.
03:30:33 -!- housecarpenter has quit (Quit: Leaving).
03:32:28 <oerjan> there's probably a package...
03:32:42 <oerjan> @google site:hackage.haskell.org rationalize
03:32:43 <lambdabot> https://hackage.haskell.org/package/Haschoo-0.1.2/src/tests/r5rstest.scm
03:32:52 <oerjan> hum
03:33:13 <oerjan> at least it's probably relevant :P
03:40:24 -!- xkapastel has quit (Quit: Connection closed for inactivity).
04:00:37 -!- FreeFull has quit.
05:46:07 -!- imode has quit (Ping timeout: 240 seconds).
06:01:04 <int-e> > rationalize (10^8,10^8+1)
06:01:11 <lambdabot> mueval-core: Time limit exceeded
06:02:35 <int-e> . o O ( | otherwise = let b' = fromInteger (floor b) in b' + rationalize (a-b', b-b') )
06:02:53 <int-e> uhm
06:04:11 <int-e> that's too much :/
06:05:25 <int-e> I guess... | otherwise = let a' = max 1 (fromInteger (floor a')) in a' + (a - a', b - a')
06:10:49 -!- xkapastel has joined.
06:11:56 <oerjan> int-e: i started with using floor then decided i'd just write something obviously correct
06:12:27 -!- lambdabot has quit (Remote host closed the connection).
06:12:38 <oerjan> poof
06:12:42 <shachaf> oerjan: look
06:12:52 <shachaf> what ratio does 650 cents approximate
06:12:53 <shachaf> twh
06:13:16 <oerjan> > 13/5
06:13:20 <oerjan> oops
06:13:32 <oerjan> shachaf: you chose a bad time to ask tdnh
06:13:45 <shachaf> pronked
06:14:17 <oerjan> 13/2
06:14:38 <oerjan> @wn pronk
06:14:45 <shachaf> pronked again
06:14:49 <oerjan> darn
06:15:02 <oerjan> MY MIND IS GONE I CAN FEEL IT
06:15:14 <shachaf> also i don't know what it means
06:15:17 <shachaf> i took it from this channel
06:15:19 <oerjan> or at least hal'f of it
06:15:28 <shachaf> 2012-06.txt logs apparently?
06:15:31 <kmc> helloerjan
06:15:32 <kmc> hichaf
06:15:36 <shachaf> yogan
06:15:41 <kmc> :3
06:15:49 <kmc> I just ate some fried kimchi ramen noodle soup
06:15:53 <kmc> it was so good
06:17:24 * oerjan is wondering what's before the "gan" these days
06:17:57 <shachaf> yo hth
06:18:05 <oerjan> OKAY
06:18:22 <kmc> oerjan: I kept my given name (Keegan)
06:18:35 <kmc> I like it, and it's relatively gender-neutral
06:18:54 -!- lambdabot has joined.
06:19:02 <oerjan> aha
06:19:02 <kmc> wb lambdabot
06:19:13 <shachaf> > 13/2
06:19:22 <lambdabot> 6.5
06:19:28 <kmc> also changing your name is a huge hassle, and i couldn't find a new one that I liked
06:19:32 <shachaf> > 2**(650/1200)
06:19:40 <lambdabot> 1.4556531828421873
06:20:13 <kmc> I asked my mom and apparently if born a girl, I would have been Caitlin or Kyla, which are okay but not super exciting
06:21:59 <kmc> I half considered Cassandra since I keep making accurate predictions that nobody believes :P
06:22:02 <kmc> and it's a pretty name
06:22:11 <kmc> but "Cathy and Cassie" doesn't work so well
06:22:11 <oerjan> heh
06:22:25 <kmc> I would call myself Alyssa but my girlfriend is already named that so that'd be weird
06:22:43 <kmc> I think the best option I came up with was Nicole
06:25:51 <kmc> anyway I went ahead and got my new passport and driver's license with the gender marker changed but the same name as before
06:26:26 <kmc> for the california form, my doctor certified under penalty of perjury that I have a "female demeanor" :rolleyes:
06:28:17 <kmc> there's seriously a checkbox for "demeanor"
06:28:48 <kmc> in the end i had no trouble with either CA or the feds, and got both new identity documets quickly
06:28:59 <kmc> (all 3 counting the passport card as well)
06:30:20 <kmc> the US passport card is not very useful for travel unless your circumstances involve driving across the Canadian or Mexican border regularly
06:30:40 <kmc> but I did find it useful as a form of ID for non travel things, during the time when I was waiting for my new DL
06:31:27 <oerjan> ic
06:33:25 <oerjan> @let rationalize :: (Double, Double) -> Rational; rationalize (a,b) | b <= 0 = -rationalize(-b,-a) | a < 0 = 0 | b <= 1 = 1/rationalize(1/b,1/a) | let a'=max 1(fromInteger (floor a))=a' + rationalize (a-a',b-a')
06:33:26 <lambdabot> .L.hs:160:1: error:
06:33:26 <lambdabot> Duplicate type signatures for ‘rationalize’
06:33:27 <lambdabot> at .L.hs:158:1-11
06:33:33 <oerjan> wat
06:33:42 <oerjan> @undef
06:33:42 <lambdabot> Undefined.
06:33:47 <oerjan> @let rationalize :: (Double, Double) -> Rational; rationalize (a,b) | b <= 0 = -rationalize(-b,-a) | a < 0 = 0 | b <= 1 = 1/rationalize(1/b,1/a) | let a'=max 1(fromInteger (floor a))=a' + rationalize (a-a',b-a')
06:33:48 <lambdabot> .L.hs:166:5: error:
06:33:48 <lambdabot> • Couldn't match type ‘Double’ with ‘Ratio Integer’
06:33:48 <lambdabot> Expected type: Rational
06:33:52 <oerjan> f
06:34:48 <oerjan> > let a = 1 in a+floor a
06:34:51 <lambdabot> 2
06:36:42 <oerjan> @let rationalize :: (Double, Double) -> Rational; rationalize (a,b) | b <= 0 = -rationalize(-b,-a) | a < 0 = 0 | b <= 1 = 1/rationalize(1/b,1/a) | let a'::Num x=>x;a'=max 1(fromInteger (floor a))=a' + rationalize (a-a',b-a')
06:36:44 <lambdabot> .L.hs:166:14: error:
06:36:44 <lambdabot> • Could not deduce (Ord x) arising from a use of ‘max’
06:36:44 <lambdabot> from the context: Num x
06:36:58 <oerjan> wat
06:37:15 <oerjan> @let rationalize :: (Double, Double) -> Rational; rationalize (a,b) | b <= 0 = -rationalize(-b,-a) | a < 0 = 0 | b <= 1 = 1/rationalize(1/b,1/a) | let a'::RealFrac x=>x;a'=max 1(fromInteger (floor a))=a' + rationalize (a-a',b-a')
06:37:17 <lambdabot> Defined.
06:37:42 <oerjan> > rationalize (10^8,10^8+1)
06:37:45 <lambdabot> 200000001 % 2
06:38:55 <oerjan> i think it hit the thing that's not the monomorphism restriction but even hairier
06:40:15 <oerjan> > let e=0.001 in rationalize (2**(650/1200)-e,2**(650/1200)+e)
06:40:18 <lambdabot> 67 % 46
06:40:28 <oerjan> shachaf: hth
06:40:57 <oerjan> > let e=0.002 in rationalize (2**(650/1200)-e,2**(650/1200)+e)
06:40:59 <lambdabot> 16 % 11
06:41:43 <oerjan> > let [rationalize (2**(650/1200)-e,2**(650/1200)+e) | e<-[0.001, 0.0015..]]
06:41:45 <lambdabot> <hint>:1:75: error:
06:41:45 <lambdabot> parse error (possibly incorrect indentation or mismatched brackets)
06:41:53 <oerjan> shocking
06:42:03 <oerjan> > [rationalize (2**(650/1200)-e,2**(650/1200)+e) | e<-[0.001, 0.0015..]]
06:42:05 <lambdabot> [67 % 46,16 % 11,16 % 11,16 % 11,16 % 11,16 % 11,16 % 11,16 % 11,16 % 11,16 ...
06:42:30 <oerjan> 16/11 seems to be good for a range
06:43:53 <oerjan> > let [rationalize (2**(650/1200)-e,2**(650/1200)+e) | e<-[0.005, 0.01..]]
06:43:55 <lambdabot> <hint>:1:73: error:
06:43:55 <lambdabot> parse error (possibly incorrect indentation or mismatched brackets)
06:44:00 <shachaf> oerjan: Oh, https://en.wikipedia.org/wiki/Major_fourth_and_minor_fifth agrees
06:44:03 <oerjan> > [rationalize (2**(650/1200)-e,2**(650/1200)+e) | e<-[0.005, 0.01..]]
06:44:05 <shachaf> 16:11
06:44:05 <lambdabot> [16 % 11,16 % 11,13 % 9,13 % 9,13 % 9,10 % 7,10 % 7,10 % 7,3 % 2,3 % 2,3 % 2...
06:47:28 <orin> why is youtube video of someone playing a NES game recorded in 720p
06:48:45 <orin> the NES native resolution is 240p
06:51:01 * oerjan puts rationalize in his private Basic.hs file
06:53:34 <shachaf> can you put it in the public Basic.hs file twh
06:54:11 <oerjan> nah
06:59:55 <int-e> mmm
07:04:44 <shachaf> oerjan: ok, i'll just ask you next time i need a number rationalized tdh
07:08:02 <int-e> oerjan: Oh that's just the monomorphism restriction... I didn't think that through.
07:10:17 <int-e> oerjan: it's also slightly nasty that the code divides by 0 :)
07:11:18 <int-e> > rationalize (-0, 1)
07:11:24 <lambdabot> mueval-core: Time limit exceeded
07:11:26 <oerjan> int-e: no it isn't.
07:11:39 <oerjan> oh.
07:11:42 <int-e> <3 timing
07:11:46 <oerjan> i mean it's not the MR
07:12:14 <int-e> yes it is, a' is used at two different types
07:12:56 <int-e> @google MonoLocalBinds
07:12:57 <lambdabot> https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/glasgow_exts.html
07:13:29 * oerjan was looking up the name
07:13:33 <int-e> with NoMonoLocalBinds, no type signature for a' is required.
07:13:36 <oerjan> MonoLocalBinds it is
07:13:52 <oerjan> int-e: that's not the monomorphism restrictino.
07:13:54 <oerjan> *on
07:15:11 <oerjan> > rationalize (-1,0)
07:15:15 <int-e> I guess that's true.
07:15:17 <lambdabot> mueval-core: Time limit exceeded
07:15:20 <oerjan> i guess that's a bug then
07:15:21 <int-e> Same effect, different reason.
07:16:10 <oerjan> my relevant PPCG post https://codegolf.stackexchange.com/questions/153744/wait-what-language-is-this/153927#153927
07:17:47 <int-e> (AFAIUI, the main purpose of MonoLocalBinds is to prevent accidental loss of sharing.)
07:18:44 <int-e> And then there's backward compatibility, and eliding quite a few type signatures.
07:19:54 <int-e> But you're right that I conflated this with the MR that prevents polymorphic references.
07:20:09 <oerjan> @undef
07:20:09 <lambdabot> Undefined.
07:20:12 <oerjan> @let rationalize :: (Double, Double) -> Rational; rationalize (a,b) | b <= 0 = -rationalize(-b,-a) | a < 0 = 0 | b <= 1 = 1/rationalize(1/b,1/abs a) | let a'::RealFrac x=>x;a'=max 1(fromInteger (floor a))=a' + rationalize (a-a',b-a')
07:20:13 <lambdabot> Defined.
07:20:30 <oerjan> > rationalize (-1,0)
07:20:32 <lambdabot> (-1) % 2
07:22:24 <int-e> I will, however, blame the Haskell report for this... since the Haskell monomorphism restriction actually applies to global bindings as well, even though it's not a soundness problem there; the reason is *the same* as for monomorphic let bindings.
07:22:57 <int-e> (ensure sharing of what in the case of top-level bindings are CAFs)
07:23:12 <oerjan> it's not a soundness problem anywhere (except with unsafePerformIO)?
07:23:36 <int-e> :t newIORef
07:23:37 <lambdabot> error:
07:23:37 <lambdabot> • Variable not in scope: newIORef
07:23:37 <lambdabot> • Perhaps you meant ‘newSTRef’ (imported from Data.STRef)
07:23:42 <int-e> :t newSTRef
07:23:44 <lambdabot> a -> ST s (STRef s a)
07:23:51 <int-e> :t newSTRef undefined
07:23:52 <lambdabot> ST s (STRef s a)
07:24:18 <int-e> If you could get a polymorphic value out of this, you'd be in trouble.
07:24:46 <oerjan> oh monomorphism of lambda arguments is something else again
07:25:00 <oerjan> that's even for basic hindley-milner, i think
07:25:27 <oerjan> and that's what the ST monad needs
07:26:30 <int-e> Ah, darn. The ML term I'm looking for is "value restriction".
07:26:56 <int-e> Which is /a/ monomorphism restriction? *shrugs*
07:27:08 <int-e> This stupid fuzzy memory of mine... :-/
07:27:17 <oerjan> yeah was about to mention that
07:27:32 <oerjan> it's needed once you have impure expressions
07:29:23 <kmc> yeah
07:29:32 -!- danieljabailey has joined.
07:29:34 <kmc> the ML value restriction is needed for soundness
07:29:53 <kmc> the Haskel monomorphism restriction is meant to prevent unexpected non-memoization
07:30:06 <kmc> but not needed for soundness
07:30:47 <kmc> yeah I guess you covered all this already
08:12:20 -!- danieljabailey has quit (Ping timeout: 255 seconds).
08:45:32 -!- arseniiv has joined.
08:54:53 -!- oerjan has quit (Quit: Nite).
08:58:30 -!- xkapastel has quit (Quit: Connection closed for inactivity).
09:07:03 -!- orbitaldecay_ has joined.
09:09:37 -!- orbitaldecay has quit (Ping timeout: 245 seconds).
09:12:35 <Taneb> @massages-lout
09:12:36 <lambdabot> oerjan said 8h 16m 1s ago: I think you're mistaken about monoid homomorphisms: (f<>g)(a<>b) has a similar problem, becoming either f(a)<>f(b)<>g(a)<>g(b) or f(a)<>g(a)<>f(b)<>g(b) dependent on how
09:12:36 <lambdabot> you expand it.
09:12:59 <Taneb> Hmmm
09:16:41 -!- moony__ has quit (Ping timeout: 255 seconds).
09:19:09 -!- S_Gautam has joined.
09:24:47 -!- moony_ has joined.
09:42:18 <Taneb> Yes, I was mistaken
09:43:04 <Taneb> :)
09:53:25 -!- Melvar has quit (Ping timeout: 246 seconds).
09:53:49 -!- Melvar has joined.
09:57:16 -!- wob_jonas has joined.
09:57:29 <wob_jonas> oerjan: re rationals, see https://www.perlmonks.com/?node_id=424519 for example
10:00:23 <wob_jonas> kmc: there seem to be much better options in boy's names than girl's names
10:27:51 -!- AnotherTest has joined.
11:43:12 <wob_jonas> `pbflist https://pbfcomics.com/comics/untitled-candle-comic/
11:43:13 <HackEso> pbflist https://pbfcomics.com/comics/untitled-candle-comic/: shachaf Sgeo quintopia ion b_jonas Cale
11:56:52 <esowiki> [[Drive-In Window]] https://esolangs.org/w/index.php?diff=60254&oldid=37325 * 3snoW * (+134)
12:18:45 -!- S_Gautam has quit (Quit: Connection closed for inactivity).
12:21:24 -!- Essadon has joined.
12:21:42 -!- Essadon has quit (Max SendQ exceeded).
12:22:33 -!- Lord_of_Life_ has joined.
12:24:02 <esowiki> [[Esolang:Featured languages/Candidates]] https://esolangs.org/w/index.php?diff=60255&oldid=60223 * A * (+565) /* List of candidates */
12:24:17 <wob_jonas> argh! the updated software is, of course, not quite compatible with everything I have
12:24:28 <wob_jonas> now I have to figure out what I have to change
12:24:41 <esowiki> [[Esolang:Featured languages/Candidates]] https://esolangs.org/w/index.php?diff=60256&oldid=60255 * A * (+68) /* List of candidates */
12:25:03 <esowiki> [[Esolang:Featured languages/Candidates]] https://esolangs.org/w/index.php?diff=60257&oldid=60256 * A * (-29) /* List of candidates */
12:25:19 <esowiki> [[Esolang:Featured languages/Candidates]] https://esolangs.org/w/index.php?diff=60258&oldid=60257 * A * (+3) /* List of candidates */
12:25:27 -!- Lord_of_Life has quit (Ping timeout: 240 seconds).
12:25:28 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
12:26:36 <esowiki> [[Esolang:Featured languages/Candidates]] https://esolangs.org/w/index.php?diff=60259&oldid=60258 * A * (+67) /* List of candidates */
12:26:47 -!- rodgort has quit (Quit: Leaving).
12:28:22 <esowiki> [[Esolang:Featured languages/Candidates]] https://esolangs.org/w/index.php?diff=60260&oldid=60259 * A * (-49) /* List of candidates */
12:29:27 -!- S_Gautam has joined.
12:30:23 <esowiki> [[Esolang:Featured languages/Candidates]] https://esolangs.org/w/index.php?diff=60261&oldid=60260 * A * (+121) /* List of candidates */
12:30:57 -!- rodgort has joined.
12:35:37 <esowiki> [[ShaFuck]] M https://esolangs.org/w/index.php?diff=60262&oldid=35114 * Arcorann * (+0)
12:36:37 <esowiki> [[Bitch]] https://esolangs.org/w/index.php?diff=60263&oldid=60206 * A * (+339) Add infobox
12:40:13 -!- Vorpal has joined.
12:40:13 -!- Vorpal has quit (Changing host).
12:40:13 -!- Vorpal has joined.
12:40:56 <esowiki> [[Template:Programming Language]] https://esolangs.org/w/index.php?diff=60264&oldid=58387 * Arcorann * (-3) https://en.wikipedia.org/w/index.php?title=Programming_language&diff=886211259&oldid=886194823
12:41:18 <esowiki> [[Special:Log/move]] move * Arcorann * moved [[A programming language is a formal language, which comprises a set of instructions used to produce various kinds of output.]] to [[A programming language is a formal language, which comprises a set of instructions that produce various kinds of output.]]: https://en.wikipedia.org/w/index.php?title=Programming_lang
12:41:19 <esowiki> [[Esolang:Featured languages/Candidates]] https://esolangs.org/w/index.php?diff=60267&oldid=60261 * A * (+4) /* List of candidates */
12:43:22 <esowiki> [[Esolang:Featured languages/Candidates]] https://esolangs.org/w/index.php?diff=60268&oldid=60267 * A * (+13) /* List of candidates */
12:46:43 <esowiki> [[A programming language is a formal language, which comprises a set of instructions that produce various kinds of output.]] https://esolangs.org/w/index.php?diff=60269&oldid=60265 * Arcorann * (+208) It's too soon to see any programs written in the March 2019 version (apart from on this site and Wikipedia, of course), but hopefully that will change soon
12:47:09 <esowiki> [[Esolang:Featured languages/Candidates]] https://esolangs.org/w/index.php?diff=60270&oldid=60268 * A * (-34) /* List of candidates */
12:54:07 <esowiki> [[Bitch]] https://esolangs.org/w/index.php?diff=60271&oldid=60263 * A * (-61) /* References */
13:03:07 <esowiki> [[Bitch]] https://esolangs.org/w/index.php?diff=60272&oldid=60271 * A * (+428) Add overview(just adding more information)
13:06:16 <esowiki> [[Bitch]] https://esolangs.org/w/index.php?diff=60273&oldid=60272 * A * (+81) /* Turing-completeness */
13:20:53 <esowiki> [[Bitch]] https://esolangs.org/w/index.php?diff=60274&oldid=60273 * A * (+125) /* Cat program (limited to integers) */
13:23:43 <esowiki> [[Bitch]] https://esolangs.org/w/index.php?diff=60275&oldid=60274 * A * (+0) /* Cat program (limited to integers) */
13:24:37 <esowiki> [[Bitch]] https://esolangs.org/w/index.php?diff=60276&oldid=60275 * A * (+32) /* Possible */
13:25:13 <esowiki> [[Bitch]] https://esolangs.org/w/index.php?diff=60277&oldid=60276 * A * (-2) /* Cat program (limited to integers) */
13:30:18 <esowiki> [[Esolang:Featured languages/Candidates]] https://esolangs.org/w/index.php?diff=60278&oldid=60270 * A * (+8) /* List of candidates */
13:32:18 <esowiki> [[User talk:A]] https://esolangs.org/w/index.php?diff=60279&oldid=60207 * A * (-40)
14:02:22 -!- atslash has quit (Quit: Leaving).
14:07:53 <wob_jonas> what... suddenly the iterator doesn't work if the container is empty or what?
14:15:04 -!- xkapastel has joined.
14:25:26 -!- hakatashi2 has joined.
14:29:12 -!- hakatashi has quit (Ping timeout: 250 seconds).
14:32:55 -!- imode has joined.
14:51:01 <esowiki> [[Special:Log/newusers]] create * Carbontwelve * New user account
14:56:27 <esowiki> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=60280&oldid=60249 * Carbontwelve * (+271) My introduction
14:58:27 -!- AnotherTest has quit (Ping timeout: 240 seconds).
15:03:43 <orin> OH MY GOD I HATE GIT SO MUCH
15:04:03 <orin> it has been sitting there "rebasing" for over 24 hours now
15:04:30 <orin> taking up 100% of cpu and over 2 GB of memory
15:05:09 <orin> in that time I could have EASILY done this with fucking patch files
15:05:34 <Taneb> That's... not something I've ever seen happen
15:07:12 <wob_jonas> orin: you know you can just kill it, right?
15:07:31 <orin> wob_jonas: well yeah
15:07:38 <esowiki> [[LDPL]] N https://esolangs.org/w/index.php?oldid=60281 * Carbontwelve * (+597) Stub page for LDPL
15:07:47 <orin> wob_jonas: but what state would that leave my repo in
15:08:14 <int-e> . o O ( more usable )
15:08:17 <orin> git rebase master
15:08:17 <orin> First, rewinding head to replay your work on top of it...
15:08:25 <orin> and nothing for 24 hours
15:09:07 <wob_jonas> orin: it's mostly immutable garbage-collected stuff, you only have to restore the refs
15:09:26 <esowiki> [[Language list]] M https://esolangs.org/w/index.php?diff=60282&oldid=60233 * Carbontwelve * (+11) /* L */ adding Link to LDPL
15:09:54 <wob_jonas> also that's why I don't rebase, it's confusing for me, I rather start a new branch and apply or revert
15:10:02 <int-e> Never experienced anything like that either. At that point I would assume that it won't finish.
15:10:07 <orin> ok, so it left me on "no branch"
15:10:14 <wob_jonas> or use svn rather than git if I can, but that's not an option for an existing repo
15:10:20 <int-e> git checkout <branch you were on>
15:10:30 <orin> I'll check out the branch I was trying to rebse
15:11:00 <orin> Ideally now I'll create patch files from my branch and apply them manually
15:11:21 <int-e> I'd also do a git fsck at that point. Depending on how paranoid I'm feeling, make a copy of the .git directory first (but git usually makes destroying objects really hard)
15:12:10 <orin> int-e: this is a local repo, everything important is on the main repo
15:12:28 <wob_jonas> int-e: _destroying_ objects is hard. it's just also hard to find the right objects, because it's too easy to change what each ref points to, especially with pull
15:12:50 <wob_jonas> you don't really get a timed history, only a half-ditched effort called the reflog
15:13:19 <int-e> Yes and it's hardly ever been an issue for me.
15:13:50 <esowiki> [[LDPL]] https://esolangs.org/w/index.php?diff=60283&oldid=60281 * Carbontwelve * (+10) Added stub text
15:15:01 <orin> hmm maybe I'll just check out an entirely new repository and delete this one
15:15:21 <int-e> orin: the confusing bit about that behavior is this... what I'd expect git-rebase to do at that point is basically just a 'git checkout master -b rebase-temp'. That is, unless it was actually done rewinding and already collecting diffs, somehow.
15:16:00 -!- imode has quit (Ping timeout: 250 seconds).
15:16:53 <orin> well yeah what I expected git to do is 1. find the latest shared point between my branch and the master
15:17:11 <orin> 2. create a patch from that point to the head of my branch
15:17:20 <orin> 3. try to apply it to the head of master
15:17:48 <orin> but apparently it is doing something more complicated
15:18:19 <Taneb> I believe it applies each commit in sequence
15:18:21 <int-e> I'd expect a 3-way merge from the common ancestor?
15:18:27 <Taneb> For a rebase
15:18:45 -!- S_Gautam has quit (Quit: Connection closed for inactivity).
15:18:51 <wob_jonas> um no, it has to apply each commit from the common ancestor to your branch onto the master, in sequence
15:19:40 <orin> wob_jonas: right. but my branch has like, 20 commits max
15:19:45 <wob_jonas> and it's so much cleaner when I use apply or revert rather than rebase, because the way rebase changes what refs point to just cnofuses me to heck
15:20:01 <int-e> (I meant for each revision separately.)
15:20:13 <wob_jonas> and it's easier to abort or continue the apply too when there's a conflict or anything
15:20:26 <orin> so my current theory is that that "common ancestor" is way further back than it should be
15:20:42 <wob_jonas> int-e: sure, they do a proper diff3 these days, with a diff3 engine built into git, rather than just a patch
15:23:43 <int-e> Hah. "revision" is mercurial terminology. I mean "commit".
15:28:29 <orin> git clone $GIT_ORIGIN_REPO i_hate_git
15:28:58 <orin> what's the command to get a patch from commit XXX to commit YYY
15:29:55 <wob_jonas> orin: git diff XXX YYY --
15:29:57 <int-e> git diff [<options>] <commit> <commit> [--] [<path>...]
15:30:25 <wob_jonas> int-e: yes, but what are the right options?
15:30:45 <orin> ok cool that should work with the path part since I knw nothing outside a particular directory ought to have changed
15:32:17 <int-e> wob_jonas: They are optional. This is the one of the five versions listed in the manpage that is applicable to the question.
15:43:08 <orin> yeah I'll just create a pacth file, create an entirely new branch and apply the patch file over the head of master
15:43:23 <orin> er, the head of that branch which is the head of master
15:44:22 <int-e> good luck
15:49:04 <wob_jonas> orin: or create a new branch from master, then apply the commits from your branch, creating a new commit for each, with (git cherry-pick ..yourbranch), it will stop on a conflict and you can (git cherry-pick --abort) to cancel trying to resolve the conflicts; or (git cherry-pick -n ..yourbranch) to apply all of them at once without creating a commi
15:49:04 <wob_jonas> t, which lets you collapse your commits to a single one
15:52:42 <wob_jonas> also, git is bs, because the command I use the most frequently is an alias to git status -bs
15:53:01 <wob_jonas> I have a few other aliases where the defaults are ... strange
16:15:46 -!- danieljabailey has joined.
16:36:06 <orin> -reject
16:42:26 <orin> ok, this is actually working
16:44:50 -!- wob_jonas has quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client).
16:54:08 <esowiki> [[ALLSCII]] https://esolangs.org/w/index.php?diff=60284&oldid=60253 * Cortex * (+744)
16:54:25 -!- xkapastel has quit (Quit: Connection closed for inactivity).
17:01:30 -!- digitalcold has joined.
17:01:54 -!- AnotherTest has joined.
17:22:15 <esowiki> [[ALLSCII]] https://esolangs.org/w/index.php?diff=60285&oldid=60284 * Cortex * (+120)
17:23:39 <esowiki> [[ALLSCII]] https://esolangs.org/w/index.php?diff=60286&oldid=60285 * Cortex * (+36)
17:51:44 -!- b_jonas has joined.
18:08:11 -!- Phantom_Hoover has joined.
18:47:12 <kmc> < wob_jonas> kmc: there seem to be much better options in boy's names than girl's names <--- hmm, how do you mean?
18:47:51 <b_jonas> kmc: that's probably just my biased opinion
18:48:44 <kmc> what do you mean by 'better' though
18:48:50 <kmc> nicer sounding?
18:48:57 <b_jonas> totally subjective
18:49:57 <kmc> ok
18:51:39 -!- LKoen has joined.
18:57:26 <orin> ok, note to self, rebasing manually is a lot of work, but may be less mental anguish than trying to understand what is wrong with your git repository
18:58:10 <kmc> git freebase
19:27:28 <kmc> b_jonas: it's true that I didn't find a name I liked better than Keegan, on the other hand, Keegan is an unusually great name
19:27:42 <kmc> my parents had good (unintentional) foresight by giving me something gender-neutral-ism
19:27:44 <kmc> ish*
19:28:11 <kmc> one less hassle...
19:28:28 <kmc> Keegan means "firey one" in Gaelic or something
19:28:36 <kmc> my wife met an orange polydactyl cat named Keegan
19:28:59 <shachaf> cat
19:29:06 <kmc> yes
19:29:07 <kmc> cat
19:29:31 <b_jonas> I ate catfish
19:29:39 <shachaf> 🐈
19:30:03 <b_jonas> and now I wonder if there's a deadfish variant that can still only print literal strings, but with a more efficient encoding, like it prints anything after a quotation mark
19:34:33 -!- LKoen has quit (Remote host closed the connection).
19:35:43 -!- LKoen has joined.
19:40:40 -!- LKoen has quit (Remote host closed the connection).
19:47:25 -!- LKoen has joined.
20:02:34 <Phantom_Hoover> kmc, did you ever play halo
20:03:15 <Phantom_Hoover> also fizzie re the lambdabot message yeah that's what i remember
20:03:41 <kmc> Phantom_Hoover: only casually at parties with friends
20:03:42 <kmc> why
20:04:55 <Phantom_Hoover> there's a ship in, uh, one of the spinoff games called 'spirit of fire'
20:05:07 <Phantom_Hoover> which was one of a few really excellent ship names in halo
20:08:24 <kmc> ok
20:08:24 <Phantom_Hoover> also a nicely subtle tolkien reference
20:08:29 <kmc> not as good as the Culture ship names
20:09:54 <Phantom_Hoover> well nothing is as good as those
20:10:15 <kmc> yes
20:13:27 -!- danieljabailey has quit (Ping timeout: 240 seconds).
20:14:36 <j4cbo> Absolutely No You-Know-What
20:15:09 <j4cbo> Stood Far Back When The Gravitas Was Handed Out
20:15:40 -!- LKoen has quit (Remote host closed the connection).
20:21:26 -!- LKoen has joined.
20:32:32 -!- LKoen has quit (Remote host closed the connection).
20:37:05 -!- LKoen has joined.
20:54:06 -!- xkapastel has joined.
21:07:47 -!- orbitaldecay__ has joined.
21:10:50 -!- orbitaldecay_ has quit (Ping timeout: 255 seconds).
21:50:37 -!- LKoen has quit (Remote host closed the connection).
21:53:28 -!- LKoen has joined.
21:54:43 <shachaf> kmc: https://bugs.chromium.org/p/project-zero/issues/detail?id=1792
21:55:07 <shachaf> in the year 2019 linux still has bugs with mapping page 0
21:55:11 <kmc> cool
22:01:25 <b_jonas> shachaf: but since nobody runs an x86_32 kernel, nobody runs emulators using v86 mode, so nobody needs to map the null page, so it no longer matters
22:03:05 <b_jonas> wait wait
22:03:19 <b_jonas> the problem is that you _can_ map the null page?
22:03:22 <b_jonas> you're supposed to be able to map it
22:04:31 <shachaf> Not when mmap_min_addr is higher than 0.
22:06:48 <kmc> b_jonas: you're not
22:06:56 <kmc> for the past 10+ years
22:07:04 <kmc> because it makes it easy to exploit a kernel-mode NULL dereference
22:07:51 <b_jonas> kmc: um, not even on the recent cpus that have an easy way to make the kernel unable to accidentally access user memory?
22:08:24 <kmc> you mean Intel SMAP?
22:08:34 <kmc> that would help yes
22:08:50 <kmc> anyway not all CPUs have that, and at any rate it's good to have multiple lines of defense
22:08:59 <b_jonas> kmc: dunno, is that the one where you can mark pages with a very short ID, and there's a register that tells which IDs are allowed, and you can even use them at user level with some kernel support now?
22:09:06 <b_jonas> but yes, it's only the latest cpus
22:09:14 <kmc> afaik, there is no compelling reason to allow mapping a page at 0
22:09:18 <b_jonas> and sure, if the /proc thing is set to not allow it, then yes, it shouldn't be allowed
22:10:13 <b_jonas> I mean, there are a lot of optional /proc knobs like that
22:10:21 <b_jonas> including the one that denies using ptrace completely
22:10:33 <b_jonas> it makes sense to have one of these as well I guess
22:16:00 <shachaf> `cat /proc/sys/vm/mmap_min_addr
22:16:00 <HackEso> 4096
22:19:11 <fizzie> I vaguely remember DOSEMU used to remember mmap_min_addr=0.
22:19:34 <fizzie> Don't think it's really applicable on x86-64 anyway.
22:22:23 -!- arseniiv has quit (Ping timeout: 255 seconds).
22:23:07 <b_jonas> by the way, fizzie, the last time you said you have to think about whether HackEso is specifically for the esoteric community or not, and that's why you might not want to make it join other channels. in that case, how about joining it to #esoteric-blah ?
22:31:29 <kmc> there's not much point using dosemu anymore
22:31:40 <kmc> dosbox works great and is a pure emulator with no weird platform dependencies
22:32:22 <kmc> meanwhile my father-in-law runs his 30 year old turbo pascal programs in a dos window in Windows XP, in an emulator under Windows 10
22:32:27 <kmc> to each his own
22:42:04 <fizzie> b_jonas: That sounds uncontroversial.
22:42:13 <b_jonas> kmc: as you may know if you hung around on this channel, I used both bochs and dosbox to run DOS programs on linux, including games and a compiler. at one point I hooked up a DOS system ran by bochs to IRC, making a very noisy bot.
22:42:47 <b_jonas> but qemu had improved significantly since, so I might use qemu the next time I want to do something like this
22:46:14 <kmc> ok
22:46:29 <orin> https://www.youtube.com/watch?v=H0u6xxh_JL0
22:46:48 <b_jonas> incidentally, borland C on dos is a compiler that seems really weird now
22:47:07 <b_jonas> it wasn't that weird back then of course
22:47:39 <b_jonas> it actually accepts `long long` as a type without an error, and parses it as if it were just `long`, so programs using it compile but silently fail because it's only 32 bit long
22:50:53 -!- FreeFull has joined.
22:51:41 <kmc> lol
22:51:45 <kmc> i've used it
22:51:48 <kmc> C integer types are dumb anyway
22:52:09 <b_jonas> but of course most of those programs won't compile, because they assume you have a modern standard library, and will refer to identifiers that aren't in borland C's
22:52:47 <kmc> did you know that the XC8 compiler for PIC has 'short long'?
22:52:52 <kmc> it's longer than a short, but shorter than a long
22:52:56 <kmc> it's 24 bits
22:52:59 <b_jonas> oh
22:53:00 <APic> Uh oh
22:53:09 <b_jonas> I didn't know that
22:53:38 <fizzie> Hmm. Looks like multibot is technically a little bit single-channeled. Although as far as I can tell, the only things that affect are (a) the built-in automatic JOIN, and (b) whether it looks for "PRIVMSG-chan.cmd" or "PRIVMSG-user.cmd" for the first-level fallback (from "PRIVMSG/tr_XX.cmd" based on the first command character).
22:53:44 <b_jonas> I thought it would go like char, long char, short short, short, long short, int, short long, long, long long, long long long
22:54:13 <kmc> "who likes short shorts?"
22:54:54 <b_jonas> also, those days C counted as a high level language and borland C counted as an optimizing compiler; these days we'd call it a low level language an a non-optimizing compiler
22:54:59 <kmc> <source>:2:15: error: 'long long long' is too long for GCC
22:55:04 <fizzie> I hadn't heard of "short long", though I think the one Motorola 56K C implementation had a 24-bit `int` and a 48-bit `long`.
22:55:12 <b_jonas> it also has some sort of support for an ancient form of C++
22:55:56 <b_jonas> ISTR the C compiler for Magic-1 uses 32-bit long longs, but maybe that's just a mistake in the description
22:55:59 <b_jonas> let me look that up
22:56:32 <int-e> . o O ( optimizing compiler, n. - a compiler that uses more than two registers in the generated machine code )
22:56:59 <fizzie> The c56 compiler doesn't support "long long" at all, it's just an error.
22:57:22 <b_jonas> int-e: yeah, it has 32-bit multiplication built in, and can target actual 8086 (though I don't think I ever invoked it that way, normally I ask it to compile for 386), so it needs to use more than two registers for that
22:58:15 <kmc> in compilers class we had an optimization shootout, and we implemented a bunch of them (my teammate burned through about a month's supply of Adderall in a week) but the most effective turned out to be one of the simplest: replacing mul/div by a power of two with shifts
22:58:23 <kmc> because the test program was full of fixed point math :)
22:58:43 <kmc> so we won even though our compiler was very dumb in other ways, like failing to coalesce moves
22:58:56 <kmc> it would do like mov %eax, %ebx; mov %ebx, %eax
22:59:15 <int-e> b_jonas: it's funny. we've somewhat stopped measuring compile speed (turbo pascal could compile what, 1000 lines per second on a 20MHz machine?)
22:59:40 * int-e doesn't even remember the order of magnitude anymore
23:00:34 <b_jonas> nah, I probably just misremembered that about magic-1
23:00:43 <b_jonas> http://www.homebrewcpu.com/ by the way
23:01:14 <orin> int-e: well except good ole TCC
23:01:25 <orin> int-e: TCC can compile and run a linux kernel
23:01:30 <b_jonas> kmc: was the test program known in advance? or was it a lucky guess?
23:02:19 <kmc> I don't recall, actually
23:02:22 <b_jonas> heh
23:02:27 <fizzie> I think c56 also does a non-compliant thing where `char` and `short` act as 8- and 16-bit types, respectively, but still take up one (24-bit) word of storage.
23:02:31 <fizzie> (Well, the `short` part is fine. But `char` isn't supposed to have any padding bytes.)
23:03:30 <fizzie> There's a special magic `_packed char` type that tries to support strings packed efficiently (three octets per word) but it also has a sizeof 1 so incrementing a _packed char pointer by 1 moves it by 3 characters.
23:03:38 <orin> i thought the main guarantee about char is that copying an array of char is the same as copying any type
23:03:41 <fizzie> (You're supposed to use access macros with it.)
23:03:59 <orin> e.g. that memcpy() takes char*
23:04:20 <orin> or is that no longer the case?
23:04:25 -!- xkapastel has quit (Quit: Connection closed for inactivity).
23:04:33 <fizzie> No, memcpy takes a void *. But you're supposed to be able to *implement* memcpy via using a `unsigned char *` to access the object representations.
23:04:46 <fizzie> (And you can't do that on that implementation.)
23:04:56 <orin> yeah
23:05:34 <fizzie> Actually, I'm not sure what code it generates. Maybe it happens to work if you just do the usual *dst++ = *src++.
23:07:25 -!- LKoen has quit (Remote host closed the connection).
23:07:33 -!- LKoen has joined.
23:12:27 -!- AnotherTest has quit (Ping timeout: 240 seconds).
23:16:15 -!- LKoen has quit (Remote host closed the connection).
23:54:46 -!- FreeFull has quit (Quit: rebooting).
23:56:12 -!- FreeFull has joined.
←2019-03-04 2019-03-05 2019-03-06→ ↑2019 ↑all