Logs on 2021-09-17 (liberachat/#haskell)
| 00:00:03 | <ldlework> | It's got the andromeda example code in Main.hs, .cabal depending on andromeda, shell.nix, etc |
| 00:00:49 | <ldlework> | after doing `nix-shell` you do `runhaskell Setup.hs configure` |
| 00:01:03 | <ldlework> | which would install cabal deps, then `runhaskell Setup.hs build` to build |
| 00:01:28 | <ProofTechnique> | I expect you'll run into some issues with your package and this other package having the same name |
| 00:02:00 | × | aegon quits (~mike@174.127.249.180) (Quit: leaving) |
| 00:03:29 | <ProofTechnique> | I think changing your `pkgs` in you shell.nix to something like https://pastebin.com/RkJ55SDe (filling in the rev and sha according to whatever `nix-prefetch-git` says) should work |
| 00:04:30 | <ProofTechnique> | Oh, and you may need to be more specific than `haskellPackages` if you're targeting 8.10.7, specifically |
| 00:04:30 | <ldlework> | ProofTechnique: OK I changed the name to androcells and pushed |
| 00:04:44 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b))) |
| 00:04:44 | → | allbery_b joins (~geekosaur@xmonad/geekosaur) |
| 00:04:47 | allbery_b | is now known as geekosaur |
| 00:05:03 | <ProofTechnique> | And then you'll just be able to refer to `pkgs.haskell.packages.ghc8107.andromeda` and all should be hunky-dory |
| 00:06:16 | <ldlework> | ProofTechnique: should I be extending `pkgs.haskell.packages.ghc8107` ? |
| 00:06:22 | <ProofTechnique> | https://pastebin.com/cFNLE6Rh |
| 00:06:36 | × | tdidrfyls^ quits (~tdidrfyls@68.101.54.227) (Remote host closed the connection) |
| 00:06:46 | <ldlework> | i see |
| 00:06:55 | <ProofTechnique> | Yeah, if you do it like this, you can then use `pkgs.haskellPackages` and be guaranteed that all of your packages come from the extended set |
| 00:08:25 | <ProofTechnique> | Looks like `rev` should be `502dfa6703eca9717c7cde0c93959fa0a83e77ed` and `sha256` should be `0ymbfpxlh938zryvw2nab0jls9nmf8jjcnyxbbdl47vaq543chir` |
| 00:10:04 | <ldlework> | ProofTechnique: where am I going wrong here |
| 00:10:06 | <ldlework> | https://gist.github.com/dustinlacewell/8fb9f4c7dca9426fc635d6920152a54e |
| 00:10:15 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 00:10:35 | × | thyriaen quits (~thyriaen@dynamic-078-055-122-076.78.55.pool.telefonica.de) (Quit: Leaving) |
| 00:10:43 | <ProofTechnique> | https://pastebin.com/U2aP1z1B Edited config with all the stuff |
| 00:10:47 | <ProofTechnique> | Uh, not sure |
| 00:11:11 | <ldlework> | yours worked |
| 00:11:52 | <ProofTechnique> | Really? I'm honestly a little stunned :D |
| 00:13:29 | <ldlework> | ProofTechnique: http://logos.ldlework.com/caps/2021-09-17-00-13-26.png |
| 00:13:30 | × | sneedsfeed quits (~sneedsfee@rrcs-173-95-122-169.midsouth.biz.rr.com) (Quit: Client closed) |
| 00:13:34 | <ldlework> | \o/ |
| 00:14:48 | <ProofTechnique> | Nice! |
| 00:17:07 | <ldlework> | I also just found http://lambdacube3d.com/ |
| 00:25:41 | × | arkho quits (~ccc@dynamic-acs-24-112-153-241.zoominternet.net) (Remote host closed the connection) |
| 00:27:26 | → | favonia joins (~favonia@user/favonia) |
| 00:32:55 | × | proofofkeags_ quits (~proofofke@205.209.28.54) (Ping timeout: 268 seconds) |
| 00:34:14 | × | favonia quits (~favonia@user/favonia) (Ping timeout: 260 seconds) |
| 00:39:16 | × | xff0x quits (~xff0x@2001:1a81:526d:1c00:6ed0:c2d3:55f8:e793) (Ping timeout: 252 seconds) |
| 00:39:42 | → | hyiltiz joins (~quassel@31.220.5.250) |
| 00:40:03 | → | xff0x joins (~xff0x@2001:1a81:526d:1c00:e52d:fb7a:8e70:ce09) |
| 00:44:51 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds) |
| 00:47:20 | → | favonia joins (~favonia@user/favonia) |
| 00:56:23 | <Cajun> | Idlework: are you using that shader library to implement game of life? |
| 00:56:23 | × | justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.2) |
| 01:00:05 | × | alx741 quits (~alx741@181.196.68.9) (Quit: alx741) |
| 01:03:45 | <Cajun> | because its not entirely necessary for GoL if thats the case. heres some example code i found that runs pretty well on my system given its insane size. i cant tell what the framerate is, but its not 60. probably more around 30. https://prnt.sc/1shzok2 |
| 01:09:02 | × | dragestil quits (~quassel@user/dragestil) (Ping timeout: 252 seconds) |
| 01:09:02 | dragestil_ | is now known as dragestil |
| 01:10:01 | → | dragestil_ joins (~quassel@user/dragestil) |
| 01:10:08 | × | hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 268 seconds) |
| 01:10:24 | <ldlework> | Cajun: my problem is that with Gloss it is slow |
| 01:10:31 | <Cajun> | try GLUT |
| 01:11:45 | × | pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.2.1) |
| 01:12:58 | × | MQ-17J quits (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Ping timeout: 260 seconds) |
| 01:13:06 | <hololeap> | I have newtype N = N { getN :: TVar T } and I have the function `fmap N . traverse (fmap f . readTVar) . getN` |
| 01:13:34 | <hololeap> | I would like to use optics to reduce the clutter and hopefully remove the `fmap N` and `getN` from that function. how can I do this? |
| 01:13:50 | × | xff0x quits (~xff0x@2001:1a81:526d:1c00:e52d:fb7a:8e70:ce09) (Ping timeout: 268 seconds) |
| 01:14:43 | → | MQ-17J joins (~MQ-17J@8.21.10.6) |
| 01:15:14 | → | xff0x joins (~xff0x@2001:1a81:52ad:c900:2fb9:e85d:6382:ddb8) |
| 01:17:21 | → | lavaman joins (~lavaman@98.38.249.169) |
| 01:18:18 | <c_wraith> | that... type-checks? |
| 01:18:43 | <c_wraith> | I guess it type-checks if f returns TVar T |
| 01:19:07 | <hololeap> | oh, yeah I suppose it doesn't... bad attempt at a simplification |
| 01:20:09 | <hololeap> | newtype Children f a = Children { getChildren :: HashMap ChildName (f a) } |
| 01:20:31 | <hololeap> | fromTVarChildren :: Children TVar a -> STM (Children Identity a) |
| 01:20:39 | <hololeap> | fromTVarChildren = fmap Children . traverse (fmap Identity . readTVar) . getChildren |
| 01:20:45 | <c_wraith> | if you want to mutate TVars in place at locations described by optics, traverseOf_ would apply |
| 01:21:34 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 252 seconds) |
| 01:22:14 | → | hyiltiz joins (~quassel@31.220.5.250) |
| 01:22:57 | <awpr> | looks like `traverse10 readTVar` to me: https://hackage.haskell.org/package/ten-0.1.0.1/docs/Data-Ten-Traversable.html#v:traverse10 |
| 01:23:29 | <awpr> | or `traverse10 (fmap Identity . readTVar)` I guess |
| 01:24:23 | <awpr> | the Generics stuff should be able to derive the instances for that type |
| 01:25:54 | <hololeap> | hm, ok |
| 01:25:59 | → | dsrt^ joins (~dsrt@68.101.54.227) |
| 01:27:55 | → | juhp_ joins (~juhp@bb220-255-204-220.singnet.com.sg) |
| 01:28:16 | <awpr> | granted the right application of 'coerce' would probably do the trick too in this case since it's just a newtype constructor |
| 01:28:28 | → | neurocyte0 joins (~neurocyte@user/neurocyte) |
| 01:29:40 | → | juhp__ joins (~juhp@bb220-255-204-220.singnet.com.sg) |
| 01:29:41 | × | juhp quits (~juhp@bb220-255-204-220.singnet.com.sg) (Read error: Connection reset by peer) |
| 01:30:08 | <awpr> | oh, it doesn't have the right kind for `ten`, my bad. `newtype Children a f` would, but I don't know if that's reasonable for your situation |
| 01:30:16 | <hololeap> | I just wanted to somehow shove the `traverse (fmap Identity . readTVar)` underneath the Children wrapper without the explicit unwrap and "fmapped wrap" |
| 01:30:22 | juhp__ | is now known as juhp |
| 01:30:32 | × | loonycyborg quits (~loonycybo@wesnoth/developer/loonycyborg) (Ping timeout: 250 seconds) |
| 01:31:01 | <awpr> | `coerce` can probably do that |
| 01:31:06 | × | neurocyte quits (~neurocyte@user/neurocyte) (Ping timeout: 268 seconds) |
| 01:31:06 | neurocyte0 | is now known as neurocyte |
| 01:31:38 | <Axman6> | coerce readTVar should work |
| 01:31:45 | <Axman6> | maybe with some type annotations |
| 01:31:56 | wrengr | is now known as wrengr_away |
| 01:31:58 | × | Guest640 quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 01:32:02 | <awpr> | that's for the old oversimplified version of the type |
| 01:32:54 | <hololeap> | no way to do this with optics? my intention was to reduce verbosity, and adding a bunch of type annotations seems like it might increase it |
| 01:33:06 | <hololeap> | mapped :: Functor f => Setter (f a) (f b) a b |
| 01:33:25 | → | loonycyborg joins (~loonycybo@wesnoth/developer/loonycyborg) |
| 01:33:25 | <awpr> | `_Wrapped` maybe |
| 01:33:46 | <awpr> | might have to TH some instances into existence to make that work, though |
| 01:33:48 | <Axman6> | does coerce (traverse (fmap Identity . readTVar)) work? |
| 01:33:58 | <hololeap> | let me try |
| 01:33:58 | × | juhp_ quits (~juhp@bb220-255-204-220.singnet.com.sg) (Ping timeout: 268 seconds) |
| 01:34:28 | → | sneedsfeed joins (~sneedsfee@rrcs-173-95-122-169.midsouth.biz.rr.com) |
| 01:34:32 | <Axman6> | might need some .... annotations for the type params. hmm, can't remember what those were called |
| 01:34:49 | <awpr> | TypeApplications, or just a signature |
| 01:34:56 | <Axman6> | type roles |
| 01:35:31 | × | funsafe quits (~funsafe@2601:1c1:4200:e53:2875:5507:42e4:4e14) (Read error: Connection reset by peer) |
| 01:35:37 | <awpr> | those should be inferred correctly in this case, and they have no power over coercions in the same module that defines the newtype |
| 01:35:38 | <Axman6> | https://downloads.haskell.org/ghc/9.2.1-alpha1/docs/html/users_guide/exts/roles.html |
| 01:35:52 | <Axman6> | hmm, ok |
| 01:36:36 | <Axman6> | % :t coerce (traverse (fmap Identity . readTVar)) |
| 01:36:36 | <yahb> | Axman6: (Traversable t, Coercible b (t (TVar a) -> STM (t (Identity a)))) => b |
| 01:36:40 | <hololeap> | Axman6: http://sprunge.us/Ny5tua |
| 01:36:55 | × | juhp quits (~juhp@bb220-255-204-220.singnet.com.sg) (Ping timeout: 265 seconds) |
| 01:37:02 | → | funsafe joins (~funsafe@2601:1c1:4200:e53:2875:5507:42e4:4e14) |
| 01:37:13 | <Axman6> | % :t \x -> coerce (traverse (fmap Identity . readTVar)) x |
| 01:37:13 | <yahb> | Axman6: (Traversable t1, Coercible t2 (t1 (TVar a)), Coercible t3 (STM (t1 (Identity a)))) => t2 -> t3 |
| 01:37:28 | <awpr> | yeah, coerce tends to result in a lot of confusion about what types you want on either side |
| 01:38:20 | <awpr> | you can probably also `makeLenses ''Children` and get an Iso to use like `_getChildren (traverse ...)` |
| 01:38:51 | <Axman6> | yeah, and that implementation should just be coerce anyway |
| 01:39:00 | <Axman6> | that's probably the way to go |
| 01:39:07 | × | MQ-17J quits (~MQ-17J@8.21.10.6) (Ping timeout: 268 seconds) |
| 01:39:31 | <hololeap> | I'm using Optics.Label and OverloadedLabels |
| 01:39:51 | <Axman6> | you'd have something like _Children . traversed . mapped (coerce readTVar) |
| 01:40:02 | × | Cajun quits (~Cajun@user/cajun) (Quit: Client closed) |
| 01:40:55 | <Axman6> | % :t _Wrapped . traversed . mapped (coerce readTVar :: TVar a -> STM (Identity a)) |
| 01:40:55 | <yahb> | Axman6: ; <interactive>:1:24: error:; * Couldn't match type `STM' with `p0 a0'; Expected: f (TVar a) -> p0 a0 (f (Identity a)); Actual: f (TVar a) -> STM (f (Identity a)); * In the second argument of `(.)', namely `mapped (coerce readTVar :: TVar a -> STM (Identity a))'; In the second argument of `(.)', namely `traversed . mapped (coerce readTVar :: TVar a -> STM (Identity a))'; |
| 01:40:56 | → | Cajun joins (~Cajun@user/cajun) |
| 01:41:30 | <Axman6> | % :t _Wrapped . traversed . mapped (fmap Identity readTVar) |
| 01:41:30 | <yahb> | Axman6: ; <interactive>:1:32: error:; * Couldn't match type `Identity' with `p0 a0'; Expected: TVar a -> p0 a0 (STM a); Actual: TVar a -> Identity (STM a); * In the first argument of `mapped', namely `(fmap Identity readTVar)'; In the second argument of `(.)', namely `mapped (fmap Identity readTVar)'; In the second argument of `(.)', namely `traversed . mapped (fmap Identity rea |
| 01:42:09 | <Axman6> | ok, I don't know hwat I'm doing |
| 01:42:55 | <hololeap> | you and me both :p |
| 01:43:06 | <hololeap> | anything past simple getters and setters is over my head |
| 01:43:23 | → | lavaman joins (~lavaman@98.38.249.169) |
| 01:44:34 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 01:46:10 | × | vysn quits (~vysn@user/vysn) (Ping timeout: 240 seconds) |
| 01:47:45 | × | dragestil_ quits (~quassel@user/dragestil) (Ping timeout: 268 seconds) |
| 01:47:48 | → | chris joins (~chris@81.96.113.213) |
| 01:47:51 | chris | is now known as Guest1782 |
| 01:50:42 | → | OscarH joins (~OscarH@90.201.86.195) |
| 01:52:41 | × | Guest1782 quits (~chris@81.96.113.213) (Ping timeout: 268 seconds) |
| 01:52:50 | → | juhp joins (~juhp@111.65.68.133) |
| 01:52:52 | × | pbrisbin quits (~patrick@pool-173-49-147-250.phlapa.fios.verizon.net) (Ping timeout: 265 seconds) |
| 01:55:27 | <Boarders> | Does anyone know an open source repo that makes heavy use of intmap and has extensive benchmarks? |
| 01:56:28 | → | System123 joins (~System123@net-37-179-171-3.cust.vodafonedsl.it) |
| 01:58:22 | → | lavaman joins (~lavaman@98.38.249.169) |
| 01:59:53 | → | dragestil_ joins (~quassel@user/dragestil) |
| 02:01:19 | × | System123 quits (~System123@net-37-179-171-3.cust.vodafonedsl.it) (Ping timeout: 268 seconds) |
| 02:02:41 | × | hololeap quits (~hololeap@user/hololeap) (Remote host closed the connection) |
| 02:03:42 | → | hololeap joins (~hololeap@user/hololeap) |
| 02:05:14 | <hololeap> | Boarders: https://github.com/haskell/containers/blob/master/containers-tests/benchmarks/IntMap.hs |
| 02:05:15 | <hololeap> | ? |
| 02:06:55 | <Axman6> | GHC? :) |
| 02:07:12 | <Axman6> | there was a great talk at this year's HIW about GHC's IntMap usage actually! |
| 02:08:06 | × | jokleinn quits (~jokleinn@user/jokleinn) (Ping timeout: 268 seconds) |
| 02:08:25 | <hololeap> | this has all the containers benchmarks: https://github.com/haskell/containers/blob/master/containers-tests/containers-tests.cabal |
| 02:09:06 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 02:18:13 | × | shapr quits (~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 252 seconds) |
| 02:20:38 | × | td_ quits (~td@muedsl-82-207-238-006.citykom.de) (Ping timeout: 260 seconds) |
| 02:22:25 | → | td_ joins (~td@94.134.91.4) |
| 02:26:51 | <awpr> | I don't know whether to be appreciative of QuickCheck or annoyed at it, for informing me I fail to round-trip "\SO\&H" to "\SOH" |
| 02:27:07 | <awpr> | text escaping is... fun |
| 02:31:22 | <awpr> | ooh, juicy tidbit, `instance Show String` uses `ShowS` as something more than just a `DList`, it actually peeks at what comes after it |
| 02:31:48 | <awpr> | > showsPrec "\SO" "H" |
| 02:31:49 | <lambdabot> | error: |
| 02:31:49 | <lambdabot> | • Couldn't match expected type ‘Int’ with actual type ‘[Char]’ |
| 02:31:49 | <lambdabot> | • In the first argument of ‘showsPrec’, namely ‘"\SO"’ |
| 02:31:53 | <awpr> | > show "\SO" "H" |
| 02:31:54 | × | seventhCrow quits (crow@gateway/vpn/protonvpn/seventhcrow) (Remote host closed the connection) |
| 02:31:54 | <lambdabot> | error: |
| 02:31:54 | <lambdabot> | • Couldn't match expected type ‘[Char] -> t’ |
| 02:31:54 | <lambdabot> | with actual type ‘[Char]’ |
| 02:32:45 | → | seventhCrow joins (crow@gateway/vpn/protonvpn/seventhcrow) |
| 02:33:22 | <awpr> | > (GHC.Show.showLitString "\SO" "H", GHC.Show.showLitString "\SO" "S") |
| 02:33:24 | <lambdabot> | error: |
| 02:33:24 | <lambdabot> | Not in scope: ‘GHC.Show.showLitString’ |
| 02:33:24 | <lambdabot> | No module named ‘GHC.Show’ is imported.error: |
| 02:33:46 | <awpr> | huh. oh well |
| 02:38:48 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Quit: Leaving) |
| 02:39:37 | → | lavaman joins (~lavaman@98.38.249.169) |
| 02:39:45 | × | pooryorick quits (~pooryoric@87-119-174-173.tll.elisa.ee) (Ping timeout: 265 seconds) |
| 02:40:52 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 02:41:11 | → | pooryorick joins (~pooryoric@87-119-174-173.tll.elisa.ee) |
| 02:41:24 | × | favonia quits (~favonia@user/favonia) (Ping timeout: 268 seconds) |
| 02:42:10 | × | dragestil_ quits (~quassel@user/dragestil) (Ping timeout: 265 seconds) |
| 02:43:15 | × | hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 268 seconds) |
| 02:43:30 | → | dragestil_ joins (~quassel@user/dragestil) |
| 02:44:04 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 252 seconds) |
| 02:44:40 | × | xff0x quits (~xff0x@2001:1a81:52ad:c900:2fb9:e85d:6382:ddb8) (Ping timeout: 252 seconds) |
| 02:45:24 | → | xff0x joins (~xff0x@2001:1a81:52ad:c900:aed8:d538:dc44:ee0) |
| 02:47:12 | → | hyiltiz joins (~quassel@31.220.5.250) |
| 02:47:44 | × | hololeap quits (~hololeap@user/hololeap) (Quit: Bye) |
| 02:57:30 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 260 seconds) |
| 02:59:23 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 03:04:25 | × | hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 252 seconds) |
| 03:04:46 | → | hyiltiz joins (~quassel@31.220.5.250) |
| 03:11:58 | × | hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 260 seconds) |
| 03:15:02 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
| 03:19:20 | → | hyiltiz joins (~quassel@31.220.5.250) |
| 03:22:00 | × | hendursaga quits (~weechat@user/hendursaga) (Ping timeout: 276 seconds) |
| 03:22:05 | → | hendursa1 joins (~weechat@user/hendursaga) |
| 03:23:49 | → | xsperry joins (~as@user/xsperry) |
| 03:26:25 | × | waleee quits (~waleee@h-98-128-228-119.na.cust.bahnhof.se) (Ping timeout: 252 seconds) |
| 03:39:33 | × | zebrag quits (~chris@user/zebrag) (Remote host closed the connection) |
| 03:46:34 | → | lavaman joins (~lavaman@98.38.249.169) |
| 03:51:10 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 260 seconds) |
| 04:01:55 | × | hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 265 seconds) |
| 04:07:07 | × | juhp quits (~juhp@111.65.68.133) (Read error: Connection reset by peer) |
| 04:07:38 | × | brettgilio quits (~brettgili@x-node.gq) (Quit: Ping timeout (120 seconds)) |
| 04:08:10 | → | brettgilio joins (~brettgili@x-node.gq) |
| 04:11:33 | → | falafel joins (~falafel@2603-8000-d800-688c-753f-04f5-7eeb-6eb7.res6.spectrum.com) |
| 04:17:21 | → | hyiltiz joins (~quassel@31.220.5.250) |
| 04:21:18 | × | falafel quits (~falafel@2603-8000-d800-688c-753f-04f5-7eeb-6eb7.res6.spectrum.com) (Ping timeout: 268 seconds) |
| 04:27:21 | → | falafel joins (~falafel@2603-8000-d800-688c-753f-04f5-7eeb-6eb7.res6.spectrum.com) |
| 04:34:44 | × | seventhCrow quits (crow@gateway/vpn/protonvpn/seventhcrow) (Quit: WeeChat 3.2.1) |
| 04:36:48 | → | ArctVaulMarsHMPJ joins (~pjetcetal@2.95.253.167) |
| 04:37:04 | × | ArctVaulMarsHMPJ quits (~pjetcetal@2.95.253.167) (Read error: Connection reset by peer) |
| 04:38:28 | → | vonfry joins (~user@116.236.75.238) |
| 04:41:05 | <Axman6> | @pl (\s -> (,s) <$> ux) |
| 04:41:05 | <lambdabot> | (line 1, column 10): |
| 04:41:05 | <lambdabot> | unexpected ',' |
| 04:41:05 | <lambdabot> | expecting expression |
| 04:41:16 | <Axman6> | @pl (\s -> (\x -> (x,s)) <$> ux) |
| 04:41:16 | <lambdabot> | (<$> ux) . flip (,) |
| 04:41:22 | <Axman6> | gross |
| 04:41:38 | <Axman6> | @pl (\s -> fmap (\x -> (x,s)) ux) |
| 04:41:38 | <lambdabot> | flip fmap ux . flip (,) |
| 04:41:43 | <Axman6> | Also gross |
| 04:45:40 | × | falafel quits (~falafel@2603-8000-d800-688c-753f-04f5-7eeb-6eb7.res6.spectrum.com) (Ping timeout: 240 seconds) |
| 04:51:54 | → | neo1 joins (~neo3@cpe-292712.ip.primehome.com) |
| 04:52:18 | × | hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 260 seconds) |
| 04:57:26 | → | mikoto-chan joins (~mikoto-ch@83.137.2.251) |
| 05:08:43 | × | mikoto-chan quits (~mikoto-ch@83.137.2.251) (Ping timeout: 252 seconds) |
| 05:11:39 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 05:15:59 | × | Cajun quits (~Cajun@user/cajun) (Ping timeout: 256 seconds) |
| 05:17:15 | → | falafel joins (~falafel@2603-8000-d800-688c-753f-04f5-7eeb-6eb7.res6.spectrum.com) |
| 05:19:30 | × | martin02 quits (~silas@141.84.69.76) (Ping timeout: 260 seconds) |
| 05:21:10 | × | machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 240 seconds) |
| 05:21:31 | × | doyougnu quits (~user@c-73-25-202-122.hsd1.or.comcast.net) (Ping timeout: 268 seconds) |
| 05:22:08 | × | falafel quits (~falafel@2603-8000-d800-688c-753f-04f5-7eeb-6eb7.res6.spectrum.com) (Ping timeout: 268 seconds) |
| 05:25:34 | → | _ht joins (~quassel@82-169-194-8.biz.kpn.net) |
| 05:27:57 | → | dschrempf joins (~dominik@070-207.dynamic.dsl.fonira.net) |
| 05:28:26 | → | vysn joins (~vysn@user/vysn) |
| 05:37:06 | × | vysn quits (~vysn@user/vysn) (Ping timeout: 260 seconds) |
| 05:38:15 | <vaibhavsagar[m]> | Does anyone know why `fail "<errormsg>" o` is valid in GHC pre-8.8? https://nbviewer.jupyter.org/github/vaibhavsagar/notebooks/blob/a7d0a787c9757778505d8458b4e2318fc653ccf3/aeson-fail/AesonFail.ipynb |
| 05:38:41 | → | vysn joins (~vysn@user/vysn) |
| 05:38:49 | <vaibhavsagar[m]> | my colleague thinks it's because `fail` was part of `Monad` then, which means there was a `fail` instance for `((->) r)` |
| 05:38:50 | <awpr> | probably `(->) a` Monad instance? |
| 05:39:00 | <awpr> | yeah, that |
| 05:39:05 | <vaibhavsagar[m]> | it's fixed in 8.8 onwards: https://nbviewer.jupyter.org/github/vaibhavsagar/notebooks/blob/ee7e1756137e6c7f0a5744b0144203b34867a2bd/aeson-fail/AesonFailGHC884.ipynb |
| 05:39:27 | <vaibhavsagar[m]> | okay, I lost a day or two to it at work since we're on an old GHC |
| 05:39:55 | <vaibhavsagar[m]> | but I've been nudging us to upgrade so more evidence that we should is good I guess |
| 05:41:31 | <vaibhavsagar[m]> | also I'm really proud of that notebook, I used a different version of Aeson than the one that was used to build IHaskell and it still worked because I made some changes to how IHaskell is packaged with Nix just a week ago |
| 05:42:52 | → | michalz joins (~michalz@185.246.204.37) |
| 05:43:38 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 05:45:50 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
| 05:46:54 | × | zmt00 quits (~zmt00@user/zmt00) (Ping timeout: 260 seconds) |
| 05:50:01 | × | theang quits (~theang@fef109.internetdsl.tpnet.pl) (Ping timeout: 252 seconds) |
| 05:50:16 | → | theang joins (~theang@2a00:f41:5866:e08:671b:b01e:3ccd:22d3) |
| 05:52:50 | → | hyiltiz joins (~quassel@31.220.5.250) |
| 05:55:40 | × | tommd quits (~tommd@75-164-130-101.ptld.qwest.net) (Ping timeout: 240 seconds) |
| 06:01:21 | → | chele joins (~chele@user/chele) |
| 06:02:33 | → | Akronymus joins (~Akronymus@85.118.189.59) |
| 06:02:39 | ← | Akronymus parts (~Akronymus@85.118.189.59) () |
| 06:05:39 | × | dschrempf quits (~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 265 seconds) |
| 06:06:06 | × | tomjaguarpaw quits (~tom@li367-225.members.linode.com) (Quit: Lost terminal) |
| 06:09:01 | → | Gurkenglas joins (~Gurkengla@dslb-002-207-014-195.002.207.pools.vodafone-ip.de) |
| 06:12:54 | × | son0p quits (~ff@181.136.122.143) (Ping timeout: 265 seconds) |
| 06:13:22 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 06:15:19 | × | hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 265 seconds) |
| 06:19:16 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 06:19:29 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 268 seconds) |
| 06:20:13 | × | _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection) |
| 06:22:37 | → | dschrempf joins (~dominik@070-207.dynamic.dsl.fonira.net) |
| 06:23:39 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 06:28:22 | × | bontaq quits (~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 265 seconds) |
| 06:28:33 | → | martin02 joins (~silas@141.84.69.76) |
| 06:29:41 | × | Kaiepi quits (~Kaiepi@156.34.44.192) (Ping timeout: 252 seconds) |
| 06:30:54 | → | ubert joins (~Thunderbi@178.115.60.138.wireless.dyn.drei.com) |
| 06:31:28 | → | ubert1 joins (~Thunderbi@178.115.60.138.wireless.dyn.drei.com) |
| 06:33:36 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
| 06:33:40 | × | renzhi quits (~xp@2607:fa49:6500:b100::5845) (Ping timeout: 240 seconds) |
| 06:34:27 | × | vonfry quits (~user@116.236.75.238) (Quit: ERC (IRC client for Emacs 27.2)) |
| 06:38:27 | → | hyiltiz joins (~quassel@31.220.5.250) |
| 06:40:25 | × | shriekingnoise quits (~shrieking@186.137.144.80) (Quit: Quit) |
| 06:43:53 | → | dhouthoo joins (~dhouthoo@178-117-36-167.access.telenet.be) |
| 06:45:40 | → | renzhi joins (~xp@2607:fa49:6500:b100::1d9d) |
| 06:47:24 | → | ephemient joins (uid407513@id-407513.lymington.irccloud.com) |
| 06:48:52 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 07:01:31 | → | mc47 joins (~mc47@xmonad/TheMC47) |
| 07:02:34 | → | lavaman joins (~lavaman@98.38.249.169) |
| 07:05:00 | → | haykam2 joins (~haykam@static.100.2.21.65.clients.your-server.de) |
| 07:05:04 | × | haykam1 quits (~haykam@static.100.2.21.65.clients.your-server.de) (Read error: Connection reset by peer) |
| 07:05:11 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 07:05:20 | → | lbseale_ joins (~lbseale@user/ep1ctetus) |
| 07:05:25 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 07:06:58 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 252 seconds) |
| 07:08:29 | × | lbseale quits (~lbseale@user/ep1ctetus) (Ping timeout: 265 seconds) |
| 07:11:59 | → | jstolarek joins (~jstolarek@ers4.neoplus.adsl.tpnet.pl) |
| 07:13:16 | → | vaucouleur joins (~vaucouleu@176.124.42.130) |
| 07:14:05 | × | slowButPresent quits (~slowButPr@user/slowbutpresent) (Read error: Connection reset by peer) |
| 07:14:27 | → | kenran joins (~kenran@b2b-37-24-119-190.unitymedia.biz) |
| 07:16:59 | <kenran> | How do you usually decide between different forms of encoding errors, like Either MyError a vs MonadError MyError a vs MonadFail vs ...? My problem: I'm writing a function in a library that I will then be using in another project. The project uses polysemy, but I still don't want to just use Polysemy.Error in the library. |
| 07:17:20 | <kenran> | I often stumble over how to best glue together all these different mechanisms for failure in the final project |
| 07:17:52 | <kenran> | There's so much work happening in that regard that it's hard to trust blog posts and such from, like, 2016 |
| 07:19:34 | <kenran> | One concrete question: Is there a tradeoff to using MonadError e over Either e? MonadError looks strictly more powerful + flexible to mee |
| 07:20:06 | → | Kaiepi joins (~Kaiepi@156.34.44.192) |
| 07:20:07 | ← | xstill parts (~xstill@fimu/xstill) () |
| 07:21:17 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 07:22:28 | <dminuoso> | MonadError generalizes IO exceptions. |
| 07:22:46 | <dminuoso> | It's not more flexible or powerful, it's orthogonal |
| 07:23:03 | <dminuoso> | Generally the state of "how to do errors" in Haskell is very mixed, there's no general canonical way |
| 07:23:46 | <dminuoso> | MonadFail otoh is the interface that gets invoked on pattern match failures in do-notation |
| 07:23:48 | <dminuoso> | Like: |
| 07:24:21 | <dminuoso> | `do F a <- expr; ...` calls fail if the bind fails to match the pattern `F a` |
| 07:24:55 | × | hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 265 seconds) |
| 07:25:18 | <dminuoso> | Sadly MonadFail gets reused for raising errors in monads, an interface that it's inappropriate, especially because the passed String might not even be representable. |
| 07:25:25 | <dminuoso> | For example in Maybe the passed String is simply.... ignored. |
| 07:25:41 | <dminuoso> | And in IO it picks some exception you probably would not want. |
| 07:27:09 | <kenran> | dminuoso: thanks, that explains the MonadFail usage I've seen but not understood. I knew about the pattern matching failures, but I've seen it used as an easy way to get compatible interfaces to lots of stuff |
| 07:27:18 | <dminuoso> | Or actually MonadError is not really a generalization of Exception, sorry that was wrong. Its an odd breed. |
| 07:27:21 | <dminuoso> | MonadThrow generalizes throwIO |
| 07:27:57 | <dminuoso> | kenran: My personal favourite for when there's IO in the mix, is hierarchial IO exceptions. |
| 07:28:13 | <dminuoso> | It's composable and gives fine control over callers in what kind of exceptions they want to capture. |
| 07:28:18 | <kenran> | Like, having a library function return `m Int`, with m having the MonadFail constraint, and then being able to call this in some fromJSON |
| 07:28:35 | <kenran> | dminuoso: that's where I want to to land, just not with IOExceptions but Polysemy.Error, if that makes sense |
| 07:28:50 | <dminuoso> | I dont know Polysemy realyl |
| 07:29:18 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 07:29:34 | × | xff0x quits (~xff0x@2001:1a81:52ad:c900:aed8:d538:dc44:ee0) (Ping timeout: 252 seconds) |
| 07:29:42 | <kenran> | Polysemy.Error is basically the equivalent of the MonadError in mtl, iiuc. You get throw and catch in the effect monad's context |
| 07:30:32 | → | xff0x joins (~xff0x@2001:1a81:52ad:c900:b704:3c1b:6bea:6e62) |
| 07:30:46 | <kenran> | dminuoso: so just that I get you right: you have some fine-tuned data types for exceptions that you throw in "their" context, and the callers can decide whether to just keep that constraint or "widen" it, or transform it? |
| 07:31:01 | <kenran> | Like, the e in MonadError e changes on the way "up" |
| 07:31:11 | <dminuoso> | kenran: do you know how Java or C++ style exceptions work wrt to class hierarchies? |
| 07:31:18 | <dminuoso> | And being able to "catch some class of exceptions"? |
| 07:31:26 | <kenran> | yeah |
| 07:31:31 | <dminuoso> | We can do exactly the same in Haskell |
| 07:31:34 | <kenran> | ahhh, I see what I missed |
| 07:31:38 | × | funsafe quits (~funsafe@2601:1c1:4200:e53:2875:5507:42e4:4e14) (Ping timeout: 268 seconds) |
| 07:32:11 | <kenran> | I was thinking of just one tree of exception types, but that misses the point with "I can catch this one error, but let this other one bubble up" |
| 07:32:14 | <dminuoso> | The reason I like it, is because it's such a simple and yet generic interface, doesn't require me to interface with libraries like mtl to even interact with your library, gives me good control over what I care about.. |
| 07:32:23 | <dminuoso> | But it only does work when there's IO :) |
| 07:32:39 | <dminuoso> | Well, you can still do that with exceptions too |
| 07:32:41 | <dminuoso> | % :t cathces |
| 07:32:41 | <yahb> | dminuoso: ; <interactive>:1:1: error:; * Variable not in scope: cathces; * Perhaps you meant one of these: `catches' (imported from Control.Monad.Error.Lens), `catches' (imported from Control.Exception) |
| 07:32:43 | <dminuoso> | % :t catches |
| 07:32:43 | <yahb> | dminuoso: ; <interactive>:1:1: error:; Ambiguous occurrence `catches'; It could refer to; either `Control.Monad.Error.Lens.catches', imported from `Control.Monad.Error.Lens'; or `Control.Exception.catches', imported from `Control.Exception' |
| 07:32:50 | <dminuoso> | % :t Control.Exception.catches |
| 07:32:50 | <yahb> | dminuoso: IO a -> [Control.Exception.Handler a] -> IO a |
| 07:33:01 | <dminuoso> | Here you can specify a list of exceptions you care about, everything else bubbles through,. |
| 07:33:11 | <kenran> | dminuoso: yeah, that's the problem :D I wonder if it's possible with Polysemy to have multiple Error constraints that I can handle separately. Have to try that |
| 07:33:17 | <dminuoso> | And best of all, you can mix this with what I mentioned above. "Catch this class of exceptions, and that other tree of exceptions, let everything else go through" |
| 07:33:29 | <dminuoso> | The only problem is, unlike polysemy, there's no communication of either in the type system. |
| 07:33:43 | <dminuoso> | But there's no silver bullet in Haskell. |
| 07:33:54 | <kenran> | Right |
| 07:34:11 | <kenran> | The only reasonable goal for me seems to be to get consistent with how we do error handling |
| 07:34:19 | <kenran> | Right now it's a mess of different stuff |
| 07:34:38 | <dminuoso> | I've largely settled on IO exceptions, but then again much of our stuff is IO centric.. |
| 07:34:58 | <dminuoso> | Also, since Im a big fan of MonadUnliftIO, I dont have many other choices... |
| 07:35:00 | <dminuoso> | :p |
| 07:35:01 | × | ubert quits (~Thunderbi@178.115.60.138.wireless.dyn.drei.com) (Ping timeout: 252 seconds) |
| 07:35:01 | ubert1 | is now known as ubert |
| 07:35:20 | <kenran> | I really like Polysemy so far, it's like mtl-style (which somehow resonates with me, probably from my OO background), but I'm not sure yet whether I really want it to be present in the "pure library code" |
| 07:35:37 | <kenran> | I know some package authors have separate packages for the different paradigms |
| 07:36:06 | <kenran> | For instance co-log, which has co-log-core, co-log (mtl-style), and co-log-polysemy |
| 07:36:52 | <kenran> | Thanks for all the input, really interesting stuff dminuoso |
| 07:37:26 | <dminuoso> | After a long while of Haskell, I've settled on simpler haskell without too many type level tricks - at least on the external interface. |
| 07:38:21 | <dminuoso> | kenran: So if I understand polysemy correctly, one thing that would immediately annoy me is that '[A, B] and '[B, A] would be incompatible |
| 07:38:49 | <dminuoso> | So code doesn't freely compose, as you might have to shuffle the composition order around to make polysemy happy |
| 07:39:53 | → | jtomas joins (~jtomas@95.red-88-11-64.dynamicip.rima-tde.net) |
| 07:42:00 | × | betelgeuse quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 07:42:18 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 07:43:03 | → | betelgeuse joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 07:44:55 | → | kuribas joins (~user@ptr-25vy0i7x8rtrl519tor.18120a2.ip6.access.telenet.be) |
| 07:47:32 | → | max22- joins (~maxime@2a01cb0883359800999b760ae95fc90b.ipv6.abo.wanadoo.fr) |
| 07:50:28 | → | fendor_ joins (~fendor@78-2-181-45.adsl.net.t-com.hr) |
| 07:51:35 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:854d:ae90:d2a1:51ab) (Remote host closed the connection) |
| 07:52:29 | <kenran> | dminuoso: that's correct in principle, but the way you actually use it in your domain function it doesn't pose a problem. |
| 07:53:03 | <kenran> | dminuoso: You write your functions like this: Members '[Eff1, PersistFoo, ...] r => Int -> Sem r String |
| 07:53:48 | → | funsafe joins (~funsafe@2601:1c1:4200:e53:2875:5507:42e4:4e14) |
| 07:53:50 | <kenran> | And in the Members constraint the order is not important. Once you get to actually interpreting the effects, of course, that's where you have to pay attention to the actual order, so yes, that's the one point where it can be a bit more tricky |
| 07:53:58 | × | econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity) |
| 07:54:47 | → | gehmehgeh joins (~user@user/gehmehgeh) |
| 07:54:51 | <kenran> | As with everything, one has to pay attention to not have like 7+ effects "active" all the time, which is where I sometimes struggle |
| 07:55:23 | × | notzmv quits (~zmv@user/notzmv) (Read error: Connection reset by peer) |
| 07:56:12 | <kenran> | In general I have that problem with mtl-style too, but I feel like where Polysemy exceeds over encoding your effects as type classes directly is at this point: actually removing/reinterpreting an effect at a certain point in your code without having to choose a concrete type, if that makes sense |
| 07:57:00 | <kenran> | I'm still not experienced enough with it and it's only a vague feeling until now, though. More or less a "let's use it and see where it leads us" |
| 07:57:23 | <kenran> | I love that we're actually encouraged to do soo at this job |
| 07:59:24 | → | vpan joins (~vilius@212.117.1.172) |
| 08:01:56 | → | ub joins (~Thunderbi@178.115.60.138.wireless.dyn.drei.com) |
| 08:03:29 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 08:04:08 | → | cfricke joins (~cfricke@user/cfricke) |
| 08:04:27 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer) |
| 08:05:02 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:f81a:6736:1170:5e1c) |
| 08:05:55 | → | hendursaga joins (~weechat@user/hendursaga) |
| 08:08:43 | × | theang quits (~theang@2a00:f41:5866:e08:671b:b01e:3ccd:22d3) (Ping timeout: 252 seconds) |
| 08:09:09 | → | theang joins (~theang@fef109.internetdsl.tpnet.pl) |
| 08:09:16 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:f81a:6736:1170:5e1c) (Ping timeout: 252 seconds) |
| 08:09:18 | × | hendursa1 quits (~weechat@user/hendursaga) (Ping timeout: 276 seconds) |
| 08:11:12 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:a20c:3ab6:8175:e3ff) |
| 08:11:57 | <kuribas> | I guess that's why ReaderT r IO is so popular. No need to juggle effects around. |
| 08:12:01 | → | hyiltiz joins (~quassel@31.220.5.250) |
| 08:13:35 | <dminuoso> | Yes, and you can have MonadUnliftIO too. |
| 08:14:00 | <kuribas> | It's funny how we create all these fancy effect systems, and we end up having mutable state and exceptions again :) |
| 08:14:14 | <dminuoso> | Well I certainly understand why people want effect systems. |
| 08:14:22 | <dminuoso> | But in Haskell they feel bolted on more often than not. |
| 08:14:25 | <kuribas> | But being able to "see" the state is already a big advantage IMO. |
| 08:14:43 | <dminuoso> | No effect system in Haskell has really convinced me so far. |
| 08:14:44 | <kuribas> | dminuoso: the way I use the effect systems is encapsulated in functionality. |
| 08:15:01 | <kuribas> | as in, they are an implementation detail of whatever I want to do. |
| 08:15:12 | <kuribas> | Not a big architectural design feature. |
| 08:15:35 | → | oxide joins (~lambda@user/oxide) |
| 08:17:09 | <kenran> | I think I've let the easy testability of polysemy-based code convince me a bit too easily ("changing your interpreter for a test is just using another function", but I've yet to actually use it as much as I'd like :D |
| 08:17:44 | → | allbery_b joins (~geekosaur@xmonad/geekosaur) |
| 08:17:44 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b))) |
| 08:17:47 | allbery_b | is now known as geekosaur |
| 08:18:02 | → | benin036932301 joins (~benin@183.82.205.89) |
| 08:18:48 | <kuribas> | Not having global state is the biggest advantage. |
| 08:19:03 | <kuribas> | or better, "invisible" global state. |
| 08:19:17 | <dminuoso> | It's all a trade off. Sometimes I think people spend way too much time and effort in restructuring with effect systems on the misbelief, that being able to "plug in different interpreters" will yield valuable net results. |
| 08:19:35 | <kenran> | dminuoso: yep, that's definitely true |
| 08:19:38 | <dminuoso> | It feels it comes at the price of readability and maintainability. When you need to become a polysemy expert just to interact and deal with the code, Im not sure much was won. |
| 08:21:05 | <kenran> | Honestly, the same goes for me trying to write mtl/tagless-final style code, too. My experience with polysemy in particular was that it improves upon that style, but if the code I transform is already wrongly based on the (dis)belief you mention, there's definitely nothing won, and time lost |
| 08:21:17 | <dminuoso> | It reminds me how some projects spent endless amount of time on pleasing some coverage tester, convincing themselves that having 100% coverage means there's less bugs. |
| 08:21:31 | → | juhp joins (~juhp@111.65.68.133) |
| 08:21:33 | <dminuoso> | I wonder whether this is just the Haskell-variant of that. |
| 08:21:42 | <kenran> | It might just be |
| 08:22:15 | <kenran> | Lots of the bugs that are not prevented by coverage alone are of the kind that is harder to produce in Haskell when leveraging the type system well |
| 08:22:55 | × | benin036932301 quits (~benin@183.82.205.89) (Ping timeout: 265 seconds) |
| 08:23:53 | × | dtman34 quits (~dtman34@c-73-62-246-247.hsd1.mn.comcast.net) (Ping timeout: 265 seconds) |
| 08:34:54 | × | chele quits (~chele@user/chele) (Remote host closed the connection) |
| 08:35:54 | → | chele joins (~chele@user/chele) |
| 08:36:07 | × | hnOsmium0001 quits (uid453710@id-453710.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
| 08:40:58 | × | vaucouleur quits (~vaucouleu@176.124.42.130) (Read error: Connection reset by peer) |
| 08:41:16 | → | vaucouleur joins (~vaucouleu@176.124.42.130) |
| 08:43:47 | × | jstolarek quits (~jstolarek@ers4.neoplus.adsl.tpnet.pl) (Quit: leaving) |
| 08:43:59 | → | jstolarek joins (~jstolarek@ers4.neoplus.adsl.tpnet.pl) |
| 08:44:34 | × | jstolarek quits (~jstolarek@ers4.neoplus.adsl.tpnet.pl) (Client Quit) |
| 08:44:46 | → | jstolarek joins (~jstolarek@ers4.neoplus.adsl.tpnet.pl) |
| 08:46:06 | × | jstolarek quits (~jstolarek@ers4.neoplus.adsl.tpnet.pl) (Client Quit) |
| 08:46:18 | → | jstolarek joins (~jstolarek@ers4.neoplus.adsl.tpnet.pl) |
| 08:49:53 | → | dtman34 joins (~dtman34@c-73-62-246-247.hsd1.mn.comcast.net) |
| 08:52:06 | → | favonia joins (~favonia@user/favonia) |
| 08:52:53 | × | hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 265 seconds) |
| 08:55:13 | → | hyiltiz joins (~quassel@31.220.5.250) |
| 08:56:05 | × | jonathanx quits (~jonathan@dyn-8-sc.cdg.chalmers.se) (Remote host closed the connection) |
| 08:56:23 | → | jonathanx joins (~jonathan@dyn-8-sc.cdg.chalmers.se) |
| 08:58:27 | × | jespada quits (~jespada@2803:9800:9842:7a62:95e0:d2b5:ae88:676) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 09:00:06 | × | fabfianda[m] quits (~fabfianda@2001:470:69fc:105::6db) (Quit: You have been kicked for being idle) |
| 09:00:54 | <maerwald> | dminuoso: polysemy is also very slow |
| 09:01:09 | <maerwald> | and has questionable semantics |
| 09:01:39 | <maerwald> | because: effects systems are hard |
| 09:01:51 | <dminuoso> | The real solution is to have software without errors. Then you dont need error effects. |
| 09:01:58 | <maerwald> | and yeah, I think this is hype driven development in haskell |
| 09:02:00 | <dminuoso> | It's why bottom was invented. |
| 09:02:05 | <dminuoso> | Always error free. :-) |
| 09:02:18 | <dminuoso> | "hype driven development" |
| 09:02:22 | <dminuoso> | Interesting expression, had not heard about that |
| 09:02:25 | × | dschrempf quits (~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.2.1) |
| 09:02:34 | <maerwald> | there are several blog posts about it (I think bashing NoSQL) |
| 09:03:31 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
| 09:04:00 | <dminuoso> | NoSQL is an interesting proposition. I stand by my opinion that it's an emergent technology of folks thinking "Who cares about well-principled databases founded on research and academia, you only live once!" for most people. Who cares about transactional safety. |
| 09:04:25 | <dminuoso> | The fact that MongoDB, not until too long ago crashed and corrupted if the dataset exceeded 4GiB on 32bit systems is just telling.. |
| 09:04:40 | <maerwald> | Afaiu NoSQL was an attempt to solve a very specific performance problem with relational databases. It wasn't intended as general purpose technology |
| 09:04:57 | <maerwald> | but then it got hyped and here we are |
| 09:05:11 | <dminuoso> | Sure, though "NoSQL" as a term that comes from that hype. |
| 09:05:20 | <dminuoso> | I mean memcached is also.. "nosql" |
| 09:05:38 | <dminuoso> | Though its not new and hipster enough |
| 09:06:03 | <maerwald> | there's also microservices in town, which is basically "you could have written a library, but that's too easy" |
| 09:06:39 | <maerwald> | "your library needs a database, a protocol and be part of a kubernetes cluster" |
| 09:06:40 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz) |
| 09:06:41 | <dminuoso> | One of our hottest postgresql servers serves roughly 5kTX/s.. during the hottest phase of the day. And that's without even trying hard! |
| 09:06:50 | <dminuoso> | Writing. |
| 09:06:54 | <dminuoso> | Not reading. :-) |
| 09:07:22 | <maerwald> | That's the problem with CTOs looking at "what does facebook/google do" |
| 09:07:29 | <maerwald> | they're solving problems you don't have |
| 09:08:11 | <dminuoso> | Of course. I think there's some hope that if you employ the same technologies as google does, you get as large and rich as google. |
| 09:08:17 | <maerwald> | :D |
| 09:08:50 | → | sim590 joins (~simon@modemcable090.207-203-24.mc.videotron.ca) |
| 09:11:04 | <dminuoso> | It's nothing but an example of cum hoc ergo propter hoc. |
| 09:11:32 | <dminuoso> | (Or maybe its a different fallacy?) |
| 09:12:30 | <maerwald> | I think it's just plain stupidity |
| 09:12:52 | <maerwald> | as plain as white rice (although the latter is more delicious) |
| 09:14:11 | <dminuoso> | White rice is indeed delicious. |
| 09:14:22 | <dminuoso> | Especially if cooked with tahdig. |
| 09:14:28 | <dminuoso> | The only true way to cook rice. |
| 09:15:26 | [exa] | discovers tahdig |
| 09:15:57 | <dminuoso> | [exa]: Good luck on your endaveours, it took me over two years to make perfect tahdig. |
| 09:16:13 | <dminuoso> | And it's not even half as perfect as when my Farsi friends do it. |
| 09:16:16 | <[exa]> | time to rice |
| 09:16:31 | <dminuoso> | :) |
| 09:23:18 | → | waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) |
| 09:26:21 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:b0fa:b428:27dc:59de) |
| 09:27:15 | → | vaucouleur_ joins (~vaucouleu@176.124.42.130) |
| 09:27:46 | → | vaucouleur__ joins (~vaucouleu@176.124.42.130) |
| 09:30:25 | → | fef joins (~thedawn@user/thedawn) |
| 09:30:35 | × | vaucouleur quits (~vaucouleu@176.124.42.130) (Ping timeout: 265 seconds) |
| 09:30:54 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:b0fa:b428:27dc:59de) (Ping timeout: 260 seconds) |
| 09:31:46 | → | vaucouleur joins (~vaucouleu@176.124.42.130) |
| 09:32:06 | × | vaucouleur_ quits (~vaucouleu@176.124.42.130) (Ping timeout: 268 seconds) |
| 09:33:00 | × | vaucouleur__ quits (~vaucouleu@176.124.42.130) (Ping timeout: 265 seconds) |
| 09:34:41 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) |
| 09:38:32 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 09:39:18 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) (Ping timeout: 260 seconds) |
| 09:40:09 | → | pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
| 09:42:39 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
| 09:42:57 | → | wonko joins (~wjc@62.115.229.50) |
| 09:52:02 | × | betelgeuse quits (~betelgeus@94-225-47-8.access.telenet.be) (Quit: Ping timeout (120 seconds)) |
| 09:53:33 | × | neurocyte quits (~neurocyte@user/neurocyte) (Quit: The Lounge - https://thelounge.chat) |
| 09:54:04 | → | betelgeuse joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 09:58:53 | → | neurocyte0 joins (~neurocyte@185.238.253.211) |
| 09:58:53 | × | neurocyte0 quits (~neurocyte@185.238.253.211) (Changing host) |
| 09:58:53 | → | neurocyte0 joins (~neurocyte@user/neurocyte) |
| 09:59:27 | × | betelgeuse quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 10:00:48 | → | betelgeuse joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 10:02:48 | × | arkanoid quits (~arkanoid@2-238-151-49.ip244.fastwebnet.it) (Quit: WeeChat 2.8) |
| 10:08:46 | × | fendor_ quits (~fendor@78-2-181-45.adsl.net.t-com.hr) (Ping timeout: 265 seconds) |
| 10:11:36 | → | yauhsien joins (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) |
| 10:13:12 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds) |
| 10:16:53 | → | jespada joins (~jespada@host244.190-3-30.dynamic.telmex.net.ar) |
| 10:19:33 | × | yauhsien quits (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 10:20:10 | → | yauhsien joins (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) |
| 10:25:07 | × | yauhsien quits (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) (Ping timeout: 252 seconds) |
| 10:25:30 | → | thornAvery joins (~thornAver@2401:c080:1800:4346:5400:3ff:fe2c:c8f8) |
| 10:26:03 | <thornAvery> | anyone got experience with `XMPP`, its failing to build (i think because haskell98 fails too) and im wondering whether its worth figuring out or if i should use something else |
| 10:27:57 | <maerwald> | xmpp? |
| 10:29:00 | → | __monty__ joins (~toonn@user/toonn) |
| 10:29:56 | → | fendor_ joins (~fendor@78-2-181-45.adsl.net.t-com.hr) |
| 10:30:01 | × | zaquest quits (~notzaques@5.128.210.178) (Quit: Leaving) |
| 10:30:39 | × | hannessteffenhag quits (~hannesste@ip4d14ffd8.dynamic.kabel-deutschland.de) (Remote host closed the connection) |
| 10:31:12 | → | zaquest joins (~notzaques@5.128.210.178) |
| 10:32:12 | <thornAvery> | maerwald: https://hackage.haskell.org/package/XMPP |
| 10:34:21 | → | burnsidesLlama joins (~burnsides@client-8-81.eduroam.oxuni.org.uk) |
| 10:35:24 | ← | jakalx parts (~jakalx@base.jakalx.net) (Error from remote client) |
| 10:37:06 | → | burnside_ joins (~burnsides@dhcp168-024.wadham.ox.ac.uk) |
| 10:38:40 | → | enicar joins (~enikar@user/enikar) |
| 10:39:07 | × | enicar quits (~enikar@user/enikar) (Client Quit) |
| 10:41:09 | × | burnsidesLlama quits (~burnsides@client-8-81.eduroam.oxuni.org.uk) (Ping timeout: 265 seconds) |
| 10:41:09 | × | ksu quits (~ksu@user/prtr) (Ping timeout: 265 seconds) |
| 10:50:00 | → | yauhsien joins (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) |
| 10:55:21 | × | yauhsien quits (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) (Ping timeout: 268 seconds) |
| 10:57:57 | × | juhp quits (~juhp@111.65.68.133) (Read error: Connection reset by peer) |
| 11:00:48 | × | betelgeuse quits (~betelgeus@94-225-47-8.access.telenet.be) (Quit: Ping timeout (120 seconds)) |
| 11:00:57 | → | alx741 joins (~alx741@181.196.68.9) |
| 11:02:11 | → | betelgeuse joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 11:04:12 | → | lavaman joins (~lavaman@98.38.249.169) |
| 11:04:21 | → | rawles joins (~o@user/rawles) |
| 11:04:40 | × | fendor_ quits (~fendor@78-2-181-45.adsl.net.t-com.hr) (Ping timeout: 240 seconds) |
| 11:08:17 | × | leah2 quits (~leah@vuxu.org) (Ping timeout: 250 seconds) |
| 11:08:55 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 260 seconds) |
| 11:10:31 | → | AlexNoo_ joins (~AlexNoo@178.34.163.108) |
| 11:12:34 | × | Alex_test quits (~al_test@178.34.162.211) (Ping timeout: 265 seconds) |
| 11:13:01 | × | AlexZenon quits (~alzenon@178.34.162.211) (Ping timeout: 268 seconds) |
| 11:14:02 | × | AlexNoo quits (~AlexNoo@178.34.162.211) (Ping timeout: 260 seconds) |
| 11:18:04 | → | Alex_test joins (~al_test@178.34.163.108) |
| 11:18:30 | → | AlexZenon joins (~alzenon@178.34.163.108) |
| 11:22:07 | AlexNoo_ | is now known as AlexNoo |
| 11:27:57 | → | leah2 joins (~leah@vuxu.org) |
| 11:27:59 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 11:33:10 | × | sim590 quits (~simon@modemcable090.207-203-24.mc.videotron.ca) (Ping timeout: 240 seconds) |
| 11:33:26 | → | Cajun joins (~Cajun@user/cajun) |
| 11:36:04 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) |
| 11:37:07 | → | Tuplanolla joins (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) |
| 11:37:20 | → | sim590 joins (~simon@modemcable090.207-203-24.mc.videotron.ca) |
| 11:40:59 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) (Ping timeout: 268 seconds) |
| 11:43:36 | × | tcard quits (~tcard@p2307053-ipngn17101hodogaya.kanagawa.ocn.ne.jp) (Quit: Leaving) |
| 11:44:47 | → | benin036932301 joins (~benin@183.82.205.89) |
| 11:44:50 | × | sim590 quits (~simon@modemcable090.207-203-24.mc.videotron.ca) (Ping timeout: 260 seconds) |
| 11:48:24 | → | tcard joins (~tcard@p2307053-ipngn17101hodogaya.kanagawa.ocn.ne.jp) |
| 11:49:01 | × | jinsun quits (~quassel@user/jinsun) (Read error: Connection reset by peer) |
| 11:49:49 | × | benin036932301 quits (~benin@183.82.205.89) (Ping timeout: 252 seconds) |
| 11:50:31 | → | jinsun joins (~quassel@user/jinsun) |
| 11:53:13 | → | Phantastes joins (~Phantaste@c-67-173-229-120.hsd1.co.comcast.net) |
| 11:54:36 | × | vpan quits (~vilius@212.117.1.172) (Quit: Leaving.) |
| 11:59:52 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 12:00:35 | × | jonathanx quits (~jonathan@dyn-8-sc.cdg.chalmers.se) (Remote host closed the connection) |
| 12:00:42 | × | __monty__ quits (~toonn@user/toonn) (Ping timeout: 260 seconds) |
| 12:00:53 | → | jonathanx joins (~jonathan@dyn-8-sc.cdg.chalmers.se) |
| 12:02:58 | × | max22- quits (~maxime@2a01cb0883359800999b760ae95fc90b.ipv6.abo.wanadoo.fr) (Ping timeout: 268 seconds) |
| 12:09:16 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
| 12:09:55 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 12:12:51 | → | shapr joins (~user@pool-100-36-247-68.washdc.fios.verizon.net) |
| 12:16:10 | × | vysn quits (~vysn@user/vysn) (Ping timeout: 240 seconds) |
| 12:19:22 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 12:21:41 | × | waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 268 seconds) |
| 12:22:48 | → | waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) |
| 12:27:51 | × | dsrt^ quits (~dsrt@68.101.54.227) (Ping timeout: 268 seconds) |
| 12:29:05 | × | yaroot quits (~yaroot@6.3.30.125.dy.iij4u.or.jp) (Quit: The Lounge - https://thelounge.chat) |
| 12:29:58 | → | yaroot joins (~yaroot@6.3.30.125.dy.iij4u.or.jp) |
| 12:31:01 | → | dsrt^ joins (~dsrt@68.101.54.227) |
| 12:31:15 | × | dsrt^ quits (~dsrt@68.101.54.227) (Remote host closed the connection) |
| 12:37:25 | → | __monty__ joins (~toonn@user/toonn) |
| 12:38:21 | <ProofTechnique> | maerwald: (on microservices) I'm working on exactly such a platform right now, and I've set it as a team principle that all our services are just libraries with a thin executable wrapper that depends on the library. I don't want our business logic to ever understand anything about the system, it just needs to transform data |
| 12:38:58 | <maerwald> | ProofTechnique: why do you have microservices in the first place? |
| 12:39:39 | <ProofTechnique> | Because an architect said so, and because we need to replace the tangled Groovy monolith we're currently using :D |
| 12:39:52 | <maerwald> | sounds like a poor choice then |
| 12:41:13 | <ProofTechnique> | The main nice thing is that it's a lot easier to onboard _other people's_ services. As long as they can read the auth headers we decorate requests with, they can ignore authn/authz logic in their own code |
| 12:42:01 | × | kimjetwav quits (~user@2607:fea8:235f:9730:162d:fa69:3f15:a6a5) (Remote host closed the connection) |
| 12:42:37 | <ProofTechnique> | As compared to "make someone unfamiliar with the monolith hack their new functionality into it and make the trashball worse" |
| 12:42:52 | → | yauhsien joins (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) |
| 12:43:26 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
| 12:44:17 | <ProofTechnique> | And it has been significantly easier to get an active-active configuration working consistently across our environments without a bunch of bookkeeping |
| 12:47:07 | × | yauhsien quits (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) (Ping timeout: 245 seconds) |
| 12:47:20 | <ProofTechnique> | In good news, if we ever need to collapse down some of the services into beefier ones, it's just shuffling library imports :) |
| 12:48:01 | <dminuoso> | Microservices is that other thing that people adopt for no good reason, and later dont even realize that they're regretting it.. |
| 12:48:28 | <dminuoso> | While most of the hype has passed, it's still a very popular practice. |
| 12:49:19 | <kuribas> | people knowing what to regret would be an advancement for many teams :) |
| 12:49:33 | <ProofTechnique> | I'm being a little facetious, we do have good reasons (that are very boring), I just like to blame the architect because their initial recommendation was "just do it as a bunch of lambdas" :D |
| 12:49:58 | → | fendor_ joins (~fendor@78-2-181-45.adsl.net.t-com.hr) |
| 12:50:33 | <kuribas> | ProofTechnique: if the services are just libraries, then why not pack it into a single executable? |
| 12:51:11 | <ldlework> | dminuoso: I have found that microservice regret is a function of a team's infrastructure/orchestration prowess. |
| 12:51:55 | <dminuoso> | ldlework: And what kind of function is that? |
| 12:52:57 | <ldlework> | It's just to say, that the more handedness (in knowledge or automation) in orchestration, the less associated pain with microservices there is. |
| 12:53:27 | <ldlework> | Developers seem fine making services and making them use each other's APIs. It's the operational complexity that usually degrades returns (in my experience). |
| 12:53:42 | → | max22- joins (~maxime@2a01cb0883359800445667b961f4f8f5.ipv6.abo.wanadoo.fr) |
| 12:53:45 | × | hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 268 seconds) |
| 12:53:56 | <dminuoso> | ldlework: that's a myth. some of the biggest issues of microservices dont relate to orchestration. |
| 12:54:29 | <ldlework> | OK, maybe you have some research paper, I only have a couple decades of experience to go off. |
| 12:54:34 | → | hyiltiz joins (~quassel@31.220.5.250) |
| 12:54:37 | <ProofTechnique> | Multiple languages across teams, multiple on-prem and cloud resources that need consistent access patterns, and we don't have any dedicated ops people since I shifted into product development :D |
| 12:54:58 | <dminuoso> | Not sure what that snarky comment was supposed to convey, but okay. |
| 12:55:18 | <ldlework> | dminuoso: not sure what an offhanded rejection of someone else's premise as "myth" was supposed to convey, but okay. |
| 12:55:28 | <ProofTechnique> | And there's just decades of legacy that needs to be enclosed so that we don't have to think so damn hard about it just to barf JSON at each other all over the place |
| 12:56:18 | <ProofTechnique> | At the end of the day, it's not my money, so I just write good software and automation and don't worry too much about how it actually gets run |
| 12:58:03 | <kuribas> | I think service architecture is good, but you want to maximise service size, not minimize it. |
| 12:58:38 | <kuribas> | Unless you have needs that *require* it. |
| 12:58:47 | × | hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 245 seconds) |
| 12:59:07 | <maerwald> | ProofTechnique: there are very few reasons for microservices, technically |
| 12:59:21 | <maerwald> | all of them have nothing to do with architecture |
| 12:59:59 | <maerwald> | I know of only 2 good ones: 1. you need to scale microservices differently (e.g. one needs more CPU, the other ram, the other better latency, ...) |
| 13:00:34 | → | pbrisbin joins (~patrick@pool-173-49-147-250.phlapa.fios.verizon.net) |
| 13:00:42 | <maerwald> | 2. someone wants to verify your microservice formally/semi-formally (happens in online casino business for the RNG... it has to be a microservice) |
| 13:01:28 | <ProofTechnique> | We do need to scale them differently, so box ticked :) |
| 13:02:12 | <dminuoso> | Microservices are usually not a technical solution to a problem, but an emergent cultural phenomenon in companies. |
| 13:02:29 | <dminuoso> | They tend to be modelled after the organization |
| 13:02:55 | → | hyiltiz joins (~quassel@31.220.5.250) |
| 13:03:59 | <ldlework> | There's different ways of looking at things depending on what you are aiming to optimize for. In the reductio of optimizing for scaling, you'd segregate your overall system specficially by utilization. But concerns abound you end up balancing what you're optimizing for. Microservices sounds like a paradigm in which you blindly optimize for concerns that demand microserivces, but really it is the |
| 13:04:01 | <ldlework> | study of small unit services so there is something known to say in cases in which small services are the answer to the optimizations you're looking for. |
| 13:04:09 | <kuribas> | we rejected some candidates because in the interview they asked us why we didn't grow with the time, and used cubernetes :) |
| 13:04:27 | <maerwald> | dminuoso: true, someone once said the architecture is merely a reflection of the communication |
| 13:04:36 | <kuribas> | We use decade old unix technology, and it still works fine :) |
| 13:04:56 | <gehmehgeh> | kuribas: I'm looking for job, can I apply? :D |
| 13:05:08 | <dminuoso> | maerwald: And there's a lot of merit in it with microservices. Each team can monitor its own services, responsible for their deployment, alerting, defined interfaces, etc. |
| 13:05:22 | <dminuoso> | But then again, this can as easily happen inside a given program |
| 13:05:26 | <ProofTechnique> | For my part, if we didn't do it this way then I wouldn't be able to write services in Haskell :D |
| 13:05:29 | <maerwald> | dminuoso: yeah... and deployment is SO MUCH FUN |
| 13:05:30 | <dminuoso> | Where you have some defined module structure how some other part will interface. |
| 13:05:38 | <ldlework> | ProofTechnique: heh |
| 13:05:40 | <maerwald> | because suddenly the entire armada of microservices need to be in sync |
| 13:05:41 | <kuribas> | gehmehgeh: well, currently we don't need backend developers, only a senior devops guy. |
| 13:05:43 | <maerwald> | BOOM |
| 13:05:54 | <ldlework> | > function of orchestration prowess |
| 13:05:56 | <lambdabot> | <hint>:1:10: error: parse error on input ‘of’ |
| 13:05:57 | ldlework | shrugs |
| 13:05:59 | → | acidjnk joins (~acidjnk@p200300d0c703cb83089449f0c9186ff3.dip0.t-ipconnect.de) |
| 13:06:01 | × | cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.2.1) |
| 13:06:05 | <maerwald> | then you end up doing multi-stage deployments and all sorts of things |
| 13:06:10 | <dminuoso> | ldlework: At what benefit, though? |
| 13:06:17 | <kuribas> | gehmehgeh: and a junior one. |
| 13:06:22 | <dminuoso> | You drive up complexity, introduce additional angles in which the entirety of your service can fail.. |
| 13:06:26 | <ldlework> | I feel like I just gave a generalized principle for understanding that |
| 13:06:49 | <dminuoso> | Optimizing for scaling is a problem most software applications dont have. |
| 13:06:55 | <ldlework> | Yes, if you have priorities, you will have to pay for them with costs elsewhere. |
| 13:07:34 | <kuribas> | well, scaling on a single system is good enough for most applications. |
| 13:08:07 | × | mjs2600 quits (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Quit: ZNC 1.8.2 - https://znc.in) |
| 13:08:22 | <ldlework> | Again, treating microservices as a dogmatic paradigm where all you are allowed to do is make microservices, rather than a series of worked out ideas for working with unit services when you happen to need them is a mistake. |
| 13:09:22 | <maerwald> | and there go 80% of your Go programming opportunities :D |
| 13:09:31 | <ProofTechnique> | lol |
| 13:09:32 | → | mjs2600 joins (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) |
| 13:09:33 | <kuribas> | I read about this haskell company that migrated the code from distributed scala running on a several nodes, to a single haskell node, and they saw an *improvement* in performance. |
| 13:09:54 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 13:09:55 | <ldlework> | maerwald: heh yeah, that's not to say some people arnt out there treating it like a paradigm |
| 13:10:08 | <maerwald> | like scrum |
| 13:10:13 | <maerwald> | imagine you do both |
| 13:10:18 | <maerwald> | microservices and scrum |
| 13:10:58 | <ProofTechnique> | .oO(I don't have to imagine) |
| 13:10:59 | <dminuoso> | We have one microservice oriented stack here, but that's done because this particular stack interfaces with at least three separate network regions, and we want high fault taulerance against network failures. So we split it up to have locally running service that could provide local services while the network was down. |
| 13:11:11 | <dminuoso> | Not done out of any religion or scaling, but just out of a strict technical requirement. |
| 13:11:31 | <ldlework> | kuribas: sure, horizontal scaling isn't some universal optimization |
| 13:13:24 | → | fresheyeball joins (~fresheyeb@c-71-237-105-37.hsd1.co.comcast.net) |
| 13:14:59 | <ldlework> | JS is adding a pipeline operator to the language |
| 13:15:15 | <sshine> | besides ->? :-P |
| 13:15:24 | <ldlework> | |> |
| 13:15:32 | <sshine> | JS# |
| 13:15:37 | <ldlework> | actually |
| 13:15:42 | <ldlework> | instead of F# semantics |
| 13:15:48 | <ldlework> | where it just applies a value |
| 13:15:56 | <ldlework> | they are going with a whacky expression based one |
| 13:16:00 | <ldlework> | where the lhs is bound to ^ |
| 13:16:03 | <ProofTechnique> | We have a couple of tiny glue services that didn't really "fit" anywhere else and basically just amount to slightly fancy proxies around garbage legacy systems that we want to quarantine, but the majority are mid-to-large size units that don't logically share any functionality beyond "reads our auth headers". I expect things will evolve over time and we'll coalesce things as we observe more of how everything actually interacts |
| 13:16:07 | <ldlework> | so you can do things with it |
| 13:16:38 | × | jtomas quits (~jtomas@95.red-88-11-64.dynamicip.rima-tde.net) (Remote host closed the connection) |
| 13:17:01 | → | jtomas joins (~jtomas@95.red-88-11-64.dynamicip.rima-tde.net) |
| 13:17:11 | <ldlework> | ProofTechnique: this conversation reminds me of some funny video about microservices where a developer is trying to explain to a product manager how some change is no small ask |
| 13:17:30 | <ldlework> | https://www.youtube.com/watch?v=y8OnoxKotPQ |
| 13:18:04 | <ProofTechnique> | I love that video :D |
| 13:18:19 | <ldlework> | cracks me up everytime |
| 13:20:06 | <ldlework> | "you think you know what it takes to tell the user their birthday... you know nothing!!" |
| 13:20:19 | <ProofTechnique> | When someone started drawing a diagram to explain a new service they wanted to onboard, I stopped them right there and said "okay, but why does this need to be five moving pieces instead of one?" and now they've rewritten it to just run in a container. A logical unit of work should not require a chain of 3 lambdas and an API gateway just to puke JSON |
| 13:20:39 | <ProofTechnique> | (And now they get multi-region deploys for free, just because I'm nice) |
| 13:22:37 | × | xsperry quits (~as@user/xsperry) (Ping timeout: 252 seconds) |
| 13:23:46 | <ldlework> | ProofTechnique: it's possible to get to the point where a collection of containers, at the level of analysis relevant to ops, is a single logical unit. |
| 13:24:41 | <ldlework> | (or a collection of AWS CF artifacts, or whatever else) |
| 13:26:22 | <ProofTechnique> | If you knew this team, you would not give the benefit of the doubt :D |
| 13:27:28 | <ProofTechnique> | (Also AWS API Gateways have _no_ good story for multi-region other than "just deploy a second one, lol", so that was a big operational no) |
| 13:28:09 | → | xsperry joins (~as@user/xsperry) |
| 13:29:26 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 13:31:20 | × | fresheyeball quits (~fresheyeb@c-71-237-105-37.hsd1.co.comcast.net) (Quit: WeeChat 2.9) |
| 13:32:25 | → | yauhsien joins (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) |
| 13:33:13 | × | favonia quits (~favonia@user/favonia) (Ping timeout: 265 seconds) |
| 13:35:16 | × | ubert quits (~Thunderbi@178.115.60.138.wireless.dyn.drei.com) (Ping timeout: 252 seconds) |
| 13:35:16 | ub | is now known as ubert |
| 13:36:00 | → | ubert1 joins (~Thunderbi@178.115.60.138.wireless.dyn.drei.com) |
| 13:37:30 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) |
| 13:41:54 | × | byorgey quits (~byorgey@155.138.238.211) (Quit: leaving) |
| 13:41:58 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) (Ping timeout: 260 seconds) |
| 13:43:36 | → | machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca) |
| 13:44:31 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 13:48:28 | × | xsperry quits (~as@user/xsperry) (Ping timeout: 252 seconds) |
| 13:51:38 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 13:56:16 | × | yauhsien quits (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 13:57:20 | → | kimjetwav joins (~user@2607:fea8:235f:9730:162d:fa69:3f15:a6a5) |
| 13:58:22 | × | lbseale_ quits (~lbseale@user/ep1ctetus) (Ping timeout: 252 seconds) |
| 13:58:52 | × | burnside_ quits (~burnsides@dhcp168-024.wadham.ox.ac.uk) (Remote host closed the connection) |
| 13:59:21 | → | burnsidesLlama joins (~burnsides@dhcp168-024.wadham.ox.ac.uk) |
| 14:02:10 | → | ub joins (~Thunderbi@178.115.57.167.wireless.dyn.drei.com) |
| 14:02:49 | → | xsperry joins (~as@user/xsperry) |
| 14:03:26 | × | ubert quits (~Thunderbi@178.115.60.138.wireless.dyn.drei.com) (Ping timeout: 260 seconds) |
| 14:03:26 | ub | is now known as ubert |
| 14:03:52 | × | burnsidesLlama quits (~burnsides@dhcp168-024.wadham.ox.ac.uk) (Ping timeout: 252 seconds) |
| 14:03:54 | × | ubert1 quits (~Thunderbi@178.115.60.138.wireless.dyn.drei.com) (Ping timeout: 260 seconds) |
| 14:03:56 | → | hiruji joins (~hiruji@user/hiruji) |
| 14:04:09 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 14:04:09 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
| 14:04:09 | → | wroathe joins (~wroathe@user/wroathe) |
| 14:04:32 | × | hiruji quits (~hiruji@user/hiruji) (Client Quit) |
| 14:04:43 | → | lbseale_ joins (~lbseale@user/ep1ctetus) |
| 14:05:28 | → | shriekingnoise joins (~shrieking@186.137.144.80) |
| 14:05:40 | × | alx741 quits (~alx741@181.196.68.9) (Ping timeout: 260 seconds) |
| 14:06:17 | → | slowButPresent joins (~slowButPr@user/slowbutpresent) |
| 14:10:25 | → | favonia joins (~favonia@user/favonia) |
| 14:11:39 | × | gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 14:13:05 | × | fef quits (~thedawn@user/thedawn) (Quit: Leaving) |
| 14:13:07 | × | Phantastes quits (~Phantaste@c-67-173-229-120.hsd1.co.comcast.net) (Quit: Client closed) |
| 14:14:08 | → | Phantastes joins (~Phantaste@c-67-173-229-120.hsd1.co.comcast.net) |
| 14:18:04 | × | fendor_ quits (~fendor@78-2-181-45.adsl.net.t-com.hr) (Remote host closed the connection) |
| 14:18:24 | → | fendor_ joins (~fendor@78-2-181-45.adsl.net.t-com.hr) |
| 14:18:24 | → | alx741 joins (~alx741@186.178.108.187) |
| 14:24:40 | → | zebrag joins (~chris@user/zebrag) |
| 14:25:57 | × | cawfee quits (~root@2406:3003:2077:2758::babe) (Quit: WeeChat 3.2.1) |
| 14:27:34 | → | hiruji joins (~hiruji@user/hiruji) |
| 14:27:43 | <ldlework> | :O http://lambdacube3d.com/editor.html |
| 14:31:07 | × | kenran quits (~kenran@b2b-37-24-119-190.unitymedia.biz) (Quit: WeeChat info:version) |
| 14:31:29 | → | burnsidesLlama joins (~burnsides@dhcp168-024.wadham.ox.ac.uk) |
| 14:35:55 | × | burnsidesLlama quits (~burnsides@dhcp168-024.wadham.ox.ac.uk) (Ping timeout: 252 seconds) |
| 14:36:02 | → | bontaq joins (~user@ool-45779fe5.dyn.optonline.net) |
| 14:36:48 | → | doyougnu joins (~user@c-73-25-202-122.hsd1.or.comcast.net) |
| 14:37:08 | × | hiruji quits (~hiruji@user/hiruji) (Quit: ZNC 1.8.2 - https://znc.in) |
| 14:37:44 | → | yauhsien joins (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) |
| 14:38:34 | × | fendor_ quits (~fendor@78-2-181-45.adsl.net.t-com.hr) (Remote host closed the connection) |
| 14:38:41 | <ldlework> | ProofTechnique: https://hydra.nixos.org/job/nixpkgs/trunk/haskellPackages.lambdacube-engine.x86_64-linux/all |
| 14:38:53 | → | fendor_ joins (~fendor@78-2-181-45.adsl.net.t-com.hr) |
| 14:39:49 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 14:42:22 | × | yauhsien quits (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) (Ping timeout: 252 seconds) |
| 14:45:01 | → | jess joins (~jess@libera/staff/jess) |
| 14:46:41 | × | tdammers quits (~tdammers@77.109.72.177.res.static.edpnet.net) (Ping timeout: 265 seconds) |
| 14:50:00 | → | hnOsmium0001 joins (uid453710@id-453710.hampstead.irccloud.com) |
| 14:51:22 | → | hiruji joins (~hiruji@user/hiruji) |
| 14:55:31 | × | mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
| 14:57:16 | × | jstolarek quits (~jstolarek@ers4.neoplus.adsl.tpnet.pl) (Ping timeout: 252 seconds) |
| 15:01:59 | → | celeste joins (~celeste@wsip-70-182-89-66.ok.ok.cox.net) |
| 15:02:08 | celeste | is now known as __celeste |
| 15:03:33 | → | dyeplexer joins (~dyeplexer@user/dyeplexer) |
| 15:04:40 | → | tommd joins (~tommd@75-164-130-101.ptld.qwest.net) |
| 15:05:04 | → | p_____ joins (~dyeplexer@user/dyeplexer) |
| 15:05:12 | × | p_____ quits (~dyeplexer@user/dyeplexer) (Remote host closed the connection) |
| 15:05:58 | → | lavaman joins (~lavaman@98.38.249.169) |
| 15:07:34 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:a20c:3ab6:8175:e3ff) (Quit: WeeChat 2.8) |
| 15:07:54 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 15:10:10 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 240 seconds) |
| 15:12:06 | → | benin036932301 joins (~benin@183.82.205.89) |
| 15:12:29 | → | zmt00 joins (~zmt00@user/zmt00) |
| 15:13:11 | × | vaucouleur quits (~vaucouleu@176.124.42.130) (Read error: Connection reset by peer) |
| 15:17:07 | × | benin036932301 quits (~benin@183.82.205.89) (Ping timeout: 245 seconds) |
| 15:19:42 | → | yauhsien joins (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) |
| 15:23:38 | → | cawfee joins (~root@2406:3003:2077:2758::babe) |
| 15:28:37 | → | yauhsien_ joins (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) |
| 15:28:37 | × | yauhsien quits (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) (Read error: Connection reset by peer) |
| 15:30:25 | → | tdammers joins (~tdammers@77.109.72.177.res.static.edpnet.net) |
| 15:34:37 | × | yauhsien_ quits (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) (Ping timeout: 252 seconds) |
| 15:34:55 | × | xff0x quits (~xff0x@2001:1a81:52ad:c900:b704:3c1b:6bea:6e62) (Ping timeout: 260 seconds) |
| 15:35:34 | → | mortemeur joins (~mortemeur@pool-173-76-107-201.bstnma.fios.verizon.net) |
| 15:36:25 | <monochrom> | On haskell-cafe, I think I lost my respect for Michael Turner when he reported that he didn't understand "(TTree -> TTree -> Tree) -> TTree -> TTree -> [TTree]", he only understood it after using a type alias for the "(TTree -> TTree -> Tree)". |
| 15:37:51 | <Hecate> | I am resisting from posting on this thread |
| 15:37:54 | <Hecate> | this is a hell thread |
| 15:37:59 | → | slack1256 joins (~slack1256@static-132-147-34-179.fl.cpe.atlanticbb.net) |
| 15:38:10 | <monochrom> | I can respect using a few type aliases or defining a few component types in a very much more complex scenerio, but this is not one of the complex scenerios at all. |
| 15:38:19 | <geekosaur> | AntC isn't exactly helping |
| 15:38:25 | → | vysn joins (~vysn@user/vysn) |
| 15:38:56 | × | __celeste quits (~celeste@wsip-70-182-89-66.ok.ok.cox.net) (Remote host closed the connection) |
| 15:39:04 | <slack1256> | On emacs + LSP, what is the M-x command name for searching a project for calls to a specific function? Currently I am using grep/ag but maybe LSP does that too? |
| 15:39:04 | <monochrom> | On top of that, can you guess the name Turner chose for (TTree -> TTree -> Tree)? It's "Order". I have no idea why "order" makes sense for that. |
| 15:39:13 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) |
| 15:39:19 | → | __celeste joins (~celeste@wsip-70-182-89-66.ok.ok.cox.net) |
| 15:39:43 | <Clint> | fascinating |
| 15:40:13 | <Hecate> | again, this is a hell thread |
| 15:40:14 | <Hecate> | do not post |
| 15:40:18 | <Hecate> | do not read |
| 15:40:22 | × | __celeste quits (~celeste@wsip-70-182-89-66.ok.ok.cox.net) (Remote host closed the connection) |
| 15:40:45 | → | __celeste joins (~celeste@wsip-70-182-89-66.ok.ok.cox.net) |
| 15:40:49 | × | dhouthoo quits (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.2) |
| 15:41:20 | <monochrom> | Turner asks "am I translating Haskell to C/C++"? My heart say yes, you're translating to the C/C++ culture, in which people feel that every function parameter type "needs" a typedef. |
| 15:41:44 | → | xff0x joins (~xff0x@2001:1a81:52ad:c900:b704:3c1b:6bea:6e62) |
| 15:43:26 | <monochrom> | I would have lost less respect if he chose a more apt name, e.g., along the line of "TTreeCombiner". At least that's closer to the nature of TTree -> TTree -> Tree. |
| 15:43:46 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) (Ping timeout: 260 seconds) |
| 15:45:03 | <janus> | what is a hell thread? urban dictionary gives a definition that doesn't make sense |
| 15:45:21 | <monochrom> | "Order" is a very unhelpful name for that one, in fact very misleading, we say that "less than", "greater than or equal to" are "orders", not this. |
| 15:45:47 | <monochrom> | So much for someone who keep asking for more "plain English" and then goes on to show how broken it is. |
| 15:46:34 | <monochrom> | Oh, I think you have to take apart "hell" and "thread", understand each individually, and then just combine :) |
| 15:46:39 | × | chele quits (~chele@user/chele) (Remote host closed the connection) |
| 15:46:42 | <monochrom> | Maybe "thread from hell" helps. |
| 15:46:55 | <monochrom> | or fix the grammar, "hellish thread". |
| 15:47:02 | → | yauhsien joins (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) |
| 15:47:14 | <janus> | ah all right, i was overthinking it |
| 15:47:35 | × | hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 265 seconds) |
| 15:47:55 | <Hecate> | janus: yeah, it's a bad place |
| 15:48:23 | <monochrom> | But yeah I'm not posting. |
| 15:48:44 | → | hyiltiz joins (~quassel@31.220.5.250) |
| 15:51:02 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) |
| 15:51:47 | <monochrom> | My other angle is that Kmett started in a similar but worse initial condition too. Decades of C++ before trying Haskell. And he started way earlier, meaning even worse tutorials and books. |
| 15:52:39 | <monochrom> | And yet he went on to understand everything and surpass it. Look at how much category-theoretic libraries he churns out that it is our turn to not understand! |
| 15:52:59 | <geekosaur> | I think comparing most newcomers to Haskell can't very ewll be compared to Kmett, though |
| 15:53:36 | × | hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 268 seconds) |
| 15:54:07 | <monochrom> | You know, I'm very tempted to just plot a line between those two data points and conclude: You need worse tutorials to learn Haskell better. |
| 15:54:40 | <monochrom> | Either that, or conclude that the old, "worse" tutorials such as the Gentle Introduction is actually better. |
| 15:55:11 | <monochrom> | It may be that it is today's hand-holding tutorials that are worse. |
| 15:55:16 | <ldlework> | I really think HFFP is a great way to go for people who have coded for a long time in non-functional languages. |
| 15:55:21 | → | hyiltiz joins (~quassel@31.220.5.250) |
| 15:55:29 | <ldlework> | It felt very much like brick-laying, which is what I appreciate from pedagogy in other domains. |
| 15:55:46 | <ldlework> | It didn't assume I was a category theorist, just someone capable of understanding a new formal system. |
| 15:56:22 | <monochrom> | I think Turner was following and complaining about HFFP when he said "talking down to me". (But I think he will neither confirm nor deny.) |
| 15:57:05 | × | yauhsien quits (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 15:57:14 | <ldlework> | huh, i wonder what passages made him feel that way |
| 15:57:17 | × | mortemeur quits (~mortemeur@pool-173-76-107-201.bstnma.fios.verizon.net) (Read error: Connection reset by peer) |
| 15:57:27 | <monochrom> | This is wher AntC may be right, as much as you say that he's unhelpful. |
| 15:57:39 | → | yauhsien joins (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) |
| 15:57:59 | <ldlework> | Even if HFFP is not the best possible articulation of the approach, I think it's pedagogical structure is sound |
| 15:58:00 | <geekosaur> | AntC's main problem is not his understanding but his presentation |
| 15:58:09 | <monochrom> | No, I suspect not about any passage, but the whole plan of "start from square 1". |
| 15:58:29 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer) |
| 15:58:58 | <ldlework> | it seems contradictory to want an accessible pedagogy but interpret an assumption of nothing as condescension |
| 15:59:01 | → | nctcf^ joins (~nctcf@68.101.54.227) |
| 15:59:24 | <monochrom> | Right? There are humble, modest people who recognize that they should start from square 1, so they are thankful when you do that to them. |
| 15:59:28 | <ldlework> | I feel for Turner, but am really glad it jived with me. |
| 15:59:32 | <ldlework> | yes! |
| 15:59:53 | <monochrom> | And then there are proud people who deny that they should start from square 1, so they will hate you for doing that to them. |
| 16:01:10 | <monochrom> | Turner did, for multiple times, remind us that he has so many decades of programming experience. |
| 16:01:18 | → | mikoto-chan joins (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) |
| 16:01:23 | <monochrom> | I think someone who speaks like that is the proud kind. |
| 16:01:57 | <janus> | someone who has a 12 line signature... |
| 16:02:03 | <monochrom> | And of course, I should remind you that he never actually said it was HFFP, he never said which works he tried. |
| 16:02:13 | <ldlework> | There is this nice video on youtube "Learn Haskell in One Video" and all it does is teach the core ML side of Haskell. |
| 16:02:49 | <c_wraith> | I had about 20 years of experience programming when I first picked up haskell. And it was *hard*, but I loved it. Because I love learning new things. |
| 16:02:54 | <lbseale_> | ldlework: that is a great video |
| 16:03:05 | <lbseale_> | it was my starting point |
| 16:03:22 | → | benin036932301 joins (~benin@183.82.205.89) |
| 16:03:26 | <c_wraith> | But if you don't come at it as "time to learn something new", it can be really frustrating to be expected to learn something actually new |
| 16:03:39 | lbseale_ | is now known as lbseale |
| 16:04:18 | <janus> | why even try to cater to people with that much experience, they are a tiny part of the market and they are not disadvantaged |
| 16:04:45 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 16:04:54 | <ldlework> | i actually did try to give haskell a real go in the past a few times, but the jargon made me sleepy. HFFP's introduction with LC made me really get into the mood that I'm just learning a new formal system (pattern matching essentially) and that things like Functors and Monoids are just gonna be some algebraic laws (generic patterns). |
| 16:05:11 | <monochrom> | And here is the thing. Two of his complaints are: "materials that assume I already know much", and "materials that talk down to me". See the paradox there? Even hypocrisy? |
| 16:05:22 | <ldlework> | Then I got over the fact that they have opaque names, and just listened to what the author was telling me they are. |
| 16:05:37 | → | proofofkeags_ joins (~proofofke@205.209.28.54) |
| 16:05:56 | × | yauhsien quits (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) (Ping timeout: 268 seconds) |
| 16:06:50 | <monochrom> | IMO when someone harps "plain English" so much, this is why. They are expecting the unsolvable, and they just assume that jargon is the problem, "plain English" can solve it. |
| 16:07:04 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
| 16:07:30 | <ldlework> | I think that also, once HFFP got to Semigroups and was like "semigroups are like the generalization of addition" (or something to that effect) I was re-energized again with confidence that the opaque sounding typeclasses were just gonna be some general patterns, where the idea behind it is not all that complicated. |
| 16:08:10 | × | benin036932301 quits (~benin@183.82.205.89) (Ping timeout: 252 seconds) |
| 16:08:42 | <ldlework> | I was actually excited to know what they were at that point. |
| 16:09:38 | <janus> | think i will write a mail telling Turner that he must read Software Foundations first, since it is the foundation ;) |
| 16:10:47 | <monochrom> | Ugh hahaha but please don't troll him! |
| 16:11:04 | × | vysn quits (~vysn@user/vysn) (Ping timeout: 252 seconds) |
| 16:12:22 | → | rond_ joins (~rond_@2a02:a31a:a23c:f480:2fd7:e087:5546:a438) |
| 16:13:50 | <janus> | wow, Software Foundations has 6 volumes now! amazing |
| 16:14:05 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 16:14:05 | <monochrom> | Wait what? Oh noes. |
| 16:14:16 | <monochrom> | Is it competing with HFFP for length?! |
| 16:15:04 | <monochrom> | Maybe I should adopt volume 2 as my textbook and curriculum. |
| 16:15:47 | → | TPBP joins (~TPBP@2001:67c:2628:647:12::83) |
| 16:15:58 | <monochrom> | The course is named "principles of programming languages". My long-standing concern is "the class average is too high". I need something to make it harder. >:) |
| 16:16:12 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) (Remote host closed the connection) |
| 16:16:20 | <monochrom> | OK, the other long-standing concern is I teach too much Haskell. |
| 16:16:44 | <monochrom> | Well, this solution fixes both! |
| 16:17:28 | <monochrom> | And yeah I haven't harped Hoare triples as an approach to semantics for a long time. Maybe it's time to do it. |
| 16:17:52 | → | econo joins (uid147250@user/econo) |
| 16:18:34 | <monochrom> | (Hoare triples are widely harped as one way to prove your program correct, not one way to define what the language means. It can do both, and Hoare certainly proposed both.) |
| 16:19:38 | <raehik> | how do I package some data files (used in hspec tests) with a Stack+Cabal package? |
| 16:19:43 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
| 16:20:06 | <janus> | i certainly would have been happy if i had had a Coq-based course available in uni instead of working with custom tools |
| 16:20:07 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) |
| 16:20:26 | <raehik> | I find recommendations for 'extra-source-files: folder/*' but, Stack appears to only allow files. No folders |
| 16:21:19 | → | chris joins (~chris@81.96.113.213) |
| 16:21:23 | chris | is now known as Guest6232 |
| 16:21:39 | <janus> | raehik: ** (double star) wild cards were added in cabal 2.4, are you using a stack based on that? |
| 16:21:47 | <sm> | got a link ? |
| 16:21:56 | <c_wraith> | Hoare triples kind of make it clear how tough it is to program based on mutability. |
| 16:22:26 | <janus> | sm: https://cabal.readthedocs.io/en/3.4/cabal-package.html#pkg-field-data-files |
| 16:22:29 | <raehik> | janus: I'm on Stack 2.7 / Cabal 3.6. I tried double star too on Stack, but it complains still. Cabal might be OK with one or both |
| 16:22:44 | <sm> | that doc is for cabal files, janus |
| 16:23:06 | <sm> | stack files have their own doc |
| 16:23:15 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
| 16:23:37 | <janus> | sm: right, but doesn't stack use cabal for lots? i would assume that fields named similarily would have similar underpinnings |
| 16:24:03 | <sm> | ok, if it's actually in your .cabal file you're on the right track. In that case I'd guess your stack needs upgrading |
| 16:24:18 | <raehik> | I was especially confused because I'm using stack to generate my cabal file. And when I tried 'data/*', 'data/**', the generated Cabal file didn't include them |
| 16:24:43 | <raehik> | the Stack side says "nothing found for this entry" and scrubs it from the similarly named Cabal filed |
| 16:24:48 | <raehik> | s/filed/field |
| 16:26:11 | <raehik> | (oops, I've been talking about Stack -- I mean hpack, that uses package.yaml) |
| 16:26:19 | <sm> | hehe |
| 16:26:36 | <sm> | and I've been mixing up raehik and janus |
| 16:26:46 | <sm> | but we'll get there |
| 16:27:25 | <raehik> | sm: hahaha no worries I was following |
| 16:27:33 | <sm> | study the appropriate doc and all will make sense 🤞 |
| 16:28:00 | <c_wraith> | yeah, hpack is a totally different thing. It generates cabal files, but that doesn't mean it supports all of cabal's ways of doing things |
| 16:30:45 | → | chisui joins (~chisui@200116b8686a18002a976267586344a5.dip.versatel-1u1.de) |
| 16:32:21 | <raehik> | mmmmm sm you were right. it feels silly but I have to do 'extra-source-files: data/**/*' ... |
| 16:33:06 | <janus> | raehik: it is the same in zsh, what did you expect? that ** would also match files? |
| 16:33:06 | <raehik> | but I admit, it's more powerful and only feels silly because my mind has been rotted by poorly defined globbing and regexes |
| 16:33:20 | <raehik> | janus: pretty much yes x) |
| 16:33:49 | <janus> | raehik: they are useful, i'd recommend enabling them in the shell |
| 16:34:22 | <janus> | saves you from using `find -type f -iname '*blabla*'` all over the place |
| 16:37:44 | <janus> | though cabal doesn't support that feature, so maybe it is dangerous of me to compare them... |
| 16:38:04 | <janus> | "** wildcards can only appear as the final path component before the file name (e.g., data/**/images/*.jpg is not allowed). If a ** wildcard is used, then the file name must include a * wildcard (e.g., data/**/README.rst is not allowed)." |
| 16:39:02 | → | _ht joins (~quassel@82-169-194-8.biz.kpn.net) |
| 16:39:10 | → | MQ-17J joins (~MQ-17J@8.21.10.6) |
| 16:39:21 | <raehik> | meh, the hpack readme defines it well enough |
| 16:39:38 | <raehik> | it was surprising primarily because the same field name is treated differently in hpack & cabal |
| 16:43:22 | × | fendor_ quits (~fendor@78-2-181-45.adsl.net.t-com.hr) (Ping timeout: 252 seconds) |
| 16:49:19 | × | acidjnk quits (~acidjnk@p200300d0c703cb83089449f0c9186ff3.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
| 16:49:56 | → | acidjnk joins (~acidjnk@p200300d0c703cb83089449f0c9186ff3.dip0.t-ipconnect.de) |
| 16:51:31 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 16:52:09 | → | fendor_ joins (~fendor@78-2-181-45.adsl.net.t-com.hr) |
| 16:53:48 | × | cheater quits (~Username@user/cheater) (Ping timeout: 265 seconds) |
| 16:56:06 | × | Skyfire quits (~pyon@user/pyon) (Ping timeout: 260 seconds) |
| 16:57:18 | → | cheater joins (~Username@user/cheater) |
| 17:02:08 | → | parafactual joins (~celeste@wsip-70-182-89-66.ok.ok.cox.net) |
| 17:02:30 | × | __celeste quits (~celeste@wsip-70-182-89-66.ok.ok.cox.net) (Ping timeout: 265 seconds) |
| 17:02:44 | × | rond_ quits (~rond_@2a02:a31a:a23c:f480:2fd7:e087:5546:a438) (Quit: Client closed) |
| 17:03:31 | × | fendor_ quits (~fendor@78-2-181-45.adsl.net.t-com.hr) (Remote host closed the connection) |
| 17:03:55 | → | fendor_ joins (~fendor@78-2-181-45.adsl.net.t-com.hr) |
| 17:07:26 | × | TPBP quits (~TPBP@2001:67c:2628:647:12::83) (Quit: Client closed) |
| 17:09:09 | → | Guest70 joins (~Guest70@p200300f7770495091b8e7aac2bb6dd42.dip0.t-ipconnect.de) |
| 17:09:46 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 17:10:00 | ← | Guest70 parts (~Guest70@p200300f7770495091b8e7aac2bb6dd42.dip0.t-ipconnect.de) () |
| 17:13:07 | × | chisui quits (~chisui@200116b8686a18002a976267586344a5.dip.versatel-1u1.de) (Quit: Client closed) |
| 17:15:15 | <ldlework> | Anyone know how to make blank-canvas accept remote traffic? |
| 17:15:16 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
| 17:16:16 | → | tfeb joins (~tfb@109.249.185.23) |
| 17:17:00 | × | Guest6232 quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 17:18:45 | tfeb | is now known as tfb |
| 17:18:46 | <ldlework> | figured it out |
| 17:22:06 | → | mousey joins (~sky@gateway/tor-sasl/mousey) |
| 17:22:40 | <awpr> | I would be highly amused if the cellular automata thing turned out to be way faster by sending everything over a socket and rendering with canvas, compared to a natural implementation with Gloss |
| 17:23:37 | <ldlework> | hehe |
| 17:24:38 | × | tfb quits (~tfb@109.249.185.23) (Quit: died) |
| 17:25:49 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 17:26:55 | × | fendor_ quits (~fendor@78-2-181-45.adsl.net.t-com.hr) (Ping timeout: 260 seconds) |
| 17:27:03 | <ldlework> | i feel like i've been teased with haskell GLSL eDSLs lol |
| 17:28:59 | <ldlework> | lambdacube looks like the best one, but it uses a very old haskell and very old dependencies that don't work on Nix anymore |
| 17:32:34 | → | chris joins (~chris@81.96.113.213) |
| 17:32:35 | chris | is now known as Guest3188 |
| 17:32:48 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) (Remote host closed the connection) |
| 17:37:19 | × | Guest3188 quits (~chris@81.96.113.213) (Ping timeout: 252 seconds) |
| 17:37:21 | → | vicfred joins (~vicfred@user/vicfred) |
| 17:38:20 | <cdsmith> | How would you feel if a library you wanted to use required a GHC plugin? Asking because I'm thinking of making HMock depend on https://hackage.haskell.org/package/if-instance. It would let me offer both good error messages (if there's a Show instance) and a more general API (by not requiring Show). |
| 17:39:08 | <dminuoso> | Requiring a GHC plugin is an *very* high threshold. |
| 17:39:35 | <dminuoso> | Unless this was crucial to the core functionality of it, I'd stay clear of it. |
| 17:40:20 | <cdsmith> | Yeah. Maybe I can get away with a general API that requires Show and then an alternate package using the plugin |
| 17:40:52 | × | parafactual quits (~celeste@wsip-70-182-89-66.ok.ok.cox.net) (Ping timeout: 245 seconds) |
| 17:41:42 | <cdsmith> | This is for the explainable predicates. They are essentially (a -> Bool), except with the ability to explain why or why not. Right now, a lot of them require Show instances on a. I don't like that. |
| 17:44:19 | → | System123 joins (~System123@net-37-179-171-3.cust.vodafonedsl.it) |
| 17:51:25 | × | max22- quits (~maxime@2a01cb0883359800445667b961f4f8f5.ipv6.abo.wanadoo.fr) (Ping timeout: 260 seconds) |
| 17:54:39 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) |
| 18:01:54 | → | justsomeguy joins (~justsomeg@user/justsomeguy) |
| 18:02:36 | → | tlaxkit joins (~hexchat@170.253.35.150) |
| 18:03:12 | → | _xft0 joins (~jaroslawj@185.234.208.208.r.toneticgroup.pl) |
| 18:04:55 | × | slack1256 quits (~slack1256@static-132-147-34-179.fl.cpe.atlanticbb.net) (Ping timeout: 252 seconds) |
| 18:06:14 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
| 18:06:22 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) (Remote host closed the connection) |
| 18:06:29 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 18:09:26 | × | sneedsfeed quits (~sneedsfee@rrcs-173-95-122-169.midsouth.biz.rr.com) (Quit: Client closed) |
| 18:10:50 | × | Phantastes quits (~Phantaste@c-67-173-229-120.hsd1.co.comcast.net) (Quit: Phantastes) |
| 18:15:56 | → | parafactual joins (~celeste@wsip-70-182-89-66.ok.ok.cox.net) |
| 18:18:58 | → | lavaman joins (~lavaman@98.38.249.169) |
| 18:20:56 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) |
| 18:23:37 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 252 seconds) |
| 18:24:04 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 268 seconds) |
| 18:26:36 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 18:30:16 | → | OutreEE joins (~OutreEE@modemcable105.60-176-173.mc.videotron.ca) |
| 18:31:28 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Ping timeout: 268 seconds) |
| 18:31:28 | × | aji quits (~alex@prickle.ajitek.net) (Ping timeout: 268 seconds) |
| 18:31:46 | → | aji joins (~alex@prickle.ajitek.net) |
| 18:31:47 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 18:31:56 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
| 18:32:07 | × | wrengr_away quits (~wrengr@56.72.82.34.bc.googleusercontent.com) (Remote host closed the connection) |
| 18:32:50 | → | TranquilEcho joins (~grom@user/tranquilecho) |
| 18:34:42 | × | ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Ping timeout: 245 seconds) |
| 18:34:56 | → | ralu joins (~ralu@static.211.245.203.116.clients.your-server.de) |
| 18:37:38 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 268 seconds) |
| 18:37:38 | × | dyeplexer quits (~dyeplexer@user/dyeplexer) (Remote host closed the connection) |
| 18:38:29 | → | Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915) |
| 18:39:07 | → | burnsidesLlama joins (~burnsides@dhcp168-024.wadham.ox.ac.uk) |
| 18:40:37 | × | theang quits (~theang@fef109.internetdsl.tpnet.pl) (Ping timeout: 265 seconds) |
| 18:40:48 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 18:40:48 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
| 18:40:48 | → | wroathe joins (~wroathe@user/wroathe) |
| 18:41:06 | → | theang joins (~theang@2a00:f41:5858:653e:e8e3:df9b:74cb:6565) |
| 18:41:14 | × | justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.2) |
| 18:43:20 | × | tlaxkit quits (~hexchat@170.253.35.150) (Quit: Leaving) |
| 18:43:52 | × | burnsidesLlama quits (~burnsides@dhcp168-024.wadham.ox.ac.uk) (Ping timeout: 252 seconds) |
| 18:45:31 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 252 seconds) |
| 18:47:30 | × | Cajun quits (~Cajun@user/cajun) (Quit: Client closed) |
| 18:48:15 | → | yauhsien joins (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) |
| 18:50:00 | → | wrengr joins (~wrengr@136.247.83.34.bc.googleusercontent.com) |
| 18:52:05 | × | hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 260 seconds) |
| 18:52:56 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 18:55:20 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 18:55:24 | → | hyiltiz joins (~quassel@31.220.5.250) |
| 19:00:42 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
| 19:02:34 | × | yauhsien quits (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) (Ping timeout: 252 seconds) |
| 19:06:50 | × | MQ-17J quits (~MQ-17J@8.21.10.6) (Ping timeout: 268 seconds) |
| 19:09:21 | → | MQ-17J joins (~MQ-17J@8.21.10.6) |
| 19:12:02 | → | kenran joins (~kenran@200116b82ba3ca004cc511249199c36d.dip.versatel-1u1.de) |
| 19:12:43 | → | aegon joins (~mike@174.127.249.180) |
| 19:15:07 | → | tlaxkit joins (~hexchat@170.253.35.150) |
| 19:20:24 | × | theang quits (~theang@2a00:f41:5858:653e:e8e3:df9b:74cb:6565) (Ping timeout: 268 seconds) |
| 19:21:06 | → | theang joins (~theang@fef109.internetdsl.tpnet.pl) |
| 19:22:14 | → | tinhatcat joins (~manjaro-g@2620:103:a000:2201:8e4c:af6a:e11c:11a1) |
| 19:23:11 | × | oxide quits (~lambda@user/oxide) (Quit: oxide) |
| 19:25:07 | × | hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 268 seconds) |
| 19:25:27 | → | hyiltiz joins (~quassel@31.220.5.250) |
| 19:27:45 | × | parafactual quits (~celeste@wsip-70-182-89-66.ok.ok.cox.net) (Remote host closed the connection) |
| 19:28:30 | × | tinhatcat quits (~manjaro-g@2620:103:a000:2201:8e4c:af6a:e11c:11a1) (Quit: Leaving) |
| 19:28:42 | <ProofTechnique> | cdsmith: Would IfCxt work for your purposes, or have you been down that road and found it not a good fit (it may also be bit-rotted)? |
| 19:28:54 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 19:31:42 | × | wonko quits (~wjc@62.115.229.50) (Ping timeout: 245 seconds) |
| 19:34:01 | → | tinhatcat joins (~manjaro-g@2620:103:a000:2201:8e4c:af6a:e11c:11a1) |
| 19:36:36 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
| 19:37:31 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 19:40:45 | <drewolson> | anyone have a good reference project that uses github actions to build a test a stack project, with a cache, and produce artifacts? |
| 19:49:26 | <sm> | there is a better reference project somewhere, but hledger is a battle-tested one |
| 19:52:16 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) (Remote host closed the connection) |
| 19:59:08 | <dsal> | drewolson: Do you mean you want downloadable binaries from your project? I do that for docs and stuff, but the binaries don't seem to stick around. |
| 19:59:17 | <dsal> | My github actions push binaries into cachix and I use them from there. |
| 19:59:28 | <drewolson> | yes, i want the most recent build to have a downloadable binary |
| 19:59:36 | <drewolson> | i was able to do this on gitlab with a very simple config |
| 19:59:43 | → | burnsidesLlama joins (~burnsides@dhcp168-024.wadham.ox.ac.uk) |
| 19:59:54 | <maerwald> | I use cabal |
| 20:00:01 | <maerwald> | but is pretty much the same |
| 20:00:04 | <drewolson> | https://gist.github.com/drewolson/d052e54c306b6147c5a7f0e0f58cff15 |
| 20:00:42 | <maerwald> | https://github.com/hasufell/stack2cabal/blob/master/.github/workflows/release.yaml |
| 20:00:57 | <dsal> | drewolson: This does it: https://github.com/dustin/waitforsocket/blob/master/.github/workflows/haskell.yml |
| 20:01:03 | <maerwald> | this gives you fully static binaries on linux |
| 20:01:31 | <maerwald> | slightly outdated though |
| 20:01:48 | <maerwald> | ghcup is now pre-installed in all environments I think |
| 20:02:05 | <drewolson> | thanks |
| 20:02:41 | <dsal> | I don't actually use these bins, so maerwald's probably produces something more usable. Mine does much less. I primarily just want stuff in cachix and to know if my tests have broken. |
| 20:07:38 | × | _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection) |
| 20:07:42 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 20:07:45 | × | _xft0 quits (~jaroslawj@185.234.208.208.r.toneticgroup.pl) (Quit: Lost terminal) |
| 20:09:07 | × | waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 268 seconds) |
| 20:10:02 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 20:11:00 | → | waleee joins (~waleee@h-98-128-228-119.NA.cust.bahnhof.se) |
| 20:20:22 | → | chisui joins (~chisui@200116b8686a1800fa65b73f3e7c071d.dip.versatel-1u1.de) |
| 20:22:13 | → | hololeap joins (~hololeap@user/hololeap) |
| 20:24:04 | → | bradyt joins (~bradyt@user/bradyt) |
| 20:24:20 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 20:26:55 | × | michalz quits (~michalz@185.246.204.37) (Remote host closed the connection) |
| 20:27:09 | <bradyt> | i hate bash |
| 20:27:13 | <bradyt> | and zsh |
| 20:28:01 | <bradyt> | i want to append to a cli call like 0-4, 5-9, 10-14, 14-19, ... |
| 20:28:11 | <bradyt> | so call the command multiple times |
| 20:28:25 | <bradyt> | maybe passing in other arguments |
| 20:28:42 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 20:28:42 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
| 20:28:42 | → | wroathe joins (~wroathe@user/wroathe) |
| 20:29:01 | × | tinhatcat quits (~manjaro-g@2620:103:a000:2201:8e4c:af6a:e11c:11a1) (Quit: Leaving) |
| 20:29:06 | <bradyt> | seems easier to do with haskell. time to learn some haskell shell thing? |
| 20:29:22 | → | _xft0 joins (~jaroslawj@185.234.208.208.r.toneticgroup.pl) |
| 20:29:49 | <geekosaur> | maybe. there's several |
| 20:30:46 | <geekosaur> | you have a few options: https://hackage.haskell.org/package/shh - https://hackage.haskell.org/package/shelly - https://hackage.haskell.org/package/turtle - https://hackage.haskell.org/package/shell-conduit |
| 20:31:04 | × | tlaxkit quits (~hexchat@170.253.35.150) (Ping timeout: 252 seconds) |
| 20:31:16 | <bradyt> | hmm, how to compare |
| 20:31:44 | <geekosaur> | were it me I'd just do it in shell, but then I've been doing shell since 1981 |
| 20:32:42 | <bradyt> | maybe i'll just create a project and hard-code it as a Main.hs |
| 20:32:56 | <bradyt> | probably start with "just do it in haskell" |
| 20:32:57 | × | mikoto-chan quits (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Ping timeout: 268 seconds) |
| 20:33:20 | <bradyt> | i keep wanting this 0-4, 5-9 thing pretty often |
| 20:33:37 | <bradyt> | and haskell seems like the most pleasant way to do |
| 20:34:07 | <carbolymer> | be prepared for some boilerplate tho |
| 20:34:17 | → | pavonia joins (~user@user/siracusa) |
| 20:34:39 | → | mikoto-chan joins (~mikoto-ch@83.137.2.246) |
| 20:37:24 | <bradyt> | `main = callCommand "echo hello"` seemed to work |
| 20:37:46 | <bradyt> | M-x compile RET ghc Main.hs && ./Main RET |
| 20:38:07 | <bradyt> | lol, now i have to remember how to write haskell |
| 20:38:29 | → | epolanski joins (uid312403@id-312403.helmsley.irccloud.com) |
| 20:38:33 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 265 seconds) |
| 20:38:41 | → | tlaxkit joins (~hexchat@170.253.35.150) |
| 20:38:46 | <bradyt> | main = do, ... do haust, ... |
| 20:38:55 | × | Ram-Z quits (~Ram-Z@li1814-254.members.linode.com) (Quit: ZNC - http://znc.in) |
| 20:39:35 | × | pbrisbin quits (~patrick@pool-173-49-147-250.phlapa.fios.verizon.net) (Quit: WeeChat 3.2) |
| 20:39:46 | <geekosaur> | "hast". unless it's "haßt" |
| 20:39:59 | <geekosaur> | they were deliberately ambiguous |
| 20:41:10 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 260 seconds) |
| 20:42:11 | → | Ram-Z joins (Ram-Z@2a01:7e01::f03c:91ff:fe57:d2df) |
| 20:44:16 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds) |
| 20:44:58 | → | System12_ joins (~System123@ec2-52-61-197-79.us-gov-west-1.compute.amazonaws.com) |
| 20:45:48 | → | justsomeguy joins (~justsomeg@user/justsomeguy) |
| 20:47:19 | × | tlaxkit quits (~hexchat@170.253.35.150) (Quit: Leaving) |
| 20:48:40 | × | System123 quits (~System123@net-37-179-171-3.cust.vodafonedsl.it) (Ping timeout: 252 seconds) |
| 20:49:21 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 20:51:51 | → | Cajun joins (~Cajun@user/cajun) |
| 20:53:00 | <dibblego> | funny, I typically start with shell, then regret it, and go to .hs — and I am there right now |
| 20:53:56 | × | kuribas quits (~user@ptr-25vy0i7x8rtrl519tor.18120a2.ip6.access.telenet.be) (Remote host closed the connection) |
| 20:55:42 | → | fendor_ joins (~fendor@78-2-181-45.adsl.net.t-com.hr) |
| 20:56:21 | × | kenran quits (~kenran@200116b82ba3ca004cc511249199c36d.dip.versatel-1u1.de) (Quit: WeeChat info:version) |
| 20:57:34 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 20:57:35 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
| 20:57:35 | → | wroathe joins (~wroathe@user/wroathe) |
| 21:00:35 | → | lavaman joins (~lavaman@98.38.249.169) |
| 21:01:38 | <sm> | sadly I often start with hs, then regret it and go to bash |
| 21:02:14 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 265 seconds) |
| 21:02:18 | <sm> | of the haskell shell things, don't miss the one in Shake (cmd), it's excellent and you also have shake's dependency engine there if needed |
| 21:02:48 | <sm> | also, is oil shell usable yet ? |
| 21:02:55 | <monochrom> | OK so I finally broke my oath and posted to the hell thread. |
| 21:03:02 | → | vysn joins (~vysn@user/vysn) |
| 21:03:07 | <geekosaur> | I generally have a pretty good idea of which language fits best beforehand these days. of course it's taken me decades to develop that to the point where I don't find myself switching languages mid-project |
| 21:03:19 | <monochrom> | But it is only because to put the "some people are visual learners" myth to death. Cf https://www.youtube.com/watch?v=rhgwIhB58PA |
| 21:03:28 | awpr | fetches popcorn to read the hell thread |
| 21:03:36 | <sm> | also bradyt, python ? I found it best recently for something where neither bash nor hs was a fit |
| 21:04:00 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 268 seconds) |
| 21:04:19 | <monochrom> | That's all. I am not a conservative who says "the status quo is just fine". :) |
| 21:04:32 | → | Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915) |
| 21:04:48 | → | notzmv joins (~zmv@user/notzmv) |
| 21:05:05 | <geekosaur> | I'm also prone to use perl still but that's the price of being an Olde Phart :þ |
| 21:05:32 | <geekosaur> | (and I still don't like python much) |
| 21:06:59 | <sm> | I like the sound of the starlark variant. No good for system scripting though |
| 21:13:16 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 21:14:36 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) |
| 21:14:49 | <awpr> | I released a library last night with automatic deriving of pretty Haskell-value-syntax printing of any Generics-compatible type, incl. configurable syntax highlighting, optional unicode escaping, and smart line wrapping of long strings -- see https://hackage.haskell.org/package/portray-prettyprinter and https://hackage.haskell.org/package/portray |
| 21:15:43 | geekosaur | wonders suddenly where hackagebot ended up after we left freenode |
| 21:17:58 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
| 21:18:40 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) (Ping timeout: 240 seconds) |
| 21:20:24 | × | zfnmxt quits (~zfnmxtzfn@2001:470:69fc:105::2b32) (Changing host) |
| 21:20:24 | → | zfnmxt joins (~zfnmxtzfn@user/zfnmxt) |
| 21:23:14 | × | jtomas quits (~jtomas@95.red-88-11-64.dynamicip.rima-tde.net) (Remote host closed the connection) |
| 21:23:28 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Excess Flood) |
| 21:23:31 | → | jtomas joins (~jtomas@95.red-88-11-64.dynamicip.rima-tde.net) |
| 21:23:38 | <awpr> | oh right, and automatically-derived structural diffs for better comparisons in tests, in `portray-diff` |
| 21:23:46 | → | Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915) |
| 21:24:17 | <carbolymer> | monochrom: which thread? |
| 21:24:36 | <Boarders> | could someone tell me how to rely on a particular version of a library from github with cabal? Thanks! |
| 21:24:51 | <sclv> | trying to understand the doctest ecosystem and i'm curious -- why do doctest runners prefer to use ghci instead of just emitting a proper executable to be run? |
| 21:24:54 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) |
| 21:24:56 | <sclv> | is there any special reason? |
| 21:25:05 | <carbolymer> | dibblego: yeah, that what I usually do, then I look at the monster that came out from rewriting shell into haskell and I'm not sure that was the best way |
| 21:25:28 | <monochrom> | The one that started as "Haskell's "historical futurism" needs better writing, not better tools" but now the subject line has mutated to several different variants. |
| 21:25:32 | × | fiddlerwoaroof quits (~fiddlerwo@user/fiddlerwoaroof) (Ping timeout: 245 seconds) |
| 21:25:45 | <sclv> | context: i'm working on cabal's doctest support and it seems like a huge amount of the weird irritating complexity of doctest systems all stems from this choice to run doctests interactively |
| 21:25:53 | <monochrom> | Or more simply, look for Michael Turner (original poster) :) |
| 21:26:11 | <sclv> | michael turner is a ridiculous troll |
| 21:27:01 | <sclv> | also yeah i was watching that talk and thinking "ok, this interactive experience with the compiler you're describing... that's the repl. you're describing the repl" |
| 21:27:02 | → | fiddlerwoaroof joins (~fiddlerwo@user/fiddlerwoaroof) |
| 21:27:14 | <carbolymer> | monochrom: is this on discourse or where? |
| 21:27:19 | <sclv> | haskell cafe |
| 21:27:35 | <carbolymer> | right |
| 21:27:37 | × | fr33domlover quits (~fr33domlo@angeley.es) (Ping timeout: 245 seconds) |
| 21:27:44 | <monochrom> | That reminds me, I haven't checked discourse today! :) |
| 21:27:46 | <Boarders> | one thing I am amazed about is rust still doesn't have a repl |
| 21:27:54 | → | fr33domlover joins (~fr33domlo@angeley.es) |
| 21:28:17 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
| 21:28:27 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 21:30:13 | <sclv> | again -- could really appreciate any reports from people familiar with haskell's doctest tools about why the ghci-based approach seems preferred? |
| 21:38:25 | <Boarders> | what's the best way to compare two benchmark runs with criterion? |
| 21:38:32 | × | System12_ quits (~System123@ec2-52-61-197-79.us-gov-west-1.compute.amazonaws.com) (Ping timeout: 268 seconds) |
| 21:38:43 | <bradyt> | there |
| 21:38:45 | <bradyt> | http://ix.io/3zcq/hs |
| 21:38:53 | <bradyt> | so then i do `Main | less -R` |
| 21:39:26 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 21:40:09 | <bradyt> | oh that `print x` is not needed |
| 21:40:14 | → | System123 joins (~System123@ec2-52-61-197-79.us-gov-west-1.compute.amazonaws.com) |
| 21:42:19 | → | System12_ joins (~System123@net-37-179-171-3.cust.vodafonedsl.it) |
| 21:43:15 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 21:45:54 | × | System123 quits (~System123@ec2-52-61-197-79.us-gov-west-1.compute.amazonaws.com) (Ping timeout: 260 seconds) |
| 21:46:03 | × | Boarders quits (sid425905@id-425905.lymington.irccloud.com) () |
| 21:46:22 | → | Boarders joins (sid425905@id-425905.lymington.irccloud.com) |
| 21:46:24 | <Melvar> | With cabal, is there any tutorial on putting a non-fixed set of autogenerated modules into `exposed-modules` using a custom setup? Because it looks like `build-type: Configure` does not support this. |
| 21:46:54 | <sclv> | you'll need to use Custom |
| 21:46:58 | <sclv> | but _please_ don't do that! please! |
| 21:47:01 | <Melvar> | Or at least an intro to Cabal-the-library, or what the hooks system actually means. |
| 21:47:10 | <sclv> | its completely recommended against |
| 21:48:11 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 268 seconds) |
| 21:48:22 | → | wroathe joins (~wroathe@96-88-30-181-static.hfc.comcastbusiness.net) |
| 21:48:23 | × | wroathe quits (~wroathe@96-88-30-181-static.hfc.comcastbusiness.net) (Changing host) |
| 21:48:23 | → | wroathe joins (~wroathe@user/wroathe) |
| 21:49:06 | → | gehmehgeh joins (~user@user/gehmehgeh) |
| 21:50:31 | <sclv> | if you want to see how to do it, here's a simple example https://github.com/kowainik/autopack -- but again, i'm going to urge you super strongly to never release a package that does this (i.e. only use this for proprietary packages at most). the exposed-modules is used directly for hackage, so doing this will make the hackage docs very useless, and generally make your package a Bad Citizen. |
| 21:50:32 | <sclv> | and depending on why you want this, there is almost certainly a better way. |
| 21:50:32 | <Melvar> | Okay then. The only alternative I see is to write a package.yaml and invoke hpack after generating the modules, because I do not want to write code to insert modules into the cabal file. |
| 21:50:47 | <sclv> | ok, then write the package.yaml and invoke hpack |
| 21:51:05 | <sclv> | or just write some code once and for all to generate the module names, then paste them into the cabal file |
| 21:51:05 | <sm> | Boarders, quick and dirty but I like quickbench ! |
| 21:51:53 | <sclv> | cabal files are designed to be a full interface manifest, which is why they don't expose wildcarding or the like |
| 21:51:57 | <sclv> | for modules in particular |
| 21:52:27 | <sm> | sclv: doctests are ghci commands, how might compiling them work ? |
| 21:52:30 | <Melvar> | The actual problem: I have written a toy wayland library, and have now written a scanner for it which is obliged to generate one module per interface because there are otherwise name clashes. |
| 21:52:55 | <sclv> | sm: i mean they're just a snippet of code, that generates a result that is shown, and then they compare the result vs the expected result |
| 21:53:03 | <sclv> | so like... they'd turn into standard spec tests or the like? |
| 21:53:04 | × | vysn quits (~vysn@user/vysn) (Ping timeout: 252 seconds) |
| 21:53:47 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 21:54:23 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 21:54:26 | <sclv> | Melvar: if you control the generation, I'd suggest just using better name munging :-) |
| 21:54:27 | <ProofTechnique> | Boarders: I think Rust had a repl in the very early days |
| 21:54:44 | <sclv> | sm: unless its common to have doctests using `:t` or `:i` or the like?? is it? |
| 21:55:28 | <ProofTechnique> | It was called `rusti` or something like that |
| 21:55:39 | <Melvar> | sclv: I don’t *want* to have hungarian notation on every request and event constructor, that’s what namespacing and qualification are for. |
| 21:55:43 | <sm> | it sounds interesting. Some compilation delay but maybe a speedup overall ? that would be very welcome |
| 21:56:11 | <sclv> | my main motivation is it eliminates the hardest part of the doctest runners, which is trying to match options to ghci etc perfectly |
| 21:56:11 | <bradyt> | oops, more like x <- readProcess "task" ["status:pending", "count"] "" |
| 21:56:22 | <sclv> | but also i'd imagine that its overall equally efficient |
| 21:56:27 | <sclv> | if not moreso |
| 21:56:29 | <sm> | i'd guess few projects use ghci commands in their doctests |
| 21:56:41 | <ProofTechnique> | I guess there's also https://github.com/google/evcxr, now |
| 21:56:54 | <sclv> | i wonder if its just a holdover from the python mentality doctests evolved from |
| 21:57:54 | <sm> | currently doctests start too slowly too use, for me |
| 21:58:02 | <Boarders> | I am trying to depend on this fork of containers: https://github.com/Boarders/containers - but the cabal file is in the subdirectory containers, does anyone know where the url of cabal.project should point to pick it up? |
| 21:58:10 | × | gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 21:59:20 | <ProofTechnique> | https://cabal.readthedocs.io/en/3.4/cabal-project.html#specifying-packages-from-remote-version-control-locations Boarders |
| 21:59:21 | <Boarders> | sm: I haven't tried quickbench, I'll have to see |
| 21:59:37 | <ProofTechnique> | Same url, just specify subdir |
| 21:59:56 | <Boarders> | thank you ProofTechnique (I have such a hard time finding stuff in the cabal docs, idk why) |
| 22:00:12 | <Melvar> | sclv: Submodules / namespaces within modules would be exactly what I would like, but Haskell doesn’t have them. |
| 22:00:42 | <Franciman> | how can I use unboxed types? |
| 22:00:54 | <Franciman> | if I put Int# in my data type, it says `can't parse infix operator` bla bla |
| 22:01:18 | <awpr> | `-XMagicHash` |
| 22:01:22 | <Franciman> | takk |
| 22:01:23 | <sclv> | I think for bindings most of us resort to hungarian notation and then wrap them up in higher level things, its just how it is |
| 22:01:40 | <sclv> | like using the direct bindings are ugly enough already |
| 22:02:13 | <Melvar> | Practically, this lib was never going to be uploaded to hackage or the like anyway, precisely because part of it is a reproduction of whatever wayland protocols are present on the system. |
| 22:02:28 | × | _xft0 quits (~jaroslawj@185.234.208.208.r.toneticgroup.pl) (Quit: Lost terminal) |
| 22:02:35 | <awpr> | I think I've seen other packages generate bindings ahead-of-time, and release the generated sources to Hackage |
| 22:02:39 | × | hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 265 seconds) |
| 22:02:42 | × | favonia quits (~favonia@user/favonia) (Ping timeout: 260 seconds) |
| 22:03:07 | Melvar | shrugs. |
| 22:03:49 | → | hyiltiz joins (~quassel@31.220.5.250) |
| 22:03:49 | × | burnsidesLlama quits (~burnsides@dhcp168-024.wadham.ox.ac.uk) (Remote host closed the connection) |
| 22:03:52 | <Melvar> | Anyway, since this is my toy, the path of least resistance to actually building with the generated code seems to be to use hpack to write a cabal file that includes the generated modules. |
| 22:04:20 | → | burnsidesLlama joins (~burnsides@dhcp168-024.wadham.ox.ac.uk) |
| 22:04:51 | × | jess quits (~jess@libera/staff/jess) () |
| 22:05:07 | <sclv> | :+1: |
| 22:06:29 | <Melvar> | I’m particularly proud of my handler type: newtype Handler i = Handler (forall newhandlers . Event i newhandlers -> IO newhandlers) |
| 22:06:57 | <monochrom> | sclv: Hey, I like the "full interface manifest" narrative! |
| 22:08:10 | <Melvar> | When an event is received that sets up a new object, the handler handling that event is forced by the type system to return a new handler for events on that object. |
| 22:08:32 | × | hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 268 seconds) |
| 22:09:09 | × | burnsidesLlama quits (~burnsides@dhcp168-024.wadham.ox.ac.uk) (Ping timeout: 268 seconds) |
| 22:09:35 | <awpr> | what's in `Event`? seems like unless it's a GADT there's not much freedom given to a handler w.r.t. what it returns as the new handlers |
| 22:10:04 | → | hyiltiz joins (~quassel@31.220.5.250) |
| 22:10:48 | × | mikoto-chan quits (~mikoto-ch@83.137.2.246) (Quit: mikoto-chan) |
| 22:11:29 | <Melvar> | `Event` is, in fact, an associated GADT family. |
| 22:11:44 | <awpr> | neat |
| 22:12:58 | → | Skyfire joins (~pyon@user/pyon) |
| 22:13:02 | <Melvar> | By which I mean, `Event` is an associated data family, and each individual generated `Event i` instance is a GADT. |
| 22:15:50 | <Melvar> | Most `Event` constructors instantiate the `newhandlers` index to `()`, since events that allocate objects are not too common. |
| 22:17:49 | × | dispater quits (~dispater@user/brprice) (Quit: ZNC 1.8.1 - https://znc.in) |
| 22:17:53 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) (Remote host closed the connection) |
| 22:18:07 | → | dispater joins (~dispater@user/brprice) |
| 22:18:53 | <Melvar> | Thanks for the opinions, sclv, though they were largely what I expected. |
| 22:19:28 | × | tdammers quits (~tdammers@77.109.72.177.res.static.edpnet.net) (Ping timeout: 252 seconds) |
| 22:19:39 | → | OscarZ joins (~oscarz@95.175.104.70) |
| 22:20:24 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
| 22:20:34 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 22:22:15 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 22:28:16 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
| 22:29:27 | × | ubert quits (~Thunderbi@178.115.57.167.wireless.dyn.drei.com) (Remote host closed the connection) |
| 22:38:27 | × | System12_ quits (~System123@net-37-179-171-3.cust.vodafonedsl.it) (Remote host closed the connection) |
| 22:38:30 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 22:39:19 | → | System123 joins (~System123@net-37-179-171-3.cust.vodafonedsl.it) |
| 22:42:06 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 22:43:08 | × | vicfred quits (~vicfred@user/vicfred) (Quit: Leaving) |
| 22:43:40 | × | TranquilEcho quits (~grom@user/tranquilecho) (Quit: WeeChat 2.8) |
| 22:43:58 | ← | bradyt parts (~bradyt@user/bradyt) () |
| 22:44:13 | × | System123 quits (~System123@net-37-179-171-3.cust.vodafonedsl.it) (Ping timeout: 265 seconds) |
| 22:48:03 | → | max22- joins (~maxime@2a01cb08833598007ac4a393d617d2bc.ipv6.abo.wanadoo.fr) |
| 22:48:04 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 22:51:28 | × | jtomas quits (~jtomas@95.red-88-11-64.dynamicip.rima-tde.net) (Ping timeout: 252 seconds) |
| 22:55:15 | × | hololeap quits (~hololeap@user/hololeap) (Ping timeout: 276 seconds) |
| 22:56:53 | → | hololeap joins (~hololeap@user/hololeap) |
| 22:58:25 | → | cuz joins (~user@2601:182:cc02:8b0:e50a:ab1e:19b4:1aaf) |
| 22:58:40 | × | bontaq quits (~user@ool-45779fe5.dyn.optonline.net) (Remote host closed the connection) |
| 23:00:40 | × | machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 240 seconds) |
| 23:01:18 | → | bontaq joins (~user@ool-45779fe5.dyn.optonline.net) |
| 23:01:41 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 23:01:41 | → | yauhsien joins (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) |
| 23:02:36 | → | tdammers joins (~tdammers@77.109.72.177.res.static.edpnet.net) |
| 23:05:03 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) |
| 23:06:27 | × | yauhsien quits (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) (Ping timeout: 265 seconds) |
| 23:13:06 | × | perro quits (~user@072-191-245-069.res.spectrum.com) (Remote host closed the connection) |
| 23:22:23 | × | Tuplanolla quits (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.) |
| 23:22:24 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 265 seconds) |
| 23:24:22 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 23:26:32 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) (Remote host closed the connection) |
| 23:27:51 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 23:29:02 | × | jinsun quits (~quassel@user/jinsun) (Ping timeout: 260 seconds) |
| 23:33:35 | × | acidjnk quits (~acidjnk@p200300d0c703cb83089449f0c9186ff3.dip0.t-ipconnect.de) (Remote host closed the connection) |
| 23:33:58 | → | acidjnk joins (~acidjnk@p200300d0c703cb83089449f0c9186ff3.dip0.t-ipconnect.de) |
| 23:35:53 | × | chisui quits (~chisui@200116b8686a1800fa65b73f3e7c071d.dip.versatel-1u1.de) (Ping timeout: 256 seconds) |
| 23:37:45 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) |
| 23:38:09 | × | hololeap quits (~hololeap@user/hololeap) (Ping timeout: 276 seconds) |
| 23:38:47 | × | acidjnk quits (~acidjnk@p200300d0c703cb83089449f0c9186ff3.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
| 23:41:28 | → | favonia joins (~favonia@user/favonia) |
| 23:46:20 | → | hololeap joins (~hololeap@user/hololeap) |
| 23:48:57 | → | acidjnk joins (~acidjnk@p200300d0c703cb83089449f0c9186ff3.dip0.t-ipconnect.de) |
| 23:50:54 | × | hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 268 seconds) |
| 23:52:27 | × | hololeap quits (~hololeap@user/hololeap) (Ping timeout: 276 seconds) |
| 23:54:32 | → | hololeap joins (~hololeap@user/hololeap) |
| 23:55:14 | → | hexfive joins (~eric@50.35.83.177) |
| 23:55:52 | × | hololeap quits (~hololeap@user/hololeap) (Remote host closed the connection) |
| 23:57:30 | × | hexfive quits (~eric@50.35.83.177) (Client Quit) |
| 23:57:54 | → | hololeap joins (~hololeap@user/hololeap) |
| 23:58:40 | × | max22- quits (~maxime@2a01cb08833598007ac4a393d617d2bc.ipv6.abo.wanadoo.fr) (Remote host closed the connection) |
| 23:59:19 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 23:59:20 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
| 23:59:20 | → | wroathe joins (~wroathe@user/wroathe) |
| 23:59:56 | → | hyiltiz joins (~quassel@31.220.5.250) |
All times are in UTC on 2021-09-17.