2022/03/28

2022-03-28 00:05:15 +0200yauhsien_(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-03-28 00:08:30 +0200lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
2022-03-28 00:09:12 +0200Tuplanolla(~Tuplanoll@91-159-69-98.elisa-laajakaista.fi) (Quit: Leaving.)
2022-03-28 00:17:16 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2022-03-28 00:18:37 +0200Axman6(~Axman6@user/axman6)
2022-03-28 00:23:34 +0200lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
2022-03-28 00:23:49 +0200lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
2022-03-28 00:23:56 +0200lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
2022-03-28 00:24:10 +0200lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
2022-03-28 00:24:17 +0200lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
2022-03-28 00:25:37 +0200Midjak(~Midjak@82.66.147.146) (Quit: Leaving)
2022-03-28 00:26:14 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
2022-03-28 00:26:47 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-28 00:28:33 +0200sagax(~sagax_nb@user/sagax) (Quit: Konversation terminated!)
2022-03-28 00:34:58 +0200dsrt^(~dsrt@96-91-136-49-static.hfc.comcastbusiness.net)
2022-03-28 00:37:44 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-03-28 00:38:17 +0200s4msungEldenJohn
2022-03-28 00:38:58 +0200EldenJohns4msung
2022-03-28 00:39:04 +0200Pickchea(~private@user/pickchea) (Ping timeout: 272 seconds)
2022-03-28 00:39:48 +0200alp(~alp@user/alp) (Ping timeout: 240 seconds)
2022-03-28 00:41:05 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-28 00:42:02 +0200Axman6(~Axman6@user/axman6) (Ping timeout: 240 seconds)
2022-03-28 00:43:21 +0200tremon(~tremon@83-84-18-241.cable.dynamic.v4.ziggo.nl) (Quit: getting boxed in)
2022-03-28 00:43:47 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-03-28 00:46:40 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Ping timeout: 272 seconds)
2022-03-28 00:50:49 +0200perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
2022-03-28 00:51:44 +0200machinedgod(~machinedg@24.105.81.50) (Ping timeout: 272 seconds)
2022-03-28 00:52:16 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5)
2022-03-28 00:53:17 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2022-03-28 00:54:04 +0200ChaiTRex(~ChaiTRex@user/chaitrex) (Quit: ChaiTRex)
2022-03-28 00:54:19 +0200ChaiTRex(~ChaiTRex@user/chaitrex)
2022-03-28 00:54:58 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2022-03-28 00:56:50 +0200lumberjack123(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-03-28 00:56:56 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2022-03-28 01:00:17 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
2022-03-28 01:08:03 +0200acidjnk(~acidjnk@p200300d0c7049f8284fff18517a389b2.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2022-03-28 01:08:04 +0200`2jt(~jtomas@210.red-88-24-179.staticip.rima-tde.net) (Remote host closed the connection)
2022-03-28 01:10:52 +0200gurkenglas(~gurkengla@dslb-178-012-018-212.178.012.pools.vodafone-ip.de) (Ping timeout: 260 seconds)
2022-03-28 01:12:04 +0200Guest98(~Guest98@82.212.116.123) (Quit: Client closed)
2022-03-28 01:14:37 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-28 01:15:16 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-03-28 01:15:35 +0200stiell(~stiell@gateway/tor-sasl/stiell) (Ping timeout: 240 seconds)
2022-03-28 01:18:04 +0200MajorBiscuit(~MajorBisc@2a02:a461:129d:1:193d:75d8:745d:e91e)
2022-03-28 01:19:23 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-03-28 01:19:35 +0200shailangsa(~shailangs@host86-162-150-212.range86-162.btcentralplus.com) ()
2022-03-28 01:20:13 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-28 01:21:12 +0200szkl(uid110435@id-110435.uxbridge.irccloud.com)
2022-03-28 01:23:27 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Ping timeout: 260 seconds)
2022-03-28 01:24:37 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
2022-03-28 01:25:46 +0200Axman6(~Axman6@user/axman6)
2022-03-28 01:28:51 +0200lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
2022-03-28 01:32:02 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2022-03-28 01:35:38 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-28 01:36:02 +0200stiell(~stiell@gateway/tor-sasl/stiell)
2022-03-28 01:41:57 +0200pera(~pera@user/pera) (Quit: leaving)
2022-03-28 01:47:58 +0200stiell_(~stiell@gateway/tor-sasl/stiell)
2022-03-28 01:48:15 +0200stiell(~stiell@gateway/tor-sasl/stiell) (Ping timeout: 240 seconds)
2022-03-28 01:52:16 +0200machinedgod(~machinedg@24.105.81.50)
2022-03-28 01:52:18 +0200Topsi(~Tobias@dyndsl-095-033-020-104.ewe-ip-backbone.de)
2022-03-28 01:53:43 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-03-28 01:55:01 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-28 01:57:10 +0200justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.4)
2022-03-28 01:59:24 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
2022-03-28 02:01:19 +0200jgeerds(~jgeerds@55d4548e.access.ecotel.net) (Ping timeout: 256 seconds)
2022-03-28 02:05:49 +0200xsarnik(xbraun1@lounge.fi.muni.cz) (Quit: Ping timeout (120 seconds))
2022-03-28 02:06:06 +0200xsarnik(xsarnik@lounge.fi.muni.cz)
2022-03-28 02:08:19 +0200shailangsa(~shailangs@host86-162-150-212.range86-162.btcentralplus.com)
2022-03-28 02:08:35 +0200lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
2022-03-28 02:08:48 +0200lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
2022-03-28 02:09:50 +0200 <cheater> hi
2022-03-28 02:10:33 +0200 <geekosaur> hi
2022-03-28 02:11:03 +0200 <cheater> i have a question (possibly about backpack). if i have a program that normally imports modules, and i'd like to, from my build system, to be able to override the source of one of those modules to come from another place, is that somehow possible without the original source doing something more involved than "import Foo.Bar" and the like?
2022-03-28 02:12:11 +0200 <geekosaur> I don't know enough about backpack to say if that's easily possible, and it's really poorly documented :(
2022-03-28 02:12:25 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-03-28 02:13:00 +0200 <cheater> my question comes from some thinking about how a plugin system could work in haskell. essentially the simplest way to do things is to expose "hooks", i.e. places where you can override the default code, or add to a list of delegation targets, stuff like that. but then how do you know what hooks to expose? if you look at something like drupal, they have about a million hooks, and on scale, that system sucks. so essentially, what you want, is a system
2022-03-28 02:13:01 +0200 <cheater> that'll let you override anything at all when you're building the program
2022-03-28 02:13:10 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-03-28 02:14:23 +0200 <cheater> so one way of looking at this is something like: if your main.hs imports some files, and that imports some files, etc, that's a tree of dependencies. so using file path notation (where X/Y means X imports Y), let's say your change is inside main/X/Y/A/B (function foo)
2022-03-28 02:14:58 +0200 <cheater> in this case, if you were able to override things like that, then you would be able to write your own "plugin" for anything you wanted
2022-03-28 02:15:55 +0200 <cheater> so if main imports X, if in your build system you were able to say "instead of giving main X, give it my own X' " then you would be happy. because then you could go and say also "X' = X except of instead of giving it Y give it Y' " and so on
2022-03-28 02:16:33 +0200 <geekosaur> mm, mixins (cabal support for backpack) might do that but I don't know what support is needed for it to work
2022-03-28 02:16:36 +0200 <hpc> you may want to look at having a message bus or microservice sort of thing
2022-03-28 02:16:47 +0200 <hpc> your plugin callbacks become talking to some other process instead
2022-03-28 02:16:48 +0200 <cheater> you could denote it something like: X' = X[Y=Y']
2022-03-28 02:16:51 +0200xff0x(~xff0x@i121-117-52-147.s41.a013.ap.plala.or.jp) (Ping timeout: 256 seconds)
2022-03-28 02:17:03 +0200 <hpc> and then the plugins can be whatever you want, or even on other machines
2022-03-28 02:17:23 +0200 <cheater> yes but then you still have to specify the plugin sites manually in the original un-plugged-in source code
2022-03-28 02:17:39 +0200 <cheater> whereas if the build system had a natural support for plugins like that, then you wouldn't have to specify anything
2022-03-28 02:18:20 +0200 <hpc> i think i would rather have control over where the plugins are allowed to hook themselves in
2022-03-28 02:18:22 +0200mvk(~mvk@2607:fea8:5cc3:7e00::7980)
2022-03-28 02:18:45 +0200 <cheater> why. it's not yours to decide. if i have the source code i can do anything at all
2022-03-28 02:18:55 +0200 <hpc> at that point just fork it :P
2022-03-28 02:18:57 +0200 <geekosaur> then do it with the source code
2022-03-28 02:19:03 +0200 <cheater> right, but that's cumbersome
2022-03-28 02:19:09 +0200 <hpc> eh, it's not so bad
2022-03-28 02:19:11 +0200 <geekosaur> tough, it's what you bought
2022-03-28 02:19:17 +0200Topsi(~Tobias@dyndsl-095-033-020-104.ewe-ip-backbone.de) (Read error: Connection reset by peer)
2022-03-28 02:19:25 +0200 <hpc> do it with patch files
2022-03-28 02:19:26 +0200 <cheater> why are you shutting down this conversation
2022-03-28 02:19:39 +0200 <cheater> must it stop or can we continue talking about this
2022-03-28 02:19:55 +0200 <hpc> take a look at how linux distros do it, they maintain tens of thousands of packages at once, most of which have edits exactly like you describe
2022-03-28 02:20:08 +0200 <hpc> they keep track of it with patch files that get applied at build time
2022-03-28 02:20:09 +0200 <cheater> i know how they do it, they do it badly...
2022-03-28 02:20:48 +0200 <hpc> i have done it this way before too at $dayjob
2022-03-28 02:21:17 +0200 <cheater> so have i
2022-03-28 02:21:19 +0200 <hpc> when you have a git repo to start with, it's almost trivially easy
2022-03-28 02:21:35 +0200 <cheater> well, there's improvements to be had
2022-03-28 02:21:48 +0200 <geekosaur> I already pointed you to something to look at
2022-03-28 02:21:54 +0200 <cheater> it's not what i want
2022-03-28 02:22:08 +0200 <hpc> you keep a pristine branch that you can pull from upstream, and periodically merge it with your changes and resolve conflicts
2022-03-28 02:22:10 +0200 <geekosaur> now you're getting some experience in why that'susually not the way to go, and you don't ewant to hear it
2022-03-28 02:22:37 +0200 <geekosaur> so now you want magic that isn't mixins and isn't what is known to work
2022-03-28 02:22:43 +0200 <cheater> i've been a programmer for 30 years. you're not telling me anything new and it seems like you don't want to talk about what i want to talk about.
2022-03-28 02:22:57 +0200 <cheater> so, it looks like you just want me not to talk about my idea
2022-03-28 02:22:59 +0200 <cheater> which... sucks
2022-03-28 02:23:17 +0200 <geekosaur> you put foreward your idea. the question is implementation. I pointed you to mixins
2022-03-28 02:23:37 +0200 <cheater> sorry, i thought you were talking about patches there.
2022-03-28 02:23:41 +0200 <geekosaur> if you don't like that, you have to come upwith an implementation you do like, so we have something to discuss
2022-03-28 02:24:06 +0200 <cheater> well, before i go and spend 12 months on writing an implementation, am i allowed to talk about the idea first, or is that not allowed ...
2022-03-28 02:24:12 +0200machinedgod(~machinedg@24.105.81.50) (Ping timeout: 272 seconds)
2022-03-28 02:24:48 +0200 <dibblego> Once I plugged a function into another function called map and it configured another function that does things to list. I like this plugin system best.
2022-03-28 02:24:53 +0200 <geekosaur> as for mixins, just having a mixins field is not enough but I don't know much aside from that it involves module signatures
2022-03-28 02:25:02 +0200 <geekosaur> and none of this is documented :(
2022-03-28 02:25:13 +0200 <cheater> i haven't found anything online about mixins unfortunately
2022-03-28 02:26:06 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 272 seconds)
2022-03-28 02:26:20 +0200 <geekosaur> https://gitlab.haskell.org/ghc/ghc/-/wikis/backpack
2022-03-28 02:26:32 +0200 <cheater> this doesn't explain much ugh https://cabal.readthedocs.io/en/3.4/cabal-package.html
2022-03-28 02:26:33 +0200 <geekosaur> but as it notes, the cabal documentation is still lacking
2022-03-28 02:26:40 +0200 <cheater> yeah
2022-03-28 02:26:42 +0200 <cheater> let me look at your link
2022-03-28 02:27:11 +0200 <geekosaur> it does have some examples of actual packages using backpack, so you can look at those
2022-03-28 02:27:25 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-03-28 02:27:33 +0200 <cheater> i looked, i don't understand the syntax
2022-03-28 02:28:06 +0200 <cheater> how would I express that main should take Str from package foo and not from package bar which it normally does?
2022-03-28 02:28:48 +0200 <jackdk> Use nix to build an alternate version of foo
2022-03-28 02:29:07 +0200 <cheater> that does not make main use foo instead of bar
2022-03-28 02:29:39 +0200 <geekosaur> that's where the mixins field comes in, it specifies to take x module fromn a different package — but the possible packages and modules for that need module signatures
2022-03-28 02:29:57 +0200 <cheater> what is the syntax to take x module from a different package?
2022-03-28 02:30:13 +0200MajorBiscuit(~MajorBisc@2a02:a461:129d:1:193d:75d8:745d:e91e) (Ping timeout: 240 seconds)
2022-03-28 02:30:13 +0200 <cheater> i've looked at the docs, but i couldn't figure it out
2022-03-28 02:30:24 +0200 <geekosaur> mixins = package (module)
2022-03-28 02:30:56 +0200 <cheater> i don't get it
2022-03-28 02:31:00 +0200 <geekosaur> similar to import and export lists, but at the level of packages and exported/imported modules
2022-03-28 02:31:22 +0200Axman6mumbles something about ImplicitParams
2022-03-28 02:31:32 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-03-28 02:32:49 +0200 <cheater> it would be nice if this stuff had rts support, so that you can swap modules out at runtime, or at least at start
2022-03-28 02:32:56 +0200 <cheater> start-up
2022-03-28 02:33:09 +0200 <cheater> so if you have a binary you're not stuck with it working exactly one way
2022-03-28 02:33:13 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-03-28 02:33:36 +0200 <geekosaur> that's not going to happen, with cross-module optimization it would have to rewrite a lot of code on the fly
2022-03-28 02:33:59 +0200 <geekosaur> you could suppress that with -O0 but pay a high cost in performance
2022-03-28 02:35:05 +0200mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
2022-03-28 02:35:36 +0200 <cheater> yeah, it would. or not optimize
2022-03-28 02:35:42 +0200 <cheater> i know that's a problem sadly
2022-03-28 02:36:12 +0200 <koz> > fmap (+1) (2 :: Int, 3)
2022-03-28 02:36:13 +0200 <lambdabot> (2,4)
2022-03-28 02:36:37 +0200 <Axman6> do the plugins or ... hint packages still work?
2022-03-28 02:38:09 +0200 <geekosaur> ? is this about hls?
2022-03-28 02:38:38 +0200 <geekosaur> oh, wait. afaik hint should work, dunno if plugins has bene updated for 9.x yet
2022-03-28 02:39:18 +0200 <cheater> i mean
2022-03-28 02:40:02 +0200 <geekosaur> mm, updated today even, and versions don't exclude 9.x
2022-03-28 02:40:07 +0200 <geekosaur> so presumably it works
2022-03-28 02:40:20 +0200 <geekosaur> (plugins)
2022-03-28 02:40:30 +0200 <cheater> do you suppose that cross-module optimization would HAVE to rewrite a lot of code? what if we knew where a specific piece of code went, and just rewrote those parts
2022-03-28 02:40:52 +0200 <cheater> you'll often be replacing optimizations with others that have a similar shape...
2022-03-28 02:41:00 +0200 <cheater> sorry
2022-03-28 02:41:03 +0200 <geekosaur> you… don't really understand this, do you?
2022-03-28 02:41:06 +0200 <cheater> i meant replacing *implementations*
2022-03-28 02:41:14 +0200 <geekosaur> it's a question of inlining
2022-03-28 02:41:18 +0200 <cheater> yes
2022-03-28 02:41:18 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 272 seconds)
2022-03-28 02:41:28 +0200 <cheater> but that doesn't mean it's intractable
2022-03-28 02:41:41 +0200 <cheater> if you know what you inlined where, then you'd only have to check / update those sites
2022-03-28 02:41:47 +0200 <geekosaur> it is if the replacement doesn't fit in the binary
2022-03-28 02:41:53 +0200 <cheater> it's additional book keeping
2022-03-28 02:42:00 +0200 <geekosaur> this rapidly becomes *very* difficult
2022-03-28 02:42:08 +0200pottsy(~pottsy@2400:4050:b560:3700:780b:edcd:33e6:5339)
2022-03-28 02:42:10 +0200 <cheater> binary sizes don't matter much if you can jmp out of the site
2022-03-28 02:42:16 +0200 <geekosaur> and I doubt they'dcomplicate ghc to support such an unusualuse case
2022-03-28 02:42:52 +0200 <cheater> i'm more curious how this could be done rather than what the % probability is it'll get implemented, just like that.
2022-03-28 02:43:50 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-03-28 02:44:56 +0200 <jackdk> Use nix to build an alternate version of bar, which re-exports symbols from foo.
2022-03-28 02:47:56 +0200chenqisu1(~chenqisu1@183.217.201.88)
2022-03-28 02:48:21 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-28 02:52:08 +0200 <geekosaur> it's actually harder than I was saying because there's further optimization after inloining which could e.g. inline part of the existing code into the inlined code, or combine it in other ways that would mean simple patching in of a different version won't work
2022-03-28 02:53:11 +0200xff0x(~xff0x@125x102x200x106.ap125.ftth.ucom.ne.jp)
2022-03-28 02:55:44 +0200lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
2022-03-28 02:56:48 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
2022-03-28 02:56:52 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-03-28 02:57:38 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-28 03:01:06 +0200unit73e(~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) (Ping timeout: 260 seconds)
2022-03-28 03:01:57 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
2022-03-28 03:03:45 +0200ProfSimm(~ProfSimm@87.227.196.109) (Remote host closed the connection)
2022-03-28 03:06:33 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2022-03-28 03:06:46 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2022-03-28 03:07:15 +0200lumberjack123(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-03-28 03:08:20 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Remote host closed the connection)
2022-03-28 03:09:12 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2022-03-28 03:10:02 +0200PapuaHardyNet(uid546676@user/PapuaHardyNet)
2022-03-28 03:10:25 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2022-03-28 03:10:50 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Remote host closed the connection)
2022-03-28 03:11:13 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2022-03-28 03:12:50 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Remote host closed the connection)
2022-03-28 03:13:16 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2022-03-28 03:14:50 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Remote host closed the connection)
2022-03-28 03:15:16 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2022-03-28 03:16:31 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2022-03-28 03:18:27 +0200tzh_(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2022-03-28 03:18:50 +0200tzh_(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Read error: Connection reset by peer)
2022-03-28 03:19:01 +0200eldritch_eldritch
2022-03-28 03:20:06 +0200dextaa_(~dextaa@user/dextaa) (Read error: Connection reset by peer)
2022-03-28 03:21:11 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Ping timeout: 252 seconds)
2022-03-28 03:21:35 +0200chexum(~quassel@gateway/tor-sasl/chexum) (Ping timeout: 240 seconds)
2022-03-28 03:23:04 +0200chexum(~quassel@gateway/tor-sasl/chexum)
2022-03-28 03:23:45 +0200dextaa_(~dextaa@user/dextaa)
2022-03-28 03:26:46 +0200szkl(uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
2022-03-28 03:27:55 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds)
2022-03-28 03:28:41 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2022-03-28 03:31:20 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds)
2022-03-28 03:33:54 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-03-28 03:33:55 +0200hololeap(~hololeap@user/hololeap) (Ping timeout: 240 seconds)
2022-03-28 03:34:17 +0200hololeap(~hololeap@user/hololeap)
2022-03-28 03:36:40 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-03-28 03:36:55 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-03-28 03:44:57 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds)
2022-03-28 04:00:13 +0200lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
2022-03-28 04:03:54 +0200lemonsnicks(~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) (Quit: ZNC 1.8.2 - https://znc.in)
2022-03-28 04:08:24 +0200 <cheater> cool
2022-03-28 04:17:01 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 245 seconds)
2022-03-28 04:18:08 +0200lemonsnicks(~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net)
2022-03-28 04:20:58 +0200xkuru(~xkuru@user/xkuru) (Read error: Connection reset by peer)
2022-03-28 04:21:19 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-03-28 04:23:52 +0200Natch(~natch@c-67bae255.014-297-73746f25.bbcust.telenor.se) (Remote host closed the connection)
2022-03-28 04:25:36 +0200lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
2022-03-28 04:25:49 +0200lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
2022-03-28 04:29:15 +0200Natch(~natch@c-67bae255.014-297-73746f25.bbcust.telenor.se)
2022-03-28 04:31:18 +0200danso(~danso@danso.ca) ()
2022-03-28 04:39:51 +0200 <Christoph[m]> In his 1989 paper "Theorems for free!", Philip Wadler announces a further paper with a reformulation of parametricity in terms of category theory. Did that ever happen?
2022-03-28 04:40:56 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2022-03-28 04:40:56 +0200finn_elija(~finn_elij@user/finn-elija/x-0085643)
2022-03-28 04:40:56 +0200finn_elijaFinnElija
2022-03-28 04:42:54 +0200jdm(jesse@c-68-62-216-212.hsd1.al.comcast.net) (Ping timeout: 272 seconds)
2022-03-28 04:55:47 +0200rawley(~rawley@216-197-141-102.nbfr.hsdb.sasknet.sk.ca) (Ping timeout: 260 seconds)
2022-03-28 05:00:18 +0200kaph(~kaph@net-109-116-124-149.cust.vodafonedsl.it)
2022-03-28 05:00:22 +0200deadmarshal_(~deadmarsh@95.38.115.47)
2022-03-28 05:10:49 +0200m1dnight(~christoph@78-22-9-5.access.telenet.be) (Ping timeout: 256 seconds)
2022-03-28 05:11:40 +0200m1dnight(~christoph@78-22-9-5.access.telenet.be)
2022-03-28 05:18:40 +0200lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Read error: Connection reset by peer)
2022-03-28 05:18:40 +0200awschnap(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
2022-03-28 05:20:17 +0200awschnap(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
2022-03-28 05:24:26 +0200vglfr(~vglfr@88.155.45.251)
2022-03-28 05:27:28 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
2022-03-28 05:46:59 +0200kaph(~kaph@net-109-116-124-149.cust.vodafonedsl.it) (Read error: Connection reset by peer)
2022-03-28 05:49:51 +0200 <abastro[m]> So that is the kind of PHD+ question
2022-03-28 05:53:41 +0200uncomfy(~uncomfy@27.110.174.130)
2022-03-28 05:55:41 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-28 05:58:13 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 268 seconds)
2022-03-28 05:59:59 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-03-28 06:01:28 +0200pnotequalnp(~kevin@user/pnotequalnp)
2022-03-28 06:01:36 +0200vglfr(~vglfr@88.155.45.251) (Ping timeout: 260 seconds)
2022-03-28 06:01:49 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
2022-03-28 06:02:42 +0200deadmarshal_(~deadmarsh@95.38.115.47) (Ping timeout: 272 seconds)
2022-03-28 06:03:08 +0200charukiewicz(~charukiew@2600:1702:a90:2750::3c)
2022-03-28 06:08:24 +0200boxscape_(~boxscape_@p4ff0b60b.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
2022-03-28 06:10:55 +0200zyklotomic(~ethan@res380d-128-61-83-1.res.gatech.edu) (Ping timeout: 260 seconds)
2022-03-28 06:12:34 +0200zyklotomic(~ethan@res380d-128-61-82-167.res.gatech.edu)
2022-03-28 06:15:03 +0200pottsy(~pottsy@2400:4050:b560:3700:780b:edcd:33e6:5339) (Remote host closed the connection)
2022-03-28 06:20:32 +0200stiell_(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2022-03-28 06:20:52 +0200stiell_(~stiell@gateway/tor-sasl/stiell)
2022-03-28 06:24:56 +0200lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
2022-03-28 06:29:46 +0200kaph(~kaph@net-109-116-124-149.cust.vodafonedsl.it)
2022-03-28 06:31:31 +0200mbuf(~Shakthi@122.174.50.185)
2022-03-28 06:32:17 +0200bh(bh@bsd.tilde.team)
2022-03-28 06:32:23 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-03-28 06:32:59 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-28 06:33:11 +0200bh(bh@bsd.tilde.team) ()
2022-03-28 06:35:45 +0200c_wraith(~c_wraith@adjoint.us) (*.net *.split)
2022-03-28 06:35:45 +0200cross(~cross@spitfire.i.gajendra.net) (*.net *.split)
2022-03-28 06:35:45 +0200ncopa(~ncopa@alpine/developer/ncopa) (*.net *.split)
2022-03-28 06:35:45 +0200hiredman(~hiredman@frontier1.downey.family) (*.net *.split)
2022-03-28 06:35:45 +0200mjrosenb(~mjrosenb@pool-108-54-97-96.nycmny.fios.verizon.net) (*.net *.split)
2022-03-28 06:35:49 +0200EsoAlgo(~EsoAlgo@152.70.142.52) (*.net *.split)
2022-03-28 06:35:49 +0200Philonous(~Philonous@user/philonous) (*.net *.split)
2022-03-28 06:35:49 +0200exarkun(~exarkun@user/exarkun) (*.net *.split)
2022-03-28 06:35:49 +0200thaumavorio(~thaumavor@thaumavor.io) (*.net *.split)
2022-03-28 06:35:49 +0200sudden(~cat@user/sudden) (*.net *.split)
2022-03-28 06:35:49 +0200joeyh(~joeyh@kitenet.net) (*.net *.split)
2022-03-28 06:35:49 +0200Jonno_FTW(~come@user/jonno-ftw/x-0835346) (*.net *.split)
2022-03-28 06:35:49 +0200dixie(~dixie@real.wilbury.sk) (*.net *.split)
2022-03-28 06:35:49 +0200sweater(~sweater@206.81.18.26) (*.net *.split)
2022-03-28 06:35:49 +0200greenbourne277(~greenbour@2001:4b98:dc2:45:216:3eff:fe8a:bbf0) (*.net *.split)
2022-03-28 06:35:49 +0200codedmart_(~codedmart@li335-49.members.linode.com) (*.net *.split)
2022-03-28 06:35:49 +0200akhesacaro(~caro@212.83.144.58) (*.net *.split)
2022-03-28 06:35:49 +0200Rembane(~Rembane@li346-36.members.linode.com) (*.net *.split)
2022-03-28 06:35:49 +0200bastelfreak(~bastelfre@basteles-bastelknecht.bastelfreak.org) (*.net *.split)
2022-03-28 06:35:52 +0200mjrosenb(~mjrosenb@pool-108-54-97-96.nycmny.fios.verizon.net)
2022-03-28 06:35:54 +0200hiredman(~hiredman@frontier1.downey.family)
2022-03-28 06:35:54 +0200c_wraith(~c_wraith@adjoint.us)
2022-03-28 06:35:57 +0200dixie(~dixie@real.wilbury.sk)
2022-03-28 06:35:57 +0200Rembane(~Rembane@li346-36.members.linode.com)
2022-03-28 06:35:59 +0200joeyh(joeyh@kitenet.net)
2022-03-28 06:36:00 +0200Jonno_FTW(~come@api.carswap.me)
2022-03-28 06:36:01 +0200ncopa(~ncopa@gbr2-dev1.alpinelinux.org)
2022-03-28 06:36:01 +0200akhesacaro(~caro@212.83.144.58)
2022-03-28 06:36:06 +0200codedmart(~codedmart@li335-49.members.linode.com)
2022-03-28 06:36:08 +0200Jonno_FTW(~come@api.carswap.me) (Changing host)
2022-03-28 06:36:08 +0200Jonno_FTW(~come@user/jonno-ftw/x-0835346)
2022-03-28 06:36:09 +0200sudden(~cat@user/sudden)
2022-03-28 06:36:14 +0200cross(~cross@spitfire.i.gajendra.net)
2022-03-28 06:36:20 +0200greenbourne277(~greenbour@2001:4b98:dc2:45:216:3eff:fe8a:bbf0)
2022-03-28 06:36:20 +0200bastelfreak(~bastelfre@basteles-bastelknecht.bastelfreak.org)
2022-03-28 06:36:28 +0200thaumavorio(~thaumavor@thaumavor.io)
2022-03-28 06:36:31 +0200EsoAlgo(~EsoAlgo@152.70.142.52)
2022-03-28 06:36:31 +0200Philonous(~Philonous@user/philonous)
2022-03-28 06:36:42 +0200sweater(~sweater@206.81.18.26)
2022-03-28 06:38:10 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Ping timeout: 272 seconds)
2022-03-28 06:38:41 +0200exarkun(~exarkun@user/exarkun)
2022-03-28 06:38:44 +0200nattiestnate(~nate@202.138.250.62) (Quit: WeeChat 3.4.1)
2022-03-28 06:42:51 +0200pooryorick(~pooryoric@87-119-174-173.tll.elisa.ee) (Ping timeout: 245 seconds)
2022-03-28 06:52:04 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-28 06:59:48 +0200pnotequalnp(~kevin@user/pnotequalnp) (Ping timeout: 240 seconds)
2022-03-28 07:05:04 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-03-28 07:06:49 +0200cdman(~dcm@user/dmc/x-4369397)
2022-03-28 07:07:34 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-28 07:07:49 +0200mikoto-chan(~mikoto-ch@213.177.151.239)
2022-03-28 07:09:00 +0200deadmarshal_(~deadmarsh@95.38.115.47)
2022-03-28 07:09:20 +0200jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2022-03-28 07:12:31 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Ping timeout: 260 seconds)
2022-03-28 07:14:04 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-28 07:14:21 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-03-28 07:17:59 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-28 07:30:29 +0200img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2022-03-28 07:30:46 +0200img(~img@user/img)
2022-03-28 07:30:57 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-03-28 07:32:38 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Ping timeout: 272 seconds)
2022-03-28 07:33:04 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2022-03-28 07:33:19 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2022-03-28 07:33:42 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-28 07:34:14 +0200 <phma> I have a module Data.GosperBase in ~/src/gosperbase/Data/GosperBase.hs . I'm thinking of renaming it to Data.GosperBase.Internals . Do I need to make a directory Data/GosperBase/ or a file GosperBase.Internals.hs ?
2022-03-28 07:35:47 +0200 <abastro[m]> I guess you have to move it to `Data/GosperBase/Internals`, never tried myself but IIRC there is no exception to module name-directory correspondence
2022-03-28 07:35:48 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 272 seconds)
2022-03-28 07:36:08 +0200 <abastro[m]> That is, `Data/GosperBase/Internals.hs` will correspond to `Data.GosperBase.Internals` module
2022-03-28 07:37:21 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-03-28 07:37:24 +0200p0lyph3m(~polyphem@2a00:20:c056:33c3:c59d:d67:df03:351a)
2022-03-28 07:38:04 +0200inversed_(~inversed@94.13.111.159)
2022-03-28 07:38:39 +0200inversed(~inversed@94.13.111.159) (Ping timeout: 260 seconds)
2022-03-28 07:44:47 +0200lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
2022-03-28 07:44:59 +0200lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
2022-03-28 07:46:06 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-03-28 07:48:32 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-28 07:53:04 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Ping timeout: 246 seconds)
2022-03-28 07:57:58 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
2022-03-28 07:57:59 +0200shriekingnoise(~shrieking@201.231.16.156) (Quit: Quit)
2022-03-28 08:00:17 +0200napping(~brandon@65.128.43.198) (Quit: leaving)
2022-03-28 08:05:49 +0200mikoto-chan(~mikoto-ch@213.177.151.239) (Quit: mikoto-chan)
2022-03-28 08:10:35 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds)
2022-03-28 08:12:04 +0200charukiewicz(~charukiew@2600:1702:a90:2750::3c) ()
2022-03-28 08:12:46 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2022-03-28 08:15:21 +0200nate1(~nate@98.45.167.61)
2022-03-28 08:18:49 +0200uncomfy(~uncomfy@27.110.174.130) (Quit: uncomfy)
2022-03-28 08:20:01 +0200nate1(~nate@98.45.167.61) (Ping timeout: 246 seconds)
2022-03-28 08:20:39 +0200acidjnk(~acidjnk@p200300d0c7049f67fc06a0258b52409e.dip0.t-ipconnect.de)
2022-03-28 08:27:35 +0200benin(~benin@183.82.24.110)
2022-03-28 08:29:17 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-28 08:32:38 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds)
2022-03-28 08:36:21 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:908a:bab:b0c0:af34)
2022-03-28 08:39:32 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-03-28 08:40:07 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-28 08:44:05 +0200machinedgod(~machinedg@24.105.81.50)
2022-03-28 08:44:41 +0200benin(~benin@183.82.24.110) (Quit: The Lounge - https://thelounge.chat)
2022-03-28 08:45:28 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Ping timeout: 260 seconds)
2022-03-28 08:47:35 +0200pnotequalnp(~kevin@user/pnotequalnp)
2022-03-28 08:49:16 +0200zyklotomic(~ethan@res380d-128-61-82-167.res.gatech.edu) (Ping timeout: 272 seconds)
2022-03-28 08:51:08 +0200zyklotomic(~ethan@res380d-128-61-85-52.res.gatech.edu)
2022-03-28 08:55:54 +0200 <dminuoso> abastro[m]: GHC imposes this requirement when you have an import, If not, you can give the file any name you want.
2022-03-28 08:56:20 +0200cfricke(~cfricke@user/cfricke)
2022-03-28 08:56:28 +0200 <dminuoso> That is, a module you import must be located relative to the base path, with dots replaced by directory separators.
2022-03-28 08:56:32 +0200 <abastro[m]> Oh, wdym by "when you have an import"?
2022-03-28 08:56:41 +0200 <abastro[m]> Oh, when you import that module
2022-03-28 08:57:08 +0200 <abastro[m]> ..but if it cannot be imported, what is it for?
2022-03-28 08:57:11 +0200 <dminuoso> Right. So for single-module programs you can name the file any way you want, and give it a completely different module name.
2022-03-28 08:57:21 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-28 08:57:26 +0200 <dminuoso> Or for single module libraries.
2022-03-28 08:57:48 +0200 <dminuoso> Though the latter is likely not very useful in general if you dont intend to import it from haskell side
2022-03-28 09:00:34 +0200 <abastro[m]> Single module programs, I see
2022-03-28 09:00:49 +0200Midjak(~Midjak@82.66.147.146)
2022-03-28 09:02:13 +0200troydm(~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 240 seconds)
2022-03-28 09:02:37 +0200fendor(~fendor@178.115.48.110.wireless.dyn.drei.com)
2022-03-28 09:03:51 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2022-03-28 09:06:15 +0200stiell_(~stiell@gateway/tor-sasl/stiell) (Ping timeout: 240 seconds)
2022-03-28 09:12:51 +0200alp(~alp@user/alp)
2022-03-28 09:19:22 +0200stiell_(~stiell@gateway/tor-sasl/stiell)
2022-03-28 09:19:46 +0200Orbstheorem(~orbstheor@2001:470:69fc:105::a56) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:46 +0200siraben(~siraben@user/siraben) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:46 +0200ormaaj(~ormaaj@user/ormaaj) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:46 +0200peddie(~peddie@2001:470:69fc:105::25d) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:46 +0200moats(~oats@user/oats) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:46 +0200Arathorn(~arathorn@2001:470:69fc:105::1f) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:46 +0200juhp[m](~juhpmatri@2001:470:69fc:105::6e9) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:46 +0200sm(~sm@plaintextaccounting/sm) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:46 +0200hsiktas[m](~hsiktasm]@2001:470:69fc:105::30d4) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:46 +0200amesgen[m](~amesgenm]@2001:470:69fc:105::82b) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:46 +0200unclechu(~unclechu@2001:470:69fc:105::354) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:46 +0200VarikValefor[m](~varikvale@2001:470:69fc:105::a5d) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:46 +0200nomagno(~nomagno@2001:470:69fc:105::c1f0) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:46 +0200bitonic(~bitonic@2001:470:69fc:105::1812) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:46 +0200Artem[m](~artemtype@2001:470:69fc:105::75b) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:46 +0200ongy[m](~ongymatri@2001:470:69fc:105::5018) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:46 +0200Christoph[m](~hpotsirhc@2001:470:69fc:105::2ff8) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:46 +0200euphrates[m](~euphrates@2001:470:69fc:105::fbb5) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:47 +0200fendor[m](~fendormat@2001:470:69fc:105::fcbd) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:47 +0200Guillaum[m](~guiboumat@2001:470:69fc:105::1:72ac) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:47 +0200zfnmxt(~zfnmxtzfn@user/zfnmxt) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:47 +0200ericson2314(~ericson23@2001:470:69fc:105::70c) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:47 +0200maerwald[m](~maerwaldm@2001:470:69fc:105::1ee) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:47 +0200DemiMarieObenour(~alwayscur@2001:470:69fc:105::4886) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:47 +0200reza[m](~rezaphone@2001:470:69fc:105::3eda) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:47 +0200jneira[m](~jneiramat@2001:470:69fc:105::d729) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:47 +0200Yehoshua(~yehoshua@2001:470:69fc:105::1:593f) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:47 +0200Ash[m](~signal-wa@2001:470:69fc:105::1:2318) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:47 +0200ManofLetters[m](~manoflett@2001:470:69fc:105::3be) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:47 +0200kalxd[m](~kalxdmatr@2001:470:69fc:105::1:576e) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:47 +0200smichel17[m](~smichel17@2001:470:69fc:105::2d32) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:47 +0200Joe[m]12(~jsricemat@2001:470:69fc:105::1:b4ce) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:48 +0200justosophy[m](~justosoph@2001:470:69fc:105::572f) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:48 +0200sekun[m](~hsekmatri@2001:470:69fc:105::d18f) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:48 +0200jmcantrell(~jmcantrel@user/jmcantrell) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:48 +0200cronjob[m](~cronjobma@2001:470:69fc:105::74e7) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:48 +0200aviladev[m](~aviladevm@2001:470:69fc:105::1:cbc7) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:50 +0200alexfmpe[m](~alexfmpem@2001:470:69fc:105::38ba) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:51 +0200shlevy[m](~shlevymat@2001:470:69fc:105::1:d3b1) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:51 +0200o1lo0lol1o[m](~o1lo0lol1@2001:470:69fc:105::1:d1c0) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:51 +0200kadoban(~kadoban@user/kadoban) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:51 +0200Deide(~deide@user/deide) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:52 +0200vaibhavsagar[m](~vaibhavsa@2001:470:69fc:105::ffe) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:53 +0200ninioArtillero[m(~ninioarti@2001:470:69fc:105::1:d1ef) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:53 +0200solomon[m](~solomonco@2001:470:69fc:105::1:6000) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:53 +0200jinsun_(~jinsun@user/jinsun) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:53 +0200Las[m](~lasmatrix@2001:470:69fc:105::74e) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:54 +0200marinelli[m](~marinelli@2001:470:69fc:105::2d8) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:55 +0200ac(~aloiscoch@2001:470:69fc:105::65) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:55 +0200ksqsf[m](~ksqsfmatr@2001:470:69fc:105::1:d8fa) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:55 +0200boxscape(~boxscape@user/boxscape) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:55 +0200abastro[m](~abastroma@2001:470:69fc:105::1:e119) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:55 +0200methylene[m](~methylene@2001:470:69fc:105::1:ccc0) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:55 +0200july541[m](~july541ma@2001:470:69fc:105::1:e416) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:56 +0200cdsmith(~cdsmithma@2001:470:69fc:105::284) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:56 +0200kevin[m]1(~pnotequal@2001:470:69fc:105::a54) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:56 +0200polykernel[m](~polykerne@user/polykernel) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:56 +0200pareto-optimal-d(~pareto-op@2001:470:69fc:105::1:b61f) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:56 +0200VanceIsM7[m](~vanceism7@2001:470:69fc:105::3ad) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:56 +0200kadenwolff[m](~kadenwolf@2001:470:69fc:105::1:d97f) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:56 +0200schuelermine[m](~schuelerm@user/schuelermine) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:56 +0200ThadeuPaula[m](~thadeudep@2001:470:69fc:105::1:ded7) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:56 +0200TimothyBess[m](~dorksidem@2001:470:69fc:105::1:e14e) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:56 +0200dgpratt[m](~dgprattma@2001:470:69fc:105::1:dcdd) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:57 +0200yosef36(~yosefweis@2001:470:69fc:105::1:e501) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:57 +0200fgaz(~fgaz@2001:470:69fc:105::842) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:57 +0200sofviic[m](~sofviicma@2001:470:69fc:105::1:51fd) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:57 +0200psydroid(~psydroid@user/psydroid) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:57 +0200jkaye[m](~jkayematr@2001:470:69fc:105::1:86f7) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:57 +0200oak-(~oakuniver@2001:470:69fc:105::fcd) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:57 +0200ArshiaAghaei[m](~arshiaagh@2001:470:69fc:105::1:c382) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:57 +0200wildsebastian(~wildsebas@2001:470:69fc:105::1:14b1) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:57 +0200maralorn(~maralorn@2001:470:69fc:105::251) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:58 +0200tsmc[m](~tsmcmatri@2001:470:69fc:105::1:7e1) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:58 +0200corisco[m](~coriscokd@2001:470:69fc:105::1:dea6) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:58 +0200AdamConner-Sax[m(~adamcsmat@2001:470:69fc:105::1:e2c8) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:58 +0200hughjfchen[m]1(~hughjfche@2001:470:69fc:105::c29d) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:58 +0200jaror[m](~jaror@2001:470:69fc:105::265) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:58 +0200charukiewicz[m](~charukiew@2001:470:69fc:105::ded4) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:58 +0200weeezes[m](~weeezesma@2001:470:69fc:105::1:da65) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:58 +0200eddiemundo(~eddiemund@2001:470:69fc:105::a80) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:58 +0200reactormonk[m](~reactormo@2001:470:69fc:105::3c24) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:59 +0200AdamS[m](~adamvalko@2001:470:69fc:105::1:d5f0) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:19:59 +0200sjanssen(~sjanssenm@2001:470:69fc:105::1:61d8) (Quit: Bridge terminating on SIGTERM)
2022-03-28 09:22:26 +0200dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be)
2022-03-28 09:23:36 +0200jinsun(~jinsun@user/jinsun) ()
2022-03-28 09:23:39 +0200juhp[m](~juhpmatri@2001:470:69fc:105::6e9)
2022-03-28 09:23:56 +0200alphabeta(~kilolympu@31.205.200.235)
2022-03-28 09:24:06 +0200kilolympus(~kilolympu@31.205.200.235) (Ping timeout: 272 seconds)
2022-03-28 09:24:18 +0200dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be) (Client Quit)
2022-03-28 09:25:24 +0200dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be)
2022-03-28 09:27:46 +0200jinsun(~jinsun@user/jinsun)
2022-03-28 09:28:30 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
2022-03-28 09:30:15 +0200stiell_(~stiell@gateway/tor-sasl/stiell) (Ping timeout: 240 seconds)
2022-03-28 09:30:46 +0200fgaz(~fgaz@2001:470:69fc:105::842)
2022-03-28 09:30:46 +0200peddie(~peddie@2001:470:69fc:105::25d)
2022-03-28 09:30:46 +0200VarikValefor[m](~varikvale@2001:470:69fc:105::a5d)
2022-03-28 09:30:46 +0200amesgen[m](~amesgenm]@2001:470:69fc:105::82b)
2022-03-28 09:30:46 +0200Orbstheorem(~orbstheor@2001:470:69fc:105::a56)
2022-03-28 09:30:46 +0200zfnmxt(~zfnmxtzfn@2001:470:69fc:105::2b32)
2022-03-28 09:30:46 +0200ericson2314(~ericson23@2001:470:69fc:105::70c)
2022-03-28 09:30:46 +0200unclechu(~unclechu@2001:470:69fc:105::354)
2022-03-28 09:30:46 +0200sekun[m](~hsekmatri@2001:470:69fc:105::d18f)
2022-03-28 09:30:46 +0200marinelli[m](~marinelli@2001:470:69fc:105::2d8)
2022-03-28 09:30:46 +0200schuelermine[m](~schuelerm@user/schuelermine)
2022-03-28 09:30:46 +0200sm(~sm@plaintextaccounting/sm)
2022-03-28 09:30:46 +0200hsiktas[m](~hsiktasm]@2001:470:69fc:105::30d4)
2022-03-28 09:30:46 +0200maralorn(~maralorn@2001:470:69fc:105::251)
2022-03-28 09:30:46 +0200Deide(~deide@user/deide)
2022-03-28 09:30:46 +0200Artem[m](~artemtype@2001:470:69fc:105::75b)
2022-03-28 09:30:46 +0200psydroid(~psydroid@user/psydroid)
2022-03-28 09:30:46 +0200Christoph[m](~hpotsirhc@2001:470:69fc:105::2ff8)
2022-03-28 09:30:46 +0200alexfmpe[m](~alexfmpem@2001:470:69fc:105::38ba)
2022-03-28 09:30:47 +0200ongy[m](~ongymatri@2001:470:69fc:105::5018)
2022-03-28 09:30:47 +0200siraben(~siraben@user/siraben)
2022-03-28 09:30:47 +0200july541[m](~july541ma@2001:470:69fc:105::1:e416)
2022-03-28 09:30:47 +0200smichel17[m](~smichel17@2001:470:69fc:105::2d32)
2022-03-28 09:30:47 +0200methylene[m](~methylene@2001:470:69fc:105::1:ccc0)
2022-03-28 09:30:47 +0200ManofLetters[m](~manoflett@2001:470:69fc:105::3be)
2022-03-28 09:30:47 +0200kadenwolff[m](~kadenwolf@2001:470:69fc:105::1:d97f)
2022-03-28 09:30:47 +0200vaibhavsagar[m](~vaibhavsa@2001:470:69fc:105::ffe)
2022-03-28 09:30:47 +0200fendor[m](~fendormat@2001:470:69fc:105::fcbd)
2022-03-28 09:30:47 +0200DemiMarieObenour(~alwayscur@2001:470:69fc:105::4886)
2022-03-28 09:30:47 +0200jmcantrell(~jmcantrel@user/jmcantrell)
2022-03-28 09:30:47 +0200maerwald[m](~maerwaldm@2001:470:69fc:105::1ee)
2022-03-28 09:30:47 +0200jinsun_(~jinsun@user/jinsun)
2022-03-28 09:30:48 +0200moats(~oats@user/oats)
2022-03-28 09:30:48 +0200ormaaj(~ormaaj@user/ormaaj)
2022-03-28 09:30:48 +0200bitonic(~bitonic@2001:470:69fc:105::1812)
2022-03-28 09:30:48 +0200Guillaum[m](~guiboumat@2001:470:69fc:105::1:72ac)
2022-03-28 09:30:48 +0200reactormonk[m](~reactormo@2001:470:69fc:105::3c24)
2022-03-28 09:30:48 +0200kalxd[m](~kalxdmatr@2001:470:69fc:105::1:576e)
2022-03-28 09:30:48 +0200euphrates[m](~euphrates@2001:470:69fc:105::fbb5)
2022-03-28 09:30:48 +0200jneira[m](~jneiramat@2001:470:69fc:105::d729)
2022-03-28 09:30:48 +0200VanceIsM7[m](~vanceism7@2001:470:69fc:105::3ad)
2022-03-28 09:30:49 +0200yosef36(~yosefweis@2001:470:69fc:105::1:e501)
2022-03-28 09:30:49 +0200polykernel[m](~polykerne@user/polykernel)
2022-03-28 09:30:49 +0200Arathorn(~arathorn@2001:470:69fc:105::1f)
2022-03-28 09:30:49 +0200wildsebastian(~wildsebas@2001:470:69fc:105::1:14b1)
2022-03-28 09:30:49 +0200tsmc[m](~tsmcmatri@2001:470:69fc:105::1:7e1)
2022-03-28 09:30:49 +0200kadoban(~kadoban@user/kadoban)
2022-03-28 09:30:49 +0200nomagno(~nomagno@2001:470:69fc:105::c1f0)
2022-03-28 09:30:49 +0200TimothyBess[m](~dorksidem@2001:470:69fc:105::1:e14e)
2022-03-28 09:30:49 +0200abastro[m](~abastroma@2001:470:69fc:105::1:e119)
2022-03-28 09:30:50 +0200ac(~aloiscoch@2001:470:69fc:105::65)
2022-03-28 09:30:50 +0200solomon[m](~solomonco@2001:470:69fc:105::1:6000)
2022-03-28 09:30:50 +0200eddiemundo(~eddiemund@2001:470:69fc:105::a80)
2022-03-28 09:30:50 +0200aviladev[m](~aviladevm@2001:470:69fc:105::1:cbc7)
2022-03-28 09:30:50 +0200Ash[m](~signal-wa@2001:470:69fc:105::1:2318)
2022-03-28 09:30:50 +0200boxscape(~boxscape@user/boxscape)
2022-03-28 09:30:58 +0200ninioArtillero[m(~ninioarti@2001:470:69fc:105::1:d1ef)
2022-03-28 09:30:58 +0200reza[m](~rezaphone@2001:470:69fc:105::3eda)
2022-03-28 09:30:59 +0200justosophy[m](~justosoph@2001:470:69fc:105::572f)
2022-03-28 09:31:00 +0200Yehoshua(~yehoshua@2001:470:69fc:105::1:593f)
2022-03-28 09:31:00 +0200kevin[m](~pnotequal@2001:470:69fc:105::a54)
2022-03-28 09:31:00 +0200dgpratt[m](~dgprattma@2001:470:69fc:105::1:dcdd)
2022-03-28 09:31:00 +0200sofviic[m](~sofviicma@2001:470:69fc:105::1:51fd)
2022-03-28 09:31:00 +0200jkaye[m](~jkayematr@2001:470:69fc:105::1:86f7)
2022-03-28 09:31:00 +0200ksqsf[m](~ksqsfmatr@2001:470:69fc:105::1:d8fa)
2022-03-28 09:31:01 +0200hughjfchen[m](~hughjfche@2001:470:69fc:105::c29d)
2022-03-28 09:31:01 +0200shlevy[m](~shlevymat@2001:470:69fc:105::1:d3b1)
2022-03-28 09:31:01 +0200Joe[m]12(~jsricemat@2001:470:69fc:105::1:b4ce)
2022-03-28 09:31:02 +0200pareto-optimal-d(~pareto-op@2001:470:69fc:105::1:b61f)
2022-03-28 09:31:02 +0200oak-(~oakuniver@2001:470:69fc:105::fcd)
2022-03-28 09:31:02 +0200ArshiaAghaei[m](~arshiaagh@2001:470:69fc:105::1:c382)
2022-03-28 09:31:02 +0200charukiewicz[m](~charukiew@2001:470:69fc:105::ded4)
2022-03-28 09:31:02 +0200cdsmith(~cdsmithma@2001:470:69fc:105::284)
2022-03-28 09:31:02 +0200o1lo0lol1o[m](~o1lo0lol1@2001:470:69fc:105::1:d1c0)
2022-03-28 09:31:02 +0200AdamS[m](~adamvalko@2001:470:69fc:105::1:d5f0)
2022-03-28 09:31:02 +0200weeezes[m](~weeezesma@2001:470:69fc:105::1:da65)
2022-03-28 09:31:03 +0200ThadeuPaula[m](~thadeudep@2001:470:69fc:105::1:ded7)
2022-03-28 09:31:04 +0200sjanssen(~sjanssenm@2001:470:69fc:105::1:61d8)
2022-03-28 09:31:04 +0200corisco[m](~coriscokd@2001:470:69fc:105::1:dea6)
2022-03-28 09:31:04 +0200Las[m](~lasmatrix@2001:470:69fc:105::74e)
2022-03-28 09:31:05 +0200AdamConner-Sax[m(~adamcsmat@2001:470:69fc:105::1:e2c8)
2022-03-28 09:31:05 +0200jaror[m](~jaror@2001:470:69fc:105::265)
2022-03-28 09:31:51 +0200mc47(~mc47@xmonad/TheMC47)
2022-03-28 09:32:29 +0200stiell_(~stiell@gateway/tor-sasl/stiell)
2022-03-28 09:34:25 +0200michalz(~michalz@185.246.204.97)
2022-03-28 09:42:21 +0200mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2022-03-28 09:43:29 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2022-03-28 09:45:04 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2022-03-28 09:46:51 +0200kuribas(~user@ptr-25vy0i6qxp87tp43k9a.18120a2.ip6.access.telenet.be)
2022-03-28 09:48:55 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit)
2022-03-28 09:49:32 +0200vglfr(~vglfr@88.155.45.251)
2022-03-28 09:51:12 +0200 <kuribas> hmm, hkd records are pretty useful.
2022-03-28 09:51:26 +0200cronjob[m](~cronjobma@2001:470:69fc:105::74e7)
2022-03-28 09:51:43 +0200 <kuribas> You can even make them work over constrained functions, by reifying the constraints.
2022-03-28 09:52:10 +0200 <dminuoso> I find them to be a pain in the butt.
2022-03-28 09:52:25 +0200 <kuribas> data Dict c a where (c a) => Dict a
2022-03-28 09:52:32 +0200 <kuribas> dminuoso: can you explain why?
2022-03-28 09:52:35 +0200 <dminuoso> I think most uses of HDK disappear if we had the possibility of attaching arbitrary metadata outside the type system but accessible via generics
2022-03-28 09:52:45 +0200 <dminuoso> *HKD
2022-03-28 09:53:14 +0200 <kuribas> but wouldn't that be in favour of HKD? No language extension needed.
2022-03-28 09:53:29 +0200 <dminuoso> HKD need TONS of extension
2022-03-28 09:53:38 +0200 <kuribas> true
2022-03-28 09:53:51 +0200 <kuribas> How would metadata help to make a parser for records?
2022-03-28 09:54:24 +0200 <dminuoso> Well you can use TH or generics already to make a parser for records.
2022-03-28 09:54:41 +0200 <kuribas> but then, which one is simpler?
2022-03-28 09:54:45 +0200 <dminuoso> Attaching arbitrary metadata let you attach whatever you need, like documentation, or maybe field information
2022-03-28 09:54:52 +0200 <dminuoso> Well, what I propose is completely transparent to the user
2022-03-28 09:55:03 +0200 <dminuoso> Fields no longer have bizarre types that require type families to resolve
2022-03-28 09:55:12 +0200 <dminuoso> Say:
2022-03-28 09:55:20 +0200 <kuribas> HKD doesn't require type families...
2022-03-28 09:55:46 +0200 <dminuoso> Say something like `data User = User { name :: T.Text {~ FieldSpec { descr = "It's a username", jsonField = "user_name", jsonOpts = NullToEmpty } ~} }`
2022-03-28 09:55:52 +0200 <dminuoso> If you want to stay sane they do.
2022-03-28 09:56:14 +0200 <dminuoso> OTherwise your entire code base gets infested with Identity/Const, whatever
2022-03-28 09:56:33 +0200 <kuribas> I don't really see why people make a problem about that.
2022-03-28 09:56:38 +0200 <kuribas> it's just a light wrapper.
2022-03-28 09:56:56 +0200 <dminuoso> kuribas: Every time you write typeclass instances they are in the way.
2022-03-28 09:56:57 +0200 <kuribas> Much less boilerplate than the typical OO, getters/setters/wrapper classes.
2022-03-28 09:57:02 +0200 <dminuoso> All the generics stuff from other libraries wont work
2022-03-28 09:57:14 +0200 <dminuoso> And the interface is so not obvious
2022-03-28 09:57:46 +0200 <kuribas> I can write "deriving instance Show (MyRec Identity)"
2022-03-28 09:58:24 +0200 <kuribas> show over an arbitrary functor isn't even possible anyway.
2022-03-28 09:58:34 +0200 <kuribas> I didn't try generics though...
2022-03-28 09:59:00 +0200 <kuribas> But I assume that I can make it work with Identity as well...
2022-03-28 09:59:16 +0200 <dminuoso> It's an abstraction leak, plain and simple.
2022-03-28 09:59:34 +0200 <dminuoso> It's an artifact that is present because people insist on attaching information at the type level.
2022-03-28 10:03:13 +0200 <tdammers> I'm having some trouble getting a certain UI element to behave as it should in xmonad, any ideas as to where I should start poking? The UI element in question is, oddly specifically, the instrument selector dropdown in Pianoteq; when run as an LV2 plugin, the dropdown will disappear when you hover over it, but only in some spots, and it sometimes gets cut off along the edge of its parent window.
2022-03-28 10:03:15 +0200 <tdammers> However, the standalone version works fine, and the LV2 plugin is also fine when opened in Xfce. It only misbehaves when opened from within Ardour, in Xmonad.
2022-03-28 10:05:21 +0200 <dminuoso> tdammers: geekosaur for all your xmonad bizarrities. :-)
2022-03-28 10:07:56 +0200 <kuribas> dminuoso: hkd is not information at type level, it's a value level construct.
2022-03-28 10:08:20 +0200 <kuribas> dminuoso: which is why I think it's better than type level lists, data, etc...
2022-03-28 10:08:34 +0200 <kuribas> though admittedly, not very beginner friendly.
2022-03-28 10:08:37 +0200 <dminuoso> kuribas: It is a type-level selector for what you want.
2022-03-28 10:08:48 +0200 <dminuoso> And the beginner friendly ness is an indicator of why its a bad idea
2022-03-28 10:08:57 +0200 <dminuoso> It's an abstraction leak, plain and simple
2022-03-28 10:09:09 +0200 <dminuoso> Also it's contract based, as if you have HKD values nothing guarantees they are even used
2022-03-28 10:10:00 +0200 <kuribas> the type describes the thing, for example (MyRec Parser), is a record of parsers.
2022-03-28 10:10:18 +0200 <kuribas> I find that pretty useful.
2022-03-28 10:10:24 +0200 <dminuoso> If you expose `data User k = ...` as a library, every usage site *must* explicitly pick the correct parameter, and then if you dont use tyfams deal with Identity/Const/etc artifacts in every place
2022-03-28 10:11:17 +0200 <kuribas> I see its usefulness more in applications, than libraries.
2022-03-28 10:11:43 +0200 <kuribas> I find its usage in beam rather convoluted...
2022-03-28 10:11:56 +0200 <tdammers> wrt modelling domain entities (presuming that this is what this is about), my personal sweet spot so far has been TH, for better or worse.
2022-03-28 10:12:27 +0200 <tdammers> I'm not normally a huge fan of TH, but this is exactly the use case where it can shine - write a bunch of boilerplate code for me.
2022-03-28 10:12:31 +0200 <dminuoso> tdammers: Yeah. And I would *love* being able to attach information to fields accessible in generics/TH. That would be my desired sweet spot.
2022-03-28 10:12:51 +0200 <tdammers> you *kind of* can, with newtypes, but it's a bit awkward
2022-03-28 10:13:14 +0200 <dminuoso> Right, I meant it sort of like {- ANN -}
2022-03-28 10:13:32 +0200 <kuribas> tdammers: TH is also hard to read and write.
2022-03-28 10:13:37 +0200 <dminuoso> {-# ANN ... #-} even
2022-03-28 10:13:59 +0200 <dminuoso> Except ANN gives me metadata in the wrong direction. :)
2022-03-28 10:14:09 +0200 <kuribas> tdammers: my usecase is for code that will be rewritten in clojure. So instead of having hashmaps with domain logic, I use HKD records.
2022-03-28 10:14:14 +0200 <tdammers> kuribas: maybe, but only on the "producer" side. You write your difficult TH abstractions once, and then you apply them to 100 domain types. Applying them is not the hard part though.
2022-03-28 10:14:45 +0200 <tdammers> and if you code is going to be rewritten in clojure anyway, why write it in haskell in the first place?
2022-03-28 10:15:23 +0200 <tdammers> dminuoso: you could also make a DSL to be interpreted by TH to achieve this, but that's even uglier IMO
2022-03-28 10:15:24 +0200 <kuribas> tdammers: well, they allowed me to do me a favor, also because then it was a safe project to experiment with haskell (for the rest of the team).
2022-03-28 10:15:31 +0200zer0bitz(~zer0bitz@dsl-hkibng32-54fbf8-224.dhcp.inet.fi)
2022-03-28 10:15:39 +0200 <kuribas> ideally it will not be converted to clojure.
2022-03-28 10:15:59 +0200 <tdammers> still begging to be allowed to use haskell on the job?
2022-03-28 10:16:17 +0200 <kuribas> no, I am allowed now :)
2022-03-28 10:16:39 +0200 <kuribas> Still trying to get other on board, but its a matter of patience.
2022-03-28 10:17:15 +0200 <kuribas> My goal is to have our formula engine rewritten in haskell.
2022-03-28 10:17:25 +0200 <kuribas> It's already agreed that it is too complicated.
2022-03-28 10:18:04 +0200 <dminuoso> tdammers: DSL would indeed not be ideal, you would require additional tooling to assert the DSL even matches your data types.
2022-03-28 10:18:10 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-03-28 10:18:45 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-28 10:18:59 +0200 <kuribas> I think haskell would be ideal there.
2022-03-28 10:19:16 +0200 <kuribas> As you can describe the formulas and indicators with a ADT.
2022-03-28 10:19:33 +0200 <kuribas> And it could be "simple" haskell.
2022-03-28 10:19:47 +0200 <kuribas> no TH, generics, HKD, ...
2022-03-28 10:20:20 +0200ccntrq(~Thunderbi@2a01:c22:89e6:e500:da63:dc92:f465:54d0)
2022-03-28 10:20:42 +0200 <kuribas> It could be that they will insist on lisp/clojure, I'll make it clear that i'll jump ship then.
2022-03-28 10:21:08 +0200 <[exa]> kuribas: is there an explicit need to typecheck the stuff with actual haskell typechecker? if you have a DSL and a set of programs in it, you can enjoy a bit of polymorphism to extract the "types" from DSL programs at runtime and just make a test that compares them to the expectations
2022-03-28 10:21:32 +0200lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
2022-03-28 10:21:37 +0200 <kuribas> [exa]: are you refering to the HKD?
2022-03-28 10:21:47 +0200 <[exa]> yes, more like removal of these
2022-03-28 10:22:01 +0200 <kuribas> [exa]: I could do that, but then I might as well write the damn thing in clojure.
2022-03-28 10:22:36 +0200pnotequalnp(~kevin@user/pnotequalnp) (Ping timeout: 240 seconds)
2022-03-28 10:23:19 +0200 <[exa]> like, I guess that in haskell you can make this into a 20-liner-ish program
2022-03-28 10:23:45 +0200 <kuribas> perhaps I have trouble imagining your solution...
2022-03-28 10:24:38 +0200 <kuribas> frankly, my current solution uses HKD and GADTs, but is otherwise pretty clean.
2022-03-28 10:25:04 +0200 <kuribas> There is some generic magic in the HKD library, and another library I wrote...
2022-03-28 10:25:18 +0200 <kuribas> But compared to, say servant, it is quite easy to follow.
2022-03-28 10:25:30 +0200pnotequalnp(~kevin@user/pnotequalnp)
2022-03-28 10:27:49 +0200Pickchea(~private@user/pickchea)
2022-03-28 10:28:04 +0200 <kuribas> but yeah, my case is a bit atypical, make code which can generate clojure code.
2022-03-28 10:29:00 +0200 <kuribas> By putting most of the logic into data.
2022-03-28 10:30:08 +0200bitmapper(uid464869@id-464869.lymington.irccloud.com)
2022-03-28 10:30:13 +0200 <kuribas> tdammers: our current code for calculating the formulas is using an ad-hoc lisp DSL that does rewrite rules to generate formulas from configuration data.
2022-03-28 10:30:42 +0200 <kuribas> tdammers: and its hard to see the structure of the generated formula, since there is no type defining it.
2022-03-28 10:31:18 +0200dextaa_(~dextaa@user/dextaa) (Remote host closed the connection)
2022-03-28 10:31:18 +0200 <kuribas> tdammers: IMO this can all be simplified with pure functions and well defined data types.
2022-03-28 10:32:19 +0200 <kuribas> tdammers: it's also almost impossible to follow the rewrite rules, which are all over the place, with some imperative effects mingled in between.
2022-03-28 10:32:56 +0200 <kuribas> my colleage told me that if I manage to simplify it in haskell, he'd be willing to learn haskell well.
2022-03-28 10:33:03 +0200 <tdammers> oh god, yeah, no, that sounds like a horrible design
2022-03-28 10:33:13 +0200 <tdammers> like the trac wiki "parser"
2022-03-28 10:33:25 +0200 <tdammers> check it out, it's hilarious and sad at the same time
2022-03-28 10:33:57 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-03-28 10:34:04 +0200pnotequalnp(~kevin@user/pnotequalnp) (Ping timeout: 246 seconds)
2022-03-28 10:34:09 +0200 <tdammers> also, seems to be a common antipattern in the lisp world, this "rewriting". probably because it's so tempting when you aren't guided by types
2022-03-28 10:34:11 +0200 <kuribas> but lispers love this stuff.
2022-03-28 10:34:33 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-28 10:34:33 +0200 <tdammers> yeah, I know. another example is selmer, absolutely horrible and 100% unmaintainable
2022-03-28 10:35:36 +0200gurkenglas(~gurkengla@dslb-178-012-018-212.178.012.pools.vodafone-ip.de)
2022-03-28 10:36:13 +0200 <tdammers> The sane way of doing "HTML templates" in this style would be to first parse things into an AST, then interpret that AST (filling in variables, evaluating expressions, etc.), and finally write out the result. But Selmer doesn't do that; it uses a kind of weird, ad-hoc incremental rewrite approach, and it's just horrible.
2022-03-28 10:36:18 +0200 <kuribas> we were starting to use azure yaml scripts, which did the same, but I managed to reduce most of it by simply having the main functionality in bash.
2022-03-28 10:36:37 +0200 <tdammers> this kind of nonsense is a major factor in my decision to rage-quit clojure
2022-03-28 10:37:46 +0200 <kuribas> Our rest api is not nearly that bad luckily...
2022-03-28 10:38:06 +0200 <kuribas> it's just so hard to get things rewritten once they are there.
2022-03-28 10:38:36 +0200 <kuribas> There is very little incentive, if it doesn't bring immediate benefits.
2022-03-28 10:41:51 +0200 <kuribas> tdammers: what annoys me about clojure, is that even within it's "types are just in the way" narrative, it is still not optimal.
2022-03-28 10:42:01 +0200 <kuribas> like "everything is a hashmap", or nil punning.
2022-03-28 10:42:32 +0200 <kuribas> Both of which scheme does better.
2022-03-28 10:42:45 +0200boxscape_(~boxscape_@p4ff0b60b.dip0.t-ipconnect.de)
2022-03-28 10:42:48 +0200 <kuribas> You'll get an error trying to access a field which isn't defined on the record.
2022-03-28 10:43:28 +0200michalz(~michalz@185.246.204.97) (Remote host closed the connection)
2022-03-28 10:43:51 +0200 <maerwald> I'll never forget how I once forgot a closing bracket in clojurescript. The code compiled, but the page went blank once you clicked a certain button.
2022-03-28 10:44:10 +0200 <maerwald> never again.
2022-03-28 10:44:45 +0200 <kuribas> clojurists seem to generally agree that sweeping problems under the rug is good design.
2022-03-28 10:45:02 +0200Unicorn_Princess(~Unicorn_P@93-103-228-248.dynamic.t-2.net) (Remote host closed the connection)
2022-03-28 10:45:12 +0200ProfSimm(~ProfSimm@87.227.196.109)
2022-03-28 10:45:22 +0200MajorBiscuit(~MajorBisc@86.88.79.148)
2022-03-28 10:45:44 +0200 <kuribas> But I can see some advantages to the clojure approach.
2022-03-28 10:46:01 +0200 <kuribas> Sometimes not typing things can lead to more flexible and simple code.
2022-03-28 10:46:51 +0200 <kuribas> while the equivalent in haskell is using HKD + GADTs + data families.
2022-03-28 10:47:28 +0200 <kuribas> The clojure approach is perfectly possible in haskell as well though.
2022-03-28 10:47:42 +0200 <kuribas> haskellers are just more reluctant to use partial functions.
2022-03-28 10:48:14 +0200 <jackdk> DMaps are also a great choice for heterogeneous maps
2022-03-28 10:48:57 +0200 <kuribas> jackdk: I prefer HKD records.
2022-03-28 10:50:54 +0200 <abastro[m]> How is scheme doing?
2022-03-28 10:51:05 +0200 <kuribas> doing what?
2022-03-28 10:51:28 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds)
2022-03-28 10:51:37 +0200 <abastro[m]> I wonder how scheme compare with haskell w.r.t popularity, usage, ...
2022-03-28 10:52:11 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
2022-03-28 10:52:54 +0200 <tdammers> the clojure idea of "loosely defined interfaces" and "embracing failure" is not a bad one; when it comes to interfacing independently evolving components in a fast-moving problem space, it's the only sane thing you can do, because rigidly defining the interfaces couples them too much, and prevents you from evolving fast. it's just a shitty idea to extend this beyond that particular use case.
2022-03-28 10:53:29 +0200 <kuribas> abastro[m]: it's mostly used for teaching AFAIK. Or was, because now it's largely replaced by Python.
2022-03-28 10:53:43 +0200 <maerwald> tdammers: yes, people say haskell is so composable, but that's simply not true for libraries, unless they're designed to work with one another
2022-03-28 10:54:04 +0200 <maerwald> if you have very loose interfaces/types, you may not even need integration
2022-03-28 10:54:13 +0200 <abastro[m]> Oh no, python replacing scheme
2022-03-28 10:54:14 +0200 <dminuoso> tdammers: Im not convinced this is even remotely true. You can bake variability into interfaces in the beginning.
2022-03-28 10:54:19 +0200 <kuribas> maerwald: the solution is often to send a PR to the library author.
2022-03-28 10:54:20 +0200 <abastro[m]> The heck is this world
2022-03-28 10:54:28 +0200 <dminuoso> Better yet, that even explicitly documents where interfaces are lose and where not, and in what repect they are rigid.
2022-03-28 10:54:58 +0200 <dminuoso> I feel its rather an attitude of not wanting to think about your software.
2022-03-28 10:55:30 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-03-28 10:55:33 +0200 <dminuoso> This is the modern form of "the software is the specification/documentation"
2022-03-28 10:55:52 +0200 <maerwald> kuribas: sending a PR to one of snoymans libraries to use a different streaming library than conduit? xD
2022-03-28 10:55:54 +0200 <maerwald> yeah sure
2022-03-28 10:56:08 +0200 <dminuoso> Besides, quickly evolving components and interfaces to me is a bad symptom
2022-03-28 10:56:26 +0200 <tdammers> maybe, but you don't always get a choice
2022-03-28 10:56:31 +0200Pickchea(~private@user/pickchea) (Ping timeout: 260 seconds)
2022-03-28 10:56:39 +0200Katarushisu(~Katarushi@cpc147334-finc20-2-0-cust27.4-2.cable.virginm.net) (Quit: The Lounge - https://thelounge.chat)
2022-03-28 10:56:42 +0200 <kuribas> dminuoso: yeah, and in clojure you end up with SPEC, which is just types in another form :)
2022-03-28 10:56:46 +0200 <maerwald> dminuoso: I thought so too, but not anymore
2022-03-28 10:56:47 +0200 <tdammers> I'm talking about situations where you are talking to, say, a third-party JSON API
2022-03-28 10:56:53 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-28 10:57:19 +0200Katarushisu(~Katarushi@cpc147334-finc20-2-0-cust27.4-2.cable.virginm.net)
2022-03-28 10:57:25 +0200 <maerwald> sometimes engineering decisions have to align with business interests
2022-03-28 10:57:38 +0200 <abastro[m]> I think ppl say haskell is composable because of language where they came from
2022-03-28 10:57:45 +0200 <maerwald> and sometimes that is going fast and not designing your software as if it's a control piece in an airplane
2022-03-28 10:57:47 +0200 <tdammers> There's no point negotiating an interface, really, because the time at which you write your consumer and the time at which you run it are not the same, and there's no way you can prevent the other side from changing in the meantime. All you can do is error out at runtime, one way or antoher.
2022-03-28 10:58:32 +0200 <tdammers> So instead of going all SOAP on it, it's usually a better idea to formalize the consumer side alone: don't type the interface, just type what the consumer expects.
2022-03-28 10:58:43 +0200 <maerwald> the most interesting space here is in fact blockchain... they both have to go super fast due to competition, but also make sure they don't mess up, otherwise they're done
2022-03-28 10:58:50 +0200Katarushisu(~Katarushi@cpc147334-finc20-2-0-cust27.4-2.cable.virginm.net) (Client Quit)
2022-03-28 10:59:53 +0200Katarushisu(~Katarushi@cpc147334-finc20-2-0-cust27.4-2.cable.virginm.net)
2022-03-28 11:00:02 +0200 <dminuoso> tdammers: It's a difficult proposition. In an ideal world I would chose to not work with unstable APIs.
2022-03-28 11:00:08 +0200cronjob[m](~cronjobma@2001:470:69fc:105::74e7) (Quit: You have been kicked for being idle)
2022-03-28 11:00:46 +0200 <dminuoso> Perhaps this is the reality of software, dealing with the fact that its all buggy and constantly changing. So rather than achieving stable software, the best we can hope for in modern development a low friction factor
2022-03-28 11:00:46 +0200 <kuribas> tdammers: isn't that an interface though? :-P
2022-03-28 11:01:06 +0200 <tdammers> kuribas: yes, but it's unilateral.
2022-03-28 11:01:37 +0200 <tdammers> kuribas: as opposed to the producer explicitly declaring their interface, and the consumer doing runtime type checking to make sure it's the same interface they have been using
2022-03-28 11:01:59 +0200 <kuribas> I don't see how those two are different.
2022-03-28 11:02:17 +0200 <kuribas> The consumer declares an interface, or the producer, but it's still the same interfacen.
2022-03-28 11:02:27 +0200 <tdammers> the difference is that in one scenario, you go, "I expected to get a field named 'blah', but it's not there - ERROR"; in the other, you go "I expected interface version 123.45, but got version 123.46 - ERROR"
2022-03-28 11:02:27 +0200 <kuribas> Or better, the interface is independent.
2022-03-28 11:02:57 +0200 <abastro[m]> 123.45 vs 123.46 sounds like much better error message
2022-03-28 11:03:20 +0200 <tdammers> The difference is that the consumer-declared interface isn't shared with the producer. There is no negotiating of a shared type; the consumer just checks whether what they're getting meets their own requirements.
2022-03-28 11:03:55 +0200dextaa_(~dextaa@user/dextaa)
2022-03-28 11:04:34 +0200 <kuribas> tdammers: Ideally I would have an interface which is defined independently, then the implementation is shown to be consistent with that interface (using dependent types for example), and the consumer uses the interface to run queries.
2022-03-28 11:04:38 +0200 <tdammers> abastro[m]: but it's not; for two reasons. The first one being that you get a lot of false negatives this way. Say you add an optional field; a consumer that doesn't need the field doesn't need to change, but it will still see a different version number and error out, even though that would be unnecessary.
2022-03-28 11:05:09 +0200 <tdammers> The second reason is that version numbers are artificial; they don't mean anything, and so they don't tell you what the actual problem is.
2022-03-28 11:05:29 +0200 <tdammers> I don't care what version number you have, what I care about is whether you can give me the 'blah' field or not.
2022-03-28 11:05:41 +0200 <abastro[m]> Tho in my experience, the versioning scheme worked quite well
2022-03-28 11:05:53 +0200 <kuribas> tdammers: the nice thing of my approach is that it works with your usecase. If the new interface version doesn't break anything existing, the consumer code will just work.
2022-03-28 11:06:08 +0200 <abastro[m]> Chances are, when those optionals are added it would also introduce subtle changes
2022-03-28 11:06:30 +0200 <tdammers> I mean, there's no silver bullet, each approach has its pros and cons
2022-03-28 11:06:43 +0200 <abastro[m]> If it works, consumer will eventually have version bound updated
2022-03-28 11:06:53 +0200 <abastro[m]> Oh I thought you were pushing for something
2022-03-28 11:07:33 +0200 <tdammers> my point is that while the "untyped interface" approach can be the right choice when it comes to interfacing between independent, fast-evolving components, it is not a good paradigm for architecting software systems in general, and it is definitely not great for interfacing between components that you control and evolve together
2022-03-28 11:07:45 +0200vglfr(~vglfr@88.155.45.251) (Read error: Connection reset by peer)
2022-03-28 11:07:58 +0200vglfr(~vglfr@88.155.45.251)
2022-03-28 11:08:23 +0200 <maerwald> well, we have weak types too in Haskell... if you won't buy into a streaming library, you can go full lazy ByteString, at least for some use cases
2022-03-28 11:08:44 +0200 <tdammers> I'm not talking about weak types
2022-03-28 11:08:56 +0200 <tdammers> types are great for everything that happens inside each component
2022-03-28 11:09:29 +0200 <tdammers> you absolutely should have a type firewall between the loosely-defined "outside", and the well-defined inner workings of your component.
2022-03-28 11:10:04 +0200 <tdammers> I just think that trying to achieve type safety *between* networked components is lunacy, in most cases
2022-03-28 11:10:22 +0200chenqisu1(~chenqisu1@183.217.201.88) (Remote host closed the connection)
2022-03-28 11:11:59 +0200 <kuribas> tdammers: you could have an interface stored somewhere, then a CI/CD that runs when the interface changes.
2022-03-28 11:12:17 +0200 <kuribas> it requires coordination, but seems doable.
2022-03-28 11:12:27 +0200 <lortabac> TBH I'd say Haskell is a very good choice when you work with underspecified third-party API's
2022-03-28 11:12:29 +0200 <kuribas> And AFAIK nobody ever tried it.
2022-03-28 11:12:35 +0200tiferrei(~tiferrei@user/tiferrei) (Ping timeout: 240 seconds)
2022-03-28 11:13:18 +0200 <kuribas> tdammers: For example, project A depends on interface B. interface B changes, so all projects dependening on it, like project A, will be rebuild using the CI/CD.
2022-03-28 11:13:29 +0200 <lortabac> because you can say exactly what your components needs, and if somehow the API doesn't provide the necessary data you fail with a precise message
2022-03-28 11:13:38 +0200 <abastro[m]> Btw is Java more composable than haskell
2022-03-28 11:13:41 +0200 <tdammers> Problem though: now you have an n*m situation
2022-03-28 11:13:55 +0200 <abastro[m]> Because when ppl say haskell is composable, I think they are comparing against those languages
2022-03-28 11:14:17 +0200 <tdammers> you need to not only rebuild, but also redeploy
2022-03-28 11:14:51 +0200jonathanx_(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2022-03-28 11:15:14 +0200 <tdammers> realistically, if you don't want your stuff to come to a grinding CI/CD halt eventually, you need to figure out a way to upgrade components independently, on both sides
2022-03-28 11:16:21 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2022-03-28 11:16:23 +0200 <maerwald> abastro[m]: no. Java has even more API-lock.
2022-03-28 11:16:39 +0200 <kuribas> tdammers: yeah.
2022-03-28 11:16:44 +0200 <abastro[m]> Hm, wait why?
2022-03-28 11:16:50 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
2022-03-28 11:16:56 +0200 <maerwald> and since everything is hidden inside an objects behavior, it's even harder to write compatibility layers
2022-03-28 11:17:08 +0200 <abastro[m]> Hmm
2022-03-28 11:17:11 +0200 <tdammers> Neither java nor haskell are "composable". They are programming languages, and you cannot compose programming languages. "Composing a programming language", what would that even mean?
2022-03-28 11:17:20 +0200 <abastro[m]> Yea that explains why ppl say haskell is composable
2022-03-28 11:17:21 +0200jonathanx__(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2022-03-28 11:17:23 +0200 <kuribas> tdammers: another way with versioning is to have the server accept previous versions.
2022-03-28 11:17:29 +0200jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 252 seconds)
2022-03-28 11:17:34 +0200 <tdammers> I think what people mean is rather whether a language lends itself to writing composable code
2022-03-28 11:17:45 +0200 <maerwald> tdammers: composability of functions, modules, libraries, approaches
2022-03-28 11:17:51 +0200tiferrei(~tiferrei@user/tiferrei)
2022-03-28 11:17:55 +0200 <abastro[m]> Meh yea I meant composable by that
2022-03-28 11:17:55 +0200 <maerwald> haskell does well in terms of composing functions
2022-03-28 11:18:00 +0200 <abastro[m]> Capability at writing composable code
2022-03-28 11:18:12 +0200 <maerwald> wrt modules, there are already better approaches
2022-03-28 11:18:15 +0200 <maerwald> wrt libraries, yeah no
2022-03-28 11:18:25 +0200 <tdammers> so, yeah, the question, I think, is whether a language makes it easy to write library code such that it is easy to compose
2022-03-28 11:18:51 +0200 <tdammers> and I think Haskell fares relatively well on this front, though it's not ideal
2022-03-28 11:18:54 +0200 <abastro[m]> Ye, perhaps Java is indeed even worse at that compared to hasel
2022-03-28 11:18:55 +0200 <abastro[m]> What a shame
2022-03-28 11:19:35 +0200 <abastro[m]> /s/hasel/haskell
2022-03-28 11:19:54 +0200 <tdammers> in many cases, careful library authors can write Haskell libraries that are very composable while not forcing a lot of dependencies on the user; things like typeclasses and parametric polymorphism help a lot on this front, and they work better than Java's inheritance model IMO
2022-03-28 11:20:02 +0200 <tdammers> but it's still nowhere near perfect
2022-03-28 11:20:19 +0200michalz(~michalz@185.246.204.126)
2022-03-28 11:20:19 +0200jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2022-03-28 11:20:28 +0200 <abastro[m]> I think JS at least fairs better at this
2022-03-28 11:20:31 +0200 <maerwald> we tried to solve it with backpack, but yeah :D
2022-03-28 11:20:38 +0200 <tdammers> untyped languages are at an advantage here, in that they can keep all sorts of requirements implicit
2022-03-28 11:20:38 +0200jonathanx_(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 272 seconds)
2022-03-28 11:20:52 +0200 <abastro[m]> It should be better than haskell if we'd rationalize irs dominance
2022-03-28 11:21:03 +0200 <tdammers> but of course that becomes a practical burden to the developers, because now the tooling won't help you track down your compatibility issues
2022-03-28 11:21:18 +0200 <tdammers> the Free Lunch Theory applies, I gues
2022-03-28 11:21:26 +0200 <abastro[m]> Yea, JS, the wannabe lisp, is great at that
2022-03-28 11:21:49 +0200 <tdammers> it doesn't really matter which untyped language you pick - JS, Python, Clojure, it's pretty much the same
2022-03-28 11:21:59 +0200 <tdammers> (except PHP - PHP is just worse in each and every regard)
2022-03-28 11:22:11 +0200jonathanx__(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 260 seconds)
2022-03-28 11:22:38 +0200 <abastro[m]> Lmaoooooo
2022-03-28 11:22:54 +0200 <maerwald> so what is the right way to express external API if it's not types?
2022-03-28 11:23:04 +0200 <abastro[m]> There is one thing I am grateful at in my country, PHP is pretty much expunged.
2022-03-28 11:23:16 +0200 <abastro[m]> But at what cost? Java everywhere..
2022-03-28 11:23:35 +0200 <tdammers> maerwald: need to decide on a per-case basis
2022-03-28 11:23:37 +0200 <kuribas> abastro[m]: that's a big improvement.
2022-03-28 11:23:45 +0200 <abastro[m]> Hehehe
2022-03-28 11:23:51 +0200 <kuribas> abastro[m]: java isn't that bad, as long as you follow some guidelines.
2022-03-28 11:24:15 +0200 <kuribas> abastro[m]: Like, no spring, no big inheritance hierarchies, prefer immutable objects.
2022-03-28 11:24:18 +0200 <tdammers> java usually just amounts to procedural with extra steps
2022-03-28 11:24:22 +0200 <maerwald> SQL? Yeah fun if your dependency changes database tables
2022-03-28 11:24:33 +0200 <kuribas> abastro[m]: also, no ORM.
2022-03-28 11:24:38 +0200 <abastro[m]> Well yea I was like, why everyone using Java.. and then remembered they probably have been using PHP before
2022-03-28 11:24:43 +0200 <abastro[m]> Why no ORM
2022-03-28 11:24:47 +0200 <abastro[m]> Oh
2022-03-28 11:24:49 +0200 <boxscape_> kuribas oh nice sounds like the exact opposite of our codebase at work
2022-03-28 11:24:58 +0200 <abastro[m]> I briefly forgot what is ORM
2022-03-28 11:25:07 +0200 <kuribas> object relational mapping.
2022-03-28 11:25:22 +0200 <maerwald> ORM is "I suck at writing actualy SQL"
2022-03-28 11:25:28 +0200 <kuribas> Because you get an impedance mismatch. It only works for simple usecases (the ones shown in tutorials).
2022-03-28 11:25:29 +0200 <tdammers> depends on what kind of ORM you use
2022-03-28 11:25:39 +0200 <abastro[m]> Hehehe writing SQL
2022-03-28 11:25:45 +0200 <kuribas> Then you run into all kinds of performance problems.
2022-03-28 11:25:58 +0200 <abastro[m]> Well some ppl might find SQL veeeery verbose
2022-03-28 11:26:15 +0200lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
2022-03-28 11:26:18 +0200 <tdammers> the sane ones use objects to accurately reflect database interactions; the insane ones make you think that the data in your database can be made to act like objects
2022-03-28 11:26:29 +0200 <boxscape_> abastro[m] don't worry using ORMs in Java is usually more verbose
2022-03-28 11:26:43 +0200 <abastro[m]> Oh god no
2022-03-28 11:26:50 +0200 <abastro[m]> Jaaaavaa pls
2022-03-28 11:27:20 +0200 <abastro[m]> Perhaps it might be right decision to kill Java.. using Go
2022-03-28 11:27:54 +0200 <maerwald> you complain about verbose and then mention Go?
2022-03-28 11:28:20 +0200lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
2022-03-28 11:28:25 +0200 <abastro[m]> At least Go folks won't write that much long names
2022-03-28 11:28:28 +0200 <maerwald> verbose is not that bad, if you have healthy wrists
2022-03-28 11:28:33 +0200lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
2022-03-28 11:28:37 +0200 <abastro[m]> Boilerplate is better
2022-03-28 11:30:26 +0200 <maerwald> in Go they write small tools that generate code
2022-03-28 11:30:33 +0200 <maerwald> because they have no other option
2022-03-28 11:30:56 +0200 <tdammers> I mean; user = connection.execute(dbSchema.usersTable.getByUserID(userID)) // I have no problem with that.
2022-03-28 11:30:56 +0200 <abastro[m]> Yea, I think they find it easier to read that way.
2022-03-28 11:31:18 +0200 <tdammers> OTOH, user = new User(userID); user.load(); // holy crap, get out, this is terrible
2022-03-28 11:31:52 +0200 <boxscape_> i.e. expression-based > statement-based?
2022-03-28 11:32:37 +0200 <tdammers> more like, "objects that act like database things" > "objects that pretend to act like plain old objects, but fall flat on their face because database rows are fundamentally not objects"
2022-03-28 11:32:37 +0200 <abastro[m]> By Java verbose I mean sth like `DatabaseDecoratorInfoValue`
2022-03-28 11:32:55 +0200 <abastro[m]> Or `ComposerManagerRepository`
2022-03-28 11:33:15 +0200 <abastro[m]> Or.. `SingletonBridgeTestProxyAdvisor`
2022-03-28 11:35:08 +0200 <abastro[m]> Hm wait, database rows are ofc not objects
2022-03-28 11:35:13 +0200 <kuribas> tdammers: yeah, add to that lazy loading in sqlalchemy.
2022-03-28 11:35:15 +0200 <abastro[m]> But why are ppl using it as objects???
2022-03-28 11:35:31 +0200 <kuribas> tdammers: bugs galore.
2022-03-28 11:36:12 +0200raym(~raym@user/raym) (Ping timeout: 252 seconds)
2022-03-28 11:37:45 +0200 <kuribas> tdammers: so no user.load, but using "user.name", will actually load the user object lazily.
2022-03-28 11:37:51 +0200xff0x(~xff0x@125x102x200x106.ap125.ftth.ucom.ne.jp) (Ping timeout: 256 seconds)
2022-03-28 11:38:00 +0200raym(~raym@user/raym)
2022-03-28 11:38:20 +0200lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
2022-03-28 11:39:42 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2022-03-28 11:40:02 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2022-03-28 11:40:43 +0200 <kuribas> tdammers: there is so much wrong with that, one that using the attribute will actually invoke a function, the other that you get side-effects at unpredictable times.
2022-03-28 11:40:54 +0200 <kuribas> And all of it is invisible to the user.
2022-03-28 11:44:21 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-03-28 11:45:42 +0200 <maerwald> the things ORM is useful for are usually *simple* queries. But I don't need assistance with those.
2022-03-28 11:46:00 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-28 11:46:39 +0200benin(~benin@183.82.24.110)
2022-03-28 11:47:05 +0200ncopa(~ncopa@gbr2-dev1.alpinelinux.org) (Changing host)
2022-03-28 11:47:05 +0200ncopa(~ncopa@alpine/developer/ncopa)
2022-03-28 11:47:26 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-03-28 11:47:59 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-28 11:50:01 +0200 <abastro[m]> Indeed
2022-03-28 11:50:17 +0200 <abastro[m]> Hm perhaps many enterprises do need such assistances
2022-03-28 11:50:32 +0200 <maerwald> The only time I started with an ORM was with python's django and it took only 2 months until performance was a problem.
2022-03-28 11:50:36 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-03-28 11:50:58 +0200 <maerwald> Coming up with a performant query took me an entire weekend.
2022-03-28 11:51:19 +0200 <maerwald> And since then, it was never touched again
2022-03-28 11:52:06 +0200 <maerwald> Refactoring queries or tables a lot is a rather specific problem.
2022-03-28 11:52:08 +0200 <tdammers> yeah, so "mapping rows to objects" is fine, as long as we're clear about the fact that what we're mapping is not a live database row, but a row in a result set, as it was returned from a query
2022-03-28 11:52:28 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Ping timeout: 246 seconds)
2022-03-28 11:52:40 +0200 <tdammers> oh, and, "ORM" generally involves two completely different parts: mapping database data to objects, and using objects to construct queries
2022-03-28 11:53:58 +0200 <tdammers> when it comes to query abstractions, a similar problem tends to occur though - it turns out that SQL is a pretty good DSL for expressing relational queries, and you don't usually win anything by wrapping it in an OOP-based DSL
2022-03-28 11:54:12 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-03-28 11:54:21 +0200 <maerwald> I've worked a little with beam, but the time I'm confused about the odd API probably doesn't outweigh the time it would take me to write plain SQL.
2022-03-28 11:54:31 +0200 <tdammers> but you potentially lose a lot. SQL is widely known and has a huge tooling ecosystem; your custom OOP DSL doesn't.
2022-03-28 11:55:19 +0200 <abastro[m]> SQL is great DSL, indeed
2022-03-28 11:55:33 +0200 <abastro[m]> But ppl love OOP so NoSQL is coming
2022-03-28 11:55:53 +0200 <tdammers> and that promise of making the database backend and the SQL dialect that comes with it transparent? that never really works fully, and it's pretty useless anyway, because "we have to rewrite our codebase to run against a completely different SQL dialect" pretty much never happens
2022-03-28 11:56:26 +0200 <tdammers> (and when it does, rewriting your data access layer is the least of your problems)
2022-03-28 11:56:50 +0200 <merijn> Just write your SQL in the postgres dialect, then you support the only 2 databases to care about :p
2022-03-28 11:56:52 +0200 <maerwald> I've migrated django sqlite to django postgresql and it wasn't just turning a switch.
2022-03-28 11:57:16 +0200 <tdammers> merijn: 2? what's the other one?
2022-03-28 11:57:45 +0200 <tdammers> oh, sqlite?
2022-03-28 11:57:59 +0200 <tdammers> I'd consider that a "configuration file format" that happens to present an SQL API
2022-03-28 11:58:18 +0200 <tdammers> it's absolutely awesome for that, but I wouldn't use it as a database proper
2022-03-28 11:58:33 +0200 <tdammers> or, well, "data file format", more generally
2022-03-28 11:58:44 +0200 <tdammers> it's also great for things like working with scientific datasets and such
2022-03-28 11:58:49 +0200 <tdammers> caching things, too
2022-03-28 11:59:08 +0200 <merijn> Exactly what I'm using it for now :p
2022-03-28 11:59:42 +0200 <kuribas> tdammers: Our new database model is basically an object model, without subtyping, but with interfaces.
2022-03-28 12:00:55 +0200 <kuribas> tdammers: We have tables for each of the "interfaces", tables for relations between objects, and an "object" table which contains the unique ids. So what I am doing now is expressing in data how the objects relate to the tables using (HKD) data.
2022-03-28 12:01:15 +0200 <kuribas> tdammers: doing it this way still allows me any freedom to generate sql as I want it.
2022-03-28 12:01:21 +0200 <abastro[m]> I've been using sqlite because I thought it would be great for personal use
2022-03-28 12:01:30 +0200 <tdammers> merijn: well, my point is that IME, it's usually pretty clear whether you want postgres or sqlite, so you should never have to switch your code from one to the other later on
2022-03-28 12:01:35 +0200 <abastro[m]> Turns out it lacks user improvmenets..
2022-03-28 12:02:02 +0200 <kuribas> tdammers: but it allows the queries to be written generically.
2022-03-28 12:02:24 +0200 <kuribas> tdammers: it also allows me to proof the the object model and database model are consistent.
2022-03-28 12:02:37 +0200 <tdammers> kuribas: to me, the sweet spot in that problem domain, at least for now, is to instate a bunch of conventions, and then use TH to write the "boring" queries for me
2022-03-28 12:03:24 +0200 <kuribas> tdammers: your TH can be buggy.
2022-03-28 12:03:30 +0200 <tdammers> e.g., I'd say data User = User { username :: String, password :: HashedPassword, email :: EMail }, and then $(deriveEntity 'User), and it would generate all the boring SQL queries for me
2022-03-28 12:03:42 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.4.1)
2022-03-28 12:03:46 +0200 <kuribas> I found that my DB library already caught subtle errors with nullability.
2022-03-28 12:03:54 +0200 <tdammers> yes, but the beauty of it is that when the TH is buggy, it will most likely blow up across the board, so I get a nice loud early failure
2022-03-28 12:04:15 +0200tiferrei(~tiferrei@user/tiferrei) (Ping timeout: 240 seconds)
2022-03-28 12:04:16 +0200 <kuribas> not always.
2022-03-28 12:04:24 +0200 <tdammers> no, not always
2022-03-28 12:04:38 +0200 <tdammers> but the idea that you can have identical types between postgres and haskell is a pipe dream anyway
2022-03-28 12:04:48 +0200 <tdammers> some manual diligence and abundant testing are inevitable
2022-03-28 12:05:06 +0200 <kuribas> No, not identical, but an expicit mapping between the two.
2022-03-28 12:05:26 +0200 <kuribas> Which is proven consistent at compile time.
2022-03-28 12:05:52 +0200 <tdammers> oh, and another bit of wisdom I've inferred is that in most cases, you should have two sets of data types: one set that represents data as it is stored in the database, or rather, retrieved from the database; and one set that you use in your domain logic.
2022-03-28 12:06:40 +0200 <tdammers> "proven consistent at compile time" is worthless unless you can somehow guarantee that the database schema will always match at runtime the one you saw at compile time
2022-03-28 12:06:48 +0200 <tdammers> but that's quite the coupling requirement
2022-03-28 12:07:05 +0200 <kuribas> tdammers: I agree with you, but in our case, our database is explicitly modelled as a object model.
2022-03-28 12:07:23 +0200 <tdammers> sounds like a terrible idea to me
2022-03-28 12:07:32 +0200 <kuribas> tdammers: still, I allow for changing field names, making custom queries, etc...
2022-03-28 12:08:18 +0200 <merijn> bleh, the most recent SQLite releases sound like they'd massively speed up some of my queries, but then I'd have to do a lot of work to support a new persistent and update persistent-sqlite to a newer SQLite
2022-03-28 12:08:21 +0200 <kuribas> tdammers: not really, the coupling is not mandatory, just convenient.
2022-03-28 12:09:07 +0200 <tdammers> if you don't mandate the coupling, then your type guarantees become suggestions, and thus worthless
2022-03-28 12:09:16 +0200 <tdammers> well, maybe useful for documentation purposes, but that's it
2022-03-28 12:09:36 +0200 <kuribas> tdammers: well, it's the task of the database deployment to make sure that databases are consistent, not the task of the haskell code.
2022-03-28 12:10:09 +0200 <kuribas> tdammers: nope, the type garantees that no queries will fail at runtime (unless the database schema is not updated).
2022-03-28 12:10:12 +0200vglfr(~vglfr@88.155.45.251) (Read error: Connection reset by peer)
2022-03-28 12:10:14 +0200econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2022-03-28 12:10:24 +0200vglfr(~vglfr@88.155.45.251)
2022-03-28 12:10:38 +0200tiferrei(~tiferrei@user/tiferrei)
2022-03-28 12:10:40 +0200 <tdammers> yes. but it means that you have two choices: a) force the database deployment to always happen in lock-step with application code deployments; or b) write your code to handle the case where the database schema doesn't match
2022-03-28 12:10:43 +0200deadmarshal_(~deadmarsh@95.38.115.47) (Ping timeout: 260 seconds)
2022-03-28 12:11:02 +0200 <tdammers> option a) is shitty, because that's exactly the kind of coupling you want to avoid
2022-03-28 12:11:09 +0200 <tdammers> option b) means your types don't buy you much
2022-03-28 12:11:17 +0200Pickchea(~private@user/pickchea)
2022-03-28 12:11:26 +0200 <kuribas> it will just throw an exception, like any database code does.
2022-03-28 12:11:49 +0200 <kuribas> tdammers: yes, because I need to fix the database, not the code.
2022-03-28 12:12:17 +0200 <kuribas> fixing the database is easy (update to new schema), updating the code isn't (find all mismatching values).
2022-03-28 12:12:24 +0200mc47(~mc47@xmonad/TheMC47)
2022-03-28 12:12:58 +0200 <tdammers> yes, but throwing an exception if the data doesn't match your expectations is what happens either way. the types don't prevent that.
2022-03-28 12:13:22 +0200 <abastro[m]> I really began using some haskell binding for SQLite, instead of directly using SQLite commandline tool
2022-03-28 12:13:32 +0200 <tdammers> essentially, what you get is the guarantee that your code matches *some* schema, but not that it matches the schema it will encounter at runtime
2022-03-28 12:13:41 +0200 <kuribas> tdammers: which is fine, no?
2022-03-28 12:13:51 +0200 <tdammers> yes, but it's nowhere near as useful as it may seem
2022-03-28 12:13:59 +0200 <kuribas> disagree
2022-03-28 12:14:28 +0200 <kuribas> I once spend a whole sunday updating code since we changed the database schema.
2022-03-28 12:14:29 +0200 <tdammers> the whole appeal of a type-checked database layer is that it's guaranteed to match the schema, but that only works when the schema cannot be changed from under your butt
2022-03-28 12:14:34 +0200 <kuribas> With this, it would be 30 minutes work.
2022-03-28 12:15:25 +0200 <tdammers> then your schema migration strategy sucks
2022-03-28 12:15:32 +0200 <kuribas> For that we have deployment procedures, making sure that the database version matches the app version.
2022-03-28 12:15:57 +0200 <tdammers> well yeah, so now your database and application code are tightly coupled
2022-03-28 12:16:07 +0200 <kuribas> as in any application?
2022-03-28 12:16:11 +0200 <tdammers> no?
2022-03-28 12:16:36 +0200 <tdammers> one awesome feature of an SQL database is that multiple clients can concurrently connect to it
2022-03-28 12:16:38 +0200 <kuribas> every application makes assumptions about the database schema.
2022-03-28 12:16:50 +0200 <kuribas> or you need to use NoSQL.
2022-03-28 12:16:59 +0200 <tdammers> yes, it does, but there are plenty of ways you can write your code, and evolve your schema, to do this safely but independently
2022-03-28 12:17:12 +0200 <tdammers> and NoSQL has nothing to do with it, the problem is exactly the same
2022-03-28 12:17:38 +0200 <tdammers> if your architecture is such that each database is owned by exactly one instance of one component, then it's fine to tightly couple them
2022-03-28 12:17:56 +0200 <tdammers> but otherwise, you need to do it such that you can roll out database changes and application changes independently
2022-03-28 12:18:03 +0200xff0x(~xff0x@i121-117-52-147.s41.a013.ap.plala.or.jp)
2022-03-28 12:18:03 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-03-28 12:18:18 +0200p0lyph3m(~polyphem@2a00:20:c056:33c3:c59d:d67:df03:351a) (Ping timeout: 260 seconds)
2022-03-28 12:18:30 +0200 <tdammers> in fact, in most situations, you want to be able to support a situation where two different versions of the same application are running against the same database in production
2022-03-28 12:18:54 +0200 <tdammers> because if you don't, then you cannot do zero-downtime deployments
2022-03-28 12:20:04 +0200 <kuribas> that's an orthogonal issue.
2022-03-28 12:20:10 +0200 <kuribas> Making the database backwards compatible.
2022-03-28 12:20:39 +0200 <kuribas> Has nothing to do with checking the application against the database schema.
2022-03-28 12:20:47 +0200 <abastro[m]> Is it hard to decouple database layer?
2022-03-28 12:21:18 +0200 <kuribas> abastro[m]: depends
2022-03-28 12:21:31 +0200 <kuribas> if your needs are simple, just make individual queries.
2022-03-28 12:21:39 +0200 <kuribas> Otherwise you'll need to compose queries.
2022-03-28 12:22:42 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
2022-03-28 12:23:17 +0200 <tdammers> it depends on how you architect things
2022-03-28 12:24:01 +0200 <tdammers> one approach is the "one database per component" approach; if you roll with this one, then nothing outside the component will ever talk to the database directly, and the way you achieve "decoupling" is through the API layer that the component adds
2022-03-28 12:24:36 +0200 <tdammers> another approach is to use the database itself as an API between components; in this case, a common approach is to use views and stored procedures to provide a stable API over evolving table schemas
2022-03-28 12:25:03 +0200 <kuribas> tdammers: "one database per component" is not our approach.
2022-03-28 12:25:10 +0200 <abastro[m]> Components? Hmm
2022-03-28 12:25:13 +0200 <tdammers> you can also use a hybrid approach, where you have one central database, but you wrap it in a central API, which all other components talk to
2022-03-28 12:25:42 +0200 <tdammers> well, components of a larger system. nodes, servers, processes, whatever you want to call them.
2022-03-28 12:25:43 +0200 <abastro[m]> Do you mean microservice by 'components'
2022-03-28 12:25:44 +0200 <kuribas> tdammers: though we will have one component to write changes to the database.
2022-03-28 12:25:53 +0200 <abastro[m]> Oh, I see
2022-03-28 12:26:02 +0200 <tdammers> could be microservices, but doesn't have to be "micro", nor a "service" in the strict sense
2022-03-28 12:26:07 +0200 <kuribas> tdammers: but multeple components can read the database.
2022-03-28 12:26:28 +0200 <abastro[m]> I can sense incredible coupling
2022-03-28 12:26:35 +0200 <kuribas> IMO microservices is just the actor model, in a clumsy way.
2022-03-28 12:26:43 +0200 <tdammers> kuribas: arguably, yes
2022-03-28 12:27:02 +0200 <tdammers> abastro[m]: if you do it naively, then yes, you will introduce a lot of coupling.
2022-03-28 12:28:07 +0200 <abastro[m]> Yep
2022-03-28 12:28:28 +0200 <abastro[m]> I mean, is it easy to avoid coupling when there are multiple components reading into the DB?
2022-03-28 12:28:31 +0200 <kuribas> still, ideally, each actor should have a formally specified interface.
2022-03-28 12:31:16 +0200 <abastro[m]> But that's too ideal
2022-03-28 12:33:23 +0200 <kuribas> it's possible with dependend types :)
2022-03-28 12:33:39 +0200 <kuribas> or just a big test-suite in another language.
2022-03-28 12:34:26 +0200 <tdammers> so just write the test suite
2022-03-28 12:34:52 +0200pooryorick(~pooryoric@87-119-174-173.tll.elisa.ee)
2022-03-28 12:35:12 +0200 <abastro[m]> If only dependent types were easy
2022-03-28 12:37:16 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-28 12:37:37 +0200vglfr(~vglfr@88.155.45.251) (Ping timeout: 246 seconds)
2022-03-28 12:38:54 +0200vglfr(~vglfr@88.155.45.251)
2022-03-28 12:40:51 +0200 <kuribas> There aren't easy, but they aren't as complicated people make them out to be.
2022-03-28 12:41:13 +0200 <kuribas> As long as you don't try to proof your whole program correct in them.
2022-03-28 12:41:28 +0200 <kuribas> IMO dependent types are easier than haskell once you get into type system extensions.
2022-03-28 12:41:42 +0200dextaa_(~dextaa@user/dextaa) (Ping timeout: 272 seconds)
2022-03-28 12:43:01 +0200lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
2022-03-28 12:43:10 +0200 <abastro[m]> Eh idk, my experience in Coq and Agda beg to differ
2022-03-28 12:43:28 +0200 <abastro[m]> At least, laziness is not yet implemented there
2022-03-28 12:43:51 +0200 <kuribas> abastro[m]: try idris.
2022-03-28 12:44:01 +0200 <kuribas> it has optional lazyness.
2022-03-28 12:44:04 +0200dextaa_(~dextaa@user/dextaa)
2022-03-28 12:44:09 +0200 <kuribas> It's also less proof oriented.
2022-03-28 12:44:19 +0200vglfr(~vglfr@88.155.45.251) (Read error: Connection reset by peer)
2022-03-28 12:44:21 +0200 <abastro[m]> Yep but I don't think Idris would help much either
2022-03-28 12:44:31 +0200vglfr(~vglfr@88.155.45.251)
2022-03-28 12:44:41 +0200 <abastro[m]> When you want to do proof, like any kind of proof, you'd require lots of boilerplates
2022-03-28 12:45:29 +0200 <kuribas> not necessarily.
2022-03-28 12:46:37 +0200 <kuribas> For example, this function takes an int: foo :: Int -> Int; foo x = x + 1
2022-03-28 12:46:44 +0200 <kuribas> it's not a hard proof.
2022-03-28 12:47:21 +0200 <abastro[m]> I don't mean the kind of proof which is easy in haskell as well
2022-03-28 12:47:21 +0200jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2022-03-28 12:47:56 +0200zeenk(~zeenk@2a02:2f04:a110:7d00:2011:cfed:bad7:3c94)
2022-03-28 12:48:55 +0200vglfr(~vglfr@88.155.45.251) (Read error: Connection reset by peer)
2022-03-28 12:49:06 +0200vglfr(~vglfr@88.155.45.251)
2022-03-28 12:50:38 +0200 <kuribas> hard in haskell: foo :: IsRowInSchema row table a Schema => SQL a; foo = select $ table @. row
2022-03-28 12:50:43 +0200 <kuribas> easy in idris.
2022-03-28 12:51:33 +0200CiaoSen(~Jura@p200300c95735b0002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2022-03-28 12:51:48 +0200 <kuribas> abastro[m]: for example, in my library I generate all the rows and tables from the schema, in idris that could be just a value level function which is lifted into a constraint.
2022-03-28 12:52:09 +0200 <kuribas> abastro[m]: other example: putting a REST API interface in servant.
2022-03-28 12:52:15 +0200acidjnk(~acidjnk@p200300d0c7049f67fc06a0258b52409e.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2022-03-28 12:52:16 +0200 <kuribas> in idris that could be just a value level interface.
2022-03-28 12:55:23 +0200 <abastro[m]> I mean, did you try that it works?
2022-03-28 12:56:08 +0200 <kuribas> abastro[m]: yes
2022-03-28 12:56:22 +0200 <abastro[m]> Hmm
2022-03-28 12:56:24 +0200 <kuribas> though I haven't worked out the idris version, is it is lacking so many helper l ibraries.
2022-03-28 12:56:31 +0200 <kuribas> like bytestring builders.
2022-03-28 12:56:42 +0200 <kuribas> A mysql client library.
2022-03-28 12:57:08 +0200 <kuribas> perhaps the latter can be simplified with a scheme ffi binding.
2022-03-28 12:57:18 +0200 <kuribas> abastro[m]: but I did try the concept.
2022-03-28 12:57:40 +0200 <abastro[m]> Didn't you say that you worked it out with idris ?
2022-03-28 12:57:54 +0200 <abastro[m]> That is, the constraint using value level function
2022-03-28 12:57:54 +0200 <kuribas> yes, the contraint part.
2022-03-28 12:57:58 +0200 <kuribas> indeed.
2022-03-28 12:58:20 +0200 <abastro[m]> Did you hooked it up to actual query statement and checked if it works?
2022-03-28 12:58:31 +0200xkuru(~xkuru@user/xkuru)
2022-03-28 12:58:38 +0200Pickchea(~private@user/pickchea) (Ping timeout: 260 seconds)
2022-03-28 12:58:38 +0200 <kuribas> no, but it will work.
2022-03-28 12:59:02 +0200 <abastro[m]> Because I personally doubt that
2022-03-28 12:59:12 +0200 <kuribas> abastro[m]: https://hackage.haskell.org/package/hasqlator-mysql-0.1.0
2022-03-28 12:59:16 +0200 <kuribas> abastro[m]: why?
2022-03-28 13:00:27 +0200m1dnight(~christoph@78-22-9-5.access.telenet.be) (Quit: WeeChat 3.4.1)
2022-03-28 13:00:40 +0200Inst(~Liam@c-98-208-218-119.hsd1.fl.comcast.net)
2022-03-28 13:00:48 +0200m1dnight(~christoph@78-22-9-5.access.telenet.be)
2022-03-28 13:01:08 +0200 <abastro[m]> Because it basically requires proving that the constraint works (on the real world usecases)
2022-03-28 13:03:04 +0200 <kuribas> So instead of a generated row, I use a string: do t <- from "object"; pure $ sel $ t "id"
2022-03-28 13:03:52 +0200 <abastro[m]> Eh
2022-03-28 13:03:53 +0200vglfr(~vglfr@88.155.45.251) (Read error: Connection reset by peer)
2022-03-28 13:05:01 +0200ormaaj(~ormaaj@user/ormaaj) (Quit: User was banned)
2022-03-28 13:05:01 +0200siraben(~siraben@user/siraben) (Quit: User was banned)
2022-03-28 13:05:01 +0200zfnmxt(~zfnmxtzfn@2001:470:69fc:105::2b32) (Quit: User was banned)
2022-03-28 13:05:03 +0200VarikValefor[m](~varikvale@2001:470:69fc:105::a5d) (Quit: User was banned)
2022-03-28 13:05:03 +0200vaibhavsagar[m](~vaibhavsa@2001:470:69fc:105::ffe) (Quit: User was banned)
2022-03-28 13:05:03 +0200Deide(~deide@user/deide) (Quit: User was banned)
2022-03-28 13:05:03 +0200hsiktas[m](~hsiktasm]@2001:470:69fc:105::30d4) (Quit: User was banned)
2022-03-28 13:05:04 +0200bitonic(~bitonic@2001:470:69fc:105::1812) (Quit: User was banned)
2022-03-28 13:05:05 +0200peddie(~peddie@2001:470:69fc:105::25d) (Quit: User was banned)
2022-03-28 13:05:06 +0200fgaz(~fgaz@2001:470:69fc:105::842) (Quit: User was banned)
2022-03-28 13:05:06 +0200jmcantrell(~jmcantrel@user/jmcantrell) (Quit: User was banned)
2022-03-28 13:05:06 +0200sm(~sm@plaintextaccounting/sm) (Quit: User was banned)
2022-03-28 13:05:08 +0200Arathorn(~arathorn@2001:470:69fc:105::1f) (Quit: User was banned)
2022-03-28 13:05:10 +0200maralorn(~maralorn@2001:470:69fc:105::251) (Quit: User was banned)
2022-03-28 13:05:10 +0200juhp[m](~juhpmatri@2001:470:69fc:105::6e9) (Quit: User was banned)
2022-03-28 13:05:10 +0200psydroid(~psydroid@user/psydroid) (Quit: User was banned)
2022-03-28 13:05:12 +0200vglfr(~vglfr@88.155.45.251)
2022-03-28 13:05:13 +0200jinsun_(~jinsun@user/jinsun) (Quit: User was banned)
2022-03-28 13:05:14 +0200Orbstheorem(~orbstheor@2001:470:69fc:105::a56) (Quit: User was banned)
2022-03-28 13:05:16 +0200amesgen[m](~amesgenm]@2001:470:69fc:105::82b) (Quit: User was banned)
2022-03-28 13:05:17 +0200Artem[m](~artemtype@2001:470:69fc:105::75b) (Quit: User was banned)
2022-03-28 13:05:17 +0200ongy[m](~ongymatri@2001:470:69fc:105::5018) (Quit: User was banned)
2022-03-28 13:05:17 +0200unclechu(~unclechu@2001:470:69fc:105::354) (Quit: User was banned)
2022-03-28 13:05:17 +0200jneira[m](~jneiramat@2001:470:69fc:105::d729) (Quit: User was banned)
2022-03-28 13:05:17 +0200kadoban(~kadoban@user/kadoban) (Quit: User was banned)
2022-03-28 13:05:20 +0200Christoph[m](~hpotsirhc@2001:470:69fc:105::2ff8) (Quit: User was banned)
2022-03-28 13:05:21 +0200ericson2314(~ericson23@2001:470:69fc:105::70c) (Quit: User was banned)
2022-03-28 13:05:21 +0200methylene[m](~methylene@2001:470:69fc:105::1:ccc0) (Quit: User was banned)
2022-03-28 13:05:25 +0200nomagno(~nomagno@2001:470:69fc:105::c1f0) (Quit: User was banned)
2022-03-28 13:05:28 +0200smichel17[m](~smichel17@2001:470:69fc:105::2d32) (Quit: User was banned)
2022-03-28 13:05:33 +0200maerwald[m](~maerwaldm@2001:470:69fc:105::1ee) (Quit: User was banned)
2022-03-28 13:05:34 +0200DemiMarieObenour(~alwayscur@2001:470:69fc:105::4886) (Quit: User was banned)
2022-03-28 13:05:35 +0200kadenwolff[m](~kadenwolf@2001:470:69fc:105::1:d97f) (Quit: User was banned)
2022-03-28 13:05:39 +0200euphrates[m](~euphrates@2001:470:69fc:105::fbb5) (Quit: User was banned)
2022-03-28 13:05:44 +0200polykernel[m](~polykerne@user/polykernel) (Quit: User was banned)
2022-03-28 13:05:44 +0200Ash[m](~signal-wa@2001:470:69fc:105::1:2318) (Quit: User was banned)
2022-03-28 13:05:45 +0200moats(~oats@user/oats) (Quit: User was banned)
2022-03-28 13:05:45 +0200Guillaum[m](~guiboumat@2001:470:69fc:105::1:72ac) (Quit: User was banned)
2022-03-28 13:05:45 +0200ac(~aloiscoch@2001:470:69fc:105::65) (Quit: User was banned)
2022-03-28 13:05:46 +0200schuelermine[m](~schuelerm@user/schuelermine) (Quit: User was banned)
2022-03-28 13:05:46 +0200ManofLetters[m](~manoflett@2001:470:69fc:105::3be) (Quit: User was banned)
2022-03-28 13:05:46 +0200boxscape(~boxscape@user/boxscape) (Quit: User was banned)
2022-03-28 13:05:46 +0200abastro[m](~abastroma@2001:470:69fc:105::1:e119) (Quit: User was banned)
2022-03-28 13:05:46 +0200solomon[m](~solomonco@2001:470:69fc:105::1:6000) (Quit: User was banned)
2022-03-28 13:05:47 +0200yosef36(~yosefweis@2001:470:69fc:105::1:e501) (Quit: User was banned)
2022-03-28 13:05:50 +0200reactormonk[m](~reactormo@2001:470:69fc:105::3c24) (Quit: User was banned)
2022-03-28 13:05:50 +0200sekun[m](~hsekmatri@2001:470:69fc:105::d18f) (Quit: User was banned)
2022-03-28 13:05:50 +0200marinelli[m](~marinelli@2001:470:69fc:105::2d8) (Quit: User was banned)
2022-03-28 13:05:50 +0200fendor[m](~fendormat@2001:470:69fc:105::fcbd) (Quit: User was banned)
2022-03-28 13:05:59 +0200VanceIsM7[m](~vanceism7@2001:470:69fc:105::3ad) (Quit: User was banned)
2022-03-28 13:05:59 +0200wildsebastian(~wildsebas@2001:470:69fc:105::1:14b1) (Quit: User was banned)
2022-03-28 13:06:03 +0200 <kuribas> from has a constraint on the argument, that checks if it is in the schema.
2022-03-28 13:06:13 +0200kalxd[m](~kalxdmatr@2001:470:69fc:105::1:576e) (Quit: User was banned)
2022-03-28 13:06:18 +0200juhp[m](~juhpmatri@2001:470:69fc:105::6e9)
2022-03-28 13:06:27 +0200july541[m](~july541ma@2001:470:69fc:105::1:e416) (Quit: User was banned)
2022-03-28 13:06:30 +0200eddiemundo(~eddiemund@2001:470:69fc:105::a80) (Quit: User was banned)
2022-03-28 13:06:31 +0200alexfmpe[m](~alexfmpem@2001:470:69fc:105::38ba) (Quit: User was banned)
2022-03-28 13:06:31 +0200TimothyBess[m](~dorksidem@2001:470:69fc:105::1:e14e) (Quit: User was banned)
2022-03-28 13:06:32 +0200fgaz(~fgaz@2001:470:69fc:105::842)
2022-03-28 13:06:32 +0200aviladev[m](~aviladevm@2001:470:69fc:105::1:cbc7) (Quit: User was banned)
2022-03-28 13:06:39 +0200tsmc[m](~tsmcmatri@2001:470:69fc:105::1:7e1) (Quit: User was banned)
2022-03-28 13:06:45 +0200ninioArtillero[m(~ninioarti@2001:470:69fc:105::1:d1ef) (Quit: User was banned)
2022-03-28 13:06:45 +0200Yehoshua(~yehoshua@2001:470:69fc:105::1:593f) (Quit: User was banned)
2022-03-28 13:06:45 +0200reza[m](~rezaphone@2001:470:69fc:105::3eda) (Quit: User was banned)
2022-03-28 13:06:45 +0200justosophy[m](~justosoph@2001:470:69fc:105::572f) (Quit: User was banned)
2022-03-28 13:06:45 +0200hughjfchen[m](~hughjfche@2001:470:69fc:105::c29d) (Quit: User was banned)
2022-03-28 13:06:45 +0200cdsmith(~cdsmithma@2001:470:69fc:105::284) (Quit: User was banned)
2022-03-28 13:06:45 +0200kevin[m](~pnotequal@2001:470:69fc:105::a54) (Quit: User was banned)
2022-03-28 13:06:45 +0200ksqsf[m](~ksqsfmatr@2001:470:69fc:105::1:d8fa) (Quit: User was banned)
2022-03-28 13:06:45 +0200shlevy[m](~shlevymat@2001:470:69fc:105::1:d3b1) (Quit: User was banned)
2022-03-28 13:06:45 +0200sofviic[m](~sofviicma@2001:470:69fc:105::1:51fd) (Quit: User was banned)
2022-03-28 13:06:45 +0200oak-(~oakuniver@2001:470:69fc:105::fcd) (Quit: User was banned)
2022-03-28 13:06:45 +0200dgpratt[m](~dgprattma@2001:470:69fc:105::1:dcdd) (Quit: User was banned)
2022-03-28 13:06:45 +0200Joe[m]12(~jsricemat@2001:470:69fc:105::1:b4ce) (Quit: User was banned)
2022-03-28 13:06:45 +0200pareto-optimal-d(~pareto-op@2001:470:69fc:105::1:b61f) (Quit: User was banned)
2022-03-28 13:06:45 +0200jkaye[m](~jkayematr@2001:470:69fc:105::1:86f7) (Quit: User was banned)
2022-03-28 13:06:45 +0200o1lo0lol1o[m](~o1lo0lol1@2001:470:69fc:105::1:d1c0) (Quit: User was banned)
2022-03-28 13:06:45 +0200AdamS[m](~adamvalko@2001:470:69fc:105::1:d5f0) (Quit: User was banned)
2022-03-28 13:06:45 +0200ArshiaAghaei[m](~arshiaagh@2001:470:69fc:105::1:c382) (Quit: User was banned)
2022-03-28 13:06:45 +0200sjanssen(~sjanssenm@2001:470:69fc:105::1:61d8) (Quit: User was banned)
2022-03-28 13:06:45 +0200Las[m](~lasmatrix@2001:470:69fc:105::74e) (Quit: User was banned)
2022-03-28 13:06:45 +0200charukiewicz[m](~charukiew@2001:470:69fc:105::ded4) (Quit: User was banned)
2022-03-28 13:06:45 +0200weeezes[m](~weeezesma@2001:470:69fc:105::1:da65) (Quit: User was banned)
2022-03-28 13:06:45 +0200corisco[m](~coriscokd@2001:470:69fc:105::1:dea6) (Quit: User was banned)
2022-03-28 13:06:45 +0200jaror[m](~jaror@2001:470:69fc:105::265) (Quit: User was banned)
2022-03-28 13:06:45 +0200AdamConner-Sax[m(~adamcsmat@2001:470:69fc:105::1:e2c8) (Quit: User was banned)
2022-03-28 13:06:45 +0200ThadeuPaula[m](~thadeudep@2001:470:69fc:105::1:ded7) (Quit: User was banned)
2022-03-28 13:06:48 +0200peddie(~peddie@2001:470:69fc:105::25d)
2022-03-28 13:06:48 +0200VarikValefor[m](~varikvale@2001:470:69fc:105::a5d)
2022-03-28 13:07:02 +0200amesgen[m](~amesgenm]@2001:470:69fc:105::82b)
2022-03-28 13:07:18 +0200Orbstheorem(~orbstheor@2001:470:69fc:105::a56)
2022-03-28 13:07:32 +0200zfnmxt(~zfnmxtzfn@2001:470:69fc:105::2b32)
2022-03-28 13:07:46 +0200ericson2314(~ericson23@2001:470:69fc:105::70c)
2022-03-28 13:07:49 +0200VarikValefor[m](~varikvale@2001:470:69fc:105::a5d) (Client Quit)
2022-03-28 13:07:49 +0200juhp[m](~juhpmatri@2001:470:69fc:105::6e9) (Client Quit)
2022-03-28 13:07:49 +0200amesgen[m](~amesgenm]@2001:470:69fc:105::82b) (Client Quit)
2022-03-28 13:07:49 +0200peddie(~peddie@2001:470:69fc:105::25d) (Client Quit)
2022-03-28 13:07:49 +0200fgaz(~fgaz@2001:470:69fc:105::842) (Client Quit)
2022-03-28 13:07:49 +0200Orbstheorem(~orbstheor@2001:470:69fc:105::a56) (Client Quit)
2022-03-28 13:07:49 +0200zfnmxt(~zfnmxtzfn@2001:470:69fc:105::2b32) (Client Quit)
2022-03-28 13:07:49 +0200ericson2314(~ericson23@2001:470:69fc:105::70c) (Client Quit)
2022-03-28 13:08:00 +0200unclechu(~unclechu@2001:470:69fc:105::354)
2022-03-28 13:08:04 +0200 <kuribas> he's gone :)
2022-03-28 13:08:12 +0200sekun[m](~hsekmatri@2001:470:69fc:105::d18f)
2022-03-28 13:08:21 +0200 <kuribas> I scared hime away with the dependent types.
2022-03-28 13:08:26 +0200maralorn(~maralorn@2001:470:69fc:105::251)
2022-03-28 13:08:33 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds)
2022-03-28 13:08:38 +0200reza[m](~rezaphone@2001:470:69fc:105::3eda)
2022-03-28 13:08:52 +0200marinelli[m](~marinelli@2001:470:69fc:105::2d8)
2022-03-28 13:09:07 +0200Yehoshua(~yehoshua@2001:470:69fc:105::1:593f)
2022-03-28 13:09:22 +0200schuelermine[m](~schuelerm@user/schuelermine)
2022-03-28 13:09:24 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
2022-03-28 13:09:36 +0200sm(~sm@plaintextaccounting/sm)
2022-03-28 13:09:52 +0200justosophy[m](~justosoph@2001:470:69fc:105::572f)
2022-03-28 13:09:52 +0200hsiktas[m](~hsiktasm]@2001:470:69fc:105::30d4)
2022-03-28 13:10:06 +0200Deide(~deide@user/deide)
2022-03-28 13:10:18 +0200Artem[m](~artemtype@2001:470:69fc:105::75b)
2022-03-28 13:10:30 +0200Christoph[m](~hpotsirhc@2001:470:69fc:105::2ff8)
2022-03-28 13:10:30 +0200psydroid(~psydroid@user/psydroid)
2022-03-28 13:10:42 +0200ongy[m](~ongymatri@2001:470:69fc:105::5018)
2022-03-28 13:10:54 +0200alexfmpe[m](~alexfmpem@2001:470:69fc:105::38ba)
2022-03-28 13:10:54 +0200siraben(~siraben@user/siraben)
2022-03-28 13:10:54 +0200july541[m](~july541ma@2001:470:69fc:105::1:e416)
2022-03-28 13:11:08 +0200smichel17[m](~smichel17@2001:470:69fc:105::2d32)
2022-03-28 13:11:21 +0200methylene[m](~methylene@2001:470:69fc:105::1:ccc0)
2022-03-28 13:11:33 +0200ManofLetters[m](~manoflett@2001:470:69fc:105::3be)
2022-03-28 13:11:45 +0200kadenwolff[m](~kadenwolf@2001:470:69fc:105::1:d97f)
2022-03-28 13:11:57 +0200fendor[m](~fendormat@2001:470:69fc:105::fcbd)
2022-03-28 13:11:57 +0200DemiMarieObenour(~alwayscur@2001:470:69fc:105::4886)
2022-03-28 13:12:11 +0200vaibhavsagar[m](~vaibhavsa@2001:470:69fc:105::ffe)
2022-03-28 13:12:23 +0200maerwald[m](~maerwaldm@2001:470:69fc:105::1ee)
2022-03-28 13:12:23 +0200jmcantrell(~jmcantrel@user/jmcantrell)
2022-03-28 13:12:23 +0200jinsun_(~jinsun@user/jinsun)
2022-03-28 13:12:37 +0200cdsmith(~cdsmithma@2001:470:69fc:105::284)
2022-03-28 13:12:37 +0200moats(~oats@user/oats)
2022-03-28 13:12:50 +0200hughjfchen[m](~hughjfche@2001:470:69fc:105::c29d)
2022-03-28 13:13:03 +0200kevin[m](~pnotequal@2001:470:69fc:105::a54)
2022-03-28 13:13:16 +0200ksqsf[m](~ksqsfmatr@2001:470:69fc:105::1:d8fa)
2022-03-28 13:13:16 +0200ormaaj(~ormaaj@user/ormaaj)
2022-03-28 13:13:16 +0200bitonic(~bitonic@2001:470:69fc:105::1812)
2022-03-28 13:13:29 +0200sofviic[m](~sofviicma@2001:470:69fc:105::1:51fd)
2022-03-28 13:13:41 +0200Guillaum[m](~guiboumat@2001:470:69fc:105::1:72ac)
2022-03-28 13:13:55 +0200reactormonk[m](~reactormo@2001:470:69fc:105::3c24)
2022-03-28 13:14:07 +0200shlevy[m](~shlevymat@2001:470:69fc:105::1:d3b1)
2022-03-28 13:14:20 +0200kalxd[m](~kalxdmatr@2001:470:69fc:105::1:576e)
2022-03-28 13:14:34 +0200oak-(~oakuniver@2001:470:69fc:105::fcd)
2022-03-28 13:14:46 +0200dgpratt[m](~dgprattma@2001:470:69fc:105::1:dcdd)
2022-03-28 13:15:00 +0200Joe[m](~jsricemat@2001:470:69fc:105::1:b4ce)
2022-03-28 13:15:00 +0200euphrates[m](~euphrates@2001:470:69fc:105::fbb5)
2022-03-28 13:15:00 +0200jkaye[m](~jkayematr@2001:470:69fc:105::1:86f7)
2022-03-28 13:15:12 +0200jneira[m](~jneiramat@2001:470:69fc:105::d729)
2022-03-28 13:15:27 +0200VanceIsM7[m](~vanceism7@2001:470:69fc:105::3ad)
2022-03-28 13:15:41 +0200polykernel[m](~polykerne@user/polykernel)
2022-03-28 13:15:41 +0200pareto-optimal-d(~pareto-op@2001:470:69fc:105::1:b61f)
2022-03-28 13:15:41 +0200yosef36(~yosefweis@2001:470:69fc:105::1:e501)
2022-03-28 13:15:56 +0200Arathorn(~arathorn@2001:470:69fc:105::1f)
2022-03-28 13:16:10 +0200wildsebastian(~wildsebas@2001:470:69fc:105::1:14b1)
2022-03-28 13:16:23 +0200tsmc[m](~tsmcmatri@2001:470:69fc:105::1:7e1)
2022-03-28 13:16:23 +0200nomagno(~nomagno@2001:470:69fc:105::c1f0)
2022-03-28 13:16:35 +0200abastro[m](~abastroma@2001:470:69fc:105::1:e119)
2022-03-28 13:16:48 +0200kadoban(~kadoban@user/kadoban)
2022-03-28 13:17:02 +0200TimothyBess[m](~dorksidem@2001:470:69fc:105::1:e14e)
2022-03-28 13:17:14 +0200o1lo0lol1o[m](~o1lo0lol1@2001:470:69fc:105::1:d1c0)
2022-03-28 13:17:28 +0200AdamS[m](~adamvalko@2001:470:69fc:105::1:d5f0)
2022-03-28 13:17:40 +0200ac(~aloiscoch@2001:470:69fc:105::65)
2022-03-28 13:17:52 +0200solomon[m](~solomonco@2001:470:69fc:105::1:6000)
2022-03-28 13:17:52 +0200Inst(~Liam@c-98-208-218-119.hsd1.fl.comcast.net) (Ping timeout: 246 seconds)
2022-03-28 13:18:04 +0200weeezes[m](~weeezesma@2001:470:69fc:105::1:da65)
2022-03-28 13:18:16 +0200ArshiaAghaei[m](~arshiaagh@2001:470:69fc:105::1:c382)
2022-03-28 13:18:29 +0200eddiemundo(~eddiemund@2001:470:69fc:105::a80)
2022-03-28 13:18:30 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds)
2022-03-28 13:18:41 +0200aviladev[m](~aviladevm@2001:470:69fc:105::1:cbc7)
2022-03-28 13:18:55 +0200Las[m](~lasmatrix@2001:470:69fc:105::74e)
2022-03-28 13:18:55 +0200Ash[m](~signal-wa@2001:470:69fc:105::1:2318)
2022-03-28 13:19:09 +0200boxscape(~boxscape@user/boxscape)
2022-03-28 13:19:21 +0200sjanssen(~sjanssenm@2001:470:69fc:105::1:61d8)
2022-03-28 13:19:35 +0200jaror[m](~jaror@2001:470:69fc:105::265)
2022-03-28 13:19:47 +0200charukiewicz[m](~charukiew@2001:470:69fc:105::ded4)
2022-03-28 13:20:00 +0200corisco[m](~coriscokd@2001:470:69fc:105::1:dea6)
2022-03-28 13:20:12 +0200AdamConner-Sax[m(~adamcsmat@2001:470:69fc:105::1:e2c8)
2022-03-28 13:20:24 +0200ThadeuPaula[m](~thadeudep@2001:470:69fc:105::1:ded7)
2022-03-28 13:20:41 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
2022-03-28 13:24:06 +0200vglfr(~vglfr@88.155.45.251) (Read error: Connection reset by peer)
2022-03-28 13:25:09 +0200vglfr(~vglfr@88.155.45.251)
2022-03-28 13:27:59 +0200razetime(~quassel@117.254.35.152)
2022-03-28 13:28:04 +0200vglfr(~vglfr@88.155.45.251) (Read error: Connection reset by peer)
2022-03-28 13:28:11 +0200vglfr(~vglfr@88.155.45.251)
2022-03-28 13:28:30 +0200jakalx(~jakalx@base.jakalx.net)
2022-03-28 13:29:42 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds)
2022-03-28 13:31:38 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
2022-03-28 13:35:03 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2022-03-28 13:35:22 +0200acidjnk(~acidjnk@p200300d0c7049f67fc06a0258b52409e.dip0.t-ipconnect.de)
2022-03-28 13:36:15 +0200sprout(~quassel@2a02:a467:ccd6:1:950:287b:c4be:ac00)
2022-03-28 13:38:37 +0200jakalx(~jakalx@base.jakalx.net) ()
2022-03-28 13:39:27 +0200sprout_(~quassel@2a02:a467:ccd6:1:f9b9:c2d3:ad62:759d) (Ping timeout: 250 seconds)
2022-03-28 13:46:12 +0200mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2022-03-28 13:46:12 +0200vglfr(~vglfr@88.155.45.251) (Read error: Connection reset by peer)
2022-03-28 13:46:21 +0200vglfr(~vglfr@88.155.45.251)
2022-03-28 14:00:41 +0200feetwind(~mike@user/feetwind) (Ping timeout: 250 seconds)
2022-03-28 14:04:11 +0200jakalx(~jakalx@base.jakalx.net)
2022-03-28 14:06:53 +0200nf(~n@monade.li) (Ping timeout: 252 seconds)
2022-03-28 14:07:55 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 246 seconds)
2022-03-28 14:08:44 +0200Maxdaman1us(~Maxdamant@user/maxdamantus)
2022-03-28 14:08:47 +0200Maxdamantus(~Maxdamant@user/maxdamantus) (Ping timeout: 260 seconds)
2022-03-28 14:08:52 +0200nf(~n@monade.li)
2022-03-28 14:09:05 +0200CiaoSen(~Jura@p200300c95735b0002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2022-03-28 14:09:59 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-03-28 14:11:03 +0200Maxdaman1usMaxdamantus
2022-03-28 14:12:07 +0200vglfr(~vglfr@88.155.45.251) (Ping timeout: 260 seconds)
2022-03-28 14:12:46 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-03-28 14:14:13 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-28 14:16:17 +0200dut(~dut@user/dut) (Ping timeout: 240 seconds)
2022-03-28 14:16:47 +0200acidjnk(~acidjnk@p200300d0c7049f67fc06a0258b52409e.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2022-03-28 14:19:07 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Ping timeout: 246 seconds)
2022-03-28 14:19:11 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2022-03-28 14:19:15 +0200gehmehgeh(~user@user/gehmehgeh)
2022-03-28 14:24:52 +0200kuribas(~user@ptr-25vy0i6qxp87tp43k9a.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
2022-03-28 14:24:58 +0200Pickchea(~private@user/pickchea)
2022-03-28 14:25:06 +0200kuribas(~user@ptr-25vy0i6qxp87tp43k9a.18120a2.ip6.access.telenet.be)
2022-03-28 14:27:48 +0200vglfr(~vglfr@88.155.45.251)
2022-03-28 14:30:38 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-28 14:34:10 +0200vglfr(~vglfr@88.155.45.251) (Ping timeout: 246 seconds)
2022-03-28 14:43:51 +0200bahamas(~lucian@86.120.77.115)
2022-03-28 14:44:03 +0200feetwind(~mike@user/feetwind)
2022-03-28 14:47:07 +0200dsrt^(~dsrt@96-91-136-49-static.hfc.comcastbusiness.net) (Remote host closed the connection)
2022-03-28 14:47:19 +0200sekun[m](~hsekmatri@2001:470:69fc:105::d18f) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200unclechu(~unclechu@2001:470:69fc:105::354) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200reza[m](~rezaphone@2001:470:69fc:105::3eda) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200moats(~oats@user/oats) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200hsiktas[m](~hsiktasm]@2001:470:69fc:105::30d4) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200DemiMarieObenour(~alwayscur@2001:470:69fc:105::4886) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200marinelli[m](~marinelli@2001:470:69fc:105::2d8) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200schuelermine[m](~schuelerm@user/schuelermine) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200euphrates[m](~euphrates@2001:470:69fc:105::fbb5) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200psydroid(~psydroid@user/psydroid) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200maralorn(~maralorn@2001:470:69fc:105::251) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200Deide(~deide@user/deide) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200bitonic(~bitonic@2001:470:69fc:105::1812) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200justosophy[m](~justosoph@2001:470:69fc:105::572f) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200jinsun_(~jinsun@user/jinsun) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200ormaaj(~ormaaj@user/ormaaj) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200siraben(~siraben@user/siraben) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200july541[m](~july541ma@2001:470:69fc:105::1:e416) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200Yehoshua(~yehoshua@2001:470:69fc:105::1:593f) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200yosef36(~yosefweis@2001:470:69fc:105::1:e501) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200Christoph[m](~hpotsirhc@2001:470:69fc:105::2ff8) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200ongy[m](~ongymatri@2001:470:69fc:105::5018) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200cdsmith(~cdsmithma@2001:470:69fc:105::284) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200jmcantrell(~jmcantrel@user/jmcantrell) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200jkaye[m](~jkayematr@2001:470:69fc:105::1:86f7) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200fendor[m](~fendormat@2001:470:69fc:105::fcbd) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200nomagno(~nomagno@2001:470:69fc:105::c1f0) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200Ash[m](~signal-wa@2001:470:69fc:105::1:2318) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200sm(~sm@plaintextaccounting/sm) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200Artem[m](~artemtype@2001:470:69fc:105::75b) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200smichel17[m](~smichel17@2001:470:69fc:105::2d32) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200ManofLetters[m](~manoflett@2001:470:69fc:105::3be) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200vaibhavsagar[m](~vaibhavsa@2001:470:69fc:105::ffe) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200Guillaum[m](~guiboumat@2001:470:69fc:105::1:72ac) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200hughjfchen[m](~hughjfche@2001:470:69fc:105::c29d) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200ksqsf[m](~ksqsfmatr@2001:470:69fc:105::1:d8fa) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200jneira[m](~jneiramat@2001:470:69fc:105::d729) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200tsmc[m](~tsmcmatri@2001:470:69fc:105::1:7e1) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200kadoban(~kadoban@user/kadoban) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200TimothyBess[m](~dorksidem@2001:470:69fc:105::1:e14e) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200charukiewicz[m](~charukiew@2001:470:69fc:105::ded4) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200ThadeuPaula[m](~thadeudep@2001:470:69fc:105::1:ded7) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200kevin[m](~pnotequal@2001:470:69fc:105::a54) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200reactormonk[m](~reactormo@2001:470:69fc:105::3c24) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200kalxd[m](~kalxdmatr@2001:470:69fc:105::1:576e) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200ac(~aloiscoch@2001:470:69fc:105::65) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200kadenwolff[m](~kadenwolf@2001:470:69fc:105::1:d97f) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200maerwald[m](~maerwaldm@2001:470:69fc:105::1ee) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200methylene[m](~methylene@2001:470:69fc:105::1:ccc0) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200Joe[m](~jsricemat@2001:470:69fc:105::1:b4ce) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200VanceIsM7[m](~vanceism7@2001:470:69fc:105::3ad) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200Arathorn(~arathorn@2001:470:69fc:105::1f) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200AdamS[m](~adamvalko@2001:470:69fc:105::1:d5f0) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200wildsebastian(~wildsebas@2001:470:69fc:105::1:14b1) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200abastro[m](~abastroma@2001:470:69fc:105::1:e119) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200shlevy[m](~shlevymat@2001:470:69fc:105::1:d3b1) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200pareto-optimal-d(~pareto-op@2001:470:69fc:105::1:b61f) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200corisco[m](~coriscokd@2001:470:69fc:105::1:dea6) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200AdamConner-Sax[m(~adamcsmat@2001:470:69fc:105::1:e2c8) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200alexfmpe[m](~alexfmpem@2001:470:69fc:105::38ba) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200oak-(~oakuniver@2001:470:69fc:105::fcd) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200Las[m](~lasmatrix@2001:470:69fc:105::74e) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200sjanssen(~sjanssenm@2001:470:69fc:105::1:61d8) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200dgpratt[m](~dgprattma@2001:470:69fc:105::1:dcdd) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200o1lo0lol1o[m](~o1lo0lol1@2001:470:69fc:105::1:d1c0) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200ArshiaAghaei[m](~arshiaagh@2001:470:69fc:105::1:c382) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:19 +0200eddiemundo(~eddiemund@2001:470:69fc:105::a80) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:20 +0200sofviic[m](~sofviicma@2001:470:69fc:105::1:51fd) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:20 +0200polykernel[m](~polykerne@user/polykernel) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:20 +0200boxscape(~boxscape@user/boxscape) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:20 +0200solomon[m](~solomonco@2001:470:69fc:105::1:6000) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:20 +0200weeezes[m](~weeezesma@2001:470:69fc:105::1:da65) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:20 +0200aviladev[m](~aviladevm@2001:470:69fc:105::1:cbc7) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:47:20 +0200jaror[m](~jaror@2001:470:69fc:105::265) (Quit: Bridge terminating on SIGTERM)
2022-03-28 14:49:08 +0200ninioArtillero[m(~ninioarti@2001:470:69fc:105::1:d1ef)
2022-03-28 14:54:25 +0200CiaoSen(~Jura@p200300c95735b0002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2022-03-28 14:55:57 +0200chomwitt(~chomwitt@2a02:587:dc18:da00:e2ec:eb52:4039:9bfe) (Ping timeout: 256 seconds)
2022-03-28 14:56:05 +0200chomwitt(~chomwitt@athedsl-352218.home.otenet.gr)
2022-03-28 14:56:57 +0200juhp[m](~juhpmatri@2001:470:69fc:105::6e9)
2022-03-28 14:56:57 +0200fgaz(~fgaz@2001:470:69fc:105::842)
2022-03-28 14:56:57 +0200peddie(~peddie@2001:470:69fc:105::25d)
2022-03-28 14:56:57 +0200amesgen[m](~amesgenm]@2001:470:69fc:105::82b)
2022-03-28 14:56:57 +0200VarikValefor[m](~varikvale@2001:470:69fc:105::a5d)
2022-03-28 14:56:57 +0200Orbstheorem(~orbstheor@2001:470:69fc:105::a56)
2022-03-28 14:56:57 +0200zfnmxt(~zfnmxtzfn@2001:470:69fc:105::2b32)
2022-03-28 14:56:57 +0200unclechu(~unclechu@2001:470:69fc:105::354)
2022-03-28 14:56:57 +0200sekun[m](~hsekmatri@2001:470:69fc:105::d18f)
2022-03-28 14:56:57 +0200ericson2314(~ericson23@2001:470:69fc:105::70c)
2022-03-28 14:56:57 +0200maralorn(~maralorn@2001:470:69fc:105::251)
2022-03-28 14:56:57 +0200reza[m](~rezaphone@2001:470:69fc:105::3eda)
2022-03-28 14:56:57 +0200marinelli[m](~marinelli@2001:470:69fc:105::2d8)
2022-03-28 14:56:58 +0200Yehoshua(~yehoshua@2001:470:69fc:105::1:593f)
2022-03-28 14:56:58 +0200schuelermine[m](~schuelerm@user/schuelermine)
2022-03-28 14:56:58 +0200sm(~sm@plaintextaccounting/sm)
2022-03-28 14:56:58 +0200hsiktas[m](~hsiktasm]@2001:470:69fc:105::30d4)
2022-03-28 14:56:58 +0200Deide(~deide@user/deide)
2022-03-28 14:56:58 +0200Artem[m](~artemtype@2001:470:69fc:105::75b)
2022-03-28 14:56:58 +0200psydroid(~psydroid@user/psydroid)
2022-03-28 14:56:58 +0200ongy[m](~ongymatri@2001:470:69fc:105::5018)
2022-03-28 14:56:58 +0200alexfmpe[m](~alexfmpem@2001:470:69fc:105::38ba)
2022-03-28 14:56:58 +0200Christoph[m](~hpotsirhc@2001:470:69fc:105::2ff8)
2022-03-28 14:56:58 +0200siraben(~siraben@user/siraben)
2022-03-28 14:56:58 +0200smichel17[m](~smichel17@2001:470:69fc:105::2d32)
2022-03-28 14:56:58 +0200methylene[m](~methylene@2001:470:69fc:105::1:ccc0)
2022-03-28 14:56:58 +0200july541[m](~july541ma@2001:470:69fc:105::1:e416)
2022-03-28 14:56:58 +0200ManofLetters[m](~manoflett@2001:470:69fc:105::3be)
2022-03-28 14:56:59 +0200kadenwolff[m](~kadenwolf@2001:470:69fc:105::1:d97f)
2022-03-28 14:56:59 +0200fendor[m](~fendormat@2001:470:69fc:105::fcbd)
2022-03-28 14:56:59 +0200DemiMarieObenour(~alwayscur@2001:470:69fc:105::4886)
2022-03-28 14:56:59 +0200vaibhavsagar[m](~vaibhavsa@2001:470:69fc:105::ffe)
2022-03-28 14:56:59 +0200jmcantrell(~jmcantrel@user/jmcantrell)
2022-03-28 14:56:59 +0200maerwald[m](~maerwaldm@2001:470:69fc:105::1ee)
2022-03-28 14:56:59 +0200jinsun_(~jinsun@user/jinsun)
2022-03-28 14:56:59 +0200moats(~oats@user/oats)
2022-03-28 14:57:00 +0200ormaaj(~ormaaj@user/ormaaj)
2022-03-28 14:57:00 +0200bitonic(~bitonic@2001:470:69fc:105::1812)
2022-03-28 14:57:01 +0200Guillaum[m](~guiboumat@2001:470:69fc:105::1:72ac)
2022-03-28 14:57:01 +0200reactormonk[m](~reactormo@2001:470:69fc:105::3c24)
2022-03-28 14:57:01 +0200kalxd[m](~kalxdmatr@2001:470:69fc:105::1:576e)
2022-03-28 14:57:01 +0200Joe[m](~jsricemat@2001:470:69fc:105::1:b4ce)
2022-03-28 14:57:01 +0200jkaye[m](~jkayematr@2001:470:69fc:105::1:86f7)
2022-03-28 14:57:01 +0200euphrates[m](~euphrates@2001:470:69fc:105::fbb5)
2022-03-28 14:57:01 +0200jneira[m](~jneiramat@2001:470:69fc:105::d729)
2022-03-28 14:57:01 +0200VanceIsM7[m](~vanceism7@2001:470:69fc:105::3ad)
2022-03-28 14:57:01 +0200yosef36(~yosefweis@2001:470:69fc:105::1:e501)
2022-03-28 14:57:01 +0200polykernel[m](~polykerne@user/polykernel)
2022-03-28 14:57:02 +0200Arathorn(~arathorn@2001:470:69fc:105::1f)
2022-03-28 14:57:02 +0200wildsebastian(~wildsebas@2001:470:69fc:105::1:14b1)
2022-03-28 14:57:02 +0200kadoban(~kadoban@user/kadoban)
2022-03-28 14:57:02 +0200tsmc[m](~tsmcmatri@2001:470:69fc:105::1:7e1)
2022-03-28 14:57:02 +0200abastro[m](~abastroma@2001:470:69fc:105::1:e119)
2022-03-28 14:57:02 +0200nomagno(~nomagno@2001:470:69fc:105::c1f0)
2022-03-28 14:57:02 +0200TimothyBess[m](~dorksidem@2001:470:69fc:105::1:e14e)
2022-03-28 14:57:02 +0200ac(~aloiscoch@2001:470:69fc:105::65)
2022-03-28 14:57:02 +0200ArshiaAghaei[m](~arshiaagh@2001:470:69fc:105::1:c382)
2022-03-28 14:57:02 +0200solomon[m](~solomonco@2001:470:69fc:105::1:6000)
2022-03-28 14:57:02 +0200eddiemundo(~eddiemund@2001:470:69fc:105::a80)
2022-03-28 14:57:02 +0200aviladev[m](~aviladevm@2001:470:69fc:105::1:cbc7)
2022-03-28 14:57:02 +0200Ash[m](~signal-wa@2001:470:69fc:105::1:2318)
2022-03-28 14:57:03 +0200boxscape(~boxscape@user/boxscape)
2022-03-28 14:57:05 +0200charukiewicz[m](~charukiew@2001:470:69fc:105::ded4)
2022-03-28 14:57:10 +0200justosophy[m](~justosoph@2001:470:69fc:105::572f)
2022-03-28 14:57:11 +0200ksqsf[m](~ksqsfmatr@2001:470:69fc:105::1:d8fa)
2022-03-28 14:57:11 +0200kevin[m](~pnotequal@2001:470:69fc:105::a54)
2022-03-28 14:57:12 +0200hughjfchen[m](~hughjfche@2001:470:69fc:105::c29d)
2022-03-28 14:57:13 +0200dgpratt[m](~dgprattma@2001:470:69fc:105::1:dcdd)
2022-03-28 14:57:13 +0200sofviic[m](~sofviicma@2001:470:69fc:105::1:51fd)
2022-03-28 14:57:14 +0200cdsmith(~cdsmithma@2001:470:69fc:105::284)
2022-03-28 14:57:14 +0200o1lo0lol1o[m](~o1lo0lol1@2001:470:69fc:105::1:d1c0)
2022-03-28 14:57:14 +0200shlevy[m](~shlevymat@2001:470:69fc:105::1:d3b1)
2022-03-28 14:57:14 +0200pareto-optimal-d(~pareto-op@2001:470:69fc:105::1:b61f)
2022-03-28 14:57:14 +0200weeezes[m](~weeezesma@2001:470:69fc:105::1:da65)
2022-03-28 14:57:14 +0200AdamS[m](~adamvalko@2001:470:69fc:105::1:d5f0)
2022-03-28 14:57:15 +0200AdamConner-Sax[m(~adamcsmat@2001:470:69fc:105::1:e2c8)
2022-03-28 14:57:15 +0200oak-(~oakuniver@2001:470:69fc:105::fcd)
2022-03-28 14:57:15 +0200ThadeuPaula[m](~thadeudep@2001:470:69fc:105::1:ded7)
2022-03-28 14:57:15 +0200sjanssen(~sjanssenm@2001:470:69fc:105::1:61d8)
2022-03-28 14:57:15 +0200corisco[m](~coriscokd@2001:470:69fc:105::1:dea6)
2022-03-28 14:57:17 +0200Las[m](~lasmatrix@2001:470:69fc:105::74e)
2022-03-28 14:57:17 +0200jaror[m](~jaror@2001:470:69fc:105::265)
2022-03-28 15:01:43 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5)
2022-03-28 15:02:17 +0200mncheckm(~mncheck@193.224.205.254) (Ping timeout: 240 seconds)
2022-03-28 15:09:44 +0200neurocyte0917090(~neurocyte@IP-213188117233.dynamic.medianet-world.de)
2022-03-28 15:09:44 +0200neurocyte0917090(~neurocyte@IP-213188117233.dynamic.medianet-world.de) (Changing host)
2022-03-28 15:09:44 +0200neurocyte0917090(~neurocyte@user/neurocyte)
2022-03-28 15:10:34 +0200neurocyte0917090neurocyte
2022-03-28 15:12:46 +0200chomwitt(~chomwitt@athedsl-352218.home.otenet.gr) (Read error: Connection reset by peer)
2022-03-28 15:13:23 +0200rawley(~rawley@216-197-141-102.nbfr.hsdb.sasknet.sk.ca)
2022-03-28 15:13:31 +0200rawley(~rawley@216-197-141-102.nbfr.hsdb.sasknet.sk.ca) (Remote host closed the connection)
2022-03-28 15:13:58 +0200acidjnk(~acidjnk@p200300d0c7049f67fc06a0258b52409e.dip0.t-ipconnect.de)
2022-03-28 15:16:06 +0200Inst(~Liam@c-98-208-218-119.hsd1.fl.comcast.net)
2022-03-28 15:20:03 +0200deadmarshal_(~deadmarsh@95.38.115.47)
2022-03-28 15:23:53 +0200MajorBiscuit(~MajorBisc@86.88.79.148) (Ping timeout: 260 seconds)
2022-03-28 15:24:13 +0200deadmarshal_(~deadmarsh@95.38.115.47) (Ping timeout: 246 seconds)
2022-03-28 15:24:27 +0200MajorBiscuit(~MajorBisc@86-88-79-148.fixed.kpn.net)
2022-03-28 15:26:24 +0200razetime(~quassel@117.254.35.152) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2022-03-28 15:28:36 +0200Moyst_(~moyst@user/moyst) (Remote host closed the connection)
2022-03-28 15:28:52 +0200Moyst_(~moyst@user/moyst)
2022-03-28 15:29:43 +0200dextaa_(~dextaa@user/dextaa) (Remote host closed the connection)
2022-03-28 15:31:20 +0200dextaa_(~dextaa@user/dextaa)
2022-03-28 15:34:34 +0200shriekingnoise(~shrieking@201.231.16.156)
2022-03-28 15:35:21 +0200ccntrq(~Thunderbi@2a01:c22:89e6:e500:da63:dc92:f465:54d0) (Remote host closed the connection)
2022-03-28 15:35:49 +0200Sgeo(~Sgeo@user/sgeo)
2022-03-28 15:37:53 +0200zeenk(~zeenk@2a02:2f04:a110:7d00:2011:cfed:bad7:3c94) (Ping timeout: 260 seconds)
2022-03-28 15:38:05 +0200mncheckm(~mncheck@193.224.205.254)
2022-03-28 15:45:10 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-03-28 15:46:00 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-28 15:46:16 +0200bahamas(~lucian@86.120.77.115) (Ping timeout: 246 seconds)
2022-03-28 15:47:46 +0200ProfSimm(~ProfSimm@87.227.196.109) (Remote host closed the connection)
2022-03-28 15:48:27 +0200ProfSimm(~ProfSimm@87.227.196.109)
2022-03-28 15:50:49 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Ping timeout: 246 seconds)
2022-03-28 16:03:43 +0200justOkay(~justache@user/justache) (Remote host closed the connection)
2022-03-28 16:04:40 +0200justOkay(~justache@user/justache)
2022-03-28 16:05:32 +0200dextaa_(~dextaa@user/dextaa) (Remote host closed the connection)
2022-03-28 16:06:02 +0200Akiva(~Akiva@user/Akiva)
2022-03-28 16:08:29 +0200vglfr(~vglfr@88.155.45.251)
2022-03-28 16:09:36 +0200azimut(~azimut@gateway/tor-sasl/azimut)
2022-03-28 16:09:40 +0200azimut_(~azimut@gateway/tor-sasl/azimut) (Quit: ZNC - https://znc.in)
2022-03-28 16:11:56 +0200dextaa_(~dextaa@user/dextaa)
2022-03-28 16:17:07 +0200acidjnk(~acidjnk@p200300d0c7049f67fc06a0258b52409e.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2022-03-28 16:19:03 +0200zeenk(~zeenk@2a02:2f04:a312:5400:bab:b48f:4ed5:7407)
2022-03-28 16:23:30 +0200zeenk2(~zeenk@2a02:2f04:a313:b800:d260:40a8:2db3:e9ec)
2022-03-28 16:23:50 +0200zeenk(~zeenk@2a02:2f04:a312:5400:bab:b48f:4ed5:7407) (Ping timeout: 252 seconds)
2022-03-28 16:25:11 +0200cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.4.1)
2022-03-28 16:27:43 +0200nf(~n@monade.li) (Quit: Fairfarren.)
2022-03-28 16:27:56 +0200zeenk(~zeenk@2a02:2f04:a204:c800:8271:db23:e63b:d87a)
2022-03-28 16:28:19 +0200zeenk2(~zeenk@2a02:2f04:a313:b800:d260:40a8:2db3:e9ec) (Ping timeout: 256 seconds)
2022-03-28 16:28:38 +0200nf(~n@monade.li)
2022-03-28 16:29:19 +0200vglfr(~vglfr@88.155.45.251) (Ping timeout: 246 seconds)
2022-03-28 16:31:03 +0200mc47(~mc47@xmonad/TheMC47)
2022-03-28 16:33:04 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-28 16:33:12 +0200bahamas(~lucian@84.232.140.158)
2022-03-28 16:34:17 +0200Pickchea(~private@user/pickchea) (Ping timeout: 252 seconds)
2022-03-28 16:35:48 +0200dibblego(~dibblego@haskell/developer/dibblego) (Ping timeout: 240 seconds)
2022-03-28 16:36:56 +0200dibblego(~dibblego@122-199-1-30.ip4.superloop.com)
2022-03-28 16:36:57 +0200dibblego(~dibblego@122-199-1-30.ip4.superloop.com) (Changing host)
2022-03-28 16:36:57 +0200dibblego(~dibblego@haskell/developer/dibblego)
2022-03-28 16:37:35 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Ping timeout: 252 seconds)
2022-03-28 16:38:31 +0200zeenk(~zeenk@2a02:2f04:a204:c800:8271:db23:e63b:d87a) (Ping timeout: 256 seconds)
2022-03-28 16:39:08 +0200gurkenglas(~gurkengla@dslb-178-012-018-212.178.012.pools.vodafone-ip.de) (Ping timeout: 260 seconds)
2022-03-28 16:42:07 +0200vglfr(~vglfr@88.155.45.251)
2022-03-28 16:42:39 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-03-28 16:44:03 +0200zeenk(~zeenk@79.115.191.105)
2022-03-28 16:48:37 +0200CiaoSen(~Jura@p200300c95735b0002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
2022-03-28 16:50:23 +0200deadmarshal_(~deadmarsh@95.38.115.47)
2022-03-28 16:51:39 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-28 16:53:09 +0200stef204(~stef204@user/stef204)
2022-03-28 16:54:04 +0200slack1256(~slack1256@191.125.99.79)
2022-03-28 16:56:00 +0200 <slack1256> I have gotten pretty good at grasping the `Rep a x` that I will get from an `a` ADT, this for GHC.Generics. I wonder how stable are these representation, as I want to pattern match on them to do some light "uniplate-like" function without extra dependencies. Is this a bad idea?
2022-03-28 16:57:15 +0200cdman(~dcm@user/dmc/x-4369397) (Ping timeout: 260 seconds)
2022-03-28 16:57:43 +0200 <fendor[m]> can I instruct cabal to put logs somewhere else than ~/.cabal/logs?
2022-03-28 16:58:14 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-03-28 16:58:51 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-28 16:59:20 +0200 <slack1256> fendor[m]: Yes, check /home/fendor/.cabal/config .
2022-03-28 16:59:32 +0200 <slack1256> The logs-dir parameter should be commented.
2022-03-28 16:59:44 +0200 <fendor[m]> ah, thanks!
2022-03-28 17:01:58 +0200 <fendor[m]> apparently I deleted that parameter some time ago
2022-03-28 17:02:00 +0200vglfr(~vglfr@88.155.45.251) (Ping timeout: 272 seconds)
2022-03-28 17:03:37 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Ping timeout: 246 seconds)
2022-03-28 17:05:42 +0200 <ProfSimm> How does Haskell accumulate "state" internally before it calculates it/
2022-03-28 17:05:50 +0200 <ProfSimm> Does it make a bigger and bigger application chain?
2022-03-28 17:06:15 +0200 <slack1256> It does not such thing. It is expression reduction all the way down.
2022-03-28 17:06:21 +0200 <ProfSimm> Hmm
2022-03-28 17:06:23 +0200 <slack1256> Put the code sample on a paste bin
2022-03-28 17:06:59 +0200 <ProfSimm> slack1256: it stores full expression trees at runtime?
2022-03-28 17:08:24 +0200 <c_wraith> the program is represented as a graph, which expressions map to nicely. Note that because of sharing they don't need to be trees.
2022-03-28 17:08:27 +0200 <slack1256> It represents the expressions on a graph that it traverses and expand on a "by need" basis.
2022-03-28 17:08:31 +0200 <geekosaur> @tell tdammers we've seen some odd cases with such programs where you need to run a compositor for it to work right. I've also had problems with Qt-based programs not drawing/treating menus or popups right without _NET_WORKAREA set
2022-03-28 17:08:31 +0200 <lambdabot> Consider it noted.
2022-03-28 17:08:47 +0200 <c_wraith> and because of recursion it need not be acyclic
2022-03-28 17:08:53 +0200 <geekosaur> @tell tdammers probably best to ask in #xmonad, I had to scroll way back to find your question
2022-03-28 17:08:53 +0200 <lambdabot> Consider it noted.
2022-03-28 17:09:20 +0200 <slack1256> But even in the context of graph reduction, it is expression reduction.
2022-03-28 17:10:51 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2022-03-28 17:11:17 +0200mixfix41(~homefame@user/mixfix41)
2022-03-28 17:12:13 +0200deadmarshal_(~deadmarsh@95.38.115.47) (Ping timeout: 250 seconds)
2022-03-28 17:12:30 +0200 <ProfSimm> Apart from seq, how otherwise do I force things to run
2022-03-28 17:12:50 +0200 <c_wraith> seq doesn't force things to run. It links evaluation of two expressions
2022-03-28 17:13:03 +0200 <ProfSimm> right
2022-03-28 17:13:11 +0200 <c_wraith> Something else still has to cause the evaluation
2022-03-28 17:13:15 +0200 <ProfSimm> right
2022-03-28 17:13:19 +0200 <slack1256> `seq` sequences evaluation. It doesn not force it
2022-03-28 17:13:22 +0200 <slack1256> @type evaluate
2022-03-28 17:13:23 +0200 <lambdabot> a -> IO a
2022-03-28 17:13:30 +0200 <geekosaur> @tell tdammers the third possible problem is that canvases or windows popped up over them can't find themselves because the program is using a Windows-compatible window model (screen-relative addressing instead of window-relative). There's no good workaround for that, since non-reparenting window managers break that model.
2022-03-28 17:13:30 +0200 <lambdabot> Consider it noted.
2022-03-28 17:13:37 +0200 <c_wraith> being demanded by an IO action is what causes evaluation
2022-03-28 17:13:48 +0200 <c_wraith> by an IO action that's being executed, that is
2022-03-28 17:14:01 +0200 <ProfSimm> Excel is like Haskell, it only runs when you look at the cells :P
2022-03-28 17:14:50 +0200Vajb(~Vajb@2001:999:62:aa00:7f5a:4f10:c894:3813)
2022-03-28 17:16:10 +0200 <c_wraith> slack1256: I don't like saying it sequences evaluation, because... it doesn't, intrinsically. pseq does, though. seq is looser, allowing evaluation to happen in either order, so long as both happen.
2022-03-28 17:16:21 +0200ec(~ec@gateway/tor-sasl/ec) (Quit: ec)
2022-03-28 17:17:43 +0200slack1256nods at wisdom
2022-03-28 17:18:38 +0200 <slack1256> Mmm I will say from now on that `seq` **links** evaluation (but won't say in what order) haha.
2022-03-28 17:19:19 +0200 <tomsmeding> relevant: https://hackage.haskell.org/package/base-4.16.1.0/docs/src/GHC-Conc-Sync.html#line-499
2022-03-28 17:19:33 +0200ProfSimm(~ProfSimm@87.227.196.109) (Remote host closed the connection)
2022-03-28 17:20:29 +0200bahamas(~lucian@84.232.140.158) (Ping timeout: 252 seconds)
2022-03-28 17:21:19 +0200 <geekosaur> that's pretty accurate, I'd say. seq promises that when the right side has been evaluated, so has the left, but doesn't promise which orderor even if they're concurrent
2022-03-28 17:21:59 +0200 <tomsmeding> s/when the right side/when the seq/
2022-03-28 17:22:10 +0200slac78047(~slack1256@186.11.57.103)
2022-03-28 17:22:13 +0200bahamas(~lucian@84.232.140.158)
2022-03-28 17:22:15 +0200 <slac78047> Are the ADTs in GHC.Generics stable? How about the DeriveGeneric instance? Am I allowed to pattern match on the `Rep a` ADT or is that an internal module?
2022-03-28 17:22:31 +0200 <tomsmeding> or, hm, also s/so has the left/both left and right have also been/
2022-03-28 17:22:32 +0200 <tomsmeding> or something
2022-03-28 17:23:41 +0200 <tomsmeding> slac78047: I'm quite sure that's public, but not too sure whether ghc guarantees that the association structure of n-ary products or sums remains stable
2022-03-28 17:23:43 +0200 <geekosaur> well, I stressed the right because that'swhat is produced by the seq
2022-03-28 17:23:45 +0200razetime(~quassel@117.254.35.152)
2022-03-28 17:23:55 +0200slack1256(~slack1256@191.125.99.79) (Ping timeout: 250 seconds)
2022-03-28 17:23:57 +0200 <geekosaur> so it's what the program "sees" from evaluation of seq
2022-03-28 17:24:03 +0200 <tomsmeding> right
2022-03-28 17:24:05 +0200slac78047slack1256
2022-03-28 17:24:16 +0200MajorBiscuit(~MajorBisc@86-88-79-148.fixed.kpn.net) (Ping timeout: 246 seconds)
2022-03-28 17:24:19 +0200dextaa_(~dextaa@user/dextaa) (Remote host closed the connection)
2022-03-28 17:25:01 +0200 <tomsmeding> slack1256: see https://hackage.haskell.org/package/base-4.15.0.0/docs/GHC-Generics.html#g:9
2022-03-28 17:25:27 +0200 <geekosaur> anyway Control.Exception.evaluate is a way to force execution, but it has a bunch of caveats
2022-03-28 17:25:42 +0200 <geekosaur> and is very easy to get wrong
2022-03-28 17:26:37 +0200bahamas(~lucian@84.232.140.158) (Ping timeout: 240 seconds)
2022-03-28 17:27:35 +0200 <slack1256> tomsmeding: Thanks... but ouch.
2022-03-28 17:27:50 +0200 <slack1256> I need to use depend on uniplate then ;_;
2022-03-28 17:27:52 +0200 <geekosaur> as perits location, it is normally used to force an exception to be thrown at a particular place (usually inside a catch or bracket etc.) instead of leaking out as an unevaluated thunk, but again it has to be used carefully
2022-03-28 17:28:09 +0200 <geekosaur> *per its
2022-03-28 17:28:18 +0200 <slack1256> s/use //_
2022-03-28 17:28:28 +0200 <tomsmeding> slack1256: or you can put the product/sum entries in a list yourself, to become independent of the association order
2022-03-28 17:29:18 +0200 <tomsmeding> geekosaur: because it only forces up to WHNF and not further, and it's easy to "accidentally" box something?
2022-03-28 17:29:34 +0200 <slack1256> tomsmeding: How so? Do I have access to `toList` on `(:*:)` ?
2022-03-28 17:29:42 +0200 <tomsmeding> that wouldn't typecheck
2022-03-28 17:29:53 +0200 <tomsmeding> I guess it depends on what exactly you want to do with the Rep
2022-03-28 17:30:11 +0200 <geekosaur> yeh, it's not like print that (usually) has to touch an entire value to render it
2022-03-28 17:30:33 +0200 <geekosaur> so you still need to seq/deepseq/whatever within it
2022-03-28 17:30:36 +0200 <c_wraith> tomsmeding: and it's easy to write something that you think summarizes that data type sufficiently to cause the whole thing to be evaluated - and later discover it missed something
2022-03-28 17:30:47 +0200 <tomsmeding> yeah
2022-03-28 17:30:50 +0200 <slack1256> I want some uniplate like capabilities on a program that cannot import uniplate (per project guidelines). I wanted to see how much I can do working from the `Rep a` of an ADT.
2022-03-28 17:31:12 +0200tomsmedinglooks up uniplate
2022-03-28 17:31:24 +0200 <slack1256> @where uniplate
2022-03-28 17:31:24 +0200 <lambdabot> <https://www.haskell.org/haskellwiki/Uniplate>,<https://hackage.haskell.org/package/uniplate>,<http://community.haskell.org/~ndm/uniplate/>,<http://community.haskell.org/~ndm/darcs/uniplate/uniplate.
2022-03-28 17:31:24 +0200 <lambdabot> htm>,<https://github.com/ndmitchell/uniplate>,<https://ndmitchell.com/#uniplate_09_oct_2013>,<http://www-users.cs.york.ac.uk/~ndm/uniplate/>
2022-03-28 17:31:48 +0200 <tomsmeding> ok uniplate looks like the kithen sink, so "some uniplate like capabilities" tells me nothing lol
2022-03-28 17:31:52 +0200 <c_wraith> isn't uniplate mostly a couple helpers built on top of Data.Data? Couldn't you just reimplement that core?
2022-03-28 17:31:57 +0200slaydr(~slaydr@193.19.109.228)
2022-03-28 17:31:58 +0200 <slack1256> It is the easy fragment of SYB presented on a modern form.
2022-03-28 17:32:50 +0200 <slack1256> *gasp* Data.Data is in base!
2022-03-28 17:32:57 +0200 <slack1256> I thought it was on the syb package!
2022-03-28 17:33:54 +0200 <geekosaur> nope, it's the basis for GHC.Generics
2022-03-28 17:34:02 +0200 <geekosaur> well, the publicly exposedpart
2022-03-28 17:34:15 +0200 <slack1256> So now Data.Data is implemented on top of GHC.Generics?
2022-03-28 17:34:26 +0200 <tomsmeding> geekosaur: is it? "data.data" has no hits on the GHC.Generics docs page
2022-03-28 17:34:55 +0200 <slack1256> I was on the idea that Data.Data and SYB were softly abandoned in favor of GHC.Generics... Is that not the case? if so, I am grad.
2022-03-28 17:34:58 +0200 <c_wraith> :t uniplate -- maybe I'm being misled by the type here. (No, this is not from the actual uniplate package, it's something designed to emulate it)
2022-03-28 17:34:59 +0200 <lambdabot> (Data a, Applicative f) => (a -> f a) -> a -> f a
2022-03-28 17:35:00 +0200alp(~alp@user/alp) (Ping timeout: 240 seconds)
2022-03-28 17:35:02 +0200 <slack1256> s/grad/glad/
2022-03-28 17:35:28 +0200 <geekosaur> hm. thought Data.Data was the lowest levelstuff (slightly above Data.Typeable) and the rest was atop either that or the lower level stuff Data.Data is the public front for
2022-03-28 17:35:50 +0200 <geekosaur> so it may be exposing the lowest level part of GHC.Generics
2022-03-28 17:36:25 +0200 <c_wraith> I think Data.Data is entirely separate from GHC.Generics
2022-03-28 17:36:27 +0200 <tomsmeding> looks like if Data.Data and GHC.Generics are connected, it's at least not advertised in the docs
2022-03-28 17:37:03 +0200 <geekosaur> that seems like an odd duplication, then
2022-03-28 17:37:24 +0200 <geekosaur> maybe it's just not worth fixing
2022-03-28 17:38:04 +0200 <tomsmeding> Data.Data looks a lot more "dynamically typed" to me, like you don't really get type-level information about the structure
2022-03-28 17:38:18 +0200 <tomsmeding> you get _value-level_ information about the structure, whereas GHC.Generics gives you both (linked)
2022-03-28 17:38:41 +0200 <tomsmeding> not saying there is no duplication though
2022-03-28 17:39:34 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:908a:bab:b0c0:af34) (Quit: WeeChat 2.8)
2022-03-28 17:42:27 +0200deadmarshal_(~deadmarsh@95.38.115.47)
2022-03-28 17:43:57 +0200cheater(~Username@user/cheater) (Ping timeout: 240 seconds)
2022-03-28 17:46:41 +0200deadmarshal_(~deadmarsh@95.38.115.47) (Ping timeout: 250 seconds)
2022-03-28 17:46:56 +0200mikoto-chan(~mikoto-ch@213.177.151.239)
2022-03-28 17:47:34 +0200 <slack1256> tomsmeding: Are they used for the same purpouses? It seems to me that GHC.Generics is really oriented to provide generic typeclass instances for consumers and Data.Data/syb is oriented to traverse ADT "generically".
2022-03-28 17:47:35 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-28 17:47:38 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-03-28 17:48:08 +0200 <tomsmeding> I guess, yes, though you can implement (2) using (1) of course
2022-03-28 17:48:13 +0200 <tomsmeding> though potentially less nicely
2022-03-28 17:48:32 +0200 <tomsmeding> slack1256: what functions from uniplate would you need most dearly
2022-03-28 17:49:19 +0200 <tomsmeding> just 'Data.Generics.Uniplate.Operations.uniplate'?
2022-03-28 17:49:38 +0200 <tomsmeding> also, that function seems to have to make a choice regarding associativity as well lol
2022-03-28 17:50:03 +0200 <slack1256> Just Data.Generics.Uniplate.Operations.uniplate yes
2022-03-28 17:50:21 +0200 <slack1256> Hahah you cannot escape associativity.
2022-03-28 17:50:38 +0200 <tomsmeding> slack1256: because 'Str' is a binary tree :p
2022-03-28 17:50:58 +0200dsrt^(~dsrt@96-91-136-49-static.hfc.comcastbusiness.net)
2022-03-28 17:52:01 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Ping timeout: 245 seconds)
2022-03-28 17:56:05 +0200 <tomsmeding> it seems uniplate does things left-associatively
2022-03-28 17:56:07 +0200ec(~ec@gateway/tor-sasl/ec)
2022-03-28 17:56:18 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2022-03-28 17:57:58 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2022-03-28 18:00:05 +0200bitonic(~bitonic@2001:470:69fc:105::1812) (Quit: You have been kicked for being idle)
2022-03-28 18:00:49 +0200 <slack1256> To operate over a `Rep a`/Generic structure given the associativity problem, I need to do so defining a new class with the function I am interested and define the correct instances. That is the correct approach it seems.
2022-03-28 18:01:06 +0200 <tomsmeding> I think 'uniplate' is definable from Generic
2022-03-28 18:01:18 +0200vglfr(~vglfr@88.155.45.251)
2022-03-28 18:01:47 +0200ProfSimm(~ProfSimm@87.227.196.109)
2022-03-28 18:02:12 +0200gurkenglas(~gurkengla@dslb-178-012-018-212.178.012.pools.vodafone-ip.de)
2022-03-28 18:05:16 +0200lbseale(~ep1ctetus@user/ep1ctetus)
2022-03-28 18:05:46 +0200fendor_(~fendor@77.119.209.169.wireless.dyn.drei.com)
2022-03-28 18:05:51 +0200vglfr(~vglfr@88.155.45.251) (Ping timeout: 260 seconds)
2022-03-28 18:05:52 +0200cheater(~Username@user/cheater)
2022-03-28 18:07:15 +0200vglfr(~vglfr@88.155.45.251)
2022-03-28 18:08:33 +0200 <slack1256> Well I will go back to work. Thanks for the discussion tomsmeding, c_wraith ; it helped me clarify .
2022-03-28 18:08:33 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 250 seconds)
2022-03-28 18:08:39 +0200fendor(~fendor@178.115.48.110.wireless.dyn.drei.com) (Ping timeout: 260 seconds)
2022-03-28 18:08:45 +0200lambdap2(~lambdap@static.167.190.119.168.clients.your-server.de) (Quit: lambdap2)
2022-03-28 18:08:58 +0200mncheckm(~mncheck@193.224.205.254) (Ping timeout: 260 seconds)
2022-03-28 18:09:07 +0200lambdap2(~lambdap@static.167.190.119.168.clients.your-server.de)
2022-03-28 18:10:39 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-03-28 18:10:56 +0200Axman6(~Axman6@user/axman6) (Ping timeout: 260 seconds)
2022-03-28 18:14:13 +0200vglfr(~vglfr@88.155.45.251) (Ping timeout: 260 seconds)
2022-03-28 18:15:56 +0200vglfr(~vglfr@88.155.45.251)
2022-03-28 18:17:00 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.5)
2022-03-28 18:17:07 +0200boxscape_(~boxscape_@p4ff0b60b.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2022-03-28 18:17:49 +0200rawley(~rawley@142.99.241.242)
2022-03-28 18:20:51 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-28 18:23:11 +0200 <tomsmeding> slack1256: https://paste.tomsmeding.com/rKtfDDDI
2022-03-28 18:23:18 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-03-28 18:25:09 +0200mbuf(~Shakthi@122.174.50.185) (Quit: Leaving)
2022-03-28 18:25:36 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Ping timeout: 272 seconds)
2022-03-28 18:25:52 +0200 <tomsmeding> slack1256: if you don't like the standalone instance declaration, you can also use DeriveAnyClass, but I'm personally not a fan of that: https://paste.tomsmeding.com/bqAuXkK5
2022-03-28 18:27:36 +0200Vajb(~Vajb@2001:999:62:aa00:7f5a:4f10:c894:3813) (Read error: Connection reset by peer)
2022-03-28 18:27:43 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2022-03-28 18:31:59 +0200vglfr(~vglfr@88.155.45.251) (Ping timeout: 260 seconds)
2022-03-28 18:33:36 +0200troydm(~troydm@host-176-37-124-197.b025.la.net.ua)
2022-03-28 18:34:13 +0200bahamas(~lucian@84.232.140.158)
2022-03-28 18:34:46 +0200CiaoSen(~Jura@p200300c95735b0002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2022-03-28 18:34:52 +0200Sgeo_(~Sgeo@user/sgeo)
2022-03-28 18:36:31 +0200awpr(uid446117@id-446117.lymington.irccloud.com)
2022-03-28 18:38:04 +0200vglfr(~vglfr@88.155.45.251)
2022-03-28 18:38:08 +0200Sgeo(~Sgeo@user/sgeo) (Ping timeout: 260 seconds)
2022-03-28 18:38:49 +0200bahamas(~lucian@84.232.140.158) (Ping timeout: 246 seconds)
2022-03-28 18:39:33 +0200kuribas(~user@ptr-25vy0i6qxp87tp43k9a.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
2022-03-28 18:44:51 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.5)
2022-03-28 18:45:02 +0200deadmarshal_(~deadmarsh@95.38.115.47)
2022-03-28 18:46:54 +0200Sgeo__(~Sgeo@user/sgeo)
2022-03-28 18:49:59 +0200Sgeo_(~Sgeo@user/sgeo) (Ping timeout: 256 seconds)
2022-03-28 18:52:05 +0200jackalope(~jackalope@165.91.13.36)
2022-03-28 18:53:43 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-28 18:54:59 +0200pnotequalnp(~kevin@user/pnotequalnp)
2022-03-28 18:55:27 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2022-03-28 18:55:35 +0200vglfr(~vglfr@88.155.45.251) (Read error: Connection reset by peer)
2022-03-28 18:55:53 +0200vglfr(~vglfr@88.155.45.251)
2022-03-28 19:01:53 +0200waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-03-28 19:02:31 +0200__monty__(~toonn@user/toonn)
2022-03-28 19:03:34 +0200zer0bitz(~zer0bitz@dsl-hkibng32-54fbf8-224.dhcp.inet.fi) ()
2022-03-28 19:04:22 +0200vglfr(~vglfr@88.155.45.251) (Ping timeout: 246 seconds)
2022-03-28 19:04:37 +0200vglfr(~vglfr@88.155.45.251)
2022-03-28 19:13:38 +0200razetime(~quassel@117.254.35.152) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2022-03-28 19:13:57 +0200razetime(~quassel@117.254.35.152)
2022-03-28 19:14:27 +0200razetime(~quassel@117.254.35.152) (Client Quit)
2022-03-28 19:19:17 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-03-28 19:19:20 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Client Quit)
2022-03-28 19:19:25 +0200vglfr(~vglfr@88.155.45.251) (Ping timeout: 246 seconds)
2022-03-28 19:21:21 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-03-28 19:30:17 +0200econo(uid147250@user/econo)
2022-03-28 19:32:13 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2022-03-28 19:34:11 +0200zeenk(~zeenk@79.115.191.105) (Quit: Konversation terminated!)
2022-03-28 19:36:39 +0200Unicorn_Princess(~Unicorn_P@93-103-228-248.dynamic.t-2.net)
2022-03-28 19:39:17 +0200zmt01(~zmt00@user/zmt00) (Ping timeout: 240 seconds)
2022-03-28 19:41:49 +0200pnotequalnp(~kevin@user/pnotequalnp) (Ping timeout: 246 seconds)
2022-03-28 19:42:07 +0200CiaoSen(~Jura@p200300c95735b0002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
2022-03-28 19:45:51 +0200bahamas(~lucian@84.232.140.158)
2022-03-28 19:49:16 +0200vorpuni(~pvorp@2001:861:3881:c690:b8bb:8dc:5301:55cc)
2022-03-28 19:50:13 +0200bahamas(~lucian@84.232.140.158) (Ping timeout: 246 seconds)
2022-03-28 19:51:02 +0200boxscape_(~boxscape_@p4ff0b60b.dip0.t-ipconnect.de)
2022-03-28 19:51:32 +0200raym(~raym@user/raym) (Remote host closed the connection)
2022-03-28 19:52:36 +0200raym(~raym@user/raym)
2022-03-28 19:52:53 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.5)
2022-03-28 19:53:15 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-03-28 19:58:42 +0200jackalope(~jackalope@165.91.13.36) (Ping timeout: 272 seconds)
2022-03-28 20:00:24 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
2022-03-28 20:00:24 +0200allbery_b(~geekosaur@xmonad/geekosaur)
2022-03-28 20:00:33 +0200allbery_bgeekosaur
2022-03-28 20:00:49 +0200allbery_b(~geekosaur@xmonad/geekosaur)
2022-03-28 20:00:49 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
2022-03-28 20:00:52 +0200allbery_bgeekosaur
2022-03-28 20:01:14 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
2022-03-28 20:01:14 +0200allbery_b(~geekosaur@xmonad/geekosaur)
2022-03-28 20:01:17 +0200allbery_bgeekosaur
2022-03-28 20:01:39 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
2022-03-28 20:01:39 +0200allbery_b(~geekosaur@xmonad/geekosaur)
2022-03-28 20:01:42 +0200allbery_bgeekosaur
2022-03-28 20:02:03 +0200allbery_b(~geekosaur@xmonad/geekosaur)
2022-03-28 20:02:03 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
2022-03-28 20:02:03 +0200allbery_b(~geekosaur@xmonad/geekosaur) (K-Lined)
2022-03-28 20:02:31 +0200mvk(~mvk@2607:fea8:5cc3:7e00::7980) (Ping timeout: 256 seconds)
2022-03-28 20:05:40 +0200deadmarshal_(~deadmarsh@95.38.115.47) (Ping timeout: 272 seconds)
2022-03-28 20:06:04 +0200geranim0(~geranim0@modemcable242.171-178-173.mc.videotron.ca)
2022-03-28 20:08:50 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 272 seconds)
2022-03-28 20:10:35 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-03-28 20:11:29 +0200hololeap(~hololeap@user/hololeap) (Remote host closed the connection)
2022-03-28 20:12:12 +0200unit73e(~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291)
2022-03-28 20:12:38 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 260 seconds)
2022-03-28 20:12:51 +0200hololeap(~hololeap@user/hololeap)
2022-03-28 20:13:01 +0200 <unit73e> is it just me or hls crashes a lot? :\
2022-03-28 20:13:27 +0200 <slack1256> unit73e: It doesn't crashes to me that much.
2022-03-28 20:13:44 +0200 <slack1256> s/crashes/crash/
2022-03-28 20:14:06 +0200 <slack1256> Usually if it is failling on a loop, it is not doing the setup/initial build correctly.
2022-03-28 20:14:26 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-03-28 20:14:48 +0200 <unit73e> hum, whenever I change something in the cabal it doesn't know I made that change, but that's fine I just restart, and then crashes
2022-03-28 20:15:02 +0200 <unit73e> when it figures out the setup it works fine
2022-03-28 20:15:33 +0200 <unit73e> not sure if hls works better with stack or not
2022-03-28 20:15:44 +0200 <unit73e> I'm not really picky on the builder, whatever is fine
2022-03-28 20:15:56 +0200 <tomsmeding> unit73e: does does it print something in the error log when it crashes?
2022-03-28 20:16:08 +0200 <unit73e> no, just error...
2022-03-28 20:16:17 +0200 <unit73e> minus something error
2022-03-28 20:16:25 +0200 <tomsmeding> what editor do you use?
2022-03-28 20:16:32 +0200 <unit73e> vim with coc
2022-03-28 20:16:57 +0200 <tomsmeding> could you post the hls stderr log?
2022-03-28 20:17:04 +0200 <tomsmeding> if you know where that gets sent
2022-03-28 20:18:26 +0200 <unit73e> executing hls in the console would be the same right? I just got an error
2022-03-28 20:19:08 +0200 <unit73e> https://paste.tomsmeding.com/qDbMkwfp
2022-03-28 20:19:34 +0200 <tomsmeding> right
2022-03-28 20:19:39 +0200 <tomsmeding> how have you installed HLS?
2022-03-28 20:20:15 +0200 <unit73e> with debug: https://paste.tomsmeding.com/xeWej2DQ
2022-03-28 20:20:22 +0200pnotequalnp(~kevin@user/pnotequalnp)
2022-03-28 20:20:49 +0200 <unit73e> I installed this: https://aur.archlinux.org/packages/haskell-language-server-static
2022-03-28 20:21:06 +0200 <unit73e> it's a glorified extract of what's in github
2022-03-28 20:21:16 +0200 <unit73e> so no inventions
2022-03-28 20:21:46 +0200 <unit73e> it ends up working after a while but it's annoying
2022-03-28 20:21:49 +0200 <tomsmeding> somehow I can't find the relevant issue now, but this is 99.9% sure the standard issue where a static-linked HLS wreaks havoc
2022-03-28 20:22:16 +0200 <tomsmeding> the tried and true method of working around that is to compile hls yourself, possibly using `ghcup compile hls`
2022-03-28 20:22:45 +0200 <tomsmeding> presumably the ghcup-distributed hls doesn't have this issue anymore since very recently, but I haven't tried that yet
2022-03-28 20:23:42 +0200 <unit73e> tomsmeding, oof might as well wait in that case. thanks. it was really bugging me.
2022-03-28 20:24:47 +0200 <unit73e> also i'll post my xp3 archive soon. I need a CLI and archive and that's it.
2022-03-28 20:24:59 +0200 <unit73e> archive as in, opposite of extract
2022-03-28 20:29:38 +0200 <maerwald> unit73e: what platform?
2022-03-28 20:29:38 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
2022-03-28 20:30:13 +0200 <unit73e> maerwald, I don't get your question. what platform what?
2022-03-28 20:30:31 +0200 <maerwald> unit73e: your platform
2022-03-28 20:30:44 +0200 <unit73e> what os I'm using? arch linux
2022-03-28 20:30:45 +0200Graham31515(~Graham@user/Graham31415)
2022-03-28 20:31:05 +0200alx741(~alx741@host-181-198-243-150.netlife.ec)
2022-03-28 20:31:55 +0200slac82471(~slack1256@191.125.227.201)
2022-03-28 20:32:25 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-03-28 20:32:26 +0200 <maerwald> you can try: ghcup install hls -u 'https://github.com/hasufell/haskell-language-server/releases/download/v1.6.2.2-rc1/haskell-languag… 1.6.1.1
2022-03-28 20:32:39 +0200 <maerwald> that one is dynamically linked
2022-03-28 20:32:59 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-28 20:33:18 +0200jackalope(~jackalope@50-24-138-131.bcstcmta02.res.dyn.suddenlink.net)
2022-03-28 20:34:05 +0200slack1256(~slack1256@186.11.57.103) (Ping timeout: 252 seconds)
2022-03-28 20:34:26 +0200slac82471slack1256
2022-03-28 20:35:23 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds)
2022-03-28 20:36:07 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
2022-03-28 20:36:16 +0200 <unit73e> maerwald, thanks. these are the next releases?
2022-03-28 20:36:33 +0200 <maerwald> yeah
2022-03-28 20:37:46 +0200 <tomsmeding> maerwald: that url seems to have an identity crisis regarding its version, is it 1.6.1.1 or 1.6.2.2-rc1? :p
2022-03-28 20:37:52 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2022-03-28 20:37:59 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Ping timeout: 260 seconds)
2022-03-28 20:38:03 +0200 <maerwald> use at your own risk
2022-03-28 20:38:46 +0200 <maerwald> but if you don't test now, you'll be a tester for the actual release anyway...
2022-03-28 20:39:58 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Client Quit)
2022-03-28 20:43:27 +0200 <Graham31515> I've been reading through Richard Bird's "Thinking functionally with Haskell", and have become quite frustrated upon reaching the section on algorithmic time complexity. I think the problem is that Bird skips too many steps in the time complexity examples, such that I can't see how the result is arrived at. Can anyone recommend Haskell-oriented resources for calculating the time complexity of
2022-03-28 20:43:33 +0200 <Graham31515> algorithms?
2022-03-28 20:43:49 +0200vicfred(~vicfred@user/vicfred)
2022-03-28 20:44:25 +0200 <janus> Graham31515: would you otherwise recommend the book? sounds like it is difficult
2022-03-28 20:44:56 +0200mixfix41(~homefame@user/mixfix41) (Ping timeout: 272 seconds)
2022-03-28 20:45:21 +0200 <Graham31515> janus, its my second Haskell book after "Learn you a Haskell", and so far it has been quite accessible.
2022-03-28 20:45:29 +0200 <janus> interesting
2022-03-28 20:45:56 +0200 <janus> Graham31515: have you looked at 'Algorithm Design with Haskell'? co-authored by Bird. is it on your list?
2022-03-28 20:46:50 +0200 <Graham31515> i looked at it briefly, but was turned off by the choice to use a non-fixed-width font for the code snippets. It hurt my eyes, to be honest!
2022-03-28 20:48:52 +0200 <Graham31515> I've started reading Thinking Functionally along side the errata list, becase there are some mistakes which could be quite confusing if you don't notice https://www.cs.ox.ac.uk/publications/books/functional/errata.html
2022-03-28 20:49:28 +0200mixfix41(~homefame@user/mixfix41)
2022-03-28 20:49:42 +0200 <janus> oh that's a bummer, hopefully they have fixed them in the ebook version if there is one
2022-03-28 20:49:46 +0200stef204(~stef204@user/stef204) (Quit: WeeChat 3.5)
2022-03-28 20:50:38 +0200nosewings(~ngpc@2603-8081-3e05-e2d0-d1c9-95f0-ca37-6e6f.res6.spectrum.com)
2022-03-28 20:51:22 +0200 <[exa]> Graham31515: the "algorithmic time complexity" there is the big-O notation or something more specific?
2022-03-28 20:51:51 +0200 <Graham31515> Well, Bird uses big theta, but yeah.
2022-03-28 20:52:11 +0200 <tapas> sm: aight you good i 0.4.2.4 is out
2022-03-28 20:52:59 +0200 <[exa]> Graham31515: that's a related convention (people usually don't distinguish these much unless going into uncanny details)
2022-03-28 20:53:49 +0200 <[exa]> Graham31515: anything specific that's unclear with that? (does the book include the formal definition?)
2022-03-28 20:53:55 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 246 seconds)
2022-03-28 20:54:01 +0200justOkay(~justache@user/justache) (Read error: Connection reset by peer)
2022-03-28 20:54:45 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2022-03-28 20:55:01 +0200justOkay(~justache@user/justache)
2022-03-28 20:55:16 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2022-03-28 20:55:26 +0200 <Graham31515> [exa]: Right. I'm familiar with the terms and ideas, but I'm not sure the notation is particularly standard. The book introduces the concept and presents some equations for simple algorithms in a way that suggests one can just rearrage the equations to find the result. But then Bird just gives the answer instead of showing how the answer was found.
2022-03-28 20:57:27 +0200 <Graham31515> if you search google, its easy to find a pdf of the book should that interest you. Pg 158 is where i start getting lost.
2022-03-28 20:57:47 +0200 <Graham31515> (i have the dead tree version, btw)
2022-03-28 20:59:12 +0200 <[exa]> ok I'll google a bit
2022-03-28 20:59:17 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-28 20:59:42 +0200 <Graham31515> In any event, I'd be happy to look at other resources. Perhaps someone knows of some they can recommend?
2022-03-28 21:00:50 +0200bahamas(~lucian@84.232.140.158)
2022-03-28 21:01:05 +0200 <monochrom> Big Theta is standard, just less popular than Big O.
2022-03-28 21:01:53 +0200 <monochrom> Big Theta is more honest than Big O, given how people actually use Big O.
2022-03-28 21:02:29 +0200 <Graham31515> Yes, when I say non-standard notation, I don't refer to the Theta. Bird shows things like: T(foldr (++) []))(0, n) = \Theta(1).
2022-03-28 21:03:45 +0200 <monochrom> Perhaps Big Theta is less popular just because, until Unicode became widespread, it had been impossible to even transmit the letter Θ.
2022-03-28 21:03:46 +0200 <Graham31515> But maybe that's just how folks write this stuff. I have an EE degree, not CS, and it was a while ago so I'm not sure we covered this at all.
2022-03-28 21:03:51 +0200shriekingnoise(~shrieking@201.231.16.156) (Quit: Quit)
2022-03-28 21:04:12 +0200shriekingnoise(~shrieking@201.231.16.156)
2022-03-28 21:05:31 +0200bahamas(~lucian@84.232.140.158) (Ping timeout: 260 seconds)
2022-03-28 21:06:00 +0200Zemyla(~ec2-user@ec2-54-196-172-247.compute-1.amazonaws.com) (Ping timeout: 252 seconds)
2022-03-28 21:06:45 +0200Zemyla(~ec2-user@ec2-54-196-172-247.compute-1.amazonaws.com)
2022-03-28 21:07:45 +0200rawley(~rawley@142.99.241.242) (Ping timeout: 272 seconds)
2022-03-28 21:08:01 +0200 <sm> tapas: thanks!
2022-03-28 21:08:20 +0200 <[exa]> Graham31515: ok got the pdf, there's a bit of extra non-standard notation in how the algorithms are parametrized by m,n for problem sizes but that's doable I guess
2022-03-28 21:08:25 +0200 <maerwald> tapas: good Haskell citizen :D
2022-03-28 21:08:58 +0200benin(~benin@183.82.24.110) (Ping timeout: 246 seconds)
2022-03-28 21:09:44 +0200 <Franciman> does haskell have undelimited continuations?
2022-03-28 21:10:44 +0200 <Graham31515> [exa]: great! is the idea that one can just rearrange the equations to "solve" for, say, T(foldl (++) [])(k, m, n)? And if so, how?
2022-03-28 21:11:13 +0200 <[exa]> Franciman: if that means "not the shift/reset style" then I'd say yes, anything can be simulated within Cont (even call/cc)
2022-03-28 21:11:30 +0200 <Franciman> [exa]: how do you get the continuation of the whole program?
2022-03-28 21:11:39 +0200 <Franciman> i always see it to be limited to runCont
2022-03-28 21:11:43 +0200 <maerwald> tomsmeding: I have a great suggestion for the playground
2022-03-28 21:11:43 +0200 <[exa]> ah, not this sense of "undelimited" then :D
2022-03-28 21:11:49 +0200 <Franciman> so i'd have to just run my whole program in runCont
2022-03-28 21:11:50 +0200 <Franciman> ofc
2022-03-28 21:11:59 +0200 <[exa]> Graham31515: lemme check
2022-03-28 21:12:01 +0200 <maerwald> tomsmeding: allow to compile on windows :D
2022-03-28 21:12:07 +0200benin(~benin@183.82.24.110)
2022-03-28 21:12:35 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 252 seconds)
2022-03-28 21:13:13 +0200 <tomsmeding> maerwald: ._.
2022-03-28 21:13:17 +0200 <tomsmeding> someone else can do that
2022-03-28 21:13:25 +0200 <maerwald> I'd use it for regular development then
2022-03-28 21:13:36 +0200slac59003(~slack1256@186.11.57.103)
2022-03-28 21:13:38 +0200 <tomsmeding> yes I am aware of the value that would bring :p
2022-03-28 21:13:39 +0200 <maerwald> I have 32gb ram, but having an open windows VM stretches even that
2022-03-28 21:13:47 +0200 <tomsmeding> :')
2022-03-28 21:15:13 +0200 <Graham31515> [exa]: note also there is some relevant errata for these pages
2022-03-28 21:15:30 +0200 <maerwald> I can imagine some great hacks to let those windows build run on github CI runners
2022-03-28 21:15:37 +0200slack1256(~slack1256@191.125.227.201) (Ping timeout: 246 seconds)
2022-03-28 21:16:05 +0200 <[exa]> Graham31515: yeah I see, like wtf is the 'mn' there
2022-03-28 21:17:53 +0200 <maerwald> tomsmeding: you have a pipeline with a hundred windows jobs that always fails. Then you restart a job via API. The job pulls files from your pastebin and runs them, then fails again before uploading the results to pastebin again
2022-03-28 21:17:58 +0200bahamas(~lucian@84.232.140.158)
2022-03-28 21:18:03 +0200 <maerwald> xD
2022-03-28 21:18:19 +0200 <tomsmeding> lol
2022-03-28 21:18:42 +0200 <tomsmeding> turnaround time would be atrocious
2022-03-28 21:18:43 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-03-28 21:18:59 +0200 <maerwald> just need more spinners with cool effects
2022-03-28 21:19:03 +0200 <maerwald> "starting pod..."
2022-03-28 21:19:07 +0200 <maerwald> "chopping wood..."
2022-03-28 21:19:26 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-03-28 21:19:45 +0200 <[exa]> Graham31515: okay I guess I chewed through that
2022-03-28 21:20:01 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-28 21:21:33 +0200 <monochrom> Perhaps mn just means m times n.
2022-03-28 21:22:10 +0200 <[exa]> yeah it took me a second to switch to eager evaluation to see why m*n :D
2022-03-28 21:23:06 +0200 <sm> anyone interested in getting yesod working with GHC 9.2: https://github.com/yesodweb/yesod/issues/1757
2022-03-28 21:24:09 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2022-03-28 21:29:13 +0200 <maerwald> nah
2022-03-28 21:29:36 +0200 <maerwald> I mean, no one except M1 users :D
2022-03-28 21:29:58 +0200 <maerwald> because their only hope is the latest GHC version from last week :p
2022-03-28 21:30:17 +0200 <[exa]> Graham31515: ok so, the rearrangement is based on tracing the equation for T(foldl(++))(k, m+1, n). There are 2 parts, first the T(++)(k,n) that "generates the actual work", in our case T(++)(k,n)==Θ(k+n), and T(foldr (++))(k+n, m, n) which recurses, increasing `k` by steps of `n` until `m` hits zero, on the way generating extra instances of the T(++) and then disappearing as Θ(1)
2022-03-28 21:30:35 +0200dcoutts(~duncan@host86-151-44-233.range86-151.btcentralplus.com)
2022-03-28 21:32:51 +0200 <[exa]> Graham31515: if you look at all T(++)(k,n) that get generated here, you will have: T(++)(k,n)=Θ(k+n), T(++)(k+n,n)=Θ(k+2n), ...
2022-03-28 21:32:58 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Quit: Leaving)
2022-03-28 21:33:03 +0200dcoutts_(~duncan@host86-151-44-233.range86-151.btcentralplus.com) (Ping timeout: 260 seconds)
2022-03-28 21:33:30 +0200 <Graham31515> [exa]: yep, thanks, i can see how that goes
2022-03-28 21:33:41 +0200 <[exa]> Graham31515: which is described by the sum there, Σ_0^(m-1) ...
2022-03-28 21:34:04 +0200 <[exa]> and finally you have a look at the beginning, finding that the original `k` is 0, and substitute that
2022-03-28 21:36:08 +0200 <Graham31515> i can sort of see how the parts fit together, thanks. But how would one proceed for a more complicated example? This doesn't feel particularly rigorous.
2022-03-28 21:36:33 +0200CiaoSen(~Jura@p200300c95735b0002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2022-03-28 21:36:52 +0200 <[exa]> Graham31515: the main counter-intuitive thing there is probably the recursion, kinda prolog-ish order (defining for m+1 instead of using m-1), when one can abstract over that most (haskell-ish) recursion cases get pretty simple
2022-03-28 21:36:53 +0200 <Graham31515> i don't see how to fill in the gaps following Bird's notation with T(..)(..) = ...
2022-03-28 21:37:42 +0200 <[exa]> for more complicated recursion schemes there's always the master cookbook theorem: https://en.wikipedia.org/wiki/Master_theorem_(analysis_of_algorithms)
2022-03-28 21:38:24 +0200zmt00(~zmt00@user/zmt00)
2022-03-28 21:38:38 +0200rawley(~rawley@142.99.241.242)
2022-03-28 21:40:20 +0200slac59003slack1256
2022-03-28 21:41:07 +0200 <[exa]> Graham31515: btw the notation used there is not quite common, but kinda necessary for being able to argue recursively. In cases that do not recurse that easily one usually just writes "for m is the number of the lists, n the size of each list, the algorithm takes O(...m...n...)`
2022-03-28 21:42:00 +0200mvk(~mvk@2607:fea8:5cc3:7e00::7980)
2022-03-28 21:43:00 +0200 <monochrom> Messing with your mind: You have heard of the Curry-Howard isomorphism. Have you also heard/thought of the Curry-Uncurry isomorphism? It just means that curry and uncurry are inverses to each other. >:)
2022-03-28 21:43:55 +0200 <[exa]> Graham31515: another common approach is just giving names, say A(m,n) := T(++)(m,n), F(k,m,n) := T(foldr (++))(k,m,n). The problem then looks much more humanely: F(k,m,n) = A(k,n) + F(k+n, m-1, n)
2022-03-28 21:44:31 +0200ocean(~ocean@ip4d1528c2.dynamic.kabel-deutschland.de)
2022-03-28 21:44:54 +0200 <[exa]> monochrom: this implies unhoward-howard co-isomorphism
2022-03-28 21:45:02 +0200 <monochrom> hee hee
2022-03-28 21:45:57 +0200 <sm> maerwald :) on m1, latest GHC has gone from "only hope" to "shining star". Almost 3x speedup ! Worth working for
2022-03-28 21:46:50 +0200 <sm> (and, scratch that yesod issue.. turns out the silly thing landed in stackage nightly yesterday)
2022-03-28 21:47:21 +0200 <janus> is it possible to deprecate the construction of a constructor, but not the matching of it? and similarily, i want to deprecate the reading of a record field, but not the setting of it
2022-03-28 21:47:52 +0200 <maerwald> janus: PatternSynonyms for the first
2022-03-28 21:48:14 +0200 <Graham31515> [exa]: thanks! I'm starting to see how this goes now. And the master theorem looks like exactly what i need to read up on to understand it better!
2022-03-28 21:49:32 +0200 <[exa]> janus: people sometimes wrap such stuff in functions to allow a bit of constructor juggling, but I guess you don't have that choice anymore right? :]
2022-03-28 21:49:45 +0200cosimone(~user@93-44-187-176.ip98.fastwebnet.it) (Remote host closed the connection)
2022-03-28 21:50:08 +0200 <janus> [exa]: i think i do have that option, what would be the case where i wouldn't?
2022-03-28 21:50:23 +0200acidjnk(~acidjnk@p200300d0c7049f67fc06a0258b52409e.dip0.t-ipconnect.de)
2022-03-28 21:50:36 +0200 <janus> currently trying to figure out why PatternSynonyms help with this...
2022-03-28 21:51:06 +0200 <janus> because i can turn off the deprecation warning in the Pattern Synonym, and then when i use there synonym, there is no error?
2022-03-28 21:51:24 +0200 <janus> but what prevents me from using it for construction?
2022-03-28 21:51:47 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2022-03-28 21:53:17 +0200slac15323(~slack1256@191.126.227.204)
2022-03-28 21:53:22 +0200 <[exa]> Graham31515: re master theorem, it gets useful for much more complicated stuff (e.g. it gets you the complexity of strassen matrix multiplication), for base haskell stuff you will probably be good just with visualizing how the work builds up. Logarithmic depth of computations (e.g. mergesort) pretty much tops the intuition required to understand the complexity of an overwhelming part of everyday programming
2022-03-28 21:54:53 +0200 <[exa]> janus: not sure honestly, constructors are kinda double-sided by definition so I guess that if you find anything that would allow you to modify just 1 side of that, it's going to be a serious ghc hack.
2022-03-28 21:55:52 +0200slack1256(~slack1256@186.11.57.103) (Ping timeout: 272 seconds)
2022-03-28 21:55:57 +0200 <janus> i understand, but from a software engineering perspective i think it makes sense to make sure you are not 'producing' any deprecated stuff, but you can still 'consume' it
2022-03-28 21:56:28 +0200epolanski(uid312403@id-312403.helmsley.irccloud.com)
2022-03-28 21:56:48 +0200kenran(~kenran@200116b82baeab0017258e66ff76ea55.dip.versatel-1u1.de)
2022-03-28 21:57:29 +0200 <janus> but i guess since patterns are readily exchanged for guards that don't work with patterns, it can't be decided which context it is..
2022-03-28 21:57:38 +0200bahamas(~lucian@84.232.140.158) (Ping timeout: 260 seconds)
2022-03-28 21:58:15 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds)
2022-03-28 21:58:38 +0200 <janus> like if i exchange 'case deprecated of Deprecated -> ...' with '| deprecated == Deprecated = ...'...
2022-03-28 21:58:49 +0200ocean(~ocean@ip4d1528c2.dynamic.kabel-deutschland.de) (Quit: WeeChat 3.4.1)
2022-03-28 22:00:29 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-03-28 22:08:01 +0200slack1256(~slack1256@186.11.57.103)
2022-03-28 22:10:18 +0200Hash(~Hash@hey.howstoned.ru)
2022-03-28 22:10:28 +0200slac15323(~slack1256@191.126.227.204) (Ping timeout: 260 seconds)
2022-03-28 22:10:35 +0200dextaa_(~dextaa@user/dextaa)
2022-03-28 22:11:41 +0200Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2022-03-28 22:12:32 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2022-03-28 22:13:00 +0200Pickchea(~private@user/pickchea)
2022-03-28 22:13:05 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 256 seconds)
2022-03-28 22:13:49 +0200 <Zemyla> I can't install unordered-containers because the process dies while compiling it.
2022-03-28 22:14:26 +0200Lord_of_Life_Lord_of_Life
2022-03-28 22:14:32 +0200 <tomsmeding> Zemyla: does it run out of memory?
2022-03-28 22:15:10 +0200 <maerwald> if your are on windows, the rule of thumb is: cabal build || cabal build || cabal build
2022-03-28 22:15:13 +0200 <maerwald> that usually does it
2022-03-28 22:15:34 +0200 <tomsmeding> :')
2022-03-28 22:16:08 +0200 <maerwald> tomsmeding: https://github.com/haskell/bytestring/blob/master/.github/workflows/ci.yml#L91
2022-03-28 22:16:10 +0200 <maerwald> xD
2022-03-28 22:17:25 +0200 <tomsmeding> software is just a pile of hacks that sometimes works
2022-03-28 22:19:36 +0200dcoutts_(~duncan@host86-151-44-233.range86-151.btcentralplus.com)
2022-03-28 22:20:25 +0200 <Zemyla> I'm on Linux, and it gets SIGKILLed.
2022-03-28 22:20:44 +0200 <tomsmeding> yeah out of memory most likely
2022-03-28 22:21:06 +0200 <tomsmeding> sudo fallocate -l 2G /swapfile ; sudo mkswap /swapfile ; sudo swapon /swapfile
2022-03-28 22:21:07 +0200 <tomsmeding> then try again
2022-03-28 22:21:21 +0200 <tomsmeding> remove the thing after you're done with 'sudo swapoff /swapfile ; sudo rm /swapfile'l
2022-03-28 22:21:27 +0200 <tomsmeding> without the l lol
2022-03-28 22:23:06 +0200dcoutts(~duncan@host86-151-44-233.range86-151.btcentralplus.com) (Ping timeout: 272 seconds)
2022-03-28 22:24:04 +0200jgeerds(~jgeerds@55d4548e.access.ecotel.net)
2022-03-28 22:25:06 +0200 <janus> Zemyla: you can look for the OOM KILLER in dmesg
2022-03-28 22:27:27 +0200 <Zemyla> Okay, adding swap worked.
2022-03-28 22:29:24 +0200tomsmedinghas experience building haskell stuff on a 1GB RAM VPS
2022-03-28 22:31:35 +0200ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 240 seconds)
2022-03-28 22:31:58 +0200mvk(~mvk@2607:fea8:5cc3:7e00::7980) (Ping timeout: 260 seconds)
2022-03-28 22:33:41 +0200zebrag(~chris@user/zebrag)
2022-03-28 22:34:06 +0200pavonia(~user@user/siracusa)
2022-03-28 22:35:05 +0200CiaoSen(~Jura@p200300c95735b0002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2022-03-28 22:35:23 +0200 <tdammers> geekosaur: thanks so far, I'll try #xmonad
2022-03-28 22:38:51 +0200mikoto-chan(~mikoto-ch@213.177.151.239) (Ping timeout: 260 seconds)
2022-03-28 22:40:14 +0200 <maerwald> tomsmeding: hang on
2022-03-28 22:40:49 +0200 <maerwald> I missed two spots
2022-03-28 22:40:52 +0200 <tomsmeding> maerwald: am fixing :p
2022-03-28 22:41:07 +0200 <tomsmeding> was literally typing out the commit message when you pinged
2022-03-28 22:41:23 +0200 <maerwald> when will we see a beta version?
2022-03-28 22:41:44 +0200 <tomsmeding> I let my friend audit the bwrap so we're cool :p
2022-03-28 22:41:47 +0200 <tomsmeding> half-/s
2022-03-28 22:42:00 +0200 <tomsmeding> I'm on the fence whether I trust bwrap enough
2022-03-28 22:42:13 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 240 seconds)
2022-03-28 22:42:18 +0200jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2022-03-28 22:42:18 +0200 <maerwald> it's developed for that purpose
2022-03-28 22:42:26 +0200 <maerwald> giving access to untrusted users
2022-03-28 22:42:49 +0200jakalx(~jakalx@base.jakalx.net)
2022-03-28 22:42:50 +0200 <tomsmeding> I know, but it's still relying on the fact that the kernel does the correct separation on all the many contact points
2022-03-28 22:43:09 +0200 <tomsmeding> whereas a VM is... okay maybe a VM isn't much better
2022-03-28 22:43:20 +0200 <maerwald> VMs have bugs too
2022-03-28 22:43:31 +0200haskl(~haskl@user/haskl) (Ping timeout: 260 seconds)
2022-03-28 22:44:32 +0200 <maerwald> and... what's the worst case? There's no sensitive data on that machine I guess. You could also put it on an isolated one and have the backend redirect internally
2022-03-28 22:44:59 +0200 <tomsmeding> I have a better idea: let's put this on a dedicated VPS, so the only compromising that can get done is 1. this app, and 2. the rest of the colocs at the server farm if _they_ mess up, but that is very far from my problem
2022-03-28 22:45:04 +0200 <tomsmeding> yes
2022-03-28 22:46:26 +0200haskl(~haskl@user/haskl)
2022-03-28 22:48:25 +0200 <tomsmeding> maerwald: more DRY more better :p
2022-03-28 22:48:51 +0200 <maerwald> I'm not a strong believe in that principle, in fact
2022-03-28 22:49:01 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 240 seconds)
2022-03-28 22:49:09 +0200 <tomsmeding> agreed, actually
2022-03-28 22:49:16 +0200 <tomsmeding> but in this case it would have prevented the bug ;)
2022-03-28 22:51:48 +0200 <maerwald> who's going to make the CSS great again?
2022-03-28 22:52:09 +0200 <maerwald> I feel it's hard to find good frontend devs in Haskell :p
2022-03-28 22:52:14 +0200shapr(~user@pool-173-73-44-186.washdc.fios.verizon.net) (Remote host closed the connection)
2022-03-28 22:52:16 +0200 <maerwald> I only know one
2022-03-28 22:52:39 +0200 <janus> what is 'a frontend dev in haskell'? is it a person that uses ghcjs?
2022-03-28 22:52:46 +0200 <tomsmeding> god no
2022-03-28 22:52:52 +0200 <maerwald> lol
2022-03-28 22:53:00 +0200 <[exa]> O_o
2022-03-28 22:53:04 +0200smspeaks pidgin CSS
2022-03-28 22:53:21 +0200 <maerwald> did I spell CSS wrong? I actually *meant* CSS :p
2022-03-28 22:53:29 +0200ec(~ec@gateway/tor-sasl/ec)
2022-03-28 22:53:49 +0200 <sm> maerwaldtomsmeding have you got a live demo yet ? that motivates front end folks
2022-03-28 22:54:05 +0200 <tomsmeding> I might set up a live demo very soon
2022-03-28 22:54:15 +0200 <sm> \o/
2022-03-28 22:54:22 +0200 <maerwald> sm: https://i.imgur.com/pZYs6fN.png
2022-03-28 22:54:33 +0200 <tomsmeding> just want to fix 1 more protection/security thing (ulimit memory limit)
2022-03-28 22:54:54 +0200 <sm> maerwald: looks fine! ship it!
2022-03-28 22:55:35 +0200 <tomsmeding> the overflow of the right column is really painful lol, at least that should be easy to fix with overflow-y: scroll
2022-03-28 22:55:38 +0200 <tomsmeding> actually let me fix that right now
2022-03-28 22:55:44 +0200 <maerwald> hehe yeah
2022-03-28 22:56:15 +0200 <maerwald> I suck so hard at CSS. It gives my anxiety. I can't see any structure in it.
2022-03-28 22:56:29 +0200 <maerwald> like chemistry
2022-03-28 22:56:46 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 246 seconds)
2022-03-28 22:56:47 +0200 <[exa]> css has the structure of duct tape baklava
2022-03-28 22:56:53 +0200 <maerwald> what worries me more is that the editor doesn't support haskell syntax
2022-03-28 22:56:59 +0200 <maerwald> and they use their own parser
2022-03-28 22:57:10 +0200 <maerwald> so we'd have to write haskell parser in js
2022-03-28 22:57:46 +0200tomsmedingfinds out that it isn't as easy as overflow-y
2022-03-28 22:57:53 +0200 <tomsmeding> of course
2022-03-28 22:58:05 +0200 <carbolymer> just wrap whole linux & ghc in asm.js
2022-03-28 22:58:29 +0200 <sm> I think CSS is one of those things that's probably worth learning properly for every dev
2022-03-28 22:58:38 +0200 <tomsmeding> define properly
2022-03-28 22:58:40 +0200 <sm> and I mean to do that any day now
2022-03-28 22:58:47 +0200 <DigitalKiwi> manage.hs: stack: createProcess: exec: invalid argument (Bad file descriptor)
2022-03-28 22:58:52 +0200 <tomsmeding> I can sort of fight my way through if necessary
2022-03-28 22:59:01 +0200 <carbolymer> sm: certainly kernel devs need css in their lives
2022-03-28 22:59:03 +0200 <tomsmeding> the _real_ issue is usually that I'm awful at design
2022-03-28 22:59:16 +0200 <sm> tomsmeding: reading enough of the basic docs to have a clear sense of things and see the structure
2022-03-28 22:59:28 +0200 <DigitalKiwi> https://github.com/Southern-Exposure-Seed-Exchange/southernexposure.com/tree/develop
2022-03-28 23:00:13 +0200 <tomsmeding> sm: I suppose I sorta kinda fulfill that criterion?
2022-03-28 23:00:30 +0200 <maerwald> sm just wants an excuse to not hire us
2022-03-28 23:00:32 +0200 <maerwald> :D
2022-03-28 23:00:54 +0200 <geekosaur> Bad file descriptor from exec?! Is this Windows?
2022-03-28 23:01:02 +0200 <sm> sorry, you lost me.. and no I should totally hire you
2022-03-28 23:01:29 +0200 <maerwald> I think it's a funny idea to ask lots of CSS questions in a Haskell dev interview
2022-03-28 23:01:31 +0200 <geekosaur> DigitalKiwi, ^
2022-03-28 23:01:32 +0200 <DigitalKiwi> nixos
2022-03-28 23:01:37 +0200shapr(~user@pool-173-73-44-186.washdc.fios.verizon.net)
2022-03-28 23:01:37 +0200 <geekosaur> oy
2022-03-28 23:01:57 +0200 <sm> tomsmeding: are you really awful at design, or just busy with other things ?
2022-03-28 23:02:07 +0200 <DigitalKiwi> i'm trying to get a haskell environment on windows to test if it's different
2022-03-28 23:02:20 +0200 <tomsmeding> sm: well for this playground thing it's actually both, which makes it worse :p
2022-03-28 23:02:35 +0200cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
2022-03-28 23:02:43 +0200 <maerwald> arjun fixed the ghcup CSS, but I haven't seen him here in a while
2022-03-28 23:03:11 +0200 <maerwald> but apparently it was easy for him and I got scolded for doing stupid things
2022-03-28 23:03:19 +0200 <sm> I think a lot of us have used a ton of UIs so we have a pretty good idea of good design, or at least what's usable. We usually don't have the know-how to implement it though
2022-03-28 23:04:56 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-03-28 23:05:30 +0200smsigned up for https://courses.joshwcomeau.com/css-for-js a while back but hasn't got a round tuit
2022-03-28 23:05:47 +0200 <carbolymer> s/a lot/some/
2022-03-28 23:06:14 +0200ProfSimm(~ProfSimm@87.227.196.109) (Ping timeout: 250 seconds)
2022-03-28 23:06:26 +0200 <maerwald> tomsmeding: maybe call for participation in haskell weekly?
2022-03-28 23:06:32 +0200 <carbolymer> the more websites I see, the more convinced I am that UX becomes some ancient knowledge which is getting forgotten
2022-03-28 23:07:06 +0200 <tomsmeding> maerwald: not a bad idea actually
2022-03-28 23:07:31 +0200 <DigitalKiwi> anyone know how to fix this script?
2022-03-28 23:08:04 +0200 <DigitalKiwi> https://stackoverflow.com/questions/41487629/piping-from-stdin-to-process?msclkid=ebf399daae7311ec…
2022-03-28 23:08:12 +0200ProfSimm(~ProfSimm@87.227.196.109)
2022-03-28 23:08:32 +0200 <DigitalKiwi> ...snoyman describes the problem but doesn't actually say afaict how to solve it ;_;
2022-03-28 23:08:40 +0200 <sm> good UX doesn't go out of style, you can always find instances of it if you look
2022-03-28 23:09:24 +0200 <DigitalKiwi> and fwiw it seems to be working on windows
2022-03-28 23:09:30 +0200zeenk(~zeenk@2a02:2f04:a313:d600:8d26:ec9f:3ff6:fc94)
2022-03-28 23:09:44 +0200 <DigitalKiwi> soooo linux and/or nixos?
2022-03-28 23:09:57 +0200 <DigitalKiwi> i can maybe try some vm
2022-03-28 23:10:35 +0200 <monochrom> I thought "UX" was the trendy term, and it was "UI" that was the ancient forgotten term.
2022-03-28 23:11:05 +0200 <carbolymer> monochrom: UX is the science behind designing UIs afaik
2022-03-28 23:11:17 +0200 <DigitalKiwi> UX is how much you like the UI
2022-03-28 23:11:21 +0200 <Zemyla> > runCokleisli (left fc) (Left 1 :| [Right 2, Left 3])
2022-03-28 23:11:23 +0200 <lambdabot> Left (f (1 :| [1,1]))
2022-03-28 23:11:40 +0200 <geekosaur> you did fdToHandle and then didn't do anything with the new Handle. it got closed by gc. just delete that line
2022-03-28 23:11:54 +0200 <sm> UX is UI + the other things that contribute to user experience, for me anyway
2022-03-28 23:11:54 +0200 <geekosaur> you want actual stdin, which getLine is using correctly
2022-03-28 23:11:58 +0200 <Zemyla> > cosieve (left fm) (Left 1 :| [Right 2, Left 3])
2022-03-28 23:12:00 +0200 <lambdabot> Left (f (1 :| [3]))
2022-03-28 23:12:56 +0200 <janus> sm: but what is an example of something that doesn't contribute to the user experience?
2022-03-28 23:13:27 +0200 <sm> janus: non-user-visible implementation details ?
2022-03-28 23:13:31 +0200 <geekosaur> DigitalKiwi, ^^
2022-03-28 23:13:48 +0200 <geekosaur> last 2 lines I sent
2022-03-28 23:14:16 +0200 <DigitalKiwi> let's get something straight here i didn't do anything this is someone elses code lol ;p
2022-03-28 23:14:49 +0200 <geekosaur> okay
2022-03-28 23:14:57 +0200 <geekosaur> it's still weirdly wrong
2022-03-28 23:15:01 +0200smgave a silly circular definition above. UX is User Experience. Pretty clear, no need to complicate it
2022-03-28 23:16:50 +0200 <carbolymer> DigitalKiwi: from what I understand what Snoyman is saying, `h` is getting GC'd, which closes stdin? so holding onto `h` for much longer would prevent from closing stdin?
2022-03-28 23:17:58 +0200 <tomsmeding> shouldn't thaat "h <- fdToHandle stdInput" line just be removed
2022-03-28 23:18:21 +0200 <geekosaur> which is what I said
2022-03-28 23:18:23 +0200 <DigitalKiwi> https://github.com/Southern-Exposure-Seed-Exchange/southernexposure.com/blob/develop/manage.hs
2022-03-28 23:18:34 +0200 <tomsmeding> ah yes
2022-03-28 23:18:37 +0200 <geekosaur> it does nothing except render fd 0 liable for being closed on gc of the unused h
2022-03-28 23:18:40 +0200 <carbolymer> yeah
2022-03-28 23:18:50 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 272 seconds)
2022-03-28 23:19:47 +0200michalz(~michalz@185.246.204.126) (Remote host closed the connection)
2022-03-28 23:20:05 +0200 <DigitalKiwi> doesn't have any fdToHandle
2022-03-28 23:20:22 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-03-28 23:20:43 +0200 <carbolymer> DigitalKiwi: so which part of your 461 lines script is failing?
2022-03-28 23:21:11 +0200kenran(~kenran@200116b82baeab0017258e66ff76ea55.dip.versatel-1u1.de) (Quit: WeeChat info:version)
2022-03-28 23:22:22 +0200Midjak(~Midjak@82.66.147.146) (Quit: This computer has gone to sleep)
2022-03-28 23:22:24 +0200 <DigitalKiwi> around 396 does for sure (it fails in different spots depending on what arguments you give)
2022-03-28 23:23:20 +0200 <DigitalKiwi> the installing bits
2022-03-28 23:23:52 +0200rawley(~rawley@142.99.241.242) (Remote host closed the connection)
2022-03-28 23:25:17 +0200 <DigitalKiwi> but on windows it doesn't have this problem lol it has a different problem
2022-03-28 23:25:34 +0200 <DigitalKiwi> and now my hdd is full thanks stack
2022-03-28 23:26:55 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-03-28 23:27:31 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-28 23:28:42 +0200mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2022-03-28 23:29:05 +0200 <DigitalKiwi> it's not that i couldn't fill it without you but it would take longer
2022-03-28 23:29:07 +0200 <sm> stack-clean-old is good for managing that
2022-03-28 23:30:10 +0200 <sm> (long term.. not if you made a too-small new VM)
2022-03-28 23:31:01 +0200 <DigitalKiwi> unfortunately my windows 10 laptop main drive is very small
2022-03-28 23:31:11 +0200 <sm> ack
2022-03-28 23:31:35 +0200 <DigitalKiwi> 107GB lol
2022-03-28 23:32:24 +0200 <sm> y'only need about 5 of those eh
2022-03-28 23:32:25 +0200 <DigitalKiwi> Transcend (T:) is 474GB though i try to install everything there
2022-03-28 23:32:34 +0200 <DigitalKiwi> only have 3 free ;p
2022-03-28 23:32:50 +0200yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Ping timeout: 252 seconds)
2022-03-28 23:32:50 +0200 <sm> do what my wife does, start deleting photos
2022-03-28 23:32:54 +0200 <DigitalKiwi> i should get a new drive lol
2022-03-28 23:33:22 +0200 <DigitalKiwi> all 1.49MB of screenshots
2022-03-28 23:40:16 +0200mvk(~mvk@2607:fea8:5cc3:7e00::7980)
2022-03-28 23:42:19 +0200 <tomsmeding> aaaaaaah i give up with css, sm I retract my claim of meager css skill, I have zero
2022-03-28 23:42:55 +0200wyrd(~wyrd@gateway/tor-sasl/wyrd) (Ping timeout: 240 seconds)
2022-03-28 23:42:56 +0200 <hpc> but you know that you know nothing
2022-03-28 23:43:02 +0200 <tomsmeding> now I do
2022-03-28 23:43:09 +0200 <hpc> if socrates has taught me anything, it's that you're now better than jon snow
2022-03-28 23:43:12 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2022-03-28 23:43:20 +0200 <tomsmeding> lol
2022-03-28 23:43:40 +0200 <monochrom> Wait what does this have to do with jon snow?
2022-03-28 23:44:15 +0200 <hpc> "you know nothing jon snow" was a frequently repeated line in GoT
2022-03-28 23:44:23 +0200 <monochrom> haha OK
2022-03-28 23:45:01 +0200wyrd(~wyrd@gateway/tor-sasl/wyrd)
2022-03-28 23:45:22 +0200jtm(~jtm@user/jtm)
2022-03-28 23:47:31 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Ping timeout: 246 seconds)
2022-03-28 23:50:24 +0200 <Zemyla> @let import Data.Profunctor.Traversing
2022-03-28 23:50:25 +0200 <lambdabot> <no location info>: error:
2022-03-28 23:50:25 +0200 <lambdabot> The package (base-orphans-0.8.2) is required to be trusted but it isn't!
2022-03-28 23:50:48 +0200 <Zemyla> Why is this not (a) trusted, and (b) reporting as a Profunctor?
2022-03-28 23:51:41 +0200 <hpc> in lambdabot, or in your own packaging?
2022-03-28 23:51:48 +0200 <DigitalKiwi> i just use twitter bootstrap and my websites went from plain text to acceptable lol
2022-03-28 23:53:43 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
2022-03-28 23:54:24 +0200 <Zemyla> In lambdabot. I want to include it.
2022-03-28 23:55:24 +0200vorpuni(~pvorp@2001:861:3881:c690:b8bb:8dc:5301:55cc) (Remote host closed the connection)
2022-03-28 23:55:30 +0200 <Zemyla> But yeah, the fact that it reports as being in base-orphans rather than profunctors is sus.
2022-03-28 23:55:35 +0200 <geekosaur> % import Data.Profunctor.Traversing
2022-03-28 23:55:35 +0200 <yahb> geekosaur:
2022-03-28 23:58:58 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)