2025/10/20

Newest at the top

2025-10-20 23:27:57 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2025-10-20 23:25:39 +0200Googulator47(~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) (Quit: Client closed)
2025-10-20 23:25:37 +0200Googulator80(~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu)
2025-10-20 23:25:20 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2025-10-20 23:21:47 +0200target_i(~target_i@user/target-i/x-6023099) (Quit: leaving)
2025-10-20 23:20:40 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-20 23:17:15 +0200 <EvanR> and there is a different parser for each version
2025-10-20 23:17:05 +0200 <EvanR> but if it really does, there's always versioning your data types and doing type checked migrations
2025-10-20 23:16:23 +0200 <EvanR> if it's business apps, I might just veer on the side of "this has no structure, even if some boss said on some date that it did"
2025-10-20 23:15:31 +0200 <bwe> EvanR: I wonder how I might be more aware next time when I am opening the pandoras box with validating instead of parsing.
2025-10-20 23:14:45 +0200 <bwe> EvanR: I admit initially the dto data constructor just collected the data. Design criterion was to not fail even if some fields can't be populated (for debugging purposes). Hence I ended up with the "everything is Maybe" dto constructor. Second requirement was then to roll a domain data constructor that has only required fields. Now, the hassle turns out to be how to translate between them.
2025-10-20 23:14:37 +0200 <EvanR> it's a 2D space so you only need 2 really
2025-10-20 23:14:12 +0200gustrb(~gustrb@191.243.134.87)
2025-10-20 23:13:18 +0200 <monochrom> Inflation!
2025-10-20 23:13:13 +0200 <monochrom> I only needed 3 back then.
2025-10-20 23:10:41 +0200 <EvanR> actually 5
2025-10-20 23:10:09 +0200michalz(~michalz@185.246.207.221) (Remote host closed the connection)
2025-10-20 23:09:46 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-10-20 23:09:39 +0200 <EvanR> like how the real projective plane is this weird space that needs 4 dimensions, or it's just a half a sphere, ignore the other half
2025-10-20 23:09:04 +0200lisq(~quassel@lis.moe) lisq
2025-10-20 23:08:56 +0200 <EvanR> that might be more trouble than its worth
2025-10-20 23:08:54 +0200lisq_(~quassel@lis.moe) ()
2025-10-20 23:08:35 +0200 <yin> also, make illegal states unrepresentable
2025-10-20 23:04:53 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-20 22:59:16 +0200ttybitnik(~ttybitnik@user/wolper) ttybitnik
2025-10-20 22:55:25 +0200peterbecich(~Thunderbi@172.222.148.214) (Ping timeout: 256 seconds)
2025-10-20 22:54:01 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2025-10-20 22:48:06 +0200 <EvanR> if it's really invalid then it shouldn't parse
2025-10-20 22:47:37 +0200 <EvanR> partly done parsing *scream emoji*
2025-10-20 22:47:01 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-20 22:42:20 +0200 <bwe> I wanted to finish the partly done parsing job by validating.
2025-10-20 22:42:09 +0200Square(~Square4@user/square) (Ping timeout: 252 seconds)
2025-10-20 22:40:33 +0200 <EvanR> parse "don't validate" (parse = validate)
2025-10-20 22:40:20 +0200 <EvanR> yes
2025-10-20 22:39:42 +0200 <bwe> ithout needing to reinvent the wheel.
2025-10-20 22:39:42 +0200 <bwe> EvanR: You are actually right. I am solving the wrong problem: Currently I parse ld+json (embedded machine readable data in html) to 'Maybe a' using Aeson. Only to then to re-use the 'Maybe a' records (dto) to extract the required fields and store them in a non-Maybe constructor. Why not parsing the values directly into a constructor where required fields have a non-Maybe type and optional one's a Maybe type? I get the errors of the missing bits for free w
2025-10-20 22:38:32 +0200Square2(~Square@user/square) Square
2025-10-20 22:37:37 +0200Square(~Square4@user/square) Square
2025-10-20 22:35:44 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2025-10-20 22:35:37 +0200Googulator47(~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu)
2025-10-20 22:35:34 +0200Googulator52(~Googulato@2a01-036d-0106-03fa-0485-6a66-0733-0e38.pool6.digikabel.hu) (Quit: Client closed)
2025-10-20 22:31:03 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-20 22:28:47 +0200gustrb(~gustrb@191.243.134.87) (Ping timeout: 256 seconds)
2025-10-20 22:28:32 +0200 <chromoblob> DeepSeek stole its name from Haskell's DeepSeq
2025-10-20 22:27:01 +0200Frostillicus(~Frostilli@pool-71-174-119-69.bstnma.fios.verizon.net) (Ping timeout: 264 seconds)
2025-10-20 22:26:56 +0200AlexZenon(~alzenon@85.174.182.163)
2025-10-20 22:26:26 +0200peterbecich(~Thunderbi@172.222.148.214) peterbecich
2025-10-20 22:22:39 +0200sord937(~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
2025-10-20 22:21:13 +0200gustrb(~gustrb@191.243.134.87)
2025-10-20 22:20:08 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)