« Back to channel list

#elixir-lang - 25 March 2019

« Back 1 day Forward 1 day »
[00:00:26] atk: has joined #elixir-lang
[00:06:39] jeffro: has joined #elixir-lang
[00:14:24] orbyt_: has joined #elixir-lang
[00:16:47] jeffro: has joined #elixir-lang
[00:25:56] Havvy: has joined #elixir-lang
[00:27:19] jeffro: has joined #elixir-lang
[00:37:29] jeffro: has joined #elixir-lang
[00:47:35] jeffro: has joined #elixir-lang
[00:52:26] __charly__: has joined #elixir-lang
[00:57:45] jeffro: has joined #elixir-lang
[01:00:26] Devalo: has joined #elixir-lang
[01:06:28] carldd: has joined #elixir-lang
[01:07:54] jeffro: has joined #elixir-lang
[01:18:02] jeffro: has joined #elixir-lang
[01:28:39] jeffro: has joined #elixir-lang
[01:38:44] jeffro: has joined #elixir-lang
[01:48:54] jeffro: has joined #elixir-lang
[01:56:41] sevenseacat: has joined #elixir-lang
[01:59:04] jeffro: has joined #elixir-lang
[02:04:41] mdbm: has joined #elixir-lang
[02:04:41] mdbm_: has joined #elixir-lang
[02:09:08] jeffro: has joined #elixir-lang
[02:16:14] Radar: has joined #elixir-lang
[02:19:19] jeffro: has joined #elixir-lang
[02:21:09] mdbm__: has joined #elixir-lang
[02:24:46] mdbm: has joined #elixir-lang
[02:28:43] tomterl: has joined #elixir-lang
[02:29:50] jeffro: has joined #elixir-lang
[02:39:59] jeffro: has joined #elixir-lang
[02:50:09] jeffro: has joined #elixir-lang
[02:53:26] davidw: has joined #elixir-lang
[03:00:19] jeffro: has joined #elixir-lang
[03:04:03] maddybutt: has joined #elixir-lang
[03:04:03] Saukk: has joined #elixir-lang
[03:10:27] jeffro: has joined #elixir-lang
[03:11:50] sterl: has joined #elixir-lang
[03:15:15] Devalo: has joined #elixir-lang
[03:20:34] jeffro: has joined #elixir-lang
[03:21:54] carldd: has joined #elixir-lang
[03:23:24] orbyt_: has joined #elixir-lang
[03:31:09] jeffro: has joined #elixir-lang
[03:34:09] Sgeo: has joined #elixir-lang
[03:39:26] FatElephant: has joined #elixir-lang
[03:41:16] jeffro: has joined #elixir-lang
[03:46:13] Sgeo_: has joined #elixir-lang
[03:51:24] jeffro: has joined #elixir-lang
[03:53:30] paulha: has joined #elixir-lang
[03:57:28] orbyt_: has joined #elixir-lang
[04:01:31] jeffro: has joined #elixir-lang
[04:11:44] jeffro: has joined #elixir-lang
[04:15:45] Sgeo__: has joined #elixir-lang
[04:20:12] Paul51: has joined #elixir-lang
[04:20:18] Paul51: has left #elixir-lang: ()
[04:21:52] jeffro: has joined #elixir-lang
[04:26:17] isHavvy: has joined #elixir-lang
[04:32:14] jeffro: has joined #elixir-lang
[04:45:30] harfangk: has joined #elixir-lang
[04:58:16] ur5us: has joined #elixir-lang
[05:16:11] gvaughn: has joined #elixir-lang
[05:39:36] ur5us: has joined #elixir-lang
[05:50:33] mbuf: has joined #elixir-lang
[05:52:39] carb0n_: has joined #elixir-lang
[06:10:30] proteusguy: has joined #elixir-lang
[06:15:51] Devalo: has joined #elixir-lang
[06:33:04] jeffro: has joined #elixir-lang
[06:33:16] gvaughn: has joined #elixir-lang
[06:38:38] infowolfe: has joined #elixir-lang
[06:38:38] infowolfe: has joined #elixir-lang
[06:38:43] Sgeo__: has joined #elixir-lang
[06:43:44] jeffro: has joined #elixir-lang
[06:53:47] jeffro: has joined #elixir-lang
[07:03:54] jeffro: has joined #elixir-lang
[07:09:08] Sgeo_: has joined #elixir-lang
[07:14:00] siwatpru: has joined #elixir-lang
[07:14:04] jeffro: has joined #elixir-lang
[07:15:58] PragTob: has joined #elixir-lang
[07:17:36] elango: has joined #elixir-lang
[07:17:47] psy: has joined #elixir-lang
[07:24:12] jeffro: has joined #elixir-lang
[07:34:22] jeffro: has joined #elixir-lang
[07:40:41] gvaughn: has joined #elixir-lang
[07:44:51] jeffro: has joined #elixir-lang
[07:55:01] jeffro: has joined #elixir-lang
[08:05:10] jeffro: has joined #elixir-lang
[08:09:28] craigp: has joined #elixir-lang
[08:15:19] jeffro: has joined #elixir-lang
[08:25:25] jeffro: has joined #elixir-lang
[08:35:38] jeffro: has joined #elixir-lang
[08:38:57] DarkSeid: has joined #elixir-lang
[08:39:26] Devalo: has joined #elixir-lang
[08:42:58] za1b1tsu: has joined #elixir-lang
[08:44:12] Sgeo__: has joined #elixir-lang
[08:46:06] jeffro: has joined #elixir-lang
[08:50:55] gvaughn: has joined #elixir-lang
[08:56:15] jeffro: has joined #elixir-lang
[08:59:16] kyrylo: has joined #elixir-lang
[09:00:42] mbuf: has joined #elixir-lang
[09:06:25] jeffro: has joined #elixir-lang
[09:15:36] Notimik: has joined #elixir-lang
[09:16:35] jeffro: has joined #elixir-lang
[09:17:12] wonko7: has joined #elixir-lang
[09:25:27] harfangk: has joined #elixir-lang
[09:26:41] jeffro: has joined #elixir-lang
[09:33:02] netrino: has joined #elixir-lang
[09:34:31] asabil: has joined #elixir-lang
[09:36:53] jeffro: has joined #elixir-lang
[09:47:23] jeffro: has joined #elixir-lang
[09:49:50] lauromoura: has joined #elixir-lang
[09:54:11] netrino_: has joined #elixir-lang
[09:54:22] craigp: has joined #elixir-lang
[09:56:01] oneark: has joined #elixir-lang
[09:57:32] jeffro: has joined #elixir-lang
[09:58:42] DarkSeid: has joined #elixir-lang
[10:05:09] DeadTrickster: has joined #elixir-lang
[10:07:50] gvaughn: has joined #elixir-lang
[10:08:06] kapil____: has joined #elixir-lang
[10:16:57] netrino: has joined #elixir-lang
[10:31:17] mercerist: has joined #elixir-lang
[10:34:16] RJ2: has joined #elixir-lang
[10:35:06] RJ2: made myself a new phoenix project the standard way, live reload works when i change templates etc, but it doesn't re-run webpack if i modify a CSS file
[10:35:26] RJ2: should it be doing that? i want it to regen the css asset and live reload
[10:35:43] RJ2: (restarting phx.server triggers a webpack build fine)
[10:39:09] alm_: has joined #elixir-lang
[10:41:44] dysfun: that would be down to your webpack config?
[10:41:56] dysfun: and the command you've configured it to use
[10:42:26] RJ2: i used the mix templates to create the project, so it's the default phoenix setup, which includes live_reload - so assumed css and js assets would live reload too
[10:56:06] RJ2: oh, it would work.. but i have inotify issues with my VM's mounted disk.. setting webpack to watch with poll works fine :)
[10:56:19] dysfun: hehe, classic
[11:00:38] jeffro: has joined #elixir-lang
[11:06:17] netrino_: has joined #elixir-lang
[11:21:52] gvaughn: has joined #elixir-lang
[11:44:56] jeffro: has joined #elixir-lang
[11:49:53] zakora: has joined #elixir-lang
[11:50:09] Sgeo_: has joined #elixir-lang
[11:54:36] Sentreen: has joined #elixir-lang
[11:55:04] jeffro: has joined #elixir-lang
[11:59:09] sepseab: has joined #elixir-lang
[12:01:15] thomasfedb: has joined #elixir-lang
[12:01:37] thomasfedb: For Phoenix app auth, is guardian the standard go-to?
[12:05:12] jeffro: has joined #elixir-lang
[12:05:47] dysfun: there is no one choice that is right for everyone
[12:06:47] craigp: has joined #elixir-lang
[12:07:09] CornishPasty: It also depends what you mean by go-to... go-to for what?
[12:07:29] dysfun: "phoenix app auth"
[12:08:37] CornishPasty: I mean, guardian doesn't do a lot of what people think of "auth", so...
[12:08:55] dysfun: yeah, it's not what i'd pick most of the time
[12:09:08] asabil: has joined #elixir-lang
[12:09:23] zakora: what are the common lib choices for authentication?
[12:09:58] dysfun: it depends how you're doing it
[12:10:31] dysfun: like first off you will have to choose between outsourcing to an external service which probably uses JWT or insourcing in which case you have more flexibility
[12:15:11] craigp: has joined #elixir-lang
[12:15:41] jeffro: has joined #elixir-lang
[12:15:50] sentreen_: has joined #elixir-lang
[12:16:12] zakora: any recommendation for the "outsourcing" lib that uses Google accounts?
[12:19:39] gwillickers: i've used ueberauth in a bunch of projects but recently started looking at pow
[12:20:09] Nicd-: I wrote my own because I'm stupid like that
[12:21:02] dysfun: ours is also handwritten
[12:22:02] Sentreen: has joined #elixir-lang
[12:25:53] jeffro: has joined #elixir-lang
[12:26:26] Nicd-: because you're smart like that, dysfun
[12:26:59] dysfun: in this case, because someone else did the work originally :)
[12:27:18] tnez: has joined #elixir-lang
[12:27:27] dysfun: but i have had annoyances with various oauth libraries if that helps
[12:27:29] duane: has joined #elixir-lang
[12:28:36] lauromoura: has joined #elixir-lang
[12:29:04] dysfun: but auth in general is like the least enjoyable part of my programming lie
[12:29:24] dysfun: whoah freudian slip
[12:33:05] gvaughn: has joined #elixir-lang
[12:35:13] sentreen_: has joined #elixir-lang
[12:36:03] jeffro: has joined #elixir-lang
[12:37:28] sentreen1: has joined #elixir-lang
[12:40:58] Devalo: has joined #elixir-lang
[12:43:23] Sentreen: has joined #elixir-lang
[12:46:11] jeffro: has joined #elixir-lang
[12:49:08] Jetimon: has joined #elixir-lang
[12:52:37] sentreen_: has joined #elixir-lang
[12:54:33] OliverMT: dysfun: the one you use is very good isnt it?
[12:55:12] OliverMT: tbh, the one you are using is literally an elixir implementation of spring security :D
[12:55:18] OliverMT: <-- someone else
[12:56:12] bind: I guess when I would like to not let my phoenix application crash when the repo cannot connect to the db server ... I would have to write some custom supervision logic/subtree instead of adding it directly to the app supervisor?
[12:56:20] jeffro: has joined #elixir-lang
[12:56:26] bind: would make sense to me
[12:56:46] bind: ACTION is answering it's own questions presumably
[12:56:55] OliverMT: quack goes the rubber duck
[12:56:58] __charly__: has joined #elixir-lang
[12:57:01] OliverMT: or should that be squeek
[12:57:11] bind: depends on how you rub it
[12:58:27] knack: has joined #elixir-lang
[12:58:56] dysfun: OliverMT: no it's terrible and i wish i could justify the time required to replace it
[12:58:56] bind: the auth solution dysfun uses and is very good as you mention OliverMT is available somewhere on GH/hex or rather closed source?
[12:59:18] OliverMT: I was mostly trying to be funny
[12:59:24] OliverMT: but it's not half as shit as dysfun says
[12:59:31] dysfun: yeah, it is
[12:59:33] OliverMT: because he is very good at proclaiming things are shit
[12:59:48] OliverMT: it's basically declarative auth bind, it was centered around controller
[12:59:50] dysfun: do you remember what drugs you were on? can i get some
[13:00:01] OliverMT: letting you annotate with module attrs at the top to set specific roles for specific actions
[13:00:15] OliverMT: a tried and tested pattern in java eco system for MVC
[13:00:30] OliverMT: but, it kinda devolved a bit as it became adjusted for row level acl too
[13:00:44] dysfun: in short, it's terrible
[13:01:02] OliverMT: it's very not-in-your-way, it gives you some structure for how to do user id, anon, roles etc
[13:01:12] dysfun: no, it's terrible because of how in your way it is
[13:01:13] OliverMT: and the rest you have to do yourself by implementing a handler module
[13:01:33] dysfun: too opinionated
[13:01:34] OliverMT: it's intentionally in your way in the app you do because it forces you to think about the security to do *anything*
[13:01:59] OliverMT: that you have a different view at how to enforce team wide security patterns doesn't mean it's shit
[13:02:19] dysfun: and that's fine for some use cases, but it's tedious if you know what you're doing and how to do it and have to figure out how to adapt to its way of doing things
[13:02:29] dysfun: contrast with a previous job where i wrote a simple plug
[13:03:30] OliverMT: bind: micmus worked for me a while, so he cleaned up the api and released it
[13:03:36] OliverMT: it's on hex.pm as rest_auth fwiw
[13:03:58] OliverMT: might not be for you, but it's authed up uhm... four(?) projects in prod so far
[13:04:11] OliverMT: it should be said, this was made internally before guardian and ueberauth etc came to be
[13:04:21] OliverMT: not sure I'd have re-implemented Spring Security if I started again today
[13:04:27] dysfun: and i'd make it three except we have too much stuff to do
[13:04:38] OliverMT: and I'm slowly going out of it now, since we're moving to all gql
[13:04:54] OliverMT: still using some of the patterns for it, like user ids, metadata and roles
[13:05:08] OliverMT: but it's all dynamic ACL db backed auth now, based off an auth struct passed on to the resolvers/contexts
[13:05:19] OliverMT: very little plain role security
[13:06:24] jeffro: has joined #elixir-lang
[13:13:40] lauromoura_: has joined #elixir-lang
[13:16:58] jeffro: has joined #elixir-lang
[13:23:28] davidw: has joined #elixir-lang
[13:27:08] jeffro: has joined #elixir-lang
[13:27:29] alvises: has joined #elixir-lang
[13:28:54] bind: OliverMT: I see, thank you! I will have a look
[13:29:06] bind: thank you for your perspectives dysfun and OliverMT
[13:30:08] bind: personally in the projects I currently working on there also has to be db backed auth and access control
[13:31:24] bind: currently hacked together using a list of predefined roles
[13:32:09] bind: stored in the db as varchar thing
[13:32:30] bind: and checked on context level
[13:32:56] bind: (based on an auth struct which is resolved pretty early using a plug and some auth token)
[13:34:33] jeffro: has joined #elixir-lang
[13:40:16] OliverMT: my current auth design I am very happy with, based on GQL though
[13:40:20] OliverMT: but the concepts should be portable
[13:40:37] OliverMT: *any* context function has always at least two params, because param1 is an auth struct
[13:41:01] OliverMT: that passes user_id, roles, anonymous, metadata and some app specific convenience booleans like is_admin and is_company_admin (multi tenant saas)
[13:41:16] OliverMT: if a context needs to call other contexts to grab related data, the auth struct is passed on
[13:41:35] gvaughn: has joined #elixir-lang
[13:41:42] OliverMT: that way each context only has to deal with local security, as in the auth passed only needs to deal with the Thing that a given context deals with
[13:42:22] OliverMT: if you need more fine grained control like that, for example you should be alllowed to expand and look at users if those users are linked from a comment (needed for GQL, ebcause we need to be able to expand a user dynamically from the query), you can just pass on some opts like you would do in idiomatic elixir
[13:43:18] OliverMT: I find myself very rarely using roles lately, it's mostly is_admin and user_id / company_id for derived row based acl
[13:43:22] jeffro: has joined #elixir-lang
[13:44:16] benwilson512: OliverMT: yeah we're moving into a similar approach in our new app
[13:44:28] benwilson512: WRT param1 as auth struct
[13:44:48] OliverMT: make the auth a first class required citizen
[13:44:55] OliverMT: and you'll have a good authentication experience imop
[13:44:57] benwilson512: exactly, at the context level
[13:45:30] benwilson512: we're pairing it with my new postgres / event based system so there's this lovely record of grant / revoke events
[13:45:40] benwilson512: in the timeline of various changes
[13:45:48] OliverMT: benwilson512: did a deep dive in that gql controller thing btw
[13:46:06] benwilson512: yeah it's a little limited ATM but there's potential there
[13:46:14] benwilson512: the biggest hurdle is full phoenix form helper support
[13:46:28] OliverMT: the one thing I cant handle right now is form
[13:46:31] benwilson512: the ecto / phoenix form helper impl is not small
[13:46:38] OliverMT: but thats just a mismatch in general on forms vs mutations
[13:46:43] OliverMT: err, REST vs mutations
[13:47:07] OliverMT: not very hard to workaround just delegating to a simple absinthe schema run directly though
[13:49:02] netrino: has joined #elixir-lang
[13:51:49] asabil: has joined #elixir-lang
[13:57:02] hypercore: has joined #elixir-lang
[13:58:54] jeffro: has joined #elixir-lang
[14:07:03] DarkSeid: has joined #elixir-lang
[14:27:40] knack: has joined #elixir-lang
[14:33:40] netrino_: has joined #elixir-lang
[14:37:39] bind: OliverMT: do you also have a way to mark some calls to your context as :internal? for example when you have system-wide tasks such as application startup logic, periodic tasks..
[14:38:24] OliverMT: nah, if you need housekeeping functions that are outside this auth pattern then of course you can have that
[14:39:50] bind: OliverMT: so you would have that functionality separetly callable without auth struct?
[14:40:06] OliverMT: just document it
[14:41:36] bind: okay thank you
[14:44:56] jeffro: has joined #elixir-lang
[14:47:06] Sentreen: has joined #elixir-lang
[14:57:50] drangon: has joined #elixir-lang
[14:59:05] drangon: Hey I am curious to if it is possible to have the phoenix server serve an angular application that has routing
[14:59:31] chrismccord: have a catch-all get "/*" route
[14:59:37] drangon: ok i figured but i am a bit stumped on some things
[15:00:11] drangon: how do i get it to serve the generate html
[15:00:20] drangon: generated html from the build of angular
[15:00:20] jeffro: has joined #elixir-lang
[15:00:37] drangon: it builds to /priv/static
[15:03:11] wsieroci: has joined #elixir-lang
[15:09:45] drangon: i cant really find a guide for serving the static html
[15:11:32] cr0t: has joined #elixir-lang
[15:11:57] Sentreen: has joined #elixir-lang
[15:15:39] jeffro: has joined #elixir-lang
[15:21:00] warmwaffles: has joined #elixir-lang
[15:46:41] jeffro: has joined #elixir-lang
[15:48:41] nineczar: has joined #elixir-lang
[16:03:52] jeffro: has joined #elixir-lang
[16:04:21] Devalo: has joined #elixir-lang
[16:10:39] dtzuzu: has joined #elixir-lang
[16:11:44] tpl: has joined #elixir-lang
[16:16:29] Devalo: has joined #elixir-lang
[16:17:41] aalmazan: has joined #elixir-lang
[16:30:44] Havvy: has joined #elixir-lang
[16:51:15] orbyt_: has joined #elixir-lang
[16:58:43] wsieroci: has joined #elixir-lang
[17:03:37] jeffro: has joined #elixir-lang
[17:14:49] wonko7: has joined #elixir-lang
[17:22:44] LnL: has joined #elixir-lang
[17:24:02] BitGonzo: has joined #elixir-lang
[17:27:17] beefjoe: has joined #elixir-lang
[17:32:34] lexmag: has joined #elixir-lang
[17:32:43] LnL7: has joined #elixir-lang
[17:33:21] LnL7: has joined #elixir-lang
[17:44:25] kaniini: has joined #elixir-lang
[17:44:27] wsieroci: has joined #elixir-lang
[17:45:20] wormwood: what are the recommended site(s) for finding elixir work?
[17:48:39] josevalim: Elixir radar newsletter has a job board
[17:48:50] josevalim: I think elixir school and the forum as well
[17:51:26] orbyt_: has joined #elixir-lang
[17:52:48] starbelly: That is correct... and there is the #jobs channel on elixir slack
[17:53:14] starbelly: josevalim: I agree that the macro preprocessor should allow `?` and `!`
[18:00:15] starbelly: atoms rather... I don't full agree with it... I don't personally have come not to like `foo?` and `foo!` but if it brings better interop, which it would... I'm all for it
[18:00:37] starbelly: s/don\'t personally/personally/
[18:01:42] benwilson512: OliverMT: Re: our discussion about first arg auth the other day
[18:01:46] benwilson512: what's the shape of your auth struct?
[18:01:54] benwilson512: and do you do permissions / acls per context or globally?
[18:01:56] squall: has joined #elixir-lang
[18:19:19] DarkSeid: has joined #elixir-lang
[18:20:36] PragTob: has joined #elixir-lang
[18:23:18] OliverMT: I can just give you read only access to a repo I recon
[18:33:10] benwilson512: OliverMT: works for me
[18:33:31] OliverMT: handle is benwilson512 ?
[18:36:41] OliverMT: PM'd our most busy service using this auth structure
[18:39:47] gwillickers: has left #elixir-lang: ("spoop")
[18:40:00] hahuang65: has joined #elixir-lang
[18:41:00] orbyt_: has joined #elixir-lang
[18:45:43] knack: has joined #elixir-lang
[18:51:11] isHavvy: has joined #elixir-lang
[19:09:28] samrose: has joined #elixir-lang
[19:20:25] Phylock: has joined #elixir-lang
[19:37:41] dimitarvp: has joined #elixir-lang
[19:37:49] kyrylo: has joined #elixir-lang
[19:55:38] bind: OliverMT: I know that you wont allow a passing stranger like me to have a look... so you have things like user_id, a list of roles, a boolean indicating anonymousity, some (request/user) metadata and some other app specific booleans wrapped inside the auth struct? (currently using a user struct directly here)
[19:59:39] orbyt_: has joined #elixir-lang
[20:10:39] b3am: has joined #elixir-lang
[20:20:03] squall: has joined #elixir-lang
[20:22:15] Liothen: has joined #elixir-lang
[20:25:04] Liothen: has joined #elixir-lang
[20:35:47] orbyt_: has joined #elixir-lang
[20:38:12] netrino: has joined #elixir-lang
[20:39:01] ur5us: has joined #elixir-lang
[20:42:29] Devalo: has joined #elixir-lang
[21:08:57] orbyt_: has joined #elixir-lang
[21:17:43] maddybut1: has joined #elixir-lang
[21:38:11] maddybut1: has joined #elixir-lang
[21:39:35] Devalo: has joined #elixir-lang
[21:43:02] RJ2: can someone recommend a reasonably well designed, idiomatic HTTP client library for a restful json api that i can have a look at? I want to write one, and would like a crash course on how things are done in modern elixir
[21:43:21] RJ2: is there a clear favourite http lib for example
[21:46:29] Radar: RJ2: I wrote an interface to Elastic Search here using the HTTPotion package: http://github.com/radar/elastic
[21:46:41] Radar: Along with the jason package for decoding/encoding JSON
[21:46:46] RJ2: Radar: thanks, will take a look
[21:52:38] ericmj: RJ2: you can use your favorite erlang library. httpotion and httpoison wraps ibrowse and hackney respectively, but I would recommend using underlying the libraries directly
[21:52:46] asabil_: has joined #elixir-lang
[21:58:37] RJ2: ericmj: thanks - this is partly for me to learn elixir though :)
[21:59:25] RJ2: ah re http client libs, yeah. may use hackney, directly or otherwise
[22:00:18] ericmj: RJ2: make sure you don't learn the anti-patterns `HTTPoison.Base` and `HTTPotion.Base`
[22:00:35] ericmj: and outside of those modules they really are just wrappers
[22:00:53] ericmj: that's only my opinion though
[22:04:46] plsm: has joined #elixir-lang
[22:05:20] RJ2: ACTION nods
[22:06:08] plsm: wow lots of people in here
[22:06:25] __charly__: has joined #elixir-lang
[22:14:32] Sentreen: has joined #elixir-lang
[22:14:42] dysfun: not all paying attention though
[22:22:00] plsm: hi. I'm just looking at elixir for a personal project. Are the books suggested on the official site a good place to start with elixir?
[22:22:31] dysfun: there are any number of good places to start with elixir.
[22:23:52] drincruz: has joined #elixir-lang
[22:26:22] gvaughn: has joined #elixir-lang
[22:36:34] assemblyman: has joined #elixir-lang
[22:41:34] benwilson512: plsm: those are definitely a great place to start
[22:44:49] Radar: plsm: joyofelixir.com
[22:51:16] craigp: has joined #elixir-lang
[22:52:48] bind: ericmj: how is HTTPoison.Base or HTTPotion.Base an anti-pattern?
[22:54:12] ericmj: bind: they use code injection when it's not necessary
[22:54:35] ericmj: and they pollute your own API with their functions
[22:56:14] bind: ericmj: I see ... but I guess it is more a "you have to get a feeling for it" thing to know when it would be useful to have a "use"-able module?
[22:57:13] ericmj: it's technically not related `use` since `use` is just another way of calling a macro
[22:57:17] jeffro: has joined #elixir-lang
[22:57:40] ericmj: you shouldn't generate code when it's not necessary
[22:58:35] ericmj: the Base modules generate duplicate code that you solve by using defdelegate or usually just a simple `import`
[22:58:53] ericmj: s/solve/avoid
[22:59:31] tnez: has joined #elixir-lang
[23:01:26] bind: I see ... looking at https://hexdocs.pm/httpoison/HTTPoison.Base.html ... these functions could indeed be just imported and your own module could then present it's own api only without all those additional functions
[23:02:28] bind: ericmj: thank you for that perspective
[23:27:45] sentreen_: has joined #elixir-lang
[23:33:04] nageV: has joined #elixir-lang
[23:38:59] Sentreen: has joined #elixir-lang
[23:56:14] sentreen_: has joined #elixir-lang