<    June 2018     >
Su Mo Tu We Th Fr Sa  
                1  2  
 3  4  5  6  7  8  9  
10 11 12 13 14 15 16  
17 _1_8 19 20 21 22 23  
24 25 26 27 28 29 30
00:01 alexband joined
00:08 pera joined
00:22 mertonium joined
00:24 alexband joined
00:25 liberza joined
00:31 <iFire> nickjj: is 30KB of html bit or small?
00:31 <iFire> big*
00:32 <nickjj> iFire, it's not too big
00:35 <nickjj> i never benchmarked jquery's parsehtml function, but it has to go through that to pull out only the specific content you want (via an ID lookup or whatever you use)
00:35 <nickjj> on my dev box is was really fast
00:39 mertonium joined
00:49 duane joined
00:51 ur5us joined
00:58 take_flight joined
01:00 jeffro joined
01:04 <ivan> sweet https://github.com/elixir-lang/elixir/commit/5edb1d2739af074cf555f4300de9da71c214211d
01:09 nighty- joined
01:21 adkron joined
01:29 alexband joined
01:45 tomterl joined
01:49 sihui_io joined
02:03 sihui_io joined
02:17 rcdilorenzo left
02:20 mahmudov joined
02:23 Sgeo__ joined
02:35 sevenseacat joined
02:50 nicht joined
03:01 jeffro joined
03:07 liberza joined
03:17 BitGonzo joined
03:26 sihui_io joined
03:30 tgould joined
03:48 demio joined
03:53 mertonium joined
03:54 mertoniu_ joined
04:02 Avinash joined
04:05 iamvery joined
04:06 tgould joined
04:28 Avinash joined
04:36 sindan joined
04:54 Electrux joined
05:00 Electrux joined
05:01 jeffro joined
05:04 gvaughn joined
05:06 lessless joined
05:09 Avinash joined
05:13 pera joined
05:17 sevenseacat joined
05:24 ur5us joined
05:24 alexband joined
05:25 mbuf joined
05:28 tgould joined
05:29 mertonium joined
05:38 Avinash joined
05:46 Electrux joined
05:48 gvaughn joined
05:54 icanhazbroccoli joined
05:56 Electrux joined
06:12 lexmag joined
06:13 elixir-lang-repo joined
06:13 <elixir-lang-repo> [elixir] josevalim pushed 1 new commit to master: https://git.io/vhaVu
06:13 <elixir-lang-repo> elixir/master 01d141d José Valim: Add a note about apply/3, closes #7740
06:13 elixir-lang-repo left
06:17 kapil___ joined
06:17 <sms> I'm going to need some better documentation on writing many-to-many forms
06:32 Avinash joined
06:34 tuacker joined
06:38 <sms> On second thought I may be trying to do this the hard way
06:41 _arkgil joined
06:44 meh` joined
06:48 za1b1tsu joined
06:49 <za1b1tsu> Is there a command that deletes a migration? The opposite of: ecto.gen.migrate? Like in rails you g migration/d migration
06:57 lessless joined
06:58 Jetimon joined
07:02 jeffro joined
07:03 nighty- joined
07:11 zakora joined
07:11 tgould joined
07:15 <kapil___> how to copy all constrains from `changeset()` to `delete_changeset()`:
07:16 <kapil___> https://gist.github.com/kapilpipaliya/0b5e239606811aaa6b15bf3720ab9124
07:19 <gonz_> The amount of FUD that exists internally in the BEAM community is astounding.
07:21 <Nicd-> gonz_: care to elaborate?
07:21 <micmus> kapil___: extract them to a helper function and call it from both changeset and delete_changeset
07:21 <Nicd-> za1b1tsu: `rm priv/repo/migrations/...` :)
07:21 <gonz_> You don't even need outsiders to spout unfounded BS about the platform if you have people in the actual community always repeating the same "truths" over and over.
07:22 <Nicd-> what kind of "truths"?
07:22 <gonz_> Nicd-: There's a thread on EF where a guy says you can't saturate all your cores on the BEAM and he didn't even get challenged on it, pretty much.
07:22 <gonz_> Ridiculous
07:22 <Nicd-> but that's very easy :o
07:22 <gonz_> If that gets repeated enough times it'll become the new "Any and all computation on the BEAM is dead slow"
07:23 Phylock joined
07:23 <gonz_> It's as if no one realizes there are nuances to these things
07:26 <Nicd-> what thread?
07:27 <OliverMT> Link!
07:28 <Nicd-> OliverMT: no that's a character in a video game
07:30 <OliverMT> Zelda!
07:30 mertonium joined
07:30 <gonz_> Nicd-: https://elixirforum.com/t/you-may-not-need-genservers-and-supervision-trees/12947
07:31 PragTob joined
07:32 akeating joined
07:36 <Nicd-> eh, every language has these discussions, and a few people did call them out
07:37 sevenseacat joined
07:40 mahmudov joined
07:50 <sms> https://medium.com/@abitdodgy/building-many-to-many-associations-with-embedded-schemas-in-ecto-and-phoenix-e420abc4c6ea
07:50 <sms> Does this seem like the sane way to go about building a form for a field with a many to many association?
07:51 <kapil___> micmus: thanks
07:51 gvaughn joined
07:53 netrino joined
07:57 <za1b1tsu> what it in your opinion best IDE for elixir web dev?
07:59 <dysfun> emacs?
07:59 <sms> Definitely Vim
08:00 <za1b1tsu> Im reading about InteliJ, seems interesting
08:00 <Nicd-> za1b1tsu: VSCode with ElixirLS is what I like
08:01 <za1b1tsu> I'm using vim for a 5 months now. Never worked with an IDE in my life, I'm thinking of trying it out
08:02 <Nicd-> VSCode is not an IDE unless you make it one, though. haven't tried IntelliJ's Elixir support
08:03 <isHavvy> IntelliJ's elixir support is pretty good.
08:04 <isHavvy> Although random crashes last time I used it, but only internal ones that didn't really affect what I was doing. And the developer was always quick to fix the ones I've filed issues against.
08:11 alexband_ joined
08:11 Avinash joined
08:16 ZigPaw joined
08:16 _arkgil joined
08:23 ZigPaw joined
08:33 optikfluffel joined
08:34 akeating joined
08:47 akeating joined
08:47 _arkgil joined
08:47 gvaughn joined
08:55 _arkgil joined
08:57 jeffro joined
09:00 <josevalim> sms: i think the "what's new in ecto 2.0" free ebook covers working with many to many
09:02 _arkgil joined
09:08 Jetimon joined
09:11 <sms> josevalim: Thanks for the heads up, I was unaware of this book. I'll have to give it a read tomorrow
09:11 <josevalim> fantastic author too
09:12 tgould joined
09:12 Hanonim joined
09:12 Hanonim left
09:12 Hanonim joined
09:12 <josevalim> :P
09:13 <sevenseacat> lol
09:13 <sms> They always said you were humble
09:13 <* Hanonim> waves to dysfun
09:13 <dysfun> heya!
09:14 <dysfun> i'm afraid we're out of cookies, but take a seat
09:14 <sms> I feel like there's more hours in your days than mine josevalim!
09:18 ZigPaw joined
09:19 ur5us joined
09:20 _arkgil joined
09:26 zigpaw joined
09:28 _arkgil joined
09:30 zigpaw joined
09:31 mertonium joined
09:32 pereira_alex joined
09:38 flaviodesousa joined
09:43 Avinash joined
09:44 zakora joined
09:46 ub joined
09:50 za1b1tsu joined
09:56 Avinash joined
09:57 _arkgil joined
10:02 <ggVGc> it's because josevalim is highly fault tolerant
10:02 akeating joined
10:07 _arkgil joined
10:08 toothfairy_ joined
10:17 _arkgil joined
10:19 Zaab1t joined
10:21 Avinash joined
10:24 ur5us_ joined
10:27 ur5us joined
10:28 jeffro joined
10:31 _arkgil joined
10:34 Avinash joined
10:35 tgould joined
10:35 gvaughn joined
10:39 Avinash joined
10:43 TarVanimelde joined
10:55 muddywatt joined
11:00 _arkgil joined
11:09 lexmag joined
11:09 Avinash joined
11:21 za1b1tsu joined
11:22 wonko7 joined
11:26 ur5us joined
11:30 jeffro joined
11:30 Avinash joined
11:31 mertonium joined
11:34 meh` joined
11:37 rcdilorenzo joined
11:38 tgould joined
11:43 mac_ified joined
11:46 fmcgeough joined
11:54 rcdilorenzo_ joined
11:54 mac_ified joined
11:55 rcdilorenzo_ joined
11:57 pereira_alex joined
11:58 jeffro joined
12:01 dimitarvp joined
12:02 <antranigv> hey all
12:02 lessless joined
12:02 <antranigv> what's up?
12:03 karreiro joined
12:14 greengriminal joined
12:14 beefjoe joined
12:15 <nox> Up is a direction.
12:15 <josevalim> that's it folks. we are closing IRC for today.
12:16 <Hanonim> I see Elixir people are more humorous than Clojure people
12:17 <sevenseacat> lmao
12:18 ps_ joined
12:20 Avinash joined
12:22 rcdilorenzo joined
12:23 gvaughn joined
12:34 <dysfun> Hanonim: we don't have to worry so much about our systems going down, so we can afford to be good humoured
12:35 PragTob joined
12:41 ub joined
12:42 lexmag joined
12:58 karreiro joined
13:00 maxbeizer joined
13:00 kapil___ joined
13:03 mitchellhenke joined
13:05 demio joined
13:07 akeating joined
13:09 zakora joined
13:09 mertonium joined
13:15 Avinash joined
13:24 duane joined
13:29 iAmerikan joined
13:41 Benjojo joined
13:42 mitchellhenke joined
13:42 gvaughn joined
13:44 <njichev> hmmm, why do I see people trap exits inside phoenix channels, is there any reason for that?
13:45 <josevalim> njichev: they may be using a task or talking to other processes that they want to crash if the channel dies
13:50 <njichev> yeah but it's mostly on blog posts where the only messages come from the client and are defined in advance, so was wondering whether it was wrong
13:51 drigo joined
13:51 Avinash joined
13:57 stephen_m joined
13:58 jeffro joined
14:04 jeffro joined
14:04 rcdilorenzo joined
14:05 <Sentreen> Is there any particular reason why quoting a two element tuple returns the tuple, while quoting every other tuple returns `{:{}, env, arglist}`? It seems pretty arbitrary
14:07 ssswitch joined
14:13 <asonge> Sentreen: so, as far as i understand it, only 3-element tuples are problematic for escaping, but 2-element tuples are pretty common and are known to be safe to put in as-is
14:15 <micmus> Sentreen: the reason is to allow keyword be AST literals - it's very common to pass them as options to macros and this makes it much easier to deal with that
14:16 _arkgil joined
14:19 lexmag joined
14:21 <Sentreen> The keyword reason does make sense, although a helper function in the macro module seems to be more elegant IMO. Thanks both :)
14:28 anykey joined
14:29 _arkgil joined
14:33 iAmerikan joined
14:37 lexmag joined
14:38 _arkgil joined
14:38 karreiro joined
14:40 sihui_io joined
14:43 elbow-jason joined
14:45 Avinash joined
14:45 mahmudov joined
14:45 Electrux joined
14:49 jeffro joined
14:51 nineczar joined
14:52 adkron joined
14:53 za1b1tsu joined
14:53 _arkgil joined
14:54 <za1b1tsu> Anyone working on OSX? If do brew info elixir. It show dependencies: elixir with a red X. Is this okay?
14:55 <sevenseacat> elixir isnt a dependency of elixir, so no
14:57 tgould joined
14:57 <za1b1tsu> sevenseacat: Im sorry. I ment erlang :(
14:58 <asonge> za1b1tsu: it's not that bad. just means out-of-date or not-present. brew install should install the latest erlang at the time.
15:02 <za1b1tsu> asonge: I tried brew install erlang and it says it's already installed. That's why its confusing
15:02 <asonge> za1b1tsu: right, you may need to just upgrade it.
15:10 mertonium joined
15:11 DSM joined
15:13 adkron_ joined
15:13 mertoniu_ joined
15:17 Electrux joined
15:20 TheNet joined
15:27 karreiro joined
15:27 Electrux joined
15:28 philShaughnes joined
15:29 DSM joined
15:33 akeating joined
15:37 tuacker joined
15:39 Electrux joined
15:40 akeating joined
15:41 garazdawi joined
15:49 mertonium joined
15:49 <OvermindDL1> dysfun: https://github.com/OvermindDL1/protocol_ex/issues/14
15:49 <OvermindDL1> I.E. Whoops my bad! Premature optimization is the root of all evil! ^.^;
15:53 Electrux joined
15:55 <OvermindDL1> And yeah, all I had to do was move an `end)` up (and move around everything in-between, thank goodness for gitub's `?w=1` ignore whitespace changes option):
15:55 <OvermindDL1> https://github.com/OvermindDL1/protocol_ex/commit/1ba7e11236044f9b2cfb00acb3cddaaa42dac411?w=1#diff-e498cee26a35236c767fc2382c0ec6a5
16:04 Electrux joined
16:06 gvaughn joined
16:09 rcdilorenzo joined
16:14 rcdilorenzo joined
16:17 _arkgil joined
16:19 rcdilorenzo joined
16:21 suk joined
16:23 za1b1tsu joined
16:24 rcdilorenzo joined
16:27 <za1b1tsu> Hello, in many Ecto tutorials in the application.ex the Ecto is declared as a child for supervisor like this: supervisor(Notex.Repo, []). This is no longer correct, right?
16:31 <micmus> za1b1tsu: it's still correct in the sense that it will work just fine. But you can probably get away with just the module name if you're using elixir > 1.5
16:33 <za1b1tsu> micmus: well, if I try it I get this lib/notex/application.ex:13: undefined function supervisor/2
16:34 <micmus> Ah, it's `Supervisor.Spec.supervisor` it's probably not imported by default nowadays
16:34 Electrux joined
16:37 <za1b1tsu> micmus: Cheers
16:38 <za1b1tsu> it's interesting that in the config database: "data_base_name" works but using an atom. :data_base_name does not work. Atoms are not converted to strings automatically?
16:44 <elbow-jason> that depends on the implementation. It is not automatic.
16:48 wsieroci joined
16:49 aalmazan joined
16:55 mertonium joined
17:00 DSM joined
17:05 sihui_io joined
17:06 kernkern joined
17:12 lexmag joined
17:17 sihui_io joined
17:19 Labu joined
17:23 pera joined
17:23 adkron_ joined
17:24 icanhazbroccoli joined
17:30 tomaz_b joined
17:40 Ryanar joined
17:44 <za1b1tsu> So before Ecto 2, validations were handles with module attributes and now they are handled in the user's own declaration of the changeset function? Is this correct?
17:44 iFire joined
17:45 <josevalim> No
17:46 <josevalim> If it was module attributes, it was a long time ago
17:46 <josevalim> Before 1.0 even
17:46 <m1dnight1> Is there a different implementation between tuples with n elements, and one with two elements?
17:46 <m1dnight1> If you get the ast with quote, it returns a literal for two elements, and an ast for 1,3 or more.
17:46 DSM joined
17:47 <m1dnight1> https://hastebin.com/ebobukoker.pas
17:47 <m1dnight1> ^ repl snippet
17:47 rpip joined
17:48 <micmus> m1dnight1: there's not. The reason for 2-tuples to be literals in AST is for keywords to be literals. It makes dealing with options to macros sane
17:48 <za1b1tsu> josevalim: found a nice tutorial that does valdiation like this @required_fields ~w(note_name) https://www.sitepoint.com/introduction-to-elixirs-ecto-library/ So it's ancient
17:49 iAmerikan joined
17:49 <micmus> za1b1tsu: it passes the attributes to functions, so it's exactly the same
17:49 <m1dnight1> Micmus: you mean keyword lists?
17:49 <micmus> yes
17:49 <m1dnight1> Makes sense, thanks
17:54 <dysfun> OvermindDL1: i saw :) will test in a bit
17:55 tgould_ joined
18:00 dodo75 joined
18:14 <OvermindDL1> Woo
18:16 <dysfun> OvermindDL1: looks good :)
18:16 kernkern joined
18:16 <dysfun> or at least it compiles now haha
18:17 Jetimon joined
18:17 <OvermindDL1> Lol, woo
18:18 <dysfun> damnit, now my tests failing are my own fault
18:18 za1b1tsu joined
18:20 ssswitch joined
18:22 <OvermindDL1> Lol!
18:22 <OvermindDL1> That happens. ^.^
18:26 iAmerikan joined
18:27 <nyaray> Classic.
18:28 jeffro joined
18:32 akeating joined
18:34 ccube33 joined
18:36 jeffweiss joined
18:56 <nickjj> would you guys still use this tactic to rate limit a phoenix controller / action? https://blog.danielberkompas.com/2015/06/16/rate-limiting-a-phoenix-api/
18:57 DSM joined
18:59 <DavidAntaramian> From what I recall, ex_rated uses a GenServer for its rate-limiting determination. Unless that's changed, you can run into significant issues with throughput
19:00 <nickjj> going by some issues on github it looks like it still is
19:00 <nickjj> also it sadly looks like the lib might be on its way to dying, the author says he's not using it anymore
19:00 kernkern joined
19:00 <DavidAntaramian> Chris McCord has a blog post on a way to implement this type of functionality using ETS with atomic counters : https://dockyard.com/blog/2017/05/19/optimizing-elixir-and-phoenix-with-ets
19:02 weird_error joined
19:02 <nickjj> DavidAntaramian, interesting, thanks
19:03 <nickjj> i'm still pretty new to elixir, but it sounds like maybe i could take the plug from the other blog post and just drop in chris' rate limiting library instead?
19:03 <asonge> nickjj: basically, this problem only gets hard if you want it to work in a clustered environment
19:03 <nickjj> to replace ex_rated
19:03 <asonge> i mean, no matter what one you choose, you should use a plug
19:04 <nickjj> asonge, right now i'm working with 1 server, where i'd like to set something up like "allow user to send 5 requests per minute, otherwise deny access"
19:04 <nickjj> 5 per minute isn't a hard requirement, just looking to prevent bursty attacks
19:05 <asonge> yeah, you start to get into rate limiting algorithms and things get "fun"
19:05 <asonge> leaky bucket <3
19:05 <asonge> lets you have limited burst
19:05 <nickjj> luckily it looks like chris' post covers that
19:06 <nickjj> with being able to set a max per minute and a sweep after timer
19:07 <nickjj> but i am left a little confused on how to implement it into a project
19:07 <asonge> you mean where to put the files?
19:08 <nickjj> it would probably go in lib/AppName/rate_limiter.ex right?
19:08 <nickjj> but i'm not quite sure how to wire it up with phoenix, i've never worked with genservers before
19:10 <asonge> i'd actually consider sticking it in the _web/services, but it doesn't really matter. but you'd use plug so that you can put it in your controlls or in your router or in your endpoint
19:10 <asonge> so the gen_server does the bookkeeping, and the plug manages http-specific stuff
19:10 <micmus> nickjj: I have a lib for rate limiting/throttling of requests https://github.com/michalmuskala/plug_attack
19:11 <nickjj> asonge, do i need to do anything special in mix.esx under def application, or will the genserver "things" be automatically taken care of by the rate limiter module?
19:11 <micmus> it has pluggable backends and ships with one using ets. It should be very close the the most efficient single-node solution
19:11 <asonge> nickjj: you need to add it to the supervisor
19:12 <nickjj> micmus, oh cool thanks, i'll check it out
19:13 <nickjj> asonge, where is that supervisor definition located?
19:13 <asonge> lib/app/application is the application-level supervisor, you'd declare more as you need them, but you can add stuff to that top level
19:14 <nickjj> so i'd add , supervisor(HelloWeb.Services.RateLimiter, []) to the list of children?
19:14 <nickjj> or whatever the app name is
19:16 <iFire> is anyone familiar with sage the saga transaction library?
19:16 <nickjj> or not, in chris' post it looks like you start it with RateLimiter.start_link() , so that means i'd just add that to the list
19:16 <nickjj> right?
19:17 <DavidAntaramian> nickjj: you want to add it to the supervisor and have it listed _before_ your endpoint module
19:17 <micmus> iFire: let's say I am :)
19:17 <nickjj> DavidAntaramian, oh
19:18 <iFire> micmus: Was interested in your method of persistent the saga after the current node dies
19:18 <nickjj> also i noticed there's no _web/services dir by default here , is that considered a community driven best practice for files like this?
19:18 <DavidAntaramian> nickjj: That will let your supervisor know "Start my rate limiter prior to starting the Phoenix endpoint"
19:19 <micmus> iFire: AFAIK right now it does not do persistence. there's an issue with some thoughts and possible approaches to provide it, though
19:19 <iFire> micmus: https://github.com/nsweeting/gen_queue is a really cool way to use queues
19:20 <iFire> I was thinking if you used persisted queues it would be a good way to handle persistence
19:20 <iFire> GenQueue TaskBunny - RabbitMQ-backed job queue.
19:22 <nickjj> DavidAntaramian, any thoughts on why it might be undefined when trying to call RateLimiter.start_link?
19:23 iAmerikan joined
19:23 <nickjj> file location: lib/hello_web/services/rate_limiter.ex , calling it as: HelloWeb.Services.RateLimiter.start_link()
19:23 DSM joined
19:25 <iFire> micmus: alernatively, you have to use some sort RAFT based consensus algo which is painful
19:25 <iFire> https://github.com/rabbitmq/ra https://github.com/skirino/rafted_value
19:25 <DavidAntaramian> nickjj: you probably don't want to call start_link; rather, you just want to add it to the supervision tree, and the supervisor will call start_link at the appropriate time
19:26 <micmus> iFire: I'm not sure you need a queue there. A WAL should be generally enough, unless you're shutting down a node for good - there might be some graceful shutdown function for that case
19:26 <nickjj> DavidAntaramian, oh. i saw chris called it with start_link in the blog post
19:26 <nickjj> and the phoenix comments in application.ex say to start it with start_link (in the child list)
19:27 <nickjj> example: # Start your own worker by calling: Hello.Worker.start_link(arg1, arg2, arg3)
19:27 <DavidAntaramian> nickjj: If you're new to using GenServers and supervisors and the like, I'd recommend you check out the Mix and OTP guide. That will give you a bit more context about how these pieces integrate
19:27 <DavidAntaramian> https://elixir-lang.org/getting-started/mix-otp/introduction-to-mix.html
19:27 <nickjj> yeah i definitely need to brush up on all of this
19:28 <iFire> micmus: this is assuming high avaliablity setups
19:28 <iFire> something like docker images that move around physical machines (kubernetes stateful sets)
19:29 jeffweiss joined
19:30 <nickjj> DavidAntaramian, seems calling it with supervisor(HelloWeb.Services.RateLimiter, []) also fails
19:30 <nickjj> maybe it can only be called if i start a separate Supervisor specifically for this one, rather than being a child of the main Supervisor?
19:34 <nickjj> micmus, your lib is looking more appealing for the time being, wiring all of this stuff up manually isn't quite working out haha
19:41 <DavidAntaramian> You shouldn't need a separate supervisor. Without looking through your code it would be difficult to diagnose where you're going wrong, but I'd again point to the guides which provide a good introduction to how OTP works
19:47 <nickjj> DavidAntaramian, all i did was add the 1 line to application.ex , in the children array
19:49 <nickjj> check lines 5-9 https://gist.github.com/nickjj/f4a66165fe095c0957f32652bcd2af06
19:50 jeffweiss joined
19:50 <nickjj> the hello_web/services/rate_limiter.ex file was copy / pasted from chris' blog post exactly (the "ets to the rescue code" version on the bottom)
19:51 <DavidAntaramian> The first or second attempts in that gist should work
19:52 <DavidAntaramian> If you copied it directly and didn't change the module name, then the name is still `RateLimiter`
19:52 <nickjj> yep i didn't change it
19:52 <nickjj> (UndefinedFunctionError) function HelloWeb.Services.RateLimiter.start_link/0 is undefined (module HelloWeb.Services.RateLimiter is not available)
19:52 <nickjj> but that's what i get with the first or second version
19:55 <DavidAntaramian> Try changing the first from `supervisor(HelloWeb.Services.RateLimiter, [])` to `supervisor(RateLimiter, [])`
19:56 inhortte joined
19:56 <nickjj> same error, and it's worth mentioning i don't have an aliases or uses/imports defined
19:57 <nickjj> wait a sec, it's working with your modification (vscode didn't register the save, doh)
19:58 <nickjj> but i'm not sure i understand how it can find that module without supplying the path to it? the other children have things like HelloWeb.Endpoint and hello_web/endpoint.ex matches the path, etc.
19:59 <DavidAntaramian> There's no relationship between filepaths and naming. The name is exactly what you put after defmodule
19:59 jeffro joined
19:59 <nickjj> AH now i see what you meant about the RateLimiter name , it's not namespaced to HelloWeb.Services
19:59 mitchellhenke joined
20:00 <nickjj> ok, that's a huge thing that went over my head, i thought they were tied together
20:01 <nickjj> but then that makes me think, how does elixir/phoenix know where to find that module on disk?
20:01 jeffro joined
20:04 <DavidAntaramian> When Elixir compiles your application it recursively looks in the directories specified by your `mix.exs` file and then compiles all the `.ex` files it comes across. The modules defined in them are compiled to bytecode which is stored in the build directory, and that's what the VM looks at
20:04 <nickjj> perfect, thanks. and on that note, maybe it's time to pickup an elixir book or read the docs for real
20:05 <nickjj> i blame phoenix for making things too approachable for people who really have no idea how elixir works but know other languages pretty well
20:10 jeffweiss joined
20:16 demio joined
20:18 za1b1tsu joined
20:18 jeffweiss joined
20:18 <za1b1tsu> is there an IDE that has autocomplete for deps methods as well?
20:20 LnL joined
20:22 work_ joined
20:26 <Nicd-> VSCode ElixirLS
20:26 <Nicd-> shouldn't the IntelliJ plugin also do that?
20:30 schainks_ joined
20:31 philShaughnes left
20:37 squalloster joined
20:40 Electrux joined
20:40 <za1b1tsu> I will try, cheers
20:49 pshawgs joined
20:49 DSM joined
20:50 Electrux joined
21:00 Electrux joined
21:10 Electrux joined
21:16 icanhazbroccoli joined
21:20 Electrux joined
21:20 nineczar joined
21:23 ur5us joined
21:30 Electrux joined
21:34 DSM_ joined
21:35 iAmerikan joined
21:39 Electrux joined
21:43 DSM joined
21:47 netrino joined
21:50 Electrux joined
21:58 tgould joined
22:02 Ryanar joined
22:09 Electrux joined
22:13 __charly__ joined
22:19 Electrux joined
22:22 averell joined
22:30 Electrux joined
22:35 weird_error joined
22:40 Electrux joined
22:41 iAmerikan joined
22:42 akeating joined
22:43 karreiro joined
22:50 Electrux joined
23:05 jeffro joined
23:07 DSM joined
23:08 msantos joined
23:10 Electrux joined
23:11 <njichev> heyy I need to check if a certain module is a protocol, checking the source it's done by module.__protocol__(:module) and rescue Undefined
23:12 <njichev> maybe non banged versions of assert_protocol! and assert_impl! like is_protocol and is_impl would be nice?
23:13 <njichev> anyways I will do it the same way, just wondering if others will find it useful :)
23:17 jeffro joined
23:30 Electrux joined
23:34 adkron_ joined
23:34 <sms> God this is annoying
23:35 <sms> All I want is a blog post that could have a form where you select categories
23:35 <sms> But rendering this is actual hell for no reason
23:35 nineczar joined
23:39 Electrux joined
23:41 sillyotter joined
23:44 <Ankhers> sms: What exactly are you having trouble with?
23:50 Electrux joined