Logs: freenode/#haskell
| 2020-09-30 08:46:00 | <tomsmeding> | > "We [backend team] required a description of the field and its type, and it would be deployed in the next release after we got to it. The front-end team needed to cycle faster than that." |
| 2020-09-30 08:46:02 | <lambdabot> | "We [backend team] required a description of the field and its type, and it ... |
| 2020-09-30 08:46:11 | <tomsmeding> | lambdabot: you're not wrong |
| 2020-09-30 08:46:36 | <kuribas> | tomsmeding: that sounds like a social problem |
| 2020-09-30 08:46:48 | <tomsmeding> | which, also, isn't even the point |
| 2020-09-30 08:46:51 | <tomsmeding> | perhaps it is! |
| 2020-09-30 08:46:56 | <kuribas> | tomsmeding: but even then, with a proper pipeline, such a change and recompiling takes 5 minutes in haskell. |
| 2020-09-30 08:47:03 | <tomsmeding> | true |
| 2020-09-30 08:47:06 | × | vicfred quits (~vicfred@unaffiliated/vicfred) (Ping timeout: 272 seconds) |
| 2020-09-30 08:47:17 | <tomsmeding> | but, like, perhaps their organisation makes that they don't want that |
| 2020-09-30 08:47:28 | <tomsmeding> | maybe they have a mandatory QA process for every backend upgrade or something |
| 2020-09-30 08:47:41 | <tomsmeding> | but if they want to iterate without the backend changing, then, well, design your backend on that :p |
| 2020-09-30 08:47:47 | <tomsmeding> | haskell gives you the flexibility |
| 2020-09-30 08:48:04 | <tomsmeding> | anyhow the point is argued perfectly by the article itself so perhaps I should stop ranting :p |
| 2020-09-30 08:48:26 | <AWizzArd> | I am writing an app and use Nix as build system. I would like to specify four things: what Haskell-Dependencies do I want to be in my release? What Haskell-Deps do I want to have during development time (i.e. benchmarking, tests, ...). And then I want to specify what OS-Deps I want during development in my nix-shell (ls, cd, cat, tree, ...) and what OS-Deps I want to be in my release (which can go into a tar.gz for dockerization). |
| 2020-09-30 08:48:27 | <cpressey> | Doing data modelling like FirstAndLastNames, FirstNameAndEmail, LastNameAndEmail, ... is ridiculous *in any language*. I want to say "obviously ridiculous" but the very existence of the article makes me wonder about that. |
| 2020-09-30 08:48:33 | <merijn> | It's just one of the classic blunders |
| 2020-09-30 08:48:48 | <merijn> | "Tying your external representation directly to your internal representation" |
| 2020-09-30 08:48:49 | × | thir quits (~thir@p200300f27f0fc60094e773283d7bf825.dip0.t-ipconnect.de) (Ping timeout: 244 seconds) |
| 2020-09-30 08:48:49 | <AWizzArd> | I see https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/haskell-modules/generic-builder.nix and there are tons of "Depends" attributes listed |
| 2020-09-30 08:48:56 | <kuribas> | tomsmeding: in that case I would have a personFields field which is just a Aeson Value. |
| 2020-09-30 08:49:00 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds) |
| 2020-09-30 08:49:11 | <merijn> | That's just as bad as "starting a land war in China" or "going against a Sicilian when death is on the line" |
| 2020-09-30 08:49:30 | <AWizzArd> | What is the meaning of buildDepends, libraryHaskellDepends, executableHaskellDepends, libraryToolDepends, executableToolDepends, testToolDepends, benchmarkToolDepends, librarySystemDepends, executableSystemDepends, libraryFrameworkDepends, executableFrameworkDepends, testDepends, and the 50 others? |
| 2020-09-30 08:49:59 | <merijn> | Sounds like a Nix question? |
| 2020-09-30 08:51:17 | × | jrqc quits (~rofl@96.78.87.197) (Ping timeout: 258 seconds) |
| 2020-09-30 08:52:04 | <kuribas> | merijn: in our app it's not only tied to the API, but also to the database. |
| 2020-09-30 08:52:30 | <kuribas> | merijn: hashmaps just pass through everything, with only a light layer of transformation between. |
| 2020-09-30 08:52:37 | → | glguy_ joins (x@freenode/staff/haskell.developer.glguy) |
| 2020-09-30 08:52:37 | glguy | is now known as Guest12883 |
| 2020-09-30 08:52:37 | × | Guest12883 quits (x@freenode/staff/haskell.developer.glguy) (Killed (tolkien.freenode.net (Nickname regained by services))) |
| 2020-09-30 08:52:37 | glguy_ | is now known as glguy |
| 2020-09-30 08:53:00 | <merijn> | kuribas: Every single time I've done that I've lived to regret it :p |
| 2020-09-30 08:53:14 | <AWizzArd> | merijn: a Nix question that is very Haskell related. As in: what flags can I pass to "ghc", which happens to be a Linux tool, but which is essentially not a #Linux question. |
| 2020-09-30 08:53:34 | <merijn> | I've learned to accept that the "boilerplate' of separate external and internal representations is worth it and inevitable |
| 2020-09-30 08:53:35 | <maerwald> | AWizzArd: imo still better to ask in the nix channel |
| 2020-09-30 08:53:50 | <kuribas> | merijn: however it's convenient in servant to write your records like the json objects. |
| 2020-09-30 08:54:14 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 2020-09-30 08:54:51 | <kuribas> | merijn: or I would need two types, ExternalResource, and Resource |
| 2020-09-30 08:55:00 | <merijn> | kuribas: Yes |
| 2020-09-30 08:55:15 | <lortabac> | I think it is a good idea to have two types anyway |
| 2020-09-30 08:55:20 | → | jrqc joins (~rofl@96.78.87.197) |
| 2020-09-30 08:55:58 | <merijn> | kuribas: Eventually you'll come around to my and lortabac's way of thinking, after you've made yourself suffer enough :) |
| 2020-09-30 08:56:23 | <kuribas> | possibly |
| 2020-09-30 08:56:36 | <kuribas> | I adapt my code as the needs change |
| 2020-09-30 08:56:52 | <kuribas> | but clojure is a big bottleneck |
| 2020-09-30 08:57:01 | × | cfricke quits (~cfricke@unaffiliated/cfricke) (Quit: WeeChat 2.9) |
| 2020-09-30 08:57:21 | → | cfricke joins (~cfricke@unaffiliated/cfricke) |
| 2020-09-30 08:57:47 | <kuribas> | with its inability to model the business domain, provide safe abstractions, and giving zero consistency garantees. |
| 2020-09-30 08:58:27 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds) |
| 2020-09-30 08:59:23 | × | gxt quits (~gxt@gateway/tor-sasl/gxt) (Ping timeout: 240 seconds) |
| 2020-09-30 09:00:01 | × | sammuel86 quits (~sammuel86@185.244.214.216) () |
| 2020-09-30 09:00:27 | × | madjestic quits (~madjestic@86-88-72-244.fixed.kpn.net) (Ping timeout: 240 seconds) |
| 2020-09-30 09:00:30 | → | filwisher joins (~filwisher@cpc76738-dals23-2-0-cust186.20-2.cable.virginm.net) |
| 2020-09-30 09:02:50 | × | cfricke quits (~cfricke@unaffiliated/cfricke) (Quit: WeeChat 2.9) |
| 2020-09-30 09:03:23 | → | cfricke joins (~cfricke@unaffiliated/cfricke) |
| 2020-09-30 09:04:16 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 2020-09-30 09:06:26 | → | todda7 joins (~torstein@ppp005055049059.access.hol.gr) |
| 2020-09-30 09:06:59 | <kuribas> | merijn: actually I already have more types for one resource. Like a type for getting and setting information, a type with less fields, etc... |
| 2020-09-30 09:07:00 | × | carlomagno1 quits (~cararell@inet-hqmc02-o.oracle.com) (Remote host closed the connection) |
| 2020-09-30 09:08:06 | <kuribas> | merijn: a clojurist would probably now grin in satisfaction, look at all that complexity! |
| 2020-09-30 09:08:13 | <kuribas> | merijn: but IMO it's worth it. |
| 2020-09-30 09:08:43 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds) |
| 2020-09-30 09:14:27 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 2020-09-30 09:18:47 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds) |
| 2020-09-30 09:20:40 | <sm[m]> | there was no criticism or bashing in that article.. it's well written and interesting I think |
| 2020-09-30 09:20:42 | × | dhil quits (~dhil@11.29.39.217.dyn.plus.net) (Ping timeout: 265 seconds) |
| 2020-09-30 09:21:17 | <kuribas> | sm[m]: the haskell code is pretty bad |
| 2020-09-30 09:21:30 | → | DireFog joins (~DireFog@s91904426.blix.com) |
| 2020-09-30 09:22:17 | <sm[m]> | that's a silly thing to say, since they're just walking through a series of what ifs (pretty realistic thought process for someone figuring this stuff out) |
| 2020-09-30 09:23:42 | <sm[m]> | I think it shows haskell provides a lot of freedom to model your typing needs |
| 2020-09-30 09:24:32 | <kuribas> | no, it fits perfectly in the clojure narative that types are too heavy and unnecessary. |
| 2020-09-30 09:24:37 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 2020-09-30 09:25:44 | × | cpressey quits (~cpressey@79-72-201-29.dynamic.dsl.as9105.com) (Ping timeout: 272 seconds) |
| 2020-09-30 09:25:44 | <sm[m]> | perhaps, but that doesn't make it it criticism or bashing, and I think you weaken your argument by saying so |
| 2020-09-30 09:26:25 | <sm[m]> | Just MHO |
| 2020-09-30 09:27:13 | × | cfricke quits (~cfricke@unaffiliated/cfricke) (Quit: WeeChat 2.9) |
| 2020-09-30 09:28:00 | → | cpressey joins (~cpressey@79-72-200-19.dynamic.dsl.as9105.com) |
| 2020-09-30 09:28:09 | <kuribas> | sm[m]: perhaps it was written in good faith, but the code is still bad. |
| 2020-09-30 09:28:24 | <sm[m]> | thanks for the link, I will watch for the HN discussion |
| 2020-09-30 09:28:47 | × | bahamas quits (~lucian@unaffiliated/bahamas) (Ping timeout: 240 seconds) |
| 2020-09-30 09:29:01 | <kuribas> | sm[m]: btw, I don't believe in show the bad way first |
| 2020-09-30 09:29:10 | → | bahamas joins (~lucian@unaffiliated/bahamas) |
| 2020-09-30 09:29:14 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds) |
| 2020-09-30 09:29:32 | × | snakemasterflex quits (~snakemast@213.100.206.23) (Ping timeout: 256 seconds) |
| 2020-09-30 09:30:03 | <kuribas> | You learn the best by looking at good examples. |
| 2020-09-30 09:30:37 | <kuribas> | Taking best ideas from everywhere and assimilating them into your own style. |
| 2020-09-30 09:30:43 | <maerwald> | kuribas: I agree, I had a prof who used to show every single pitfall of a language, when teaching a language and thought that would give ppl an intuition. All it did was confuse them |
| 2020-09-30 09:30:57 | <kuribas> | maerwald: right :) |
| 2020-09-30 09:31:08 | <maerwald> | the C++ course was... |
| 2020-09-30 09:31:19 | <sm[m]> | the article says that sometimes you want a more static model. So the first is not bad. Its just an engineering choice depending on the need. |
| 2020-09-30 09:32:20 | <sm[m]> | the article lays out some of the options nicely. You could just As easily read it in reverse, describing a refactoring of over dynamic code to more statically checked. |
| 2020-09-30 09:32:48 | <kuribas> | sm[m]: https://paste.tomsmeding.com/yy3PqZUb |
| 2020-09-30 09:32:54 | <kuribas> | sm[m]: that's not bad? |
| 2020-09-30 09:32:54 | × | ces quits (~ces@52d3ce3c.dynamic-ip.k-net.dk) (Quit: WeeChat 2.9) |
| 2020-09-30 09:32:56 | <merijn> | sm[m]: The problem I have with it is that the static code is just a badly written strawman. You could easily have a static verbose that's both less verbose and more flexible |
| 2020-09-30 09:32:59 | <sm[m]> | afk, sorry |
| 2020-09-30 09:33:19 | <merijn> | sm[m]: And then using that bad code to justify the more dynamic approach |
| 2020-09-30 09:33:53 | <kuribas> | sm[m]: I am pretty sure he wouldn't write this kind of code in clojure. |
| 2020-09-30 09:34:11 | <kuribas> | sm[m]: I guess he is thinking about partial hashmaps. |
All times are in UTC.