2025/04/29

2025-04-29 00:00:24 +0200 <int-e> I wonder if it has opinions on WorldCoin
2025-04-29 00:01:16 +0200 <davean> I'
2025-04-29 00:01:29 +0200 <davean> ve started to loath a new trend
2025-04-29 00:01:44 +0200 <davean> In issues, people throwing the thing at ChatGPT or whatever, and "
2025-04-29 00:01:50 +0200 <davean> pasting" its answer as a solution
2025-04-29 00:02:01 +0200 <davean> It make me want to lock the issues and never fix it
2025-04-29 00:02:04 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2025-04-29 00:02:14 +0200 <davean> Its so actively unhelpful I wonder if people are doing it to troll
2025-04-29 00:02:28 +0200 <davean> esp when what it pastes is self-evidently non-helpful
2025-04-29 00:02:35 +0200 <davean> Which, so far, is all I've seen
2025-04-29 00:02:44 +0200 <haskellbridge> <sm> I wouldn't mind if it's something helpful
2025-04-29 00:02:57 +0200 <haskellbridge> <sm> I think I posted one of those myself recently
2025-04-29 00:02:59 +0200 <davean> Its litterly never been, and it mean it kinda obviously won't be?
2025-04-29 00:03:05 +0200 <davean> ... yah, you are one of the people I was thinking of
2025-04-29 00:03:24 +0200 <davean> Yours was a great example of self-evidently not helpful
2025-04-29 00:03:33 +0200 <haskellbridge> <sm> yikes! where was that
2025-04-29 00:03:38 +0200 <haskellbridge> <sm> called out on my first attempt 🤣
2025-04-29 00:03:39 +0200 <davean> The wiki one
2025-04-29 00:04:14 +0200 <davean> Where it suggested A) uncommenting a commented out line (How do you think it got commented out in the first place? If yhou had a question, check the git history) and B) generated an invalid CSS statement
2025-04-29 00:04:52 +0200j1n37(~j1n37@user/j1n37) j1n37
2025-04-29 00:05:16 +0200 <int-e> davean: I understand that it gets worse when there's a monetary incentive (bug bounties)
2025-04-29 00:05:37 +0200 <davean> Oh god, I wouldn't be surprised if it did
2025-04-29 00:05:46 +0200j1n37-(~j1n37@user/j1n37) (Ping timeout: 252 seconds)
2025-04-29 00:05:51 +0200 <davean> sm: on the plus side, your chatgpt response annyoed someone else enough to just fix it :)
2025-04-29 00:05:54 +0200 <haskellbridge> <sm> https://github.com/haskell/haskell-wiki-configuration/issues/56#issuecomment-2822104811
2025-04-29 00:06:38 +0200 <davean> sorry, the "A" side was simplified out from you IRC posting, not the full length one.
2025-04-29 00:07:18 +0200 <haskellbridge> <sm> I thought it gave some potentially useful context to my previous (human generated, terse) comment, to someone trying to fix this, and if not, would be easy to ignore.
2025-04-29 00:08:31 +0200 <davean> It made it very evident it was splurting out some tutorial and nothing related to the actual config
2025-04-29 00:08:52 +0200 <haskellbridge> <sm> to you. Obviously people like me trying to help don't have the same insight
2025-04-29 00:09:12 +0200 <haskellbridge> <sm> I'll me more cautious on this tracker in future
2025-04-29 00:09:16 +0200 <haskellbridge> <sm> be
2025-04-29 00:09:44 +0200 <davean> The state at that comment was https://github.com/haskell/haskell-wiki-configuration/blob/beb924470357d8cc008a5c8118211066897a48e…
2025-04-29 00:09:45 +0200LainIwakura(~LainIwaku@user/LainIwakura) LainIwakura
2025-04-29 00:09:57 +0200 <davean> You'll note a several line block of it commented out
2025-04-29 00:10:31 +0200 <davean> Someone didn't write all that and comment it out by "accident"
2025-04-29 00:11:27 +0200 <davean> Which is the sort of theory-of-mind ChatGPT seems to seriously lack
2025-04-29 00:11:54 +0200paotsaq(~paotsaq@127.209.37.188.rev.vodafone.pt) paotsaq
2025-04-29 00:11:56 +0200 <haskellbridge> <sm> I pointed that out myself, but didn't know why (there was no explanation)
2025-04-29 00:11:56 +0200 <davean> anyway, sm, you're hardly the worst person with this ever
2025-04-29 00:12:33 +0200 <davean> Oh the CSS side I sohuld finish
2025-04-29 00:12:49 +0200 <davean> it was a CSS directive that targeted displayed text, it clearly mixed up context between display and syntax
2025-04-29 00:12:56 +0200 <davean> anyway, sm, you are HARDLY the worst
2025-04-29 00:13:06 +0200 <davean> Its a real plauge lately though
2025-04-29 00:13:15 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-29 00:14:03 +0200 <haskellbridge> <sm> I know that I'm not the worst. I was trying to be helpful. No need to beat up a volunteer for an unhelpful post, I've said I'll be more cautious
2025-04-29 00:15:07 +0200 <davean> For an explanation of why it was commented out, it was commented out because the repo contains the code, but not in a runable state - it requires a specific build procedure to be run before it is a valid extension. As it was just a stylistic display issue I didn't feel like learning a PHP build sytem to get the wiki back online after the great wiki disaster and I hoped something obvious like that
2025-04-29 00:15:09 +0200 <davean> would get anyone to step up and assist since I didn't want to end up owning the wiki just because I rescued it.
2025-04-29 00:15:33 +0200 <davean> tolt happened to find a place they had actually already run the build system though, which made it easy to fix
2025-04-29 00:16:53 +0200 <davean> Hopefully tolt having made a test vm setup thing for it other people might try working on it.
2025-04-29 00:18:14 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-29 00:19:31 +0200 <haskellbridge> <sm> I became annoyed enough at the 6 month breakage to try to spend some more time helping. Without access or any insight / status reports I couldn't do more than blind research. I'm glad it helped remind people of the problem, even it if was annoying. It's just another github issue.
2025-04-29 00:20:18 +0200 <davean> Hum? That is a full container config for the wiki in that repo
2025-04-29 00:21:13 +0200 <davean> That is litterly the wiki, minutes its data
2025-04-29 00:22:36 +0200 <haskellbridge> <sm> I'm irritated. Sorry, I'll drop this
2025-04-29 00:28:00 +0200harveypwca(~harveypwc@2601:246:d080:f6e0:27d6:8cc7:eca9:c46c)
2025-04-29 00:28:59 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-29 00:31:41 +0200emmanuelux(~emmanuelu@user/emmanuelux) emmanuelux
2025-04-29 00:34:31 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-29 00:34:38 +0200 <haskellbridge> <hellwolf> 🫠 tragedy of the gift economy... which needs more cheerleaders
2025-04-29 00:35:12 +0200 <int-e> . o O ( it's spelled "grift" )
2025-04-29 00:35:16 +0200sprotte24(~sprotte24@p200300d16f1e9b00643a7ed1094ff735.dip0.t-ipconnect.de) (Quit: Leaving)
2025-04-29 00:38:04 +0200gmg(~user@user/gehmehgeh) (Remote host closed the connection)
2025-04-29 00:42:05 +0200justsomeguy(~justsomeg@user/justsomeguy) (Ping timeout: 260 seconds)
2025-04-29 00:44:40 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-29 00:44:57 +0200tolgo(~Thunderbi@199.115.144.130)
2025-04-29 00:45:22 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2025-04-29 00:49:24 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-29 00:49:44 +0200justsomeguy(~justsomeg@user/justsomeguy) justsomeguy
2025-04-29 00:51:25 +0200Sgeo(~Sgeo@user/sgeo) Sgeo
2025-04-29 00:55:11 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-29 00:55:13 +0200califax_(~califax@user/califx) califx
2025-04-29 00:56:00 +0200califax(~califax@user/califx) (Ping timeout: 264 seconds)
2025-04-29 00:56:26 +0200califax_califax
2025-04-29 00:59:34 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2025-04-29 01:01:45 +0200Tuplanolla(~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.)
2025-04-29 01:10:28 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-29 01:15:58 +0200Buliarous(~gypsydang@46.232.210.139) (Remote host closed the connection)
2025-04-29 01:16:26 +0200Buliarous(~gypsydang@46.232.210.139) Buliarous
2025-04-29 01:17:26 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-04-29 01:18:38 +0200LainIwakura(~LainIwaku@user/LainIwakura) (Quit: Client closed)
2025-04-29 01:19:25 +0200LainIwakura(~LainIwaku@user/LainIwakura) LainIwakura
2025-04-29 01:21:39 +0200 <monochrom> darkling: Actually our department chair has also received students' escalated tickets "I answered something but my prof gave me 0". >:)
2025-04-29 01:22:28 +0200 <monochrom> There were 3 such cases and the profs were all different. It is becoming a meme across the board.
2025-04-29 01:23:47 +0200 <int-e> . o O ( I asked ChatGPT and it said I should receive full marks. )
2025-04-29 01:27:19 +0200LainIwakura(~LainIwaku@user/LainIwakura) (Quit: Client closed)
2025-04-29 01:27:31 +0200jespada_(~jespada@r179-25-42-1.dialup.adsl.anteldata.net.uy) (Quit: My Mac has gone to sleep. ZZZzzz…)
2025-04-29 01:28:28 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-29 01:30:25 +0200tolgo(~Thunderbi@199.115.144.130) (Ping timeout: 276 seconds)
2025-04-29 01:32:34 +0200 <monochrom> Oh yeah have you heard of this old joke: If you think you know everything, you can get a Bachelor's. When you find out you don't know anything, you can get a Master's. When you also find out that your thesis supervisor doesn't know anything either, you can get a PhD.
2025-04-29 01:32:50 +0200 <monochrom> I have upgraded that to a modern version.
2025-04-29 01:33:37 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-04-29 01:33:43 +0200 <monochrom> If you think LLMs know everything, you can get a Bachelor's. When you find out that LLMs don't know anything, you can get a Master's. When you find out that your thesis supervisor is also relying on LLMs, you can get a PhD.
2025-04-29 01:33:46 +0200 <darkling> You learn more and more about less and less, until you know everything about nothing...
2025-04-29 01:34:02 +0200 <darkling> (At which point, they give you a PhD to get rid of you).
2025-04-29 01:35:52 +0200 <darkling> Somewhat glad I'm not in academia any more. Should have got out much earlier. Would have given me more time to get burned out and recover from industry... :/
2025-04-29 01:37:36 +0200acidjnk_new(~acidjnk@p200300d6e71c4f61394430d048071491.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
2025-04-29 01:44:15 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-29 01:45:51 +0200harveypwca(~harveypwc@2601:246:d080:f6e0:27d6:8cc7:eca9:c46c) (Quit: Leaving)
2025-04-29 01:46:48 +0200 <EvanR> I would like my Master's now
2025-04-29 01:47:20 +0200 <EvanR> 🫴
2025-04-29 01:47:45 +0200 <darkling> Don't bother. It's not worth it. :)
2025-04-29 01:48:00 +0200Googulator47(~Googulato@2a01-036d-0106-093f-1dc7-297e-fae3-e794.pool6.digikabel.hu) (Quit: Client closed)
2025-04-29 01:48:14 +0200Googulator47(~Googulato@2a01-036d-0106-093f-1dc7-297e-fae3-e794.pool6.digikabel.hu)
2025-04-29 01:48:40 +0200 <monochrom> Nah, Master's is OK, just don't get sucked into PhD. :)
2025-04-29 01:48:42 +0200 <int-e> EvanR: those aren't requirements, they're consequences
2025-04-29 01:49:01 +0200 <int-e> (also it's a joke)
2025-04-29 01:49:10 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-29 01:50:05 +0200 <EvanR> how do you I wasn't joking!
2025-04-29 01:50:09 +0200 <EvanR> know
2025-04-29 01:50:36 +0200 <monochrom> <poker face>Everyone is not joking</poker face>
2025-04-29 01:50:39 +0200 <int-e> EvanR: I don't
2025-04-29 01:51:17 +0200 <EvanR> this joke is serious
2025-04-29 01:51:24 +0200 <int-e> EvanR: I mean, you were clearly joking. But I'm not sure what exactly you were joking about ;-)
2025-04-29 01:54:15 +0200JuanDaugherty(~juan@user/JuanDaugherty) (Quit: praxis.meansofproduction.biz (juan@acm.org))
2025-04-29 01:59:01 +0200ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 265 seconds)
2025-04-29 02:00:01 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-29 02:05:09 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-04-29 02:05:21 +0200gadot(Angelz@user/angelz) (Ping timeout: 268 seconds)
2025-04-29 02:07:34 +0200mange(~user@user/mange) mange
2025-04-29 02:10:18 +0200xff0x(~xff0x@2409:251:9040:2c00:42ff:c32a:d7a0:a5f4)
2025-04-29 02:10:28 +0200msa(msa@msa.planetofnix.com) (Read error: Connection reset by peer)
2025-04-29 02:15:47 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-29 02:18:59 +0200msa(msa@msa.planetofnix.com)
2025-04-29 02:21:07 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-29 02:31:37 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-29 02:31:54 +0200hgolden(~hgolden@2603:8000:9d00:3ed1:88e0:76ff:fe9c:b21e) (Remote host closed the connection)
2025-04-29 02:32:23 +0200califax(~califax@user/califx) (Remote host closed the connection)
2025-04-29 02:33:53 +0200califax(~califax@user/califx) califx
2025-04-29 02:34:34 +0200hgolden(~hgolden@2603:8000:9d00:3ed1:88e0:76ff:fe9c:b21e) hgolden
2025-04-29 02:36:33 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-04-29 02:41:16 +0200otto_s(~user@p4ff27ad7.dip0.t-ipconnect.de) (Ping timeout: 276 seconds)
2025-04-29 02:42:22 +0200otto_s(~user@p5de2faf5.dip0.t-ipconnect.de)
2025-04-29 02:43:40 +0200Angelz(Angelz@angelz.oddprotocol.org)
2025-04-29 02:47:24 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-29 02:51:08 +0200machinedgod(~machinedg@d108-173-18-100.abhsia.telus.net) (Ping timeout: 252 seconds)
2025-04-29 02:54:03 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-04-29 02:54:36 +0200juri_(~juri@implicitcad.org) (Ping timeout: 265 seconds)
2025-04-29 02:56:05 +0200juri_(~juri@implicitcad.org) juri_
2025-04-29 02:57:28 +0200gorignak(~gorignak@user/gorignak) (Quit: quit)
2025-04-29 02:57:45 +0200gorignak(~gorignak@user/gorignak) gorignak
2025-04-29 02:57:50 +0200euleritian(~euleritia@dynamic-176-006-135-001.176.6.pool.telefonica.de) (Remote host closed the connection)
2025-04-29 02:58:42 +0200euleritian(~euleritia@dynamic-176-006-135-001.176.6.pool.telefonica.de)
2025-04-29 02:59:36 +0200euleritian(~euleritia@dynamic-176-006-135-001.176.6.pool.telefonica.de) (Remote host closed the connection)
2025-04-29 03:00:26 +0200euleritian(~euleritia@dynamic-176-006-135-001.176.6.pool.telefonica.de)
2025-04-29 03:00:27 +0200euleritian(~euleritia@dynamic-176-006-135-001.176.6.pool.telefonica.de) (Remote host closed the connection)
2025-04-29 03:05:27 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-29 03:05:52 +0200notdabs(~Owner@2600:1700:69cf:9000:79ef:6a68:163c:c553) (Quit: Leaving)
2025-04-29 03:07:05 +0200 <EvanR> haskell is usually taken as using lazy evaluation while e.g. javascript is eager evaluation. If you were to specify "evaluation strategy is not specified", would that force you to write like haskell, or like javascript, or neither, if you didn't care about side effects, exceptions, and performance
2025-04-29 03:08:22 +0200 <EvanR> (haskell isn't specified to be lazy, though I'm not sure how relevant it is to this)
2025-04-29 03:10:31 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-29 03:11:46 +0200 <c_wraith> Haskell isn't specified to be lazy, but it is specified to terminate if any evaluation order will do so. It's hard to get that behavior without default laziness
2025-04-29 03:12:29 +0200gorignak(~gorignak@user/gorignak) (Ping timeout: 265 seconds)
2025-04-29 03:13:18 +0200 <monochrom> If evaluation isn't specified, then I would need strictness to be specified. The Haskell Report specifies non-strict.
2025-04-29 03:15:30 +0200 <EvanR> if neither are specified?
2025-04-29 03:18:34 +0200 <EvanR> in some sense lazy evaluation subsumes eager evaluation, so does it mean with no other information you would default to eager?
2025-04-29 03:18:47 +0200 <monochrom> If unspecified, then I cannot assume for example const () bottom = (), so pessimistically I will have to write like, well, I don't want to get js involved, but I can work with SML or Racket.
2025-04-29 03:19:00 +0200 <monochrom> Yeah, that.
2025-04-29 03:21:11 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-29 03:21:27 +0200 <EvanR> that sucks!
2025-04-29 03:22:52 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 276 seconds)
2025-04-29 03:23:46 +0200gorignak(~gorignak@user/gorignak) gorignak
2025-04-29 03:24:56 +0200 <monochrom> But I haven't really needed to resort to that. Most languages are sufficiently specified or at least suffciently de-facto'ed.
2025-04-29 03:25:32 +0200 <EvanR> they are, though I was wondering to what extent that was necessary
2025-04-29 03:25:58 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-29 03:26:58 +0200 <EvanR> predicting performance aside, the main issue is going into an infinite loop because of insufficient laziness
2025-04-29 03:27:01 +0200weary-traveler(~user@user/user363627) user363627
2025-04-29 03:30:22 +0200 <EvanR> which is where haskell's guarantee comes in
2025-04-29 03:30:43 +0200sayurc(~sayurc@169.150.203.34) sayurc
2025-04-29 03:32:12 +0200gorignak(~gorignak@user/gorignak) (Ping timeout: 252 seconds)
2025-04-29 03:36:59 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-29 03:41:35 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-04-29 03:52:47 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-29 03:56:14 +0200xff0x(~xff0x@2409:251:9040:2c00:42ff:c32a:d7a0:a5f4) (Ping timeout: 245 seconds)
2025-04-29 03:56:58 +0200Raito_Bezarius(~Raito@wireguard/tunneler/raito-bezarius) (Ping timeout: 268 seconds)
2025-04-29 03:58:05 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-04-29 04:00:13 +0200Raito_Bezarius(~Raito@wireguard/tunneler/raito-bezarius) Raito_Bezarius
2025-04-29 04:08:33 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-29 04:13:38 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-29 04:16:39 +0200tavare(~tavare@150.129.88.189) tavare
2025-04-29 04:16:40 +0200tavare(~tavare@150.129.88.189) (Changing host)
2025-04-29 04:16:40 +0200tavare(~tavare@user/tavare) tavare
2025-04-29 04:17:19 +0200tavare(~tavare@user/tavare) (Remote host closed the connection)
2025-04-29 04:20:14 +0200td_(~td@i53870908.versanet.de) (Ping timeout: 252 seconds)
2025-04-29 04:21:59 +0200td_(~td@i53870912.versanet.de)
2025-04-29 04:24:22 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-29 04:25:20 +0200Typedfern(~Typedfern@135.red-83-37-43.dynamicip.rima-tde.net)
2025-04-29 04:30:53 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
2025-04-29 04:31:35 +0200Sgeo_(~Sgeo@user/sgeo) Sgeo
2025-04-29 04:34:10 +0200Sgeo(~Sgeo@user/sgeo) (Ping timeout: 252 seconds)
2025-04-29 04:38:09 +0200Feuermagier(~Feuermagi@user/feuermagier) (Ping timeout: 260 seconds)
2025-04-29 04:39:50 +0200prdak(~Thunderbi@user/prdak) prdak
2025-04-29 04:41:56 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-29 04:44:04 +0200prdak(~Thunderbi@user/prdak) (Ping timeout: 252 seconds)
2025-04-29 04:46:01 +0200Feuermagier(~Feuermagi@user/feuermagier) Feuermagier
2025-04-29 04:46:09 +0200Feuermagier(~Feuermagi@user/feuermagier) (Remote host closed the connection)
2025-04-29 04:46:41 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-04-29 04:57:41 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-29 04:58:32 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) bitdex
2025-04-29 04:59:18 +0200Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
2025-04-29 05:02:41 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2025-04-29 05:13:29 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-29 05:18:13 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-04-29 05:28:26 +0200Square2(~Square4@user/square) (Ping timeout: 252 seconds)
2025-04-29 05:28:57 +0200j1n37(~j1n37@user/j1n37) (Read error: Connection reset by peer)
2025-04-29 05:29:16 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-29 05:35:22 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2025-04-29 05:35:43 +0200j1n37(~j1n37@user/j1n37) j1n37
2025-04-29 05:35:59 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-04-29 05:36:34 +0200j1n37(~j1n37@user/j1n37) (Read error: Connection reset by peer)
2025-04-29 05:40:18 +0200j1n37(~j1n37@user/j1n37) j1n37
2025-04-29 05:41:55 +0200j1n37(~j1n37@user/j1n37) (Read error: Connection reset by peer)
2025-04-29 05:45:40 +0200j1n37(~j1n37@user/j1n37) j1n37
2025-04-29 05:46:42 +0200j1n37(~j1n37@user/j1n37) (Read error: Connection reset by peer)
2025-04-29 05:47:19 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-29 05:48:05 +0200michalz(~michalz@185.246.207.205)
2025-04-29 05:51:20 +0200j1n37(~j1n37@user/j1n37) j1n37
2025-04-29 05:52:28 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2025-04-29 06:03:08 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-29 06:04:39 +0200OftenFaded(~OftenFade@user/tisktisk) OftenFaded
2025-04-29 06:04:41 +0200fp(~Thunderbi@87-94-239-173.bb.dnainternet.fi) fp
2025-04-29 06:10:42 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 272 seconds)
2025-04-29 06:15:04 +0200Fijxu(~Fijxu@user/fijxu) (Quit: XD!!)
2025-04-29 06:17:41 +0200Digitteknohippie(~user@user/digit) Digit
2025-04-29 06:17:54 +0200Fijxu(~Fijxu@user/fijxu) fijxu
2025-04-29 06:18:40 +0200Digit(~user@user/digit) (Ping timeout: 260 seconds)
2025-04-29 06:21:01 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-29 06:21:23 +0200Fijxu(~Fijxu@user/fijxu) (Quit: XD!!)
2025-04-29 06:22:19 +0200gabiruh_(~gabiruh@vps19177.publiccloud.com.br) (Ping timeout: 252 seconds)
2025-04-29 06:26:04 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-04-29 06:27:25 +0200OftenFaded(~OftenFade@user/tisktisk) (Quit: Client closed)
2025-04-29 06:30:06 +0200gabiruh(~gabiruh@vps19177.publiccloud.com.br) gabiruh
2025-04-29 06:31:05 +0200j1n37-(~j1n37@user/j1n37) j1n37
2025-04-29 06:32:14 +0200Fijxu(~Fijxu@user/fijxu) fijxu
2025-04-29 06:32:14 +0200j1n37(~j1n37@user/j1n37) (Ping timeout: 272 seconds)
2025-04-29 06:36:48 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-29 06:42:25 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-29 06:47:51 +0200zlqrvx(~zlqrvx@2001:8003:8c8b:e00:374a:bdcb:457c:d1e3) (Read error: Connection reset by peer)
2025-04-29 06:48:22 +0200zlqrvx(~zlqrvx@101.175.150.247)
2025-04-29 06:50:13 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 276 seconds)
2025-04-29 06:52:36 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-29 06:53:19 +0200DigitteknohippieDigit
2025-04-29 06:57:21 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-04-29 07:01:27 +0200elnegro(elnegro@r186-50-156-231.dialup.adsl.anteldata.net.uy) elnegro
2025-04-29 07:05:54 +0200j1n37-(~j1n37@user/j1n37) (Read error: Connection reset by peer)
2025-04-29 07:08:23 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-29 07:08:59 +0200j1n37(~j1n37@user/j1n37) j1n37
2025-04-29 07:10:42 +0200elnegro(elnegro@r186-50-156-231.dialup.adsl.anteldata.net.uy) ()
2025-04-29 07:15:30 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-29 07:22:14 +0200j1n37(~j1n37@user/j1n37) (Read error: Connection reset by peer)
2025-04-29 07:22:33 +0200takuan(~takuan@d8D86B601.access.telenet.be)
2025-04-29 07:23:22 +0200werneta(~werneta@syn-071-083-160-242.res.spectrum.com) (Ping timeout: 276 seconds)
2025-04-29 07:25:46 +0200fp(~Thunderbi@87-94-239-173.bb.dnainternet.fi) (Ping timeout: 252 seconds)
2025-04-29 07:25:52 +0200j1n37(~j1n37@user/j1n37) j1n37
2025-04-29 07:26:27 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-29 07:27:40 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2025-04-29 07:29:16 +0200j1n37(~j1n37@user/j1n37) (Read error: Connection reset by peer)
2025-04-29 07:31:10 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-29 07:32:19 +0200j1n37(~j1n37@user/j1n37) j1n37
2025-04-29 07:34:27 +0200akegalj(~akegalj@83-131-244-60.adsl.net.t-com.hr) akegalj
2025-04-29 07:41:48 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-29 07:47:01 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2025-04-29 07:52:10 +0200acidjnk_new(~acidjnk@p200300d6e71c4f61394430d048071491.dip0.t-ipconnect.de)
2025-04-29 07:55:48 +0200Sgeo_(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2025-04-29 07:57:36 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-29 08:00:31 +0200dutchie(~dutchie@user/dutchie) (Remote host closed the connection)
2025-04-29 08:01:41 +0200mikess(~sam@user/mikess) mikess
2025-04-29 08:02:22 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-29 08:06:17 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-29 08:10:14 +0200euphores(~SASL_euph@user/euphores) (Quit: Leaving.)
2025-04-29 08:10:29 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 260 seconds)
2025-04-29 08:11:29 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-29 08:16:21 +0200euphores(~SASL_euph@user/euphores) euphores
2025-04-29 08:22:52 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-29 08:24:00 +0200haritz(~hrtz@user/haritz) (Quit: ZNC 1.8.2+deb3.1+deb12u1 - https://znc.in)
2025-04-29 08:27:39 +0200fp(~Thunderbi@2001:708:20:1406::1370) fp
2025-04-29 08:27:43 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-29 08:28:22 +0200acidjnk_new(~acidjnk@p200300d6e71c4f61394430d048071491.dip0.t-ipconnect.de) (Ping timeout: 276 seconds)
2025-04-29 08:38:16 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-29 08:42:54 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2025-04-29 08:45:47 +0200acidjnk_new(~acidjnk@p54ad5829.dip0.t-ipconnect.de)
2025-04-29 08:54:02 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-29 08:56:14 +0200tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz)
2025-04-29 09:00:04 +0200akegalj(~akegalj@83-131-244-60.adsl.net.t-com.hr) (Ping timeout: 260 seconds)
2025-04-29 09:00:05 +0200caconym7(~caconym@user/caconym) (Quit: bye)
2025-04-29 09:00:43 +0200caconym7(~caconym@user/caconym) caconym
2025-04-29 09:01:14 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-04-29 09:05:27 +0200dutchie(~dutchie@user/dutchie) dutchie
2025-04-29 09:07:14 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-29 09:12:06 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-29 09:12:25 +0200akegalj(~akegalj@144-188.dsl.iskon.hr)
2025-04-29 09:18:25 +0200akegalj(~akegalj@144-188.dsl.iskon.hr) (Ping timeout: 276 seconds)
2025-04-29 09:20:58 +0200ljdarj(~Thunderbi@user/ljdarj) ljdarj
2025-04-29 09:21:47 +0200Lord_of_Life_(~Lord@user/lord-of-life/x-2819915) Lord_of_Life
2025-04-29 09:22:36 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 272 seconds)
2025-04-29 09:23:08 +0200Lord_of_Life_Lord_of_Life
2025-04-29 09:30:04 +0200econo_(uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity)
2025-04-29 09:30:30 +0200dutchie_(~dutchie@user/dutchie) dutchie
2025-04-29 09:32:48 +0200dutchie(~dutchie@user/dutchie) (Killed (NickServ (GHOST command used by dutchie_)))
2025-04-29 09:32:51 +0200dutchie_dutchie
2025-04-29 09:33:38 +0200j1n37-(~j1n37@user/j1n37) j1n37
2025-04-29 09:34:39 +0200j1n37(~j1n37@user/j1n37) (Ping timeout: 272 seconds)
2025-04-29 09:43:29 +0200emmanuelux(~emmanuelu@user/emmanuelux) (Read error: Connection reset by peer)
2025-04-29 09:43:46 +0200ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 276 seconds)
2025-04-29 09:48:15 +0200mari-estel(~mari-este@user/mari-estel) mari-estel
2025-04-29 09:51:44 +0200Guest17(~Guest17@2a01:4b00:84f0:ef00:382c:2ec8:780c:c40)
2025-04-29 09:52:02 +0200Guest17(~Guest17@2a01:4b00:84f0:ef00:382c:2ec8:780c:c40) (Client Quit)
2025-04-29 09:52:09 +0200gmg(~user@user/gehmehgeh) gehmehgeh
2025-04-29 09:55:37 +0200aku(aku@65.108.245.241) (Quit: Lost terminal)
2025-04-29 09:56:22 +0200Guest17(~Guest17@2a01:4b00:84f0:ef00:382c:2ec8:780c:c40)
2025-04-29 09:56:46 +0200aku(aku@65.108.245.241) eagleflo
2025-04-29 09:57:03 +0200Guest17(~Guest17@2a01:4b00:84f0:ef00:382c:2ec8:780c:c40) (Client Quit)
2025-04-29 09:58:54 +0200merijn(~merijn@77.242.116.146) merijn
2025-04-29 10:02:54 +0200nernst(~nernst@188.214.9.73)
2025-04-29 10:04:20 +0200ljdarj(~Thunderbi@user/ljdarj) ljdarj
2025-04-29 10:07:14 +0200machinedgod(~machinedg@d108-173-18-100.abhsia.telus.net) machinedgod
2025-04-29 10:14:11 +0200akegalj(~akegalj@95.168.121.7)
2025-04-29 10:19:36 +0200__monty__(~toonn@user/toonn) toonn
2025-04-29 10:21:50 +0200ft(~ft@p4fc2a6e6.dip0.t-ipconnect.de) (Quit: leaving)
2025-04-29 10:27:33 +0200mikess(~sam@user/mikess) (Ping timeout: 252 seconds)
2025-04-29 10:32:36 +0200xff0x(~xff0x@2409:251:9040:2c00:cf62:b619:dd0:f1a5)
2025-04-29 10:37:22 +0200weary-traveler(~user@user/user363627) (Remote host closed the connection)
2025-04-29 10:38:22 +0200xff0x(~xff0x@2409:251:9040:2c00:cf62:b619:dd0:f1a5) (Ping timeout: 276 seconds)
2025-04-29 10:39:01 +0200fp(~Thunderbi@2001:708:20:1406::1370) (Ping timeout: 276 seconds)
2025-04-29 10:44:06 +0200fp(~Thunderbi@wireless-86-50-140-117.open.aalto.fi) fp
2025-04-29 10:51:14 +0200Googulator71(~Googulato@94-21-139-144.pool.digikabel.hu)
2025-04-29 10:54:06 +0200Googulator47(~Googulato@2a01-036d-0106-093f-1dc7-297e-fae3-e794.pool6.digikabel.hu) (Ping timeout: 240 seconds)
2025-04-29 11:01:00 +0200ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 252 seconds)
2025-04-29 11:03:16 +0200j1n37(~j1n37@user/j1n37) j1n37
2025-04-29 11:03:44 +0200j1n37-(~j1n37@user/j1n37) (Ping timeout: 265 seconds)
2025-04-29 11:06:49 +0200dhil(~dhil@5.151.29.137) dhil
2025-04-29 11:19:58 +0200dhil(~dhil@5.151.29.137) (Ping timeout: 276 seconds)
2025-04-29 11:23:56 +0200chele(~chele@user/chele) chele
2025-04-29 11:32:36 +0200dhil(~dhil@openvpn-125-1069.inf.ed.ac.uk) dhil
2025-04-29 11:37:58 +0200dhil(~dhil@openvpn-125-1069.inf.ed.ac.uk) (Ping timeout: 252 seconds)
2025-04-29 11:40:17 +0200amadaluzia(~amadaluzi@user/amadaluzia) amadaluzia
2025-04-29 11:43:44 +0200kindlyremote79(~ernie@188-115-167-65.broadband.tenet.odessa.ua)
2025-04-29 11:47:51 +0200kindlyremote79(~ernie@188-115-167-65.broadband.tenet.odessa.ua) ()
2025-04-29 11:50:20 +0200dhil(~dhil@5.151.29.139) dhil
2025-04-29 11:55:08 +0200j1n37-(~j1n37@user/j1n37) j1n37
2025-04-29 11:55:39 +0200j1n37(~j1n37@user/j1n37) (Ping timeout: 260 seconds)
2025-04-29 11:58:09 +0200wootehfoot(~wootehfoo@user/wootehfoot) wootehfoot
2025-04-29 12:01:04 +0200califax(~califax@user/califx) (Remote host closed the connection)
2025-04-29 12:02:34 +0200califax(~califax@user/califx) califx
2025-04-29 12:11:04 +0200xff0x(~xff0x@2409:251:9040:2c00:709f:303f:f5cb:a092)
2025-04-29 12:18:05 +0200fp(~Thunderbi@wireless-86-50-140-117.open.aalto.fi) (Quit: fp)
2025-04-29 12:18:14 +0200fp2(~Thunderbi@wireless-86-50-140-117.open.aalto.fi) fp
2025-04-29 12:20:40 +0200fp2fp
2025-04-29 12:21:12 +0200talismanick(~user@2601:644:937c:ed10::ae5) (Ping timeout: 272 seconds)
2025-04-29 12:23:37 +0200tromp(~textual@2001:1c00:3487:1b00:81f6:6a75:5fad:c9b4)
2025-04-29 12:38:55 +0200wlhn(~wlhn@130.41.101.92) wlhn
2025-04-29 12:39:17 +0200xff0x(~xff0x@2409:251:9040:2c00:709f:303f:f5cb:a092) (Ping timeout: 268 seconds)
2025-04-29 12:39:48 +0200ljdarj(~Thunderbi@user/ljdarj) ljdarj
2025-04-29 12:45:07 +0200fp(~Thunderbi@wireless-86-50-140-117.open.aalto.fi) (Ping timeout: 276 seconds)
2025-04-29 12:49:10 +0200nernst(~nernst@188.214.9.73) (Read error: Connection reset by peer)
2025-04-29 12:49:26 +0200 <haskellbridge> <Liamzee> the Maybe type is a horrible mistake
2025-04-29 12:49:34 +0200nernst(~nernst@188.214.9.73)
2025-04-29 12:49:55 +0200 <haskellbridge> <Liamzee> or more correctly, Stream s => Maybe s
2025-04-29 12:50:40 +0200akegalj(~akegalj@95.168.121.7) (Read error: Connection reset by peer)
2025-04-29 12:51:02 +0200 <haskellbridge> <Liamzee> See, I'm hand-building a parser from Text.Strict.Text to Maybe ByteString.Strict on the assumption that the input data is chars between '0' and 'f' inclusive
2025-04-29 12:51:56 +0200 <haskellbridge> <Liamzee> and, the number of chars is even
2025-04-29 12:51:58 +0200 <haskellbridge> <Liamzee> if these conditions aren't met, it'll return a Nothing
2025-04-29 12:52:04 +0200 <haskellbridge> <Liamzee> HOWEVER, it breaks composition, doesn't it?
2025-04-29 12:52:26 +0200 <haskellbridge> <Liamzee> because either the function composition or the <$> operator will be checking for the Nothing type, causing the entire stream to be actualized
2025-04-29 12:52:32 +0200 <haskellbridge> <Liamzee> erm, Nothing value
2025-04-29 12:52:39 +0200 <haskellbridge> <Liamzee> any ideas?
2025-04-29 12:53:31 +0200 <haskellbridge> <Liamzee> The problem is that I'm depending on ByteString.Strict.pack, so I'm out of luck; it's breaking function composition, otherwise I could do it with a foldr
2025-04-29 12:56:52 +0200Digitteknohippie(~user@user/digit) Digit
2025-04-29 12:58:15 +0200Digit(~user@user/digit) (Ping timeout: 260 seconds)
2025-04-29 12:59:55 +0200mari72280(~mari-este@user/mari-estel) mari-estel
2025-04-29 13:00:05 +0200nernst(~nernst@188.214.9.73) (Read error: Connection reset by peer)
2025-04-29 13:00:59 +0200mari-estel(~mari-este@user/mari-estel) (Read error: Connection reset by peer)
2025-04-29 13:01:47 +0200 <tomsmeding> Liamzee: yes, producing a 'Maybe a' means that you have to tell whether you will return _anything_ before you get to return something
2025-04-29 13:02:08 +0200 <tomsmeding> in return, a consumer gets to know whether there is info here before starting to process said info
2025-04-29 13:02:41 +0200 <tomsmeding> a stream type that can raise an error later during processing allows a producer to start producing data already before it knows whether the whole process will be successful
2025-04-29 13:02:49 +0200 <haskellbridge> <Liamzee> is there a way around it? I'm working with Hasql and I'm trying to replicate its explicit exception philosophy
2025-04-29 13:03:04 +0200 <tomsmeding> in return, a consumer is forced to already start consuming data before knowing whether there is even supposed to be data in the first place
2025-04-29 13:03:06 +0200 <haskellbridge> <Liamzee> i'm also learning "hey, force / ! on inputs when you're going into IO is a good idea!"
2025-04-29 13:03:19 +0200 <tomsmeding> neither is always better than the other
2025-04-29 13:03:39 +0200 <haskellbridge> <Liamzee> i mean the target is a strict bytestring
2025-04-29 13:03:48 +0200 <haskellbridge> <Liamzee> so it's known that the data will be extant on use
2025-04-29 13:03:56 +0200 <haskellbridge> <Liamzee> source: strict text, target, strict bytestring
2025-04-29 13:04:03 +0200 <tomsmeding> "target" of the producer or the consumer?
2025-04-29 13:04:14 +0200 <haskellbridge> <Liamzee> also, Bytestring.pack points to packBytes, which on strict uses List.length
2025-04-29 13:04:15 +0200haskellbridgeLiamzee giggles
2025-04-29 13:04:33 +0200 <tomsmeding> there's little else it can do, is there?
2025-04-29 13:04:51 +0200 <haskellbridge> <Liamzee> the output of the strict bytestring
2025-04-29 13:05:28 +0200 <tomsmeding> so you want to transform a strict text to a strict bytestring, and be able to bail out halfway through if it turns out the Text wasn't valid somehow?
2025-04-29 13:05:44 +0200 <haskellbridge> <Liamzee> https://paste.tomsmeding.com/mFWq0v2a
2025-04-29 13:05:46 +0200 <haskellbridge> <Liamzee> yeah
2025-04-29 13:05:49 +0200 <tomsmeding> without having to check the whole Text before starting to write the ByteString
2025-04-29 13:06:03 +0200 <haskellbridge> <Liamzee> also the massive if is because i'm not going to import data.map for this
2025-04-29 13:06:59 +0200fp(~Thunderbi@wireless-86-50-140-117.open.aalto.fi) fp
2025-04-29 13:07:01 +0200 <tomsmeding> uh, what about `\c -> if '0' <= c && c <= '9' then ord c - ord '0' else 10 + ord c - ord 'a'`?
2025-04-29 13:07:02 +0200 <haskellbridge> <loonycyborg> wouldn't it stop processing automatically once it determines that input is invalid?
2025-04-29 13:07:09 +0200 <tomsmeding> less code, clearer, and faster
2025-04-29 13:08:23 +0200 <tomsmeding> Liamzee: for completeness, you can write what I think you want manually using ST: allocate a mutable array in ST, and write stuff into it monadically; if you succeed, freeze the array to a bytestring with some of their unsafe functions, and if not, just bail out and leave the array to be picked up by GC
2025-04-29 13:08:29 +0200 <haskellbridge> <Liamzee> you're right, the both of you
2025-04-29 13:08:37 +0200 <tomsmeding> it's not particularly compositional, but it does work
2025-04-29 13:08:44 +0200Chai-T-Rex(~ChaiTRex@user/chaitrex) ChaiTRex
2025-04-29 13:09:05 +0200 <tomsmeding> streaming libraries probably abstract over this pattern
2025-04-29 13:09:06 +0200 <haskellbridge> <loonycyborg> or you want to load bytestring itself in chunks?
2025-04-29 13:09:44 +0200 <tomsmeding> Liamzee: worth noting here is that if you're starting from a strict Text, then you won't stream that -- it's strict, after all
2025-04-29 13:09:48 +0200ChaiTRex(~ChaiTRex@user/chaitrex) (Ping timeout: 264 seconds)
2025-04-29 13:09:59 +0200DigitteknohippieDigit
2025-04-29 13:10:07 +0200 <haskellbridge> <Liamzee> ?
2025-04-29 13:10:21 +0200 <tomsmeding> so the only upside of traversing it once (and writing the ByteString along the way) -- as opposed to doing a checking pass and then an always-successful writing pass -- is that you don't read the input twice
2025-04-29 13:10:27 +0200 <haskellbridge> <Liamzee> If I have a streaming function operating on the strict text, the text is discrete, but the work being done on the text should be streamable
2025-04-29 13:10:41 +0200 <tomsmeding> there is no such thing as "streaming work"
2025-04-29 13:10:50 +0200 <tomsmeding> there _is_ such a thing as streaming data
2025-04-29 13:11:12 +0200 <tomsmeding> or actually, I guess "streaming work" could be a different way to say "loop fusion"
2025-04-29 13:11:23 +0200 <haskellbridge> <Liamzee> ya
2025-04-29 13:11:32 +0200 <haskellbridge> <Liamzee> the code is disgusting, but i should go finish the library first
2025-04-29 13:11:40 +0200 <haskellbridge> <Liamzee> i wonder if anyone would help fix it, but someone already pointed out it's a bad idea
2025-04-29 13:11:58 +0200 <tomsmeding> but if you're talking about "streaming work", then there should be work to stream -- if you're going from strict text to strict bytestring, then there is no other work to fuse with this
2025-04-29 13:12:23 +0200 <haskellbridge> <Liamzee> in the sense that the code is obviously doing multiple streams
2025-04-29 13:12:32 +0200 <tomsmeding> GHC is not going to magically eliminate e.g. the intermediate strict bytestring if you process the bytestring immediately after creating it
2025-04-29 13:12:36 +0200 <tomsmeding> mostly because it's strict
2025-04-29 13:12:49 +0200 <haskellbridge> <Liamzee> chunksOfTwo does a full allocation of the list first
2025-04-29 13:12:57 +0200 <tomsmeding> if you use a _lazy_ bytestring, you can stream the data, and hence laziness will produce in some kind of "work streaming" too
2025-04-29 13:13:26 +0200 <tomsmeding> oh I see
2025-04-29 13:13:33 +0200 <tomsmeding> so you already have two passes here
2025-04-29 13:14:03 +0200 <haskellbridge> <Liamzee> fmap ByteString.pack
2025-04-29 13:14:14 +0200 <haskellbridge> <Liamzee> so it'd need to know whether the output of the intermediate types is Nothing or Just
2025-04-29 13:14:14 +0200 <haskellbridge> <Liamzee> which is fine
2025-04-29 13:14:27 +0200 <tomsmeding> I've never worked with streaming libraries personally, but I would look into prior art here, even if you don't decide to use such a library as-is but build your own thing
2025-04-29 13:14:46 +0200 <haskellbridge> <Liamzee> thanks for the suggestion
2025-04-29 13:15:01 +0200 <tomsmeding> the ST thing I described is what you want to happen operationally
2025-04-29 13:15:05 +0200 <haskellbridge> <Liamzee> the setup is that I'm trying to build something at least 3 people have said is a bad idea, but when has that ever stopped me?
2025-04-29 13:15:09 +0200 <tomsmeding> everything else is, somehow, an abstraction over that
2025-04-29 13:15:16 +0200 <haskellbridge> <Liamzee> ya, of course
2025-04-29 13:15:17 +0200 <tomsmeding> heh
2025-04-29 13:15:33 +0200 <haskellbridge> <Liamzee> trying to build sane safe defaults for a login library
2025-04-29 13:15:47 +0200 <tomsmeding> Liamzee: https://github.com/Bodigrim/linear-builder is an interesting bit of prior art perhaps
2025-04-29 13:15:50 +0200 <haskellbridge> <Liamzee> so, you have functions that call into postgresql for you without needing you to write any code
2025-04-29 13:16:12 +0200 <tomsmeding> it's not a full streaming library, doesn't model "bailing out"
2025-04-29 13:16:17 +0200 <haskellbridge> <Liamzee> and let you have a simple way to set up a login / registration system
2025-04-29 13:16:21 +0200 <haskellbridge> <Liamzee> ah
2025-04-29 13:16:29 +0200 <tomsmeding> but maybe it gives inspiration
2025-04-29 13:16:50 +0200 <haskellbridge> <Liamzee> this is just part of my library since I generate a random bytestring (512 bytes) as an authcode for validation
2025-04-29 13:17:05 +0200 <tomsmeding> re login library: that sounds like a thing that looks good to people who've written 2 crud applications, and is a bad idea to people who've written 10
2025-04-29 13:17:11 +0200tomsmedinghas written <=2
2025-04-29 13:17:48 +0200 <tomsmeding> personally I'd separate the application-level logic from the database interaction logic
2025-04-29 13:18:02 +0200 <tomsmeding> i.e. have your library take user hooks for actually writing to and reading from the database
2025-04-29 13:18:06 +0200 <haskellbridge> <Liamzee> yeah of course
2025-04-29 13:18:06 +0200 <shapr> GOOD MORNING HASKELL LAND!
2025-04-29 13:18:07 +0200 <haskellbridge> <Liamzee> it's just functions
2025-04-29 13:18:10 +0200 <tomsmeding> that separates it from a particular DB implementation
2025-04-29 13:18:12 +0200 <haskellbridge> <Liamzee> i spent 2 weeks learning enough
2025-04-29 13:18:16 +0200 <haskellbridge> <Liamzee> GOOD MORNING SHAPR
2025-04-29 13:18:19 +0200 <shapr> w00!
2025-04-29 13:18:20 +0200 <tomsmeding> shapr: hello!
2025-04-29 13:18:26 +0200 <shapr> Hiya tomsmeding !
2025-04-29 13:18:28 +0200 <shapr> Hello Liamzee!
2025-04-29 13:18:35 +0200 <tomsmeding> not morning any more here though :)
2025-04-29 13:18:51 +0200 <shapr> It's true, morning is a temporary thing
2025-04-29 13:18:56 +0200 <shapr> It's a beautiful day for code!
2025-04-29 13:18:59 +0200 <haskellbridge> <Liamzee> I spent 2 weeks learning enough postgreSQL-simple, lucid, and twain to build half a login and authentication system
2025-04-29 13:19:01 +0200 <tomsmeding> so it is
2025-04-29 13:19:14 +0200 <tomsmeding> sounds like a fun way to learn these things
2025-04-29 13:19:15 +0200 <haskellbridge> <Liamzee> time has no meaning for me, there is only the eternal now (and not now)
2025-04-29 13:19:26 +0200 <shapr> Hm, that does sound familiar
2025-04-29 13:19:34 +0200 <tomsmeding> "not now" is an important one
2025-04-29 13:19:46 +0200 <haskellbridge> <Liamzee> so i just want to abstract it so that people need less knowledge in order to slap together a basic Haskell web application
2025-04-29 13:19:54 +0200 <haskellbridge> <Liamzee> (not now implies death)
2025-04-29 13:20:06 +0200 <tomsmeding> it doesn't, there are many things I will not do now
2025-04-29 13:20:14 +0200 <tomsmeding> such as graduate
2025-04-29 13:20:23 +0200 <shapr> are you on the path towards graduation?
2025-04-29 13:20:33 +0200 <tomsmeding> <1 year to phd graduation, if everything goes according to plan
2025-04-29 13:20:38 +0200 <haskellbridge> <Liamzee> welp, not going to get into a complicated philosophy discussion
2025-04-29 13:20:39 +0200 <shapr> w00t!
2025-04-29 13:20:43 +0200 <tomsmeding> at least, my contract runs out in <1 year :p
2025-04-29 13:20:54 +0200 <haskellbridge> <Liamzee> that is to say, our certainty of "now" is greater than our certainty of the past or the future
2025-04-29 13:21:01 +0200 <shapr> Ah, Utrecht?
2025-04-29 13:21:03 +0200tomsmedinghas no clue about philosophy
2025-04-29 13:21:06 +0200 <tomsmeding> yep
2025-04-29 13:21:12 +0200 <haskellbridge> <Liamzee> we have direct experiential knowledge of what happens now, but what happened before is only something we know from memory
2025-04-29 13:21:35 +0200 <tomsmeding> (Liamzee saying "not going to do X" before proceeding to do X)
2025-04-29 13:21:41 +0200 <haskellbridge> <Liamzee> consequently we live in an eternal now, at any time we are alive, we constantly experience the now as privileged toward the past
2025-04-29 13:21:47 +0200 <shapr> CHAD looks like fun
2025-04-29 13:21:48 +0200 <haskellbridge> <Liamzee> i do this too often :(
2025-04-29 13:21:57 +0200 <tomsmeding> hacking on chad right now, actually!
2025-04-29 13:22:39 +0200 <tomsmeding> debugging the simplifier of my toy language, it does incorrect simplifications sometimes
2025-04-29 13:24:01 +0200jacopovalanzano(~jacopoval@86.24.252.106)
2025-04-29 13:24:27 +0200jacopovalanzano(~jacopoval@86.24.252.106) (Client Quit)
2025-04-29 13:24:47 +0200statusbot12(~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com) statusbot
2025-04-29 13:25:30 +0200statusbot(~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com) (Read error: Connection reset by peer)
2025-04-29 13:26:45 +0200rvalue(~rvalue@user/rvalue) (Read error: Connection reset by peer)
2025-04-29 13:27:17 +0200rvalue(~rvalue@user/rvalue) rvalue
2025-04-29 13:27:49 +0200akegalj(~akegalj@144-188.dsl.iskon.hr)
2025-04-29 13:28:11 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2025-04-29 13:32:34 +0200fp(~Thunderbi@wireless-86-50-140-117.open.aalto.fi) (Ping timeout: 276 seconds)
2025-04-29 13:39:29 +0200euphores(~SASL_euph@user/euphores) (Ping timeout: 248 seconds)
2025-04-29 13:46:07 +0200euphores(~SASL_euph@user/euphores) euphores
2025-04-29 13:46:14 +0200 <shapr> @quote
2025-04-29 13:46:14 +0200 <lambdabot> jonrafkind says: every time you use a list as an ad-hoc datastructure, a kitten dies
2025-04-29 13:46:29 +0200 <tomsmeding> I'm currently using a list as an ad-hoc data structure
2025-04-29 13:46:38 +0200 <shapr> they're virtual kittens, it's okay
2025-04-29 13:46:48 +0200 <tomsmeding> phew
2025-04-29 13:52:40 +0200fp(~Thunderbi@2001:708:20:1406::1370) fp
2025-04-29 13:52:43 +0200internatetional(~nate@2404:c0:2020::118:9ffb) internatetional
2025-04-29 13:52:55 +0200tromp(~textual@2001:1c00:3487:1b00:81f6:6a75:5fad:c9b4) (Quit: My iMac has gone to sleep. ZZZzzz…)
2025-04-29 13:53:54 +0200Typedfern(~Typedfern@135.red-83-37-43.dynamicip.rima-tde.net) (Ping timeout: 268 seconds)
2025-04-29 13:54:15 +0200 <haskellbridge> <Liamzee> some people use kitten emojis as substitutes for the >>= operator. Reducing bind traversals improves performance, so killing 🐱 operators is fine.
2025-04-29 13:54:38 +0200haritz(~hrtz@152.37.68.178)
2025-04-29 13:54:38 +0200haritz(~hrtz@152.37.68.178) (Changing host)
2025-04-29 13:54:38 +0200haritz(~hrtz@user/haritz) haritz
2025-04-29 13:55:29 +0200Typedfern(~Typedfern@135.red-83-37-43.dynamicip.rima-tde.net) typedfern
2025-04-29 13:58:26 +0200internatetional_(~nate@2001:448a:20a3:c2e5:5b6:e1f9:afcb:86c5) internatetional
2025-04-29 14:02:28 +0200internatetional(~nate@2404:c0:2020::118:9ffb) (Ping timeout: 276 seconds)
2025-04-29 14:05:36 +0200 <shapr> Is there a good IRC channel where I can ask about denotational semantics?
2025-04-29 14:06:29 +0200yin(~yin@user/zero) zero
2025-04-29 14:07:23 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2025-04-29 14:08:07 +0200xff0x(~xff0x@2409:251:9040:2c00:f526:bfbc:714e:5dfd)
2025-04-29 14:08:35 +0200 <tomsmeding> you _might_ try ##dependent or #agda, but no guarantees -- I lurked in ##dependent for a bit because people invited me there and all I got was politics, so I left again
2025-04-29 14:09:22 +0200 <tomsmeding> math on irc is slightly impractical because only text, no formatting
2025-04-29 14:09:30 +0200mari72280(~mari-este@user/mari-estel) (Ping timeout: 272 seconds)
2025-04-29 14:09:37 +0200meritamen(~meritamen@user/meritamen) meritamen
2025-04-29 14:10:38 +0200meritamen(~meritamen@user/meritamen) (Remote host closed the connection)
2025-04-29 14:11:10 +0200 <shapr> tomsmeding: I just write raw LaTeX and expect the readers to use the rendering engine in their brain.
2025-04-29 14:11:23 +0200 <tomsmeding> that works for simple stuff, yes
2025-04-29 14:11:32 +0200 <shapr> Although now I'm tempted to try writing an ERC plugin for LaTeX formatting
2025-04-29 14:11:49 +0200 <yin> shapr: there are some iirc
2025-04-29 14:12:18 +0200 <shapr> tomsmeding: do you happen to know roughly what crosses outside of one line raw LaTeX?
2025-04-29 14:12:27 +0200 <shapr> yin: what do you suggest?
2025-04-29 14:12:35 +0200 <tomsmeding> as in other communication channels?
2025-04-29 14:13:05 +0200 <tomsmeding> I'm not sure, I'm not much into math. I know there's a Zulip that's mostly about Lean, but gathers mathematicians in this area broadly, too
2025-04-29 14:13:27 +0200 <shapr> oh, good idea
2025-04-29 14:14:02 +0200 <shapr> I dunno if I'm into math, but Haskell convinced me that math has the best abstractions, if only I can learn them.
2025-04-29 14:14:09 +0200 <shapr> It's been a long process
2025-04-29 14:14:14 +0200 <tomsmeding> never been there, but given the subject area, I would be highly surprised if they don't have a channel somehow that's just about semantics :P
2025-04-29 14:14:23 +0200 <tomsmeding> math does have good abstractions sometimes
2025-04-29 14:14:32 +0200 <tomsmeding> sometimes CS has better ones
2025-04-29 14:14:38 +0200 <tomsmeding> (for programming, that is)
2025-04-29 14:14:42 +0200 <yin> shapr: i'm using irssi and kitty terminal. although i don't remember using it, kitty has a latex plugin so that would satisfy my needs
2025-04-29 14:14:55 +0200 <shapr> tomsmeding: got any in mind that programming does better than math?
2025-04-29 14:15:12 +0200 <shapr> yin: oh, I'm using kitty, but I've only used the image kitten, I'll try the LaTeX plugin, thanks!
2025-04-29 14:15:26 +0200 <tomsmeding> well the easy cases center around math, as a whole, not caring about "performance" -- it's not even well-defined what that means in math world
2025-04-29 14:15:29 +0200 <yin> shapr: no problem
2025-04-29 14:15:49 +0200 <tomsmeding> anything that involves "ensuring you don't compute a value more than once" is something that CS cares about and math does not
2025-04-29 14:16:01 +0200 <tomsmeding> we have various abstractions to deal with our petty performance concerns
2025-04-29 14:16:03 +0200 <shapr> tomsmeding: that's a good point, hm
2025-04-29 14:16:43 +0200 <shapr> Early in the book I'm reading Joseph Stoy relays that Dana Scott says "we can't have real functions in a computer because computers are so small compared to all the values"
2025-04-29 14:16:48 +0200tromp(~textual@2001:1c00:3487:1b00:81f6:6a75:5fad:c9b4)
2025-04-29 14:17:10 +0200 <tomsmeding> sometimes math happens to have stuff that's useful for performance too, like Cayley transformation (i.e. "difference lists") or Coyoneda (which I have no clue about, but iirc was a generalisation that can be used to reassociate (>>=) where Cayley reassociates (<>))
2025-04-29 14:17:12 +0200 <shapr> So I currently lean towards "CS has a smaller view because computers are so tiny right now"
2025-04-29 14:17:28 +0200 <yin> computers were a mistake and we got too carried away
2025-04-29 14:17:42 +0200 <shapr> Or maybe "CS *must have* a tiny view" ?
2025-04-29 14:17:44 +0200 <shapr> Something like that.
2025-04-29 14:18:09 +0200 <shapr> I'm reading "Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory" with exarkun
2025-04-29 14:18:15 +0200 <tomsmeding> shapr: I'm thinking, but perhaps laziness is one of those CS-only abstractions?
2025-04-29 14:18:30 +0200 <shapr> Because I have zero formal math education, it's rough going
2025-04-29 14:18:40 +0200 <tomsmeding> I can imagine :p
2025-04-29 14:18:59 +0200shaprthinks
2025-04-29 14:19:01 +0200tomsmedingwould probably have the same, just given the title, despite actually having some formal math education
2025-04-29 14:19:13 +0200 <shapr> Yeah, I could see laziness being unimportant in pure math.
2025-04-29 14:19:25 +0200 <tomsmeding> now, lots of CS considers laziness a bad idea too
2025-04-29 14:19:29 +0200ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 265 seconds)
2025-04-29 14:19:33 +0200 <tomsmeding> but it definitely has uses, and it's sometimes a really good abstraction
2025-04-29 14:19:39 +0200 <shapr> I've bounced off several category theory books previously, but this 1976(?) book is working for me.
2025-04-29 14:19:44 +0200 <tomsmeding> lol
2025-04-29 14:19:50 +0200 <tomsmeding> that's cool!
2025-04-29 14:20:05 +0200 <yin> shapr: which book is it?
2025-04-29 14:20:11 +0200 <shapr> I think partially because it's very concrete.
2025-04-29 14:20:19 +0200 <shapr> yin: https://www.goodreads.com/book/show/1404132.Denotational_Semantics
2025-04-29 14:20:27 +0200 <yin> ty
2025-04-29 14:21:05 +0200 <shapr> Another reason this is working better is that I'm in a reading group, where I get stuck is not where exarkun gets stuck.
2025-04-29 14:21:18 +0200 <shapr> Mind you, that's why I started this IRC channel, because I was unable to teach myself Haskell
2025-04-29 14:21:24 +0200 <tomsmeding> hah
2025-04-29 14:21:39 +0200 <tomsmeding> having someone to bounce ideas off is great, yeah
2025-04-29 14:21:43 +0200 <tomsmeding> or non-ideas
2025-04-29 14:22:10 +0200 <shapr> Yeah, early days were Igloo and Heffalump and ski and a few others.
2025-04-29 14:22:28 +0200 <yin> i wish i thought of that when i was teaching myself haskell
2025-04-29 14:22:37 +0200 <tomsmeding> it's cool to see that some of those are still around :)
2025-04-29 14:22:39 +0200 <shapr> yin: you're here now! hurrah!
2025-04-29 14:22:59 +0200 <shapr> tomsmeding: a decent chunk of the early crowd now have their own PhD students
2025-04-29 14:23:03 +0200 <shapr> soon it'll be you!
2025-04-29 14:23:18 +0200 <tomsmeding> maybe :p
2025-04-29 14:23:19 +0200 <yin> wait, are you talking about *this* channel?
2025-04-29 14:23:23 +0200 <shapr> yin: yes!
2025-04-29 14:23:49 +0200 <yin> shapr: oh great! well, thank you then
2025-04-29 14:23:51 +0200 <tomsmeding> probably a few irc networks earlier, or was it freenode in the beginning already?
2025-04-29 14:23:54 +0200jespada(~jespada@r167-61-148-73.dialup.adsl.anteldata.net.uy) jespada
2025-04-29 14:23:58 +0200 <shapr> Mind you, we moved from EFNet to, uh, OPN, and now to Libera
2025-04-29 14:24:16 +0200 <tomsmeding> EFNet -> OPN -> Freenode -> Libera?
2025-04-29 14:24:21 +0200Square2(~Square4@user/square) Square
2025-04-29 14:24:30 +0200 <shapr> Right, though OPN got renamed to freenode, so roughly the same thing
2025-04-29 14:24:37 +0200 <tomsmeding> I only barely know the existence of EFNet from earlier mentions
2025-04-29 14:24:39 +0200JuanDaugherty(~juan@user/JuanDaugherty) JuanDaugherty
2025-04-29 14:24:39 +0200 <tomsmeding> ah
2025-04-29 14:24:57 +0200tomsmedingdiscovered freenode after the rename, apparently
2025-04-29 14:24:59 +0200 <shapr> yin: this channel was started in the first few months of 2001
2025-04-29 14:25:18 +0200 <yin> i was around in freenode! i remember ski helping me understand recursive tree traversal
2025-04-29 14:25:25 +0200 <shapr> yeah! ski is brilliant!
2025-04-29 14:25:35 +0200 <haskellbridge> <Liamzee> he's also very nice
2025-04-29 14:25:37 +0200 <shapr> I met them when I lived in Sweden so long ago
2025-04-29 14:25:53 +0200 <shapr> I've met a good number of the early denizens.
2025-04-29 14:25:53 +0200wlhn(~wlhn@130.41.101.92) (Ping timeout: 248 seconds)
2025-04-29 14:25:57 +0200 <haskellbridge> <Liamzee> also, is it correct to say that IO actions are always inlined, but as actions?
2025-04-29 14:26:24 +0200 <JuanDaugherty> it was impressive
2025-04-29 14:26:43 +0200 <shapr> Hello JuanDaugherty !
2025-04-29 14:26:45 +0200 <JuanDaugherty> the whole hs namespace and its users moved in a matter of hours
2025-04-29 14:26:57 +0200 <JuanDaugherty> yello shapr
2025-04-29 14:27:00 +0200 <JuanDaugherty> !
2025-04-29 14:27:07 +0200 <haskellbridge> <Liamzee> from freenod eto libera or efnet to OPN?
2025-04-29 14:27:39 +0200Inst(~Inst@user/Inst) Inst
2025-04-29 14:27:44 +0200 <shapr> The libera shift was the most dramatic, imo
2025-04-29 14:28:03 +0200 <JuanDaugherty> sounds like what I meant
2025-04-29 14:28:22 +0200 <JuanDaugherty> i.e. the move of the haskell irc channel namespace from freenode to here
2025-04-29 14:28:43 +0200 <yin> matrix and discord are going strong too
2025-04-29 14:28:52 +0200 <JuanDaugherty> which occured in about a half day of the action at freenode
2025-04-29 14:29:42 +0200 <JuanDaugherty> at the user level there's not a lot to irc
2025-04-29 14:30:02 +0200 <shapr> Yeah, that's one reason I like the IRC protocol
2025-04-29 14:30:06 +0200 <JuanDaugherty> but nothing of its size moved like #hs
2025-04-29 14:30:14 +0200jacopovalanzano(~jacopoval@cpc151911-cove17-2-0-cust105.3-1.cable.virginm.net)
2025-04-29 14:30:51 +0200 <JuanDaugherty> many lang spaces took weeks and igess some are still there
2025-04-29 14:31:17 +0200lisbeths(uid135845@id-135845.lymington.irccloud.com) lisbeths
2025-04-29 14:31:21 +0200 <shapr> Haskell is great at allocating space for new values?
2025-04-29 14:31:45 +0200 <tomsmeding> and then quickly forgetting about those values again
2025-04-29 14:31:48 +0200 <shapr> I haven't written much Haskell the past months, maybe I'll pick up kudzu again
2025-04-29 14:31:55 +0200 <shapr> tomsmeding: yeah, garbage collection!
2025-04-29 14:31:55 +0200 <haskellbridge> <Liamzee> kudzu?
2025-04-29 14:32:23 +0200 <JuanDaugherty> as a community hs is pretty feckless in the face of the capitalism but there are catalytic situations igess
2025-04-29 14:32:24 +0200 <shapr> Yeah, I wrote a cheesy property based testing library that figures out how many random values is enough by using code coverage
2025-04-29 14:32:38 +0200 <shapr> but it needs splitting into library specific pieces
2025-04-29 14:33:02 +0200 <shapr> The core of kudzu is almost nothing: https://github.com/shapr/kudzu/blob/split-deps/kudzu-core/src/Kudzu/Core.hs
2025-04-29 14:33:28 +0200 <JuanDaugherty> shapr, u used to be big here
2025-04-29 14:33:29 +0200 <haskellbridge> <Liamzee> is there a good book or resource to understand the operational function of GHC without learning the GHC compiler source code?
2025-04-29 14:33:38 +0200skiglances around nervously
2025-04-29 14:33:43 +0200 <shapr> The whole idea is "use HPC at runtime to see if there's new code coverage after running a property test"
2025-04-29 14:34:05 +0200 <shapr> JuanDaugherty: meh, I lost weight. It was healthy.
2025-04-29 14:34:10 +0200 <shapr> :-D
2025-04-29 14:34:15 +0200 <JuanDaugherty> :)
2025-04-29 14:35:22 +0200 <haskellbridge> <Liamzee> hello ski!
2025-04-29 14:35:51 +0200 <JuanDaugherty> k, ski u was always big, now and forever
2025-04-29 14:36:05 +0200 <haskellbridge> <Liamzee> it's sort of an idle question on my part, i.e, is it reasonable to understand IO actions (values of form IO a) as being effectively an interpreted eDSL?
2025-04-29 14:36:24 +0200 <ski> i wasn't on the EFNet version (can't even recall hearing that was originally a thing). i came into the Open Projects Network (OPN) version, back in 2001
2025-04-29 14:36:50 +0200 <ski> we were around 15 - 20, to begin with ?
2025-04-29 14:37:45 +0200 <JuanDaugherty> undernet took most of the EGnet mojo, a slightly toned down version with more stuff/services but the two networks make a space
2025-04-29 14:37:46 +0200skistill recalls shapr showing off their unicycle, even getting John Hughes to try it out
2025-04-29 14:38:15 +0200 <JuanDaugherty> *EFnet
2025-04-29 14:39:09 +0200 <JuanDaugherty> which igess allowed EFnet to stretch its legs as a hellhole
2025-04-29 14:39:24 +0200 <ski> i found the IRC channel from the HaWiki (which was running MoinMoin. former version of HaskellWiki, now running MediaWiki, iirc); which i found from the Usenet newsgroup <news:comp.lang.functional>
2025-04-29 14:39:57 +0200 <ski> (i had briefly seen IRC used before, but not gotten into it. #haskell was my first IRC channel)
2025-04-29 14:40:02 +0200 <JuanDaugherty> i first recall u from the original ##prolog
2025-04-29 14:40:27 +0200 <JuanDaugherty> u was pl b4 hs
2025-04-29 14:40:30 +0200 <shapr> hej hopp ski!
2025-04-29 14:40:33 +0200mari-estel(~mari-este@user/mari-estel) mari-estel
2025-04-29 14:40:39 +0200skibounces on chair
2025-04-29 14:40:51 +0200shaprhops cheerfully
2025-04-29 14:40:56 +0200 <shapr> ski: I have more unicycles now
2025-04-29 14:41:00 +0200 <ski> oh ?
2025-04-29 14:41:23 +0200 <shapr> Yeah, I still have that one, but I bought a newer one three years ago, and I'm in the process of purchasing yet another.
2025-04-29 14:41:45 +0200 <haskellbridge> <Liamzee> do you have a motorized unicycle?
2025-04-29 14:41:46 +0200 <shapr> Would love to write more Haskell though
2025-04-29 14:42:03 +0200 <shapr> Nah, they're all manual. I'm tempted to get in on the next geared hub order.
2025-04-29 14:42:11 +0200 <ski> yea, after some time, i branched out to ##prolog and #scheme, JuanDaugherty
2025-04-29 14:42:27 +0200 <ski> i started in #haskell, though
2025-04-29 14:42:38 +0200 <shapr> This is my primary unicycle: https://recurse.social/@shapr/114155438798005645
2025-04-29 14:43:10 +0200 <shapr> What's the hot new things in the Haskell world?
2025-04-29 14:43:52 +0200 <JuanDaugherty> oh didn notice maybe cause i didn start with hs till c. '08 about the time sbcl forked from cmucl
2025-04-29 14:44:38 +0200 <shapr> ski: maybe my memory is wrong and this channel never was on EFNet?
2025-04-29 14:44:46 +0200 <shapr> I bet your memory is better than mine.
2025-04-29 14:44:52 +0200 <ski> (but yes, i got a little taste of Prolog, in a "computer math" course in "high school" (?), after a "C/C++" one, and before later learning Java, Haskell, Prolog (properly), also checking out C more, Scheme, SML, .. before all that, i started with BASIC, at age 6.5 (programmable pocket calculator with 544 bytes of RAM available for BASIC programs), then (BASIC and) 6502 assembly on Commodore 64, a little bit
2025-04-29 14:44:56 +0200 <haskellbridge> <Liamzee> https://kf8nh.com/_heisenbridge/media/matrix.org/aWRsyGBptPdeFDXjaSNcUiVr/8qPtsH3bWlo/MisoCounteri…
2025-04-29 14:44:58 +0200 <ski> 680x0 assembly on Amiga)
2025-04-29 14:45:03 +0200 <ski> i'm not sure, shapr
2025-04-29 14:45:33 +0200 <JuanDaugherty> well maybe in the 90s
2025-04-29 14:45:35 +0200 <haskellbridge> <Liamzee> ugh, it's not playing
2025-04-29 14:45:45 +0200 <ski> i recall when clog was logging the channel, and that started on OPN, i think. that doesn't refute it possibly being on EFNet a little while before, though
2025-04-29 14:45:48 +0200 <JuanDaugherty> (#hs on efnet)
2025-04-29 14:45:59 +0200 <JuanDaugherty> seems unlikely tho
2025-04-29 14:47:06 +0200 <ski> looks pretty nice, shapr !
2025-04-29 14:47:19 +0200 <JuanDaugherty> at some point u get a common ancestor effect since efnet is primordial
2025-04-29 14:48:08 +0200 <ski> JuanDaugherty : i certainly have had a love for logic programming, a long time, as well, roughly for as long as functional in any case
2025-04-29 14:48:23 +0200 <JuanDaugherty> i c
2025-04-29 14:50:27 +0200 <ski> Liamzee : "is it reasonable to understand IO actions (values of form IO a) as being effectively an interpreted eDSL?" -- yes, more or less (although i'd skip the "interpreted", probably)
2025-04-29 14:50:40 +0200koz(~koz@121.99.240.58) (Ping timeout: 244 seconds)
2025-04-29 14:52:01 +0200 <shapr> I gotta split kudzu into test framework specific parts and upload those new libraries.
2025-04-29 14:52:07 +0200 <yin> shapr: the "new thing in haskell" is probably linear types?
2025-04-29 14:52:37 +0200 <shapr> I haven't tried that, could be fun.
2025-04-29 14:52:38 +0200 <haskellbridge> <Liamzee> ski: i mean, zero cost calls to IO actions, low-cost calls to IO functions
2025-04-29 14:52:40 +0200 <yin> for some definition of "new"
2025-04-29 14:52:47 +0200 <shapr> I've been writing a bunch of Rust, and those are affine types
2025-04-29 14:53:19 +0200koz(~koz@121.99.240.58)
2025-04-29 14:54:05 +0200 <haskellbridge> <Liamzee> since an IO function implies that the function arguments are allocated onto the heap until no longer needed
2025-04-29 14:54:18 +0200tolgo(~Thunderbi@199.115.144.130)
2025-04-29 14:54:37 +0200JuanDaughertyColinRobinson
2025-04-29 14:55:07 +0200 <ski> you can easily make your own `IO'-type as `data IOProgram = End ExitCode | Openfile FilePath IOMode (Handle -> IOProgram) | HGetChar Handle (Char -> IOProgram) | HPutChar Handle Char IOProgram | ...' and `newtype IO a = MkIO ((a -> IOProgram) -> IOProgram)' (iow `Cont IOProgram a'), and interpret that into the usual `IO' with `runIO :: IO a -> System.IO.IO a'
2025-04-29 14:57:26 +0200 <yin> for some definition of "easily"
2025-04-29 15:00:13 +0200 <ski> originally, Haskell had "dialogue"-based I/O, where `type Dialogue = [Response] -> [Request]', and `data Request = OpenFile FilePath IOMode | HGetChar Handle | HPutChar Handle Char | ...' with `data Response = FileOpened Handle | HCharGot Char | HCharPut | ...', and then you can write wrappers like `hGetChar :: Handle -> (Char -> Dialogue) -> Dialogue' (iow `Handle -> Cont Dialogue Char') as `hGetChar h k
2025-04-29 15:00:19 +0200 <ski> ~(HCharGot c:resps) = HGetChar h : k c resps'
2025-04-29 15:00:37 +0200 <ski> so, here you effectively get `Cont Dialogue' as `IO'
2025-04-29 15:01:08 +0200 <ski> and you can interpret the former `IO' into this `Cont Dialogue' (instead of into `Cont IOProgram')
2025-04-29 15:02:40 +0200 <haskellbridge> <Liamzee> ski: i was trying to analogize the IO type to free monads actually
2025-04-29 15:03:45 +0200 <haskellbridge> <Liamzee> since you actually have runRW# fun #Real World# or something like that, then you call a continuation
2025-04-29 15:03:47 +0200 <ski> if you prefer, you could use a GADT instead of `IOProgram', like `data IO :: * -> * where Return :: a -> IO a; ExitWith :: ExitCode -> IO a; OpenFile :: FilePath -> IOMode -> IO Handle; HGetChar :: Handle -> IO Char; HPutChar :: Handle -> Char -> IO ()'; ...', and then interpret that as usual. you could have `(>>=) :: IO a -> (a -> IO b) -> IO b' here walk the tree on the left, to graft the continuation
2025-04-29 15:03:53 +0200 <ski> argument into all leaves, effectively splicing new subtrees in place of the leaves .. or you could instead add a `Bind :: IO a -> (a -> IO b) -> IO b' data constructor
2025-04-29 15:05:53 +0200 <ski> but the main point here is that you *can* think of `IO' as an "instruction tree", or as being defined in terms of `IOProgram', being an instruction tree. *or* defined in terms of `Request' & `Response', which are used in tandem (with lazy pattern matches, the `~', which is crucial here, and easy to mess up, hence abstracting it away behind CPS operations like `hGetChar')
2025-04-29 15:06:12 +0200 <ski> and you an possibly conceive of more ways
2025-04-29 15:06:22 +0200tolgo(~Thunderbi@199.115.144.130) (Ping timeout: 265 seconds)
2025-04-29 15:06:34 +0200 <ski> (iirc Hugs didn't use the CPS version, but something a bit different, for `IO')
2025-04-29 15:06:37 +0200 <haskellbridge> <Liamzee> ehhh, i guess i'm more being operational about it, since my habit right now in Haskell is not to care about function calls etc
2025-04-29 15:06:51 +0200 <haskellbridge> <Liamzee> treating them as zero or low-cost
2025-04-29 15:07:17 +0200 <ski> having the primitive `IO' operations be data constructors is the "deep embedded DSL" version
2025-04-29 15:07:38 +0200 <ski> defining in terms of `Dialogue' is more a shallow embedding
2025-04-29 15:07:49 +0200 <haskellbridge> <Liamzee> since an interpreter model of how GHC is managing IO actions is treating them like it's zero cost to call an IO action and low cost to call an IO function, in comparison to an imperative language where stack allocation is happening
2025-04-29 15:08:10 +0200 <ski> you can clearly see the "instructions" of the DSL, in the former. in the latter, your main operations
2025-04-29 15:08:27 +0200 <ski> are those DSL constructs, but there's no "interpretation" of them, since we don't build a tree of them
2025-04-29 15:08:43 +0200 <ski> (instead being defined in terms of the more primitive `Request' and `Response')
2025-04-29 15:09:01 +0200 <ski> yin : you could try it, as an exercise. it's not too hard
2025-04-29 15:09:20 +0200 <haskellbridge> <Liamzee> it's just a free monad afaik
2025-04-29 15:09:24 +0200 <ski> it helps to have seen some CPS (Continuation-Passing Style) or `Cont' before, though
2025-04-29 15:09:29 +0200 <haskellbridge> <Liamzee> erm, iiuc
2025-04-29 15:10:31 +0200ljdarj(~Thunderbi@user/ljdarj) ljdarj
2025-04-29 15:10:49 +0200internatetional_(~nate@2001:448a:20a3:c2e5:5b6:e1f9:afcb:86c5) (Ping timeout: 252 seconds)
2025-04-29 15:10:58 +0200internatetional(~nate@2001:448a:20a3:c2e5:701e:e3ed:2d04:6885) internatetional
2025-04-29 15:11:13 +0200 <ski> "since you actually have runRW# fun #Real World# or something like that, then you call a continuation" -- yea, GHC uses a state-passing internal implementation, which is only valid if the `RealWorld#' is being passed around uniquely (and this still doesn't properly describe exceptions, nor concurrency, nor things like `unsafeInterleaveIO',`unsafePerformIO')
2025-04-29 15:12:01 +0200 <ski> "i was trying to analogize the IO type to free monads actually" -- yea, the last `IO' version i sketched is basically the free monad version
2025-04-29 15:12:33 +0200jespada_(~jespada@r179-25-126-65.dialup.adsl.anteldata.net.uy) jespada
2025-04-29 15:12:56 +0200j1n37-(~j1n37@user/j1n37) (Read error: Connection reset by peer)
2025-04-29 15:13:02 +0200 <ski> "in comparison to an imperative language where stack allocation is happening" -- yea, calls don't push stack in Haskell, but *pattern-matching* (`case'-`of', as well as the sugar for that) still does
2025-04-29 15:14:00 +0200 <ski> yin : note that linear types are not quite the same as affine or unique ones (those two are quite similar, the only difference is whether you're allowed to drop an item on the floor or not)
2025-04-29 15:14:40 +0200jespada(~jespada@r167-61-148-73.dialup.adsl.anteldata.net.uy) (Ping timeout: 252 seconds)
2025-04-29 15:15:30 +0200 <ski> with uniqueness, you're promised that your reference to an item/value have not been duplicated in the *past* (but you could still duplicate in future, unless, say, you have to return it as still being unique). with linearity, you promise to not duplicate it in the *future* (but it could already have been duplicated in the past, before giving up the ability to duplicate)
2025-04-29 15:16:02 +0200j1n37(~j1n37@user/j1n37) j1n37
2025-04-29 15:16:47 +0200 <haskellbridge> <Liamzee> that's interesting, i thought Haskell didn't use stack?
2025-04-29 15:16:49 +0200 <haskellbridge> <Liamzee> welp, no shade intended
2025-04-29 15:18:46 +0200tromp(~textual@2001:1c00:3487:1b00:81f6:6a75:5fad:c9b4) (Quit: My iMac has gone to sleep. ZZZzzz…)
2025-04-29 15:19:49 +0200mari-estel(~mari-este@user/mari-estel) (Ping timeout: 260 seconds)
2025-04-29 15:21:00 +0200 <ski> not using stack is not the same as not using call stack
2025-04-29 15:21:51 +0200internatetional_(~nate@2001:448a:20a3:c2e5:9930:c729:580e:9aa0) internatetional
2025-04-29 15:24:02 +0200 <ski> btw, in Scheme, calling a procedure doesn't push stack, either, but evaluating procedure call arguments (and well as the function expression), and introducing new local variables (e.g. with `let'), or doing branching (like `case',`if',`cond', or e.g. a library pattern-matcher as `match'), does. or, in general, introducing a non-tail context
2025-04-29 15:24:59 +0200internatetional(~nate@2001:448a:20a3:c2e5:701e:e3ed:2d04:6885) (Ping timeout: 245 seconds)
2025-04-29 15:25:07 +0200 <ski> in Haskell, it's basically the same, except that the "evaluating procedure call arguments" part is skipped. a call `f x' will not evaluate `x' (but will still evaluate `f' itself, which could cause stack usage)
2025-04-29 15:25:26 +0200internatetional(~nate@2001:448a:20a3:c2e5:1ee8:b348:b41a:5570) internatetional
2025-04-29 15:26:13 +0200internatetional_(~nate@2001:448a:20a3:c2e5:9930:c729:580e:9aa0) (Ping timeout: 252 seconds)
2025-04-29 15:27:27 +0200mange(~user@user/mange) (Quit: Zzz...)
2025-04-29 15:27:39 +0200 <ski> in Scheme, you have evaluation contexts like `C[] ::= [] | (E ... E C[] E ... E) | (if C[] E E) | (case C[] (P E ... E) ... (P E ... E)) | ..'
2025-04-29 15:28:28 +0200 <ski> in Haskell, `C[] ::= [] | C[] E ... E | if C[] then E else E | case C[] of P -> E; ... P -> E | ..'
2025-04-29 15:29:10 +0200 <ski> (yes, `case' in Haskell doesn't directly correspond to `case' in Scheme (which is more like a C `switch'), but rather `match', but that doesn't matter too much here, for the comparision)
2025-04-29 15:31:36 +0200mari-estel(~mari-este@user/mari-estel) mari-estel
2025-04-29 15:31:55 +0200 <ski> Liamzee : anyway, tail calls and tail recursion is still important in Haskell .. but tends to be a bit less important, due to non-strictness (typically implemented using laziness) making it easier to often describe loops as incremental algorithms, only computing the result piece-by-piece, so that the caller will drive looping over this, demanding more result pieces, for as long as it wants to, as opposed to
2025-04-29 15:32:01 +0200 <ski> a tail-recursive loop, which will always be bulky, not return any part of the result until the whole loop is done
2025-04-29 15:33:18 +0200 <ski> but you still don't want to build up more and more context, when doing a long-running loop (e.g. with `IO'), if you can avoid it, and in such cases, reasoning about tail calls can be quite important to prevent space leakage (in the Haskell sense)
2025-04-29 15:33:49 +0200ColinRobinson(~juan@user/JuanDaugherty) (Quit: praxis.meansofproduction.biz (juan@acm.org))
2025-04-29 15:33:57 +0200lxsameer(~lxsameer@Serene/lxsameer) lxsameer
2025-04-29 15:40:24 +0200mari-estel(~mari-este@user/mari-estel) (Ping timeout: 252 seconds)
2025-04-29 15:45:24 +0200mari-estel(~mari-este@user/mari-estel) mari-estel
2025-04-29 15:54:55 +0200fp(~Thunderbi@2001:708:20:1406::1370) (Ping timeout: 276 seconds)
2025-04-29 16:05:21 +0200mari-estel(~mari-este@user/mari-estel) (Remote host closed the connection)
2025-04-29 16:13:12 +0200Leary(~Leary@user/Leary/x-0910699) (Ping timeout: 276 seconds)
2025-04-29 16:13:18 +0200Inst(~Inst@user/Inst) (Remote host closed the connection)
2025-04-29 16:14:42 +0200Leary(~Leary@user/Leary/x-0910699) Leary
2025-04-29 16:16:00 +0200jacopovalanzano(~jacopoval@cpc151911-cove17-2-0-cust105.3-1.cable.virginm.net) (Quit: Client closed)
2025-04-29 16:31:40 +0200tabaqui(~tabaqui@167.71.80.236) tabaqui
2025-04-29 16:46:14 +0200j1n37(~j1n37@user/j1n37) (Ping timeout: 245 seconds)
2025-04-29 16:46:27 +0200notdabs(~Owner@2600:1700:69cf:9000:748c:9883:fc80:2b20)
2025-04-29 16:46:31 +0200internatetional(~nate@2001:448a:20a3:c2e5:1ee8:b348:b41a:5570) (Ping timeout: 252 seconds)
2025-04-29 16:48:56 +0200j1n37(~j1n37@user/j1n37) j1n37
2025-04-29 16:49:34 +0200notdabs(~Owner@2600:1700:69cf:9000:748c:9883:fc80:2b20) (Client Quit)
2025-04-29 16:52:16 +0200yin(~yin@user/zero) (Ping timeout: 252 seconds)
2025-04-29 16:57:46 +0200Googulator71(~Googulato@94-21-139-144.pool.digikabel.hu) (Quit: Client closed)
2025-04-29 16:57:55 +0200yin(~yin@user/zero) zero
2025-04-29 16:58:04 +0200Googulator71(~Googulato@2a01-036d-0106-4a24-1dc7-297e-fae3-e794.pool6.digikabel.hu)
2025-04-29 17:06:00 +0200orcus(~orcus@mail.brprice.uk) (Quit: ZNC 1.8.2 - https://znc.in)
2025-04-29 17:06:00 +0200dispater(~dispater@mail.brprice.uk) (Quit: ZNC 1.8.2 - https://znc.in)
2025-04-29 17:09:00 +0200dispater(~dispater@mail.brprice.uk)
2025-04-29 17:09:30 +0200orcus(~orcus@mail.brprice.uk)
2025-04-29 17:10:27 +0200lisbeths(uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2025-04-29 17:10:43 +0200dispater(~dispater@mail.brprice.uk) (Client Quit)
2025-04-29 17:10:44 +0200orcus(~orcus@mail.brprice.uk) (Client Quit)
2025-04-29 17:12:33 +0200dispater(~dispater@mail.brprice.uk)
2025-04-29 17:13:05 +0200orcus(~orcus@mail.brprice.uk)
2025-04-29 17:14:40 +0200califax(~califax@user/califx) (Remote host closed the connection)
2025-04-29 17:16:24 +0200califax(~califax@user/califx) califx
2025-04-29 17:20:48 +0200xff0x(~xff0x@2409:251:9040:2c00:f526:bfbc:714e:5dfd) (Ping timeout: 276 seconds)
2025-04-29 17:23:02 +0200califax(~califax@user/califx) (Remote host closed the connection)
2025-04-29 17:24:07 +0200califax(~califax@user/califx) califx
2025-04-29 17:31:25 +0200califax(~califax@user/califx) (Remote host closed the connection)
2025-04-29 17:32:54 +0200ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 245 seconds)
2025-04-29 17:34:10 +0200acidjnk_new(~acidjnk@p54ad5829.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2025-04-29 17:35:55 +0200califax(~califax@user/califx) califx
2025-04-29 17:40:51 +0200califax(~califax@user/califx) (Remote host closed the connection)
2025-04-29 17:40:56 +0200internatetional(~nate@2001:448a:20a3:c2e5:6ffc:4715:4937:5d57) internatetional
2025-04-29 17:43:23 +0200gorignak(~gorignak@user/gorignak) gorignak
2025-04-29 17:43:28 +0200tabaqui(~tabaqui@167.71.80.236) (Ping timeout: 276 seconds)
2025-04-29 17:43:59 +0200califax(~califax@user/califx) califx
2025-04-29 17:45:46 +0200califax(~califax@user/califx) (Remote host closed the connection)
2025-04-29 17:46:52 +0200califax(~califax@user/califx) califx
2025-04-29 17:49:34 +0200internatetional(~nate@2001:448a:20a3:c2e5:6ffc:4715:4937:5d57) (Ping timeout: 245 seconds)
2025-04-29 17:54:51 +0200wootehfoot(~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
2025-04-29 18:03:30 +0200ljdarj(~Thunderbi@user/ljdarj) ljdarj
2025-04-29 18:03:38 +0200acidjnk_new(~acidjnk@p200300d6e71c4f5484b3f1722d8c7d91.dip0.t-ipconnect.de) acidjnk
2025-04-29 18:13:44 +0200merijn(~merijn@77.242.116.146) (Ping timeout: 245 seconds)
2025-04-29 18:14:28 +0200danza(~danza@user/danza) danza
2025-04-29 18:16:38 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2025-04-29 18:17:08 +0200weary-traveler(~user@user/user363627) user363627
2025-04-29 18:17:25 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2025-04-29 18:24:06 +0200tromp(~textual@2001:1c00:3487:1b00:81f6:6a75:5fad:c9b4)
2025-04-29 18:25:56 +0200tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net) tzh
2025-04-29 18:31:19 +0200j1n37-(~j1n37@user/j1n37) j1n37
2025-04-29 18:32:04 +0200j1n37(~j1n37@user/j1n37) (Ping timeout: 245 seconds)
2025-04-29 18:37:45 +0200yin(~yin@user/zero) (Ping timeout: 260 seconds)
2025-04-29 18:46:14 +0200wootehfoot(~wootehfoo@user/wootehfoot) wootehfoot
2025-04-29 18:47:20 +0200internatetional(~nate@2001:448a:20a3:c2e5:b374:8cd1:e4d4:3c34) internatetional
2025-04-29 18:48:10 +0200justsomeguy(~justsomeg@user/justsomeguy) (Ping timeout: 272 seconds)
2025-04-29 18:51:54 +0200acidjnk_new(~acidjnk@p200300d6e71c4f5484b3f1722d8c7d91.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2025-04-29 18:54:09 +0200jespada_(~jespada@r179-25-126-65.dialup.adsl.anteldata.net.uy) (Quit: My Mac has gone to sleep. ZZZzzz…)
2025-04-29 18:55:11 +0200jespada(~jespada@r179-25-126-65.dialup.adsl.anteldata.net.uy) jespada
2025-04-29 18:57:50 +0200tromp(~textual@2001:1c00:3487:1b00:81f6:6a75:5fad:c9b4) (Quit: My iMac has gone to sleep. ZZZzzz…)
2025-04-29 19:02:26 +0200 <haskellbridge> <Liamzee> thanks ski
2025-04-29 19:09:38 +0200internatetional(~nate@2001:448a:20a3:c2e5:b374:8cd1:e4d4:3c34) (Ping timeout: 268 seconds)
2025-04-29 19:11:58 +0200fp(~Thunderbi@87-94-239-173.bb.dnainternet.fi) fp
2025-04-29 19:12:20 +0200internatetional(~nate@2001:448a:20a3:c2e5:b374:8cd1:e4d4:3c34) internatetional
2025-04-29 19:21:59 +0200tromp(~textual@2001:1c00:3487:1b00:81f6:6a75:5fad:c9b4)
2025-04-29 19:26:50 +0200danza(~danza@user/danza) (Remote host closed the connection)
2025-04-29 19:26:59 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds)
2025-04-29 19:31:21 +0200tromp(~textual@2001:1c00:3487:1b00:81f6:6a75:5fad:c9b4) (Quit: My iMac has gone to sleep. ZZZzzz…)
2025-04-29 19:32:01 +0200haskellbridge(~hackager@syn-024-093-192-219.res.spectrum.com) (Ping timeout: 276 seconds)
2025-04-29 19:33:19 +0200haskellbridge(~hackager@syn-024-093-192-219.res.spectrum.com) hackager
2025-04-29 19:33:19 +0200ChanServ+v haskellbridge
2025-04-29 19:36:15 +0200ft(~ft@p4fc2a6e6.dip0.t-ipconnect.de) ft
2025-04-29 19:38:43 +0200tromp(~textual@2001:1c00:3487:1b00:81f6:6a75:5fad:c9b4)
2025-04-29 19:49:41 +0200internatetional(~nate@2001:448a:20a3:c2e5:b374:8cd1:e4d4:3c34) (Ping timeout: 248 seconds)
2025-04-29 20:00:20 +0200justsomeguy(~justsomeg@user/justsomeguy) justsomeguy
2025-04-29 20:04:46 +0200tolgo(~Thunderbi@199.115.144.130)