00:09 <Schism> "Slash upwards on empty space..." Darnit. Of course it has to be EMPTY space.
00:09 * Schism continues to attempt to slash upwards on enemies.
00:10 <Ali> Grr, misjudged how many stupid items I needed for yellow science...
00:10 <Ali> I needed 500 bottles, not 300...
00:29 * Schism acquires 500 yellow bottles from King Zora, for 1 rupee. ...wait.
00:40 *** Quits: Dapper_Dappled (IceChat9@Pony-dsnf91.ok.cox.net) (Ping timeout: 121 seconds)
00:41 * Schism manages to get to #27 in a random game of Pac-Man 99.
00:41 <Schism> Not bad for my fourth attempt.
00:41 <Schism> Just didn't realize that a RED anti-pac meant instant death.
01:25 <DerpyBot> New post on Equestria Daily by Sethisto: Say Something Nice About Clear Skies [ https://tinyurl.com/yf34uffq ]
01:38 *** Joins: uni (unicodingun@Pony-8k4.sjj.166.202.IP)
01:38 * uni grumbles, stupid windows restarting
01:39 <uni> also ooh a sun shower, two foxes are getting married
01:44 *** Joins: Vulpor (Vulpor@Pony-tn596m.66-220-71-net.sccoast.net)
01:45 <Vulpor> Ok so...................
01:45 <Vulpor> I just marathoned The Owl House
01:45 <Vulpor> I must speak of it lol
01:48 *** Joins: cabbage (cabbage@Pony-ooa0s5.dynamic.sonic.net)
01:59 <uni> ooh?
02:05 *** Joins: Fn (Eogan@Pony-ahopkg.dip0.t-ipconnect.de)
02:06 <Vulpor> Its a great show
02:06 <Vulpor> Very funny and entertaining
02:08 *** Quits: FruitNibbler (Eogan@Pony-88o025.dip0.t-ipconnect.de) (Ping timeout: 121 seconds)
02:14 *** Quits: Vulpor (Vulpor@Pony-tn596m.66-220-71-net.sccoast.net) (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client)
02:25 <DerpyBot> New post on Equestria Daily by Calpain: Nightly Discussion #2500 [ https://tinyurl.com/yggmzohr ]
03:07 <Schism> "That's a lot of vegetable juice. Expiration date... April 28." "Yup."
03:16 *** Quits: NitroTheFurry (Nitro@Pony-l42sv5.mi.comcast.net) (Connection closed)
03:18 *** Joins: NitroTheFurry (Nitro@Pony-l42sv5.mi.comcast.net)
03:18 *** Quits: NitroTheFurry (Nitro@Pony-l42sv5.mi.comcast.net) (Connection closed)
03:30 *** Quits: Angeline (Scootaloo@I.Will.Fly.Higher) (Ping timeout: 121 seconds)
03:36 *** Joins: NitroTheFurry (Nitro@Pony-l42sv5.mi.comcast.net)
04:04 *** Quits: Nedemai (Nedemai@Pony-inl.g65.158.104.IP) (Connection closed)
04:37 *** Quits: Crimson_Tail (zeta@batpones.are.for.snuggles) (Quit: Le poof)
04:46 <Schism> Ow.
04:47 * Schism acquires 100,000 yen by dint of simply leveling up her pins and fighting 5-Noise chains on normal.
04:51 * Ali flops over the Schism and sad unicorn noises
04:52 * Schism provides the Ali with a slice of ace cheesecake...? And also snugs.
04:52 * Ali nuu's, has this giant chocolate cake she has to go thru still... also cheesecake tastes too much like cream cheese..
04:56 <Schism> Well... it is a cream cheese cake...
04:56 * Schism simply provides Ali a smol bowl of chocolate chip cookie dough ice cream?
04:56 * Ali nuu's no mas to chocolate right now
04:58 * Schism simply provides Ali with strawberry ice cream, then...?
04:58 * Ali baps Schism, they know they hate strawberry
04:58 * Ali burns all the pink starburst for that
04:59 <Schism> Oh. o.o
04:59 * Schism offers the Ali some mango ice cream, then.
04:59 * Ali is not a bat :P
04:59 <Schism> You needn't be a batty to enjoy mango!
05:00 <Schism> A mango vanilla smoothie is also a fine way to acquire certain types of changeling.
05:06 * Schism most assuredly does not expect a Surry to show up and hat on Ali. In any case, she curls up for sleep, herself.
05:06 <Ali> Well there is no filly to skree here sooo
05:09 * Schism carefully places a mango right next to Ali.
05:09 *** Joins: Surreal_Nightmares (Surreal@Cutest.Floofy.Changeling.Batpone)
05:09 *** Surreal_Nightmares is now known as Filly_Nightmares
05:09 * Filly_Nightmares eeeeeeeeeeeeeeeeeeeee at Ali!
05:09 * Filly_Nightmares knead knead knead knead knead knead knead knead knead knead knead knead knead knead knead knead knead knead knead knead knead Ali tummy and gnaw on Schism ears
05:10 <Ali> Ok, what sorcery did you pull Schism
05:10 * Schism squeaks! and earflicks.
05:10 * Filly_Nightmares hungry at Ali!
05:10 * Filly_Nightmares eeee and bounces
05:10 * Ali gives Filly_Nightmares that extra mango
05:10 <Ali> Did you poke the eee somewhere else?
05:10 * Filly_Nightmares curls up around mango and absorps it!
05:10 <Ali> Cause that was timed a little too well
05:11 * Schism certainly doesn't know what Ali means. She just realized that perhaps Surry was hungry, so put out Surry bait.
05:11 <Ali> And she just magically shows up in the channel
05:11 * Filly_Nightmares rolls onto her badck for rub!
05:11 * Schism supposes she shall provide the batling some bellyrubs.
05:13 * Filly_Nightmares curls up around Schism and gnaw on
05:13 * Schism equips Filly_Nightmares with some pins! They allow for telekinesis and more mangoes.
05:14 * Filly_Nightmares rolls around and climbs onto Ali head
05:17 * Filly_Nightmares suckle on Schism nosie and kneads Ali face
05:17 * Schism wraps herself into burrito, too. It has rice and spicy peppers and beef and onion and cheese.
05:18 * Filly_Nightmares nom nom nom nom burrito!
05:23 *** Joins: Crimson_Tail (zeta@batpones.are.for.snuggles)
05:37 *** Quits: Pony|65275 (Pony65275@Pony-taj8dp.cable.virginm.net) (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client)
05:37 *** Joins: Lumindia_ (quassel@Pony-45lvcs.pbg.ptd.net)
05:40 *** Quits: Lumindia (quassel@Pony-45lvcs.pbg.ptd.net) (Ping timeout: 121 seconds)
05:43 * Filly_Nightmares lickies Ali nosie
05:49 <Schism> Pffff.
05:49 <Schism> First week is easy. Boss complete for day 5. [No damage taken.]
05:52 *** Quits: Arion (Arion@Pony-uj7ahl.res.spectrum.com) (Ping timeout: 121 seconds)
05:53 *** Joins: Arion (Arion@Pony-uj7ahl.res.spectrum.com)
06:05 * Filly_Nightmares berps at Schism
06:33 <Schism> Salt laaaamp. https://twitter.com/foxes_in_love/status/1385116978201993218
06:36 <Finwe> Good morning, everypony!
06:37 * Schism passes Finwe a salt lamp. Also, curls up in bed. "rAdm. Finwe." She doffs her pillow.
06:37 <Finwe> Mlles Ali, Filly_Nightmares and Schism; Messrs Cepheid and PinkieShy.
06:37 * Finwe doffs his hat.
06:39 <Finwe> Schism: The teal fox is so impulsive.
06:45 * Filly_Nightmares eeeeeeee
06:45 * Finwe ruffles a Filly_Nightmares.
06:46 * Filly_Nightmares purrs and rolls onto her back
07:03 *** Quits: ArchPegasusMichael (Poni@Keep.In.A.Friendly.And.Pony.Place) (Quit: Leaving)
07:06 *** Joins: ArchPegasusMichael (Poni@Keep.In.A.Friendly.And.Pony.Place)
07:10 *** Quits: Fn (Eogan@Pony-ahopkg.dip0.t-ipconnect.de) (Connection closed)
07:14 *** Quits: AppleDash (appled@Gladiolus.Rocks) (Quit: Leaving)
07:36 *** Quits: Ali (Ali@Pony-d0p6bh.4nua.5fca.1702.2600.IP) (Quit: Leaving)
07:53 *** Quits: PinkieShy (coolm@Pony-ck81je.67-212-45-net.sccoast.net) (Connection closed)
08:20 *** Joins: Dapper_Dappled (IceChat9@Pony-dsnf91.ok.cox.net)
08:21 *** Dapper_Dappled is now known as Dappled
08:21 * Dappled flop horse.
08:33 <Cepheid> Morning.
08:34 <Dappled> I suppose it is.
08:35 * Dappled got home after only an 8 and half hour shift.
08:35 * Dappled grumbles but is glad it wasn't 9+
08:38 <Finwe> Mr Dappled.
08:38 * Dappled waves.
08:38 * Finwe doffs his hat.
08:39 <Finwe> Cepheid's mornings are always obscenely early.
08:39 <Cepheid> Yes.
08:39 <Cepheid> I was woken up by hunger.
08:40 *** Quits: cabbage (cabbage@Pony-ooa0s5.dynamic.sonic.net) (Connection closed)
09:49 *** Joins: Golden (uid250033@Pony-sd90bk.tooting.irccloud.com)
10:05 * Cepheid creates 5 spidertrons. Sets 4 of them to follow a leader spidertron.
10:09 *** Quits: Dappled (IceChat9@Shady.The.Pet.Pony) (Ping timeout: 121 seconds)
10:39 * Lumindia_ passes out pancakes to everyone
10:45 * Cepheid needs to construct multiple teams for Etrian Mystery Dungeon. Primary squad will consist of herself, Schism, Lumindia and ADra.
10:45 <Cepheid> Healer, DPS, or Tank, Lumindia_?
10:46 <Lumindia_> uhh
10:46 <Lumindia_> healer, I guess
10:46 <Lumindia_> that's the kinda mood I've been in in XIV
10:46 <Lumindia_> you pick the specific healer
10:46 <Cepheid> That's the intent, that's why I specified broad categories.
11:01 * Lumindia_ places a pancake on Ceph's head
11:04 <Cepheid> Heh, guy asks how much we'd want for a mission to kill a monster. Choices are 1000en, 500en, and 0en. I chose 0en, and he insisted on paying 2000en instead.
11:04 <Lumindia_> sometimes being modest pays off
11:05 <Lumindia_> :P
11:05 <DerpyBot> New post on Equestria Daily by Calpain: Morning Discussion #2272 [ https://tinyurl.com/yzd43hot ]
11:05 <Cepheid> Honestly the gear and items we acquire from the dungeon would have been worth the trouble.
11:16 <Cepheid> ADra's the mage. Lumindia's the healer. Schism's the ailment expert. I'm the punching bag.
11:17 *** Joins: RazorSharpFang (FourthChoic@Pony-ub7st0.tpgi.com.au)
11:18 <RazorSharpFang> Cepheid, do you have to dispose of delegates? (Can you?)
11:20 <Cepheid> Dispose/Finalize is primarily used for dealing with unmanaged resources. Let me check something.
11:20 <RazorSharpFang> I'm suspecting that I was leaking memory by registering event handlers and not deregistering them
11:22 <Cepheid> Dispose() is used to explicitly release unmanaged resources. Meanwhile, Finalize() is used by the GC.
11:22 <Cepheid> But, as far as objects registered as delegates...
11:23 <RazorSharpFang> We had an OutOfMemoryException occur during night-shift last night. I'm suspecting it was me not deregistering event handlers.
11:23 <Cepheid> Probably.
11:24 <Cepheid> Because for the handler to be invoked, it needs an object. The handlers aren't static.
11:26 <RazorSharpFang> So, if you're an object-class instance and you have public events, is there a way to force a deregistering of all event handlers on your event?
11:30 * Cepheid hums.
11:32 <Cepheid> Honestly I think I might be wrong. I don't use events enough to understand how they work. I'm not sure if they act as a reference to an instance or not. I would assume they do, because in the event handler, you can access all the member variables willy nilly. As for clearing the event handler itself..
11:32 <RazorSharpFang> They act as a delegate combiner
11:32 <RazorSharpFang> Which is why if one handler throws an exception others are not called
11:39 <Cepheid> It feels like my head is being stretched and squished, and I have no idea why.
11:39 <RazorSharpFang> Have you tried sacrificing a goat?
11:42 <Cepheid> No.
11:42 <Cepheid> Though I should probably eat.
11:42 <RazorSharpFang> That counts
11:48 <Cepheid> Eat, and maybe also take my medications.
11:56 <Cepheid> It looks like you can unregister all handlers by assigning null to the event.
11:58 <RazorSharpFang> I didn't even realise that was a valid statement.
12:01 <Cepheid> Stands to reason it should be, given that the typical means of invoking an event is to use eventName?.Invoke(). The ? invokes a check against null before trying to call the method.
12:05 <RazorSharpFang> Oh yeah
12:09 *** Quits: Golden (uid250033@Pony-sd90bk.tooting.irccloud.com) (Quit: Connection closed for inactivity)
12:09 *** Quits: Filly_Nightmares (Surreal@Cutest.Floofy.Changeling.Batpone) (Connection closed)
12:13 <RazorSharpFang> Cepheid, if I were to describe a problem I have, as in technical scenario needing a solution, would you be interested in discussion potential solutions?
12:14 <Cepheid> Sure.
12:14 <Cepheid> I'm more alert now, so..
12:15 <RazorSharpFang> So our PLCs have a specification that they have only perform so many "communication actions" per second. Any read/write operation to external parties counts as one action.
12:15 <DerpyBot> New post on Equestria Daily by Sethisto: Fluttershy Day Arrives on the 28th of April [ https://tinyurl.com/yesuwtsb ]
12:15 <RazorSharpFang> If you attempt more than this, it'll ignore the request, prioritising its own internal processing instead.
12:16 <Cepheid> Does it notify you when a communication action has occurred?
12:16 <Cepheid> Or completed, rather.
12:16 <RazorSharpFang> Yes, because you get a response packet.
12:17 <RazorSharpFang> We have a set of addresses to "scan" that is to monitor routinely. These are asynchronous. I need to continuously loop through the set of addresses to monitor without hitting the communication cap.
12:19 <Cepheid> The main pain in the arse I see is with respect to how read AND write are both communication actions in terms of the maximum number of communication actions.
12:19 <RazorSharpFang> But, I don't /always/ get a response. If there's a network failure, it'll take five seconds for the operation to timeout.
12:19 <Cepheid> Since there exists the possibility that you may receive a packet, which will count against those actions.
12:20 <RazorSharpFang> Somehow, if there's a little hiccough, I don't want to pause other potentially waiting read/write operations.
12:20 <RazorSharpFang> Yet I also desire to be reasonably equal about how often these addresses are scanned.
12:20 <RazorSharpFang> This is doing my head in trying to solve that.
12:21 <Cepheid> Thread pooling or asynchronous operations seems like a good place to start.
12:22 <RazorSharpFang> I'm currently doing a Parallel.ForEach() where I limit the number of simultaneously executing operations, but that has problems.
12:23 <RazorSharpFang> If one operation times out, it'll hold a task for that timeout duration.
12:24 <Cepheid> And if a bunch of tasks get locked up, then that's N fewer tasks you have for scanning with.
12:24 <RazorSharpFang> Right, right.
12:25 <Cepheid> Which means your task/thread set has to be as large as the number of addresses you're scanning.
12:26 <RazorSharpFang> Well, I tried that and it took the PLC offline.
12:26 <Cepheid> Software needs to run on the PLC?
12:26 <RazorSharpFang> No, the traffic put the PLC into a fault-state.
12:29 <RazorSharpFang> I think I'd need to have an interlocked queue with a stopwatch?
12:32 <Cepheid> So my understanding of the problem is, say you have five slots available for reading/writing. You start five scans, and four of them complete relatively quickly, if not immediately. One blocks because of network issues. But until that one blocked scan times out, you can only do four new scans at a time.
12:32 <RazorSharpFang> That's my current implementation's quirks.
12:34 <Cepheid> Since the device is limited to N slots, I don't see how you can start N new scans if one of them is blocking waiting for a timeout. For all you know, the blocking scan could just be taking a while due to latency or packet loss, and not because the device isn't there.
12:35 <Cepheid> It seems more like the problem is a defficiency in the hardware rather than the software.
12:36 <Cepheid> You need to keep a read slot open for that blocking thread, you have no choice. You don't want to risk doing another N scans, and then having that blocking thread's response get dropped because the input buffer is full.
12:36 <RazorSharpFang> Well, it's similar to the TCP-slowdown problem. I can't tell if a timeout is due to a temporary comms hiccough, or if I'm hammering it too hard.
12:36 <Cepheid> Of course, I see one other problem now that I think about it
12:37 <Cepheid> What happens if you assume that the connection is down after 5 seconds, but the response arrives after those 5 seconds? You now have an item waiting in the buffer to be read, but never will.
12:38 <RazorSharpFang> I don't know what the library I'm using does.
12:38 <RazorSharpFang> That's a good question.
12:38 <Cepheid> I'm assuming the connection test is just a standard ping.
12:38 <RazorSharpFang> This is a protocol that operates over TCP
12:38 <Cepheid> Rather than say, a TCP/IP connection setup, poke, then takedown- Oh.
12:39 <RazorSharpFang> You'd expect any network hiccoughs to be "taken care of" by the TCP connection... but... the application logs are full of ErrorTimeout
12:40 <Cepheid> And of course, the hardware doesn't handle overload very well from the sounds of things.
12:41 <RazorSharpFang> A comms overload triggers a specific fault. Our problem is that a comms-fault triggers the emergency-stop, because it can't confirm the stop-button has NOT been pressed.
12:41 <Cepheid> So you can't say, iterate over all the addresses, send out a UDP packet with a unique ID, and then have each device respond with a UDP packet.
12:41 <RazorSharpFang> UDP? No, it's TCP.
12:42 <Cepheid> I know. I was just saying that would be one approach, with much less overhead.
12:42 <RazorSharpFang> UDP is strictly reserved for E-Stop and critical communications.
12:43 <RazorSharpFang> Maybe I'll just have to suck it up and implement my own TaskScheduler that has this kind of behaviour built-in.
12:43 <Cepheid> Otherwise, my first idea would have been to use a broadcast packet to ping all the devices on the network, and have then send a status packet back.
12:44 <Cepheid> But since UDP is for emergency stop and critical communications, that's not viable.
12:46 <RazorSharpFang> Yeah, if I make my own TaskScheduler that has its internal stopwatch, I can throttle the read/write requests to match the hardware capabilities.
12:50 <Cepheid> A task scheduler, with each task/thread waiting up to a maximum of N seconds, would probably work, yes. Start connection/sending data/waiting for response. If M seconds pass, terminate the connection, return the task/thread to the task/thread pool. Main application picks up on the task/thread being returned, and assigns it new work. Just limit the number of tasks/threads to be at most the number of slots available on the
12:50 <Cepheid> PLC.
12:51 <RazorSharpFang> Does that sound reasonable?
12:51 <Cepheid> I would assume if the connection is terminated, any packets in transit would not actually be buffered on the PLC, and discarded.
12:51 <Cepheid> It'd be a good start.
12:52 <Cepheid> As for how it'd be implemented, it depends on the language. In C/C++, I know how to do timeout stuff with reading.
12:52 <Cepheid> C#, not so much.
12:53 <RazorSharpFang> This is C#, so I'd create a class that overrides TaskScheduler
12:53 <RazorSharpFang> https://docs.microsoft.com/en-us/dotnet/api/system.threading.tasks.taskscheduler?view=net-5.0
12:53 <Cepheid> Mmm.
12:54 <Cepheid> I was talking more on the communications side, instead of using like, a stopwatch. There's usually a way to tell the networking API to wait up to N seconds for receiving data on a socket.
12:55 <Cepheid> As for what to do when an address doesn't respond..
12:55 <Cepheid> I'd put it somewhere down the line in the queue of addresses to retry it again at a later time. Possibly doubling the distance in the queue every time it fails to respond. After N failed responses, I'd just assume it's down.
12:56 <RazorSharpFang> Well, all of these occur on the same socket
12:56 <RazorSharpFang> Somehow
12:56 <Cepheid> TCP/IP doesn- ...
12:56 <Cepheid> Are you sure it's TCP/IP and not UDP/IP?
12:56 <RazorSharpFang> I am sure.
12:56 <Cepheid> Because each connection requires it's own socket.
12:57 <RazorSharpFang> It uses a single connection, yes.
12:57 <Cepheid> You can't use one socket for multiple TCP/IP connections, as far as I know.
12:57 <Cepheid> ... Okay, let me ask a question.
12:57 <Cepheid> Is the problem you're having that it's going through each address sequentially, and sometimes the process just gets stuck waiting on one address for 5 seconds before it continues onto the next address?
12:58 <RazorSharpFang> Something like that, yeah.
12:59 <Cepheid> So you're going "Okay, I checked 192.168.1.1, next let's check 192.168.1.2. Hmm, that's taking a while, let's wait.... Okay, 5 seconds have gone by with no response. Let's go check 192.168.1.3 now."
12:59 <RazorSharpFang> That's not what I mean by address. I mean memory-address.
12:59 <RazorSharpFang> I have to address the memory on the target device.
13:00 <Cepheid> Oh, you're reading memory on a device remotely.
13:00 <Cepheid> So you're doing clustered computing.
13:01 <RazorSharpFang> It's something like that. The Plc is very good at interacting with Servos, hydraulic pumps, voltage readings etc.
13:01 <RazorSharpFang> https://github.com/libplctag/libplctag - this is the C/C++ library, that has a C# wrapper library for it.
13:02 <Cepheid> Okay, so now I have to start over, because I assumed this was some sort of ping-multiple-devices-to-see-if-alive thing.
13:03 <Cepheid> But now it sounds more like you're requesting memory data from a single device over the network.
13:03 <RazorSharpFang> Yes, that's right.
13:04 <Cepheid> And I'm assuming that the online/offline state that you're looking for is bit/byte data in memory of that single device.
13:04 <Cepheid> Which is actually referring to the status of devices connected to the PLC.
13:04 <RazorSharpFang> Yes, as well as Plc-internal memory, such as the readings from those devices, averages, sums etc.
13:05 <Cepheid> Okay, I think I see what's going on now.
13:06 <Cepheid> When you issue a request over that TCP/IP socket, and it takes a while for it to respond, you have to wait until it either times out or the response comes before you can issue another request.
13:06 <RazorSharpFang> Yeah, but while that's travelling over the pipe I can send additional different requests.
13:07 <RazorSharpFang> In our scenario, the devices are somewhere between 20ms to 120ms comms-time depending on the conditions.
13:08 <Cepheid> You can send out multiple requests, but you still have to wait for the responses to come back in the same order, due to TCP/IP's strict need to maintain packet sequences.
13:09 <Cepheid> So even if another response might arrive before an earlier one, you won't see it until that earlier one arrives?
13:09 <RazorSharpFang> Yeah, so that doesn't explain the weird behaviour I'm seeing in the logs.
13:09 <Cepheid> Which is why the delay is a problem.
13:10 <Cepheid> Can the PLC handle multiple concurrent TCP/IP connections?
13:10 <RazorSharpFang> It can, but only when the hosts are different. It's expecting a connection per peer.
13:11 <Cepheid> So that rules out setting up multiple connections and using them in a roundrobin fashion.
13:11 *** Joins: AppleDash (appled@Gladiolus.Rocks)
13:11 <RazorSharpFang> That's also behaviour not exposed to me by the library I'm using anyway.
13:12 <Cepheid> And UDP isn't allowed either, even though that'd solve the problem.
13:12 <RazorSharpFang> To be clear, it's not that it's prohibited. It's that UDP is for sending update signals. The protocol for requests or reads is implemented using TCP.
13:13 <Cepheid> Probably due to the reliability aspect. If you can connect to the server, it'll eventually get back to you with the requisite data.
13:13 <Cepheid> The problem is that TCP/IP does not allow out-of-order delivery.
13:14 <Cepheid> So if you make ten different requests for data, you will get the data back in the exact order requested, regardless of whether or not network conditions result in the requests coming back out-of-order.
13:14 <RazorSharpFang> Yeah. These protocols are designed for fixed-plant installations, whereas these are mobile plants, so the protocol isn't quite as well matched to our use-case.
13:17 *** Joins: Angeline (Scootaloo@I.Will.Fly.Higher)
13:18 <Cepheid> I'm at a loss then. The only other idea I can think of is to find a common set of requests that are usually sent out one after the other together, and combine them into a single request that the PLC is programmed to respond to.
13:18 <RazorSharpFang> That CAN be done, but it has other problems too because of course it does.
13:18 <Cepheid> Leads to larger packets.
13:18 <Cepheid> And if it times out, then you lose everything rather than just individual bits.
13:19 <RazorSharpFang> I can query for a atomic field (like a DINT for a 32-bit int, etc) or I can query for an entire structure of atomics.
13:19 <RazorSharpFang> But in order to deal with a structure, I would need to know beforehand how to decode it properly, which chunks map to which values.
13:20 <RazorSharpFang> And judging from the logs, I can already tell that the structures are not kept consistent from one PLC to the next. >.>
13:20 <Cepheid> So the software is different from one PLC to the next, and there's no guarantee requesting one structure from one PLC will result in the same kind of structure from another PLC.
13:21 <RazorSharpFang> That's right. I did a few queries and found the structure size of the payload byte-array changed.
13:21 <Cepheid> Well *YAY*.
13:22 <Cepheid> Hence why you're doing individual requests for bytes, halfwords, words and the like.
13:22 <Cepheid> Because you're guaranteed that regardless of the device, you'll get the data you want.
13:22 <RazorSharpFang> I'm going to see if I can implement a custom TaskScheduler that has the self-limiting factor in and maybe that'll fix all of my issues.
13:23 <Cepheid> Given it's over TCP/IP, over a single socket, I'm not sure it'll work. The out-of-order delivery handling will ensure that packets expecting a response will get their responses in the correct order, regardless of what you do.
13:24 <Cepheid> So if you send requests 1, 2 and 3, you'll get the responses in order of 1, 2 and 3, even if 2 arives before 1.
13:24 <Cepheid> This is why I recommended UDP if possible.
13:25 <RazorSharpFang> Yeah, but my primary concern is sending out additional requests even if previous requests are still pending, but it's been / long enough / which is the critical thing.
13:25 <Cepheid> Ah, right.
13:25 <Cepheid> You can still send packets while waiting for responses.
13:25 <Cepheid> It's a bidirectional pipe, right.
13:26 <RazorSharpFang> Yeah, testing today revealed that if the comms went bad, it would take a while for the various values to show up as stale, because the timeout period prohibited additional requests going out.
13:27 <Cepheid> I'm assuming the initial implementation was "Okay, I sent data, now let's wait for the response." And the issue is in the wait, because it blocks the application from doing further sends.
13:28 <RazorSharpFang> To an extent - I am still doing Parallel.ForEach, I'm just limiting the number of concurrent reads instead of queueing them up in intervals.
13:30 <Cepheid> I need to play around with networking stuff again to do experiments.
13:30 <Cepheid> To figure out details I appear to have forgotten.
13:31 <Cepheid> Like, can I do a non-blocking write to a socket, if there is a thread doing a blocking read on the socket?
13:31 <RazorSharpFang> Hmmm
13:31 <RazorSharpFang> Would you try that in a C++ or C# context?
13:31 <Cepheid> Either or.
13:32 <Finwe> Question: What is the expectation of the distance between two points randomly chosen inside the unit square?
13:32 <RazorSharpFang> I guess it can be between 0.00 to about 1.41 but do you want a probability density function?
13:32 <Cepheid> Greater than or equal to 0, less than square root of 2.
13:32 <Cepheid> Gods damnit cats. Stop vomiting.
13:33 <Finwe> RazorSharpFang: The expected value, ts. the average of all possible cases.
13:33 <Cepheid> What kind of distribution are we speaking of?
13:33 <Finwe> Uniform.
13:34 <Cepheid> Alas, this is outside my area of expertise.
13:34 <Finwe> Random choice usually means uniform distribution.
13:35 <Cepheid> Honestly, intuition tells me it'd converge to 0.7071. But intuition also tells me this is wrong.
13:35 * Cepheid does a quick test with a C# program for funsies.
13:37 <Finwe> The statistical mean should tend to the exact value when number of samples is increased.
13:39 <Finwe> The formulation of the expectation value is also easy, it's just the Euclidean distance between the points multiplied by the pdf of each of the four coordinates and integrated over the unit square.
13:40 <RazorSharpFang> An integration over a 2D space?
13:40 <Finwe> RazorSharpFang: Integration over unit interval to power four.
13:40 <Cepheid> After generating 500,000 line segments, with random points ranging between (0,0) and (1,1), I get an average distance of 0.521.
13:41 <Finwe> Cepheid: Yup, the next digit should be 4.
13:41 <RazorSharpFang> Actually Finwe you might be the best person to ask this to. How does one determine if two arbitrary sized and shaped polygons have intersecting area?
13:41 <Cepheid> It was approaching 4, yeah.
13:41 <Cepheid> RazorSharpFang: Separating Axis Theorem can help there.
13:41 <Finwe> Separating hyperplane, yes.
13:42 <RazorSharpFang> Because looming on the to-do list is to get a better collision-detection and avoiding service.
13:42 <Cepheid> It's a common method used in collision detection for various shapes.
13:42 <Cepheid> I don't think it works for non-convex polygons though. Which introduces problems.
13:42 <Finwe> You could consider convex hulls for the said polygons.
13:42 <Cepheid> For that, you need to break the polygon up into convex polygons through some sort of triangulation method, and then test against each of the convex polygons.
13:43 <Finwe> But that is somewhat restrictive.
13:43 <RazorSharpFang> Is it easier if we restrict it to convex polygons?
13:43 <Cepheid> It is.
13:43 * Finwe nodnods.
13:43 <Cepheid> Polygon triangulation is a bitch to do fast.
13:44 <Cepheid> So, you either precompute it and store it, or wrack your brain on one of the various complex methods that gets you better than n^2 performance.
13:44 <Finwe> RazorSharpFang: For convex sets you directly have https://en.wikipedia.org/wiki/Hyperplane_separation_theorem
13:45 <Finwe> And the problem that arises with nonconvex sets: https://en.wikipedia.org/wiki/Hyperplane_separation_theorem#/media/File:Separating_axis_theorem2.svg
13:45 <Cepheid> Fortunately, most collision detection falls under convex.
13:45 <RazorSharpFang> Ah
13:45 <Cepheid> Anything more complex can usually be broken down to convex manually.
13:46 <Cepheid> Like, a convex polygon would be a mesh that perfectly emcompasses a human being.
13:46 <RazorSharpFang> Does the computation get more severe with higher edge count?
13:46 <Cepheid> But you can break that down into a set of convex polygons to recreate an approximate shape of a human being, and just test against each polygon.
13:46 <Cepheid> Yes, because it has to test each edge.
13:47 <RazorSharpFang> I mean, for safety you could just create a box that's big enough to envelope.
13:47 <Cepheid> Usually, you use multiple levels of collision testing.
13:47 <Cepheid> A simplified bounding box to determine if there MIGHT be a hit.
13:47 <Cepheid> If this box collides with another such bounding box, then there's a potential collision.
13:47 <Cepheid> So you go one step further, and test against more precise bounding boxes.
13:48 <Cepheid> If the more precise boxes collide, then you know you have a collision.
13:48 <RazorSharpFang> Is there an equivalent algorithm for ellipses ?
13:49 <Cepheid> For circles, it's relatively simple.
13:50 <RazorSharpFang> Is this one of those weird things where ellipses are different like calculating the circumference of an ellipse?
13:52 <Cepheid> For circles, you can use vector projection to determine if a circle intersects a line. It's slightly complicated because there's some edge cases to worry about, but..
13:52 <Cepheid> But I believe there's an SAT approach for circle-polygon as well, which defeats my idea.
13:53 <Cepheid> Ellipses..
13:53 <Cepheid> No idea. Never tried.
13:53 <RazorSharpFang> I mean ellipse-ellipse collision, to make it simpler.
13:53 <Cepheid> Circle-circle is simple. Take the distance between the center of the two circles. If it's less than the sum of the radii of the circles, there's a collision.
13:53 <Cepheid> Ellipse-ellipse, in which they are not round circles, that's a bit different.
13:54 <RazorSharpFang> Ellipses are different aren't they
13:54 <RazorSharpFang> Hmm, I know. I'll just render the shapes and see if they share pixels. :3
13:54 <Finwe> Circles are just a special case of ellipses where the semimajor axes are equal.
13:55 <Cepheid> Apparently, what you're asking involves multidimensional calculus.
13:55 <Finwe> *semimajor and semiminor
13:55 <Cepheid> Long story short, it's not easy.
13:56 <Finwe> It's the same with the two points in a unit square. It's easy to formulate, but calculating the exact answer is quite tricky.
13:57 <Finwe> The exact expected value of the distance between the randomly chosen points inside the unit square is (2 + √2 + 5 ln(√2 + 1))/15.
13:57 <Cepheid> You're better off replacing an ellipse with circles, triangles and rectangles.
13:58 <Cepheid> Or an approximation of an ellipse using a polygon.
13:58 <Cepheid> Finwe, I'm curious, what brought up that question anyways?
13:59 <Finwe> A friend asked me. It sounded rather simple, but presented to be rather tricky.
13:59 <Cepheid> https://www.geometrictools.com/Documentation/IntersectionOfEllipses.pdf Here, RazorSharpFang.
13:59 <Cepheid> Yeah, I envy you Finwe, you can solve that kind of stuff. I can't.
14:00 <Cepheid> RazorSharpFang: Ideally, for collision detection algorithms of all types, I recommend reading Christer Ericson's Real Time Collision Detection.
14:00 <Finwe> The E(d(p1,p2) = ∫∫∫∫1
14:01 <Finwe> The E(d(p1,p2) = ∫∫∫∫ 1⁴√((x1-x2)² + (y1-y2)²) part was easy.
14:02 <Finwe> Oops, E[d(p1,p2)]. I don't know why you're supposed to use square brackets with expected values.
14:04 <Finwe> That's supposed to be 1 to power four, not 1 times fourth root.
14:06 <Finwe> If you take the variables to be the differences in x and y coordinates, it already becomes a bit simpler, 4∫∫(1-x)(1-y)√(x²+y²), where x = x1-x2 and y = y1-y2.
14:06 *** Quits: Crimson_Tail (zeta@batpones.are.for.snuggles) (Connection closed)
14:06 <Finwe> 4(1-x)(1-y) is the joint distribution of the differences.
14:07 <RazorSharpFang> Cepheid, yeah, the other problem is that it needs to be fast.
14:07 <Cepheid> Hence why I suggested using simpler shapes.
14:08 <RazorSharpFang> I thought of the ellipse AS a simpler shape. ;-;
14:09 <Cepheid> Circles, a special case of ellipses are easy and simple.
14:09 <Cepheid> But ellipses in which one of the axes is wider than the other..
14:09 <Cepheid> That creates trouble.
14:09 <Cepheid> You're better off approximating with a polygon or other shapes.
14:09 <RazorSharpFang> In our case one is definitely wider than the other, but almost double or so
14:10 <Cepheid> I'm locked up because I don't know how I want to implement entities.
14:11 <Cepheid> Sometimes I wonder if I should just try for a simpler project altogether to learn. Like an arcade shooter.
14:11 <Finwe> In general, finding the distance between two ellipses is equvalent to solving a group of six equations.
14:11 *** Joins: Crimson_Tail (zeta@batpones.are.for.snuggles)
14:11 <Cepheid> That's simple to do, because the entities are straightforward to implement. It's all AI, bullet engines, and creating patterns.
14:12 <RazorSharpFang> Welp, going to throw out ellipses then.
14:13 <Cepheid> I'm preferential to the monolithic approach to entities.
14:14 <RazorSharpFang> As opposed to the component approach?
14:14 <Cepheid> For smaller games, the monolithic approach is simpler to implement, but unweildy.
14:14 <Cepheid> The component approach adds complexity, but makes it easier to compose an entity of some sort.
14:14 <Cepheid> The part I'm getting locked up with is HOW to implement the component approach.
14:15 <Finwe> RazorSharpFang: Basically you would solve max F = d² + λ₁F₁ + λ₂F₂ with respect to F₁=F₂=0, where F₁ and F₂ are the quadratic forms describing the ellipses.
14:16 <RazorSharpFang> Oh dear
14:16 <Finwe> No, min, not max.
14:17 <Finwe> d being the distance between two points chosen from the ellipses.
14:17 <Finwe> The usual Lagrange conditions give four equations and the constraints two more.
14:18 <Finwe> Which is enough for finding x1, x2, y1, y2, λ1 and λ2.
14:19 <Finwe> Then you can just plug the x:s and y:s back to the formula for distance.
14:19 <Finwe> If it's not positive, then the ellipses either touch or intersect.
14:20 <RazorSharpFang> I don't suppose there's any shortcuts you can take if you don't need an exact answer, just "yea some intersection" or "no, no intersection"
14:24 <Finwe> The shortest distance between the ellipses is reached along a line on which the projections of the ellipses only intesect if the actual ellipses also intersect, but is there a trivial way of finding that line?
14:24 <Finwe> Then you would have the separating axis mentioned by Cepheid.
14:26 * Cepheid figured out how to do an ECS. o3o
14:27 <RazorSharpFang> What's an ECS?
14:27 <Cepheid> Entity Component System.
14:27 <RazorSharpFang> Ah
14:27 <Finwe> Is the line joining the centre points of the ellipses always the separating axis?
14:27 <Cepheid> Not the most intuitive solution I have in mind, but I don't expect a large number of entities.
14:28 <Finwe> Obviously not.
14:29 <RazorSharpFang> Yeah, that's a problem.
14:30 * Cepheid flops. Headache is setting in.
14:30 * Cepheid decides to keep a running tally of when these headaches start, to see if there's an approximate amount of time between waking up and when they start.
14:31 <RazorSharpFang> Our current collision detection system was written in vb6
14:31 <Cepheid> "our"? Are you working in a team.
14:31 <RazorSharpFang> I am.
14:31 <Cepheid> Nice.
14:31 <Cepheid> I'm solo, as usual.
14:32 <RazorSharpFang> We basically got handballed a project that the development team in America didn't want to work on anymore that the customers in Australia were wanting improvements on.
14:33 * Schism giggles at ragging on fonts.
14:33 <Cepheid> Not game related, I assume.
14:34 * Schism doesn't think Lucida Console's ampersands are that bad, though...
14:34 <RazorSharpFang> Not game related, no, but game technology's looking pretty applicable.
14:34 <Cepheid> Heh.
14:36 <Finwe> Monaco is the best console font.
14:41 <RazorSharpFang> I'm just so used to Courier New or Noto Mono at this point.
14:44 <Schism> Consolas isn't bad, too.
14:44 <Schism> Bit of a narrower-width, though.
14:47 *** Quits: Schism (Schism@royalkitchen.canterlot.equ) (Quit: A single voice cannot sing in harmony.)
14:47 *** Joins: Schism (Schism@royalkitchen.canterlot.equ)
14:47 * Schism tries Noto Mono. "Hmm, not bad."
14:48 <Schism> At least, it works well enough.
14:50 <Schism> Monaco gets points for having a more visible difference between 0 and O.
14:54 * Schism splorfs at the sequel to Magic School Days, wherein Cadence gives Chryssy a vacation from being queen, and immediately sends an army of lovebugs to play Cupid with the inhabitants of Terra.
15:03 <Schism> One should be careful when providing the Princess of the Night with choklit-covered espresso beans.
15:25 <DerpyBot> New post on Equestria Daily by Makenshi: Pony Concept Music: Night Blaze - Discordia Equis [Orchestral] [ https://tinyurl.com/ydqpxr6b ]
15:27 <Finwe> Monaco is the standard font of MacOS Terminal. I don't remember which one I have in my Linux terminals.
15:28 <Finwe> In Manjaro it seems to be "Monospace Regular".
15:28 <Schism> There's plenty of possibilities, there.
15:29 <Schism> Serif terminal fonts, augh!
15:32 <RazorSharpFang> Off to sleep, good night.
15:32 <Schism> Rest well.
15:32 *** Quits: RazorSharpFang (FourthChoic@Pony-ub7st0.tpgi.com.au) (Connection closed)
15:34 *** Quits: Taoki (MirceaKitsu@Pony-sme.fv9.240.188.IP) (Connection closed)
15:35 *** Joins: Taoki (MirceaKitsu@Pony-sme.fv9.240.188.IP)
15:38 <Finwe> In Xubuntu it seems to be DejaVu Mono Book.
15:39 <Finwe> The other installation is on this computer, so I would be forced to reboot.
15:55 * Schism randomly rolls over to Adra, and offers grilled cheese sammiches with tomato soup.
15:58 * Finwe noms on crisp bread with green tea.
15:59 * Schism passes Finwe some thin slices of emmentaler to enjoy with the crisp bread.
15:59 <Finwe> I already had that on it.
15:59 <Finwe> o3o
15:59 <Schism> Well. o3o
16:00 *** Quits: Cyan_Spark (Cyan_Spark@sparks.only.last.so.long) (Quit: sparks only last so long)
16:01 <Schism> "How did you humans manage to invent a food that gets better the more holes are in it?" --Sgt. Ebbinoth
16:02 <Schism> Ebbirnoth*
16:04 <Finwe> Pel Ebbirnoth?
16:04 <Schism> Ebby, aye.
16:05 <Schism> (Quote from: https://www.schlockmercenary.com/2009-11-13 )
16:05 <Finwe> Ovalkwiki presents him as Lieutenant: https://www.ovalkwiki.com/index.php/Lieutenant_Pel_Ebbirnoth
16:07 <Schism> Hmm, you're right, and a few strips later he's wearing the butter bars. He was first introduced as a Sergeant. https://www.schlockmercenary.com/2006-03-02
16:07 <Finwe> Oh, he was promoted to officer at some point in 2007 or 2008.
16:08 <Finwe> https://www.schlockmercenary.com/2007-08-14
16:08 <Finwe> He's still called Sgt there.
16:09 <Finwe> And he's wearing Lt ensignia here: https://www.schlockmercenary.com/2008-04-29
16:10 <Schism> It helps that Tagon's Toughs wear colour-coded uniforms. As a note, in that one, while Ventura appears to be wearing similar epaulets to Ebbirnoth's, she's an ensign.
16:10 <Schism> Triangular epaulets as opposed to rectangular.
16:11 <Finwe> Sub-Lieutenant. o3o
16:11 <Schism> Kevyn's epaulets, on the other hand, should not be construed as a mark of his rank. While he qualifies as a commander, when your epaulets contain a certain amount of fullerine-laced antimatter, you get to design them however you want.
16:13 <Schism> Randomly: I've always read 'ensign' as 'officer in training'. >.>
16:14 <Finwe> That would be Officer Cadet or Midshipman.
16:15 <Schism> Ah right, 'Cadet', thank you. Forgot about that one!
16:15 <DerpyBot> New post on Equestria Daily by The Illustrious Q: My Little Pony Friendship is Magic #100 Solicitation Revealed - Writer, Synopsis, and Artist [ https://tinyurl.com/ydpuhtus ]
16:17 <Schism> These are of course English approximations of the cast's actual ranks compared to one another. It's a big galaxy, there are a lot of organizational charts, and I suspect that when first contact arose, everyone on Earth was struck by, then either encouraged or depressed by, the fact that institutional hierarchies are as inscrutable to outsiders as ever.
16:22 *** Quits: ryaxnb21 (ryaxnb@Pony-i7u332.ca.comcast.net) (Ping timeout: 121 seconds)
16:35 *** Joins: ryaxnb21 (ryaxnb@Pony-i7u332.ca.comcast.net)
16:41 *** Joins: Ali (Ali@Pony-n3j093.iplsin.sbcglobal.net)
16:41 *** ChanServ sets mode: +qo Ali Ali
16:44 *** Joins: Pony|86390 (Pony86390@Pony-taj8dp.cable.virginm.net)
17:00 * Cepheid loads up FF14.
17:03 <Cepheid> Oh my gods all the quests I have are for some form of duty or another.
17:03 <Finwe> Lt Pony|86390, Miss Ali.
17:03 <Finwe> o7
17:04 * Ali squeaks at Finwe
17:04 * Finwe squeaks back at Ali.
17:04 * Ali oils Finwe
17:05 <Finwe> :3
17:05 * Cepheid lands her fat cat atop Schism.
17:06 <Finwe> Miss Ali of Indiana.
17:06 <Schism> Cephy: I can join you soon, I just need to eat something and perform a quick store run beforehand.
17:07 * Ali steals Cepheid cat cause hers just left
17:07 * Ali sits on Finwe and gwumps
17:07 <Finwe> But not Avon?
17:07 <Schism> Cepheid, on her mount (well, not Cepheid, but close enough): https://onlinestore-img.finalfantasyxiv.com/onlinestore/item/8b6e35034fe2abe4b33289a9daefa98bd3fdc276047d8561c4fe5dcecf64fea4/0051/2cd2f3cb5bb4ecca62b3d3e0d8b5084020599895eaa6bee05d65c120c186d320_sub3_detail.jpg
17:08 * Pony|86390 wave.
17:09 * Schism waves, while nomming her black bean ramen.
17:09 <Schism> Turns out that this is a really good flavour. o3o
17:10 <Cepheid> Basically yeh.
17:10 <Cepheid> Oh my gods, all the quests anywhere and everywhere that I need to get cleared up.
17:11 <Cepheid> And the map doesn't even tell me if there are quests for me to do in a region.
17:11 * Finwe is sat upon. A dumb move from Ali, as her hindquarters are now oily.
17:11 <Schism> Typically, you shouldn't have to wander THAT far from where you are...
17:11 <Schism> Last you left off, weren't you about to do the first dungeon of Shadowbringers?
17:11 * Ali only oiled Finwe's squeaker, their backside is not oiled
17:12 <Cepheid> I believe so.
17:12 <Schism> Alright. Well, if you want to hold off for a bit, I can run healer/tank on that one. I think tank, anyway. I think I left PLD at 70...
17:12 <Cepheid> I'm speaking of all the side quests and such.
17:12 <Schism> Oh yeah. o3o
17:13 <Schism> Shadowbringers has an interesting change. All the side quests provide experience commensurate to your level.
17:14 <Schism> Much like Beast Tribe quests. So don't worry too much about skipping them right now.
17:17 <Cepheid> Actually I suspect I already passed the first dungeon of Shadowbringers. Do you know what it's called off hand?
17:17 <Schism> Holminister Switch.
17:17 <Cepheid> Ah. No.
17:17 <Schism> It's the level 71 dungeon just off Lakeland.
17:17 <Cepheid> I don't have any of the Shadowbringers dungeons unlocked yet at all, anyways.
17:18 <Schism> You basically have to beat the main quests in both Amh Araeng and Kholusia (the parts you can reach, anyway.)
17:19 <Schism> From there... welllll...
17:19 <Schism> Do you remember that one cutscene? The one which is part Resident Evil, part Parasite Eve?
17:19 <Cepheid> As for the side quests, the reason I'm concerned is with respect to timeline stuff. It'll be weird if I do them all so late that they make no sense of story.
17:19 <Cepheid> I cannot say I do.
17:19 <Schism> Maybe you haven't done Amh Araeng yet.
17:20 <Schism> That's the half with Alisaie.
17:20 <Cepheid> The last thing I recall doing was an event involving her brother out in a desert.
17:21 <Schism> Ah, that'd be Alphinaud's half, the one which involves winding up in Eulmore and figuring out just what's wrong with the place.
17:22 <Schism> Kholusia is a bit more like Lominsa, though.
17:22 <Schism> (Well, La Noscea.)
17:23 <Cepheid> Currently, I'm in the quest chain to find a power source for a field generator.
17:23 * Schism flops over to the store for a few minutes. Well, after she uploads what's currently part of 'If Wishes were Ponies' to her phone.
17:23 <Schism> Ah...
17:26 <Cepheid> https://i.imgur.com/KPbK6Sn.png
17:29 <Cepheid> It flies for the record. How, I dunno.
17:32 * Finwe plays a snippet from Richard Wagner's Lohengrin.
17:38 *** Quits: ADragonDreaming (ADra@Pony-52e5uh.20dc.fhnt.0406.2601.IP) (Ping timeout: 121 seconds)
17:42 <Cepheid> Geezus, Sadu. It was just a duel, you were going to call down a meteor to end it?
17:55 <Cepheid> Ah, poor Magnai. Shot down harder than Dalamud.
17:58 *** Joins: ADragonDreaming (ADra@Pony-6695q9.20dc.fhnt.0406.2601.IP)
18:25 <Schism> Little sun!!! LITTLE SUN! AhahahahaHAHAhaha...
18:25 <Schism> Sadu just laughing herself sick at the end of that quest. <3
18:28 * Finwe prepares for cooking pease soup/porridge tomorrow.
18:28 *** Joins: Crimson_Ta1l (zeta@batpones.are.for.snuggles)
18:28 *** Quits: Crimson_Tail (zeta@batpones.are.for.snuggles) (Connection closed)
18:29 <Finwe> Take one kilogramme of yellow peases, put into water overnight, change water, cook for a couple of hours with onion, carrots and marjoram, enjoy. o3o
18:29 <Finwe> Vegetable or beef stock and salt can also be added.
18:30 <Finwe> And bay leaves.
18:30 <Schism> Of course bay leaves.
18:30 <Schism> Celery is also a fine addition.
18:30 * Finwe puts bay leaves into Schism's bed.
18:30 <Finwe> Now you can rest on your laurels. o3o
18:31 <Schism> Meanwhile, I forgot to pick up mustard. :< Also also, the store does not have black pudding. Got everything else there, just not that. So I am annoyed.
18:31 <Cepheid> Everyone's unconscious! *Wavey arms*
18:34 <Schism> onoes!
18:34 <Schism> Tataru's not, though.
18:34 <Finwe> Schism: Ah, mustard is essential in pease soup.
18:34 <Schism> Surely, she will be able to bring the Scions back to their true glory.
18:35 <Schism> Finwe: I've oft found it so, especially ham-and-pease soup.
18:37 * Schism blinks, then looks back up. "Wait. That thing with Alphinaud. That was... the meeting with the leader of a resistance movement in Garlemald.
18:41 <Finwe> The local tradition would require ham, shoulder or loin in pease soup, but I usually don't add meat at all.
18:43 <Cepheid> Mmm. Poison gas.
18:44 <Schism> Black Rose, yeah.
18:46 <Cepheid> How is it a walking potato can move so quickly?
18:47 <Schism> Remember when Tataru was just fleeing all over the fight? Yeah.
18:50 *** Quits: NitroTheFurry (Nitro@Pony-l42sv5.mi.comcast.net) (Connection closed)
18:50 <Schism> Say, now that you're at that point, Cephy, have you finished the SB Hildibrand questline?
18:54 <Cepheid> I do not believe so.
18:56 <Cepheid> I love how Matoya and everyone around her speaks of Yshtola as if she were a literal cat at one point.
18:56 <Schism> Yes. I can't imagine why they would do such a thing.
19:03 <Cepheid> I imagine a Miqo'te child, ravenous and screechy, just pouncing anything that moves and ripping it apart now.
19:03 <Schism> I'm sure Khloe would never do such a thing.
19:04 * Schism decides to become a chicken, boo.
19:05 <DerpyBot> New post on Equestria Daily by Sethisto: Drawfriend Stuff (Pony Art Gallery) #3672 [ https://tinyurl.com/yjtggr6r ]
19:15 * Schism points at Cephy's mango roll.
19:33 * Finwe noms on Ali's production facilities.
19:33 * Ali flops over Finwe and grumpymares
19:33 * Finwe patpathugs the grumpy Ali.
19:34 *** Joins: PinkieShy (coolm@Pony-ck81je.67-212-45-net.sccoast.net)
19:34 <Finwe> Mr PinkieShy.
19:34 * Finwe doffs his hat.
19:34 <PinkieShy> Hiya Finwe :)
19:35 <Finwe> Hmm, I have to buy some marjoram and carrots in the morning for my pease soup.
19:35 * Finwe has no carrots and only a wee bit of marjoram left.
19:36 *** Joins: NitroTheFurry (Nitro@Pony-l42sv5.mi.comcast.net)
19:57 *** Joins: Dappled (IceChat9@Pony-dsnf91.ok.cox.net)
20:02 * Dappled returns to shiny hunting as a thing to kill time.
20:13 * Lumindia_ boops Dappled
20:13 <Lumindia_> henlo
20:14 * Dappled falls over.
20:14 * Dappled waves to Lumindia_ as he hangs out on route 1. Need them shiny Wooloo.
20:14 * Lumindia_ lays on Dappled
20:14 * Lumindia_ chews on their ear as they hunt for sheep
20:14 * Dappled ear flaps!
20:15 <Dappled> Yeah, I got tired of the Masuda method, so now I'm encounter chaining.
20:16 <Ali> I've only seen one shiny in SnS and it was trash
20:16 * Dappled doesn't care about how good/meta a mon is, only in adding to the collection.
20:17 <Ali> No, I mean it was literally trash
20:17 <Ali> It was Garbador
20:18 <Dappled> It's doing it's best!
20:21 *** Joins: LibrarianofHope (Librarianof@Pony-inr.lo2.147.189.IP)
20:30 * Schism pokes at her Mechanist. Comes up with a random glamour set which looks fairly good!
20:30 <Schism> Skallic Jacket of Aiming does NOT take dyes, though.
20:30 * Dappled chews on wooloo?
20:33 <LibrarianofHope> owo
20:34 * LibrarianofHope wololos at Dappled
20:34 <Ali> Wrong game
20:34 <Ali> This isn't Age of Empires
20:34 * Dappled 's outfit changes colors?
20:38 * Angeline eats Miracle Whip out of the jar.
20:39 * Schism adds cream of tartar and pickle relish to Angelina's Miracle Whip. Then she adds tuna. Then she slathers the mixture onto bread and grills the resultant sandwiches.
20:39 * Schism then melts gruyere atop, broils the sandwiches for a minute or two, and garnishes with a little parsley and dill weed.
20:40 <Schism> Angelina: Also good is of course the classic miracle whip, peanut butter and banana sandwich. On white bread, naturally.
20:41 <Schism> Angeline*
20:41 * Angeline icks.
20:41 <Schism> Icks at which? The tuna, or the PB, banana and miracle whip?
20:42 <Angeline> Bananas!
20:42 <Angeline> Gross!
20:42 * Dappled le gasps!
20:42 * Schism could alternately steal some of Angeline's miracle whip and mix it in with some rotini, chopped chicken, green onions, diced tomatoes, celery, and maybe a little carrot.
20:42 <Schism> Because chicken salad = <3.
20:43 <Angeline> Ewww, onions!
20:43 * Schism peers at Angeline.
21:03 * Schism suppooooooses she might just fry up some grilled cheese sandwiches with miracle whip instead of butter. Provides Angeline with one.
21:04 * Angeline is too busy eating her jar.
21:04 <Schism> Ech. Better to have it with other things! ...like onions.
21:04 <Schism> Or fiiiiish.
21:04 * Dappled feels weird having a legendary pokemon using quick attack. But more PP is currently better than stronger moves.
21:05 <Schism> Nothing wrong with a +1-priority move.
21:06 * Dappled holds up the level 4 Wooloo that he's feeding to the level 100 Zamazenta.
21:06 * Schism headtilts at Dappled. "Def EV?"
21:07 * Dappled has no idea on what EVs this has. Just encounter chaining for shiny odds.
21:07 <Schism> Oh, I see. o3o;
21:08 * LibrarianofHope dances chonky
21:08 <LibrarianofHope> im testing the market around a painting studio in mexico city
21:08 <LibrarianofHope> so far it seems doable
21:09 <LibrarianofHope> apparently painters are offered like a 100 bucks for painting horde units
21:09 <LibrarianofHope> and they think they too good
21:09 <LibrarianofHope> owo
21:09 <LibrarianofHope> perfect market to take really
21:10 <Schism> If'n you can pull it off, absolutely go for it!
21:10 <LibrarianofHope> owo
21:10 * LibrarianofHope wololos at Ali
21:22 * Ali is immune to conversions
21:23 * Ali dumps 600 gaunts onto LibrarianofHope
21:23 <LibrarianofHope> 600 bucks please
21:23 <LibrarianofHope> heck ill do it for 400
21:24 <Ali> You're not even questioning why or how a Nid player has that many gaunts
21:24 <LibrarianofHope> im a painter, not a detective
21:25 <Ali> See back in 3rd, gaunts weren't as totally useless as they are now
21:25 <Ali> And boxes got you 8 Terms and 8 Horms
21:25 <Dappled> But why would you play Nids when Squats are coming back?
21:25 <DerpyBot> New post on Equestria Daily by Makenshi: Loss Music: brambleshadow4 - Dear Princess Celestia (feat. Kyra) [Orchestral] [ https://tinyurl.com/yepdy25g ]
21:25 <Ali> Brood sizes were 8-32 back then
21:25 <Ali> I honestly used all six allotted troop choices with gaunts
21:25 <LibrarianofHope> im gonna learn them custodes
21:25 <Ali> I wasn't that they were good
21:26 <LibrarianofHope> im making a shield host called Glorious Defiance
21:26 <Ali> It was the fact that you'd be scared shitless that over 200 mindless gaunts were running across the board at you and didn't give a flying *yay* about morale
21:26 <LibrarianofHope> hive fleet ali
21:26 <LibrarianofHope> cutest killer bugs ever
21:26 <Ali> See back then
21:27 <Ali> The game had more limits on how much gunfire was brought to the fight
21:27 <Ali> Nids were pure melee in 3rd
21:27 <Ali> so if outnumbered them by at least 5:1, they wouldn't have enough shots her phase to deal with them all
21:27 <LibrarianofHope> owo
21:28 <Ali> This was back when a marine army was around 40 models
21:28 <Ali> They just couldn't deal with all the ankle biters
21:28 <Ali> Also they didn't have like 3 base attacks each :T
21:29 <Ali> Now gaunts fold like butter to everything since every gun around gets like what feels like four shots each
21:30 <LibrarianofHope> owo
21:31 <Schism> When a modern Genestealer goes down against a mere space marine without the dice being com_pletely_ futzed, it's not hard to think that the current GW crew doesn't even care anymore.
21:31 <Dappled> Does that mean that the Tau are now the best defense against the Tyranids?
21:31 <Schism> No. The Space Marines are now the best defense against the everything.
21:32 * Dappled stans Commander Farsight.
21:32 * Schism blehs, finishes some of the dishes, then blinks. "We've had this conversation before."
21:33 * Dappled does not remember.
21:33 <Schism> Deja vu.
21:34 * LibrarianofHope stans Kitten
21:34 <LibrarianofHope> Farsight is pretty neat
21:34 <LibrarianofHope> i got two by accident
21:34 <LibrarianofHope> worse part is GW sent me 3, one disappared
21:35 <LibrarianofHope> freaking mexican post
21:35 <Schism> s/mexican//
21:35 <LibrarianofHope> ?
21:35 * LibrarianofHope wololos at schism
21:35 <Schism> Freaking US postal service, freaking Canada Post, freaking Mexican post. <.<
21:37 * Dappled grumbles quietly. Apparently according to the Pokemon Company, encounter chaining isn't a thing for increasing shiny odds. Just number battled.
21:38 <Schism> hmmm.
21:39 <Schism> Maybe not in Sword/Shield, but I am quite certain that it's a thing in older games.
21:39 <LibrarianofHope> encounter chaining
21:39 <Dappled> Yeah, this is true.
21:39 * Dappled is currently in SwSh.
21:39 <LibrarianofHope> like walking in a cube ?
21:39 <LibrarianofHope> in the grass
21:39 <LibrarianofHope> grinding ?
21:40 <Schism> LibrarianofHope, with the PokeRadar enabled, a patch of grass will start shaking after encountering a Pokemon. By heading over to that patch, the player will encounter a Pokemon of the same type.
21:40 <LibrarianofHope> ahh
21:40 <Dappled> In Let's Go, its just encountering the same pokemon repeatedly, though that increased global shiny odds as opposed to just for that one.
21:40 <Schism> This can be chained to ensure that the same type is fought repeatedly. In older gens, I'm _quite_ certain that this also increased the rate of shiny Pokemon.
21:41 <Schism> I guess if it's a matter of how many you fight in a row, that's roughly equivalent to chaining.
21:45 * Dappled effectively chains anyway. Odds max out at 500 battled, so I 've got to get that number up.
21:46 * Schism also throws a water balloon filled with Pokerus at Dappled's team.
21:46 <Ali> Well chaining will return with DP if that mechanic is kept
21:47 <Dappled> True.
21:47 <Schism> DP?
21:47 <Dappled> Diamond Pearl.
21:47 <Ali> Diamond and Pearl
21:47 <Schism> Oh, the remakes.
21:47 <Ali> It better have Shaymin in it *puffycheeks*
21:48 <Dappled> We've got quite a ways for that.
21:49 * Schism picks up her Switch to see if she has enough SDPP to get her puppy pins leveled.
21:49 <Ali> You need 2 million more steps
21:50 <Ali> Or hurry it now for only $19.99
21:50 <Schism> Cutie Beam, Happy Beam, and Love Me Tether leveled properly...
21:51 <Schism> Happy Beam might need more time off. It's level 3/6.
21:54 <Dappled> sdpp?
21:55 <Schism> Shutdown PP. Experience gained by leaving the game off for a while.
21:56 * Finwe noms on Ali's tail.
21:57 <Finwe> Messrs LibrarianofHope and Dappled.
21:57 * Finwe doffs his hat.
21:57 <Finwe> Good evening and good night.
21:57 <Finwe> !lullaby
21:57 * DerpyBot carries Finwe off to bed
21:57 * DerpyBot tucks Finwe in and hums a lullaby
21:57 <Finwe> !shoo
21:57 * DerpyBot sways from side to side, quietly humming "shoo be doo shoo shoo be doo"
21:59 *** Quits: Taoki (MirceaKitsu@Pony-sme.fv9.240.188.IP) (Quit: http://www.furaffinity.net/user/mircea/)
21:59 * Schism obtains a fair amount of raw materials by throwing a car at a porcupine.
21:59 <Schism> Finwe: Take care!
22:00 *** Joins: Taoki (MirceaKitsu@Pony-sme.fv9.240.188.IP)
22:00 <Schism> Hm.
22:01 <Schism> Yeah, green PP are high on most of these pins, so they'll evolve as I want.
22:09 <Schism> Cutie Beam doesn't have an SDPP evolution. ._.
22:10 <Schism> I am now an annoyed gorl.
22:14 <Schism> "80% or more of their required type of PP."
22:21 * Finwe takes care.
22:21 <Finwe> With these ebooks you can connect to IRC. o3o
22:23 * Finwe reads about king Teppicymon XXVIII's undertakings.
22:25 *** Joins: NitroTheFurryWerewolf (Nitro@Pony-usup29.m8jn.attr.0381.2600.IP)
22:25 *** Quits: NitroTheFurry (Nitro@Pony-l42sv5.mi.comcast.net) (Connection closed)
22:29 *** Quits: NitroTheFurryWerewolf (Nitro@Pony-usup29.m8jn.attr.0381.2600.IP) (Ping timeout: 121 seconds)
22:32 *** Joins: NitroTheFurryWerewolf (Nitro@Pony-l42sv5.mi.comcast.net)
22:51 * Cepheid puts a cat on Schism. o3o
22:53 <Cepheid> https://twitter.com/paxiti/status/1385231956976148480?s=19 Schism.
22:58 <Schism> Hah!
22:58 <Schism> Yup, trans lesbiab. o3o
23:03 *** Quits: Dappled (IceChat9@Shady.The.Pet.Pony) (Ping timeout: 121 seconds)
23:06 * Ali grabs the cat and snugs
23:08 <LibrarianofHope> ma doggo is cute
23:08 <LibrarianofHope> he has a ball
23:08 <LibrarianofHope> and lloks so happy
23:11 <LibrarianofHope> he now ploped, still has ball
23:18 <Schism> Cepheid: Is it, functionally, cheating when a single player RPG implements a time-based system to which a person cannot legitimately adhere, and therefore they manipulate the laws of time and space to get their Pokemon/Pin/Persona to evolve in the right way?
23:19 <Cepheid> Not really. Especially if the game in question asks you to wait absurd time periods.
23:21 <Schism> Yeah. And for large quantities of this sort of thing.
23:21 <Schism> 45 pins require shutdown points and a deck can only contain 6.
23:22 <Schism> At the end, anyway. To start? 2. (It's up to 4 after a little while, and then gets up to 6 with unlocks.)
23:22 <Schism> This is also downplaying the fact that some pins branch.
23:23 <Schism> Ah yes, and for a full collection of mastered pins, one does have to do them over and over again.
23:29 *** Joins: Apple_Jack (Prius@Pony-ojtkv3.ipv6.telus.net)
23:33 *** Quits: Sunrise_Flare (Prius@Pony-kfjlom.ipv6.telus.net) (Ping timeout: 121 seconds)
23:45 <DerpyBot> New post on Equestria Daily by Sethisto: Drawfriend - Equestria Girls / Anthro MLP Art Gallery #292 [ https://tinyurl.com/yech57xl ]
23:45 <LibrarianofHope> im achey
23:46 <LibrarianofHope> muscles achey
23:46 * LibrarianofHope poiishes Ali
23:52 *** Quits: LibrarianofHope (Librarianof@Pony-inr.lo2.147.189.IP) (Quit: Connection closed)
Generated by irclog2html.py 2.14.0 by Marius Gedminas - find it at mg.pov.lt!