<     May 2017     >
Su Mo Tu We Th Fr Sa  
    1  2  3  4  5  6  
 7  8  9 10 11 12 13  
14 15 16 17 18 19 20  
21 22 23 24 _2_5 26 27  
28 29 30 31
00:00 dikaio joined
00:02 Reshi joined
00:06 kronicdeth joined
00:20 griffinb_ joined
00:21 jkreeftmeijer joined
00:23 __charly__ joined
00:26 nighty-- joined
00:27 okeuday_bak joined
00:27 <hexkey[m]> I have a question: are there any docs about the automatic multithreading/optimization that BEAM does?
00:29 <hexkey[m]> I'm trying to compare the speed of a program (I have single/multithreaded versions of it), and there's very little difference
00:32 srxa_ joined
00:33 <dimitarvp> hexkey[m]: That's a pretty generic question. Speaking of multitasking, Erlang/Elixir are chosen for fault tolerance and transparent distribution of work.
00:33 <dimitarvp> What do you compare, and with what?
00:34 sammers joined
00:35 <asonge> hexkey[m]: what kind of docs do you want? details on how the current versions of schedulers work to schedule and run a process?
00:35 <hexkey[m]> I have two implementations of mergesort. The first is the really basic one that googling 'elixir mergesort' turns up, the second one uses the Task module/ Task.await. I timed them with a timer that nabs the current montonic time.
00:35 <hexkey[m]> (Also I can toss them up on a paste if needed)
00:37 Cohedrin joined
00:37 kronicdeth joined
00:37 <hexkey[m]> My working theory is that It's already being optimized/multithreaded, and the multithreaded version I wrote just adds overhead
00:38 <hexkey[m]> But I'm looking into other possibilities too
00:39 <asonge> hexkey[m]: it helps to not think of this as multithreading, but you're just making it schedulable in chunks. but yeah, all parallel algorithms make tradeoffs between communication overhead or coordination over shared memory/resources, and efficient (in terms of heat) vs latency and such
00:39 <asonge> and efficiency vs latency*
00:44 nhooyr joined
00:45 <hexkey[m]> Right, thanks. I'm just trying to mess around and see exactly how much control I have over the scheduling.
00:47 <asonge> the best way to quickly understand it that i can remember, is that there's some talks
00:47 <benwilson512> well so keep in mind that with all CPU bound tasks you aren't gonna get any more speed up than there are CPU cores
00:47 <asonge> ^^^ that too.
00:47 <benwilson512> so if you're spawning far more tasks than CPu cores
00:47 <asonge> also the coordination step at the end with await() is going to be costly
00:48 <benwilson512> it's just adding overhead
00:48 <asonge> not costly per se, but you might be waiting on 1 process more than another
00:49 <asonge> (this is kinda why flow exists, to try to flexibly minimize multi-stage parallel process latency on medium-sized heterogenous workloads)
00:50 <hexkey[m]> flow as in pipeing? I'm not sure I've heard of that before
00:50 <asonge> https://hexdocs.pm/flow/Flow.html
00:51 <hexkey[m]> Ah.
00:51 elgenie joined
00:51 <asonge> and heterogenous here means io and cpu bound stuff kinda mixed together
00:53 <asonge> flow might not be the most efficient for something CPU bound, but you might be in the ball park, and you can easily refactor a flow workflow into any custom algorithm you come up with if you make all your flow functions into private functions
00:53 <tristan__> hexkey[m]: it is not "already multithreaded", code will be sequential if you write it sequential
00:53 <asonge> ^^^ also that.
00:53 <tristan__> but just because you spawn processes doesn't mean it'll be faster than sequential version. it adds overhead
00:57 <benwilson512> yeah my favorite is
00:57 <benwilson512> stream |> Stream.map(&Task.async(&blah)) |> Stream.map(&Task.await)
00:58 codestorm joined
00:58 codestorm joined
00:59 <asonge> some days i wonder if the elixir docs might benefit from some kind of way to make warning boxes and tip boxes in the docs. the "you should probably use yield" clause in Task.await could be more prominent.
01:06 harfangk joined
01:10 Cohedrin joined
01:14 mika__ joined
01:19 cschneid_ joined
01:19 DarkArcher207 joined
01:20 sfbw joined
01:23 cfreeze joined
01:26 cschneid_ joined
01:27 gvaughn joined
01:27 dimitarvp joined
01:29 srxa joined
01:39 tomterl joined
01:40 <cfreeze> Is it true that GenServer is actually two processes?
01:43 <asonge> cfreeze: iirc, no?
01:44 <cfreeze> I didn't think so
01:44 <asonge> cfreeze: sometimes there are middleman processes depending
01:46 kronicdeth joined
01:46 <alisdair> gen_statem uses an insterstitial process to mediate client timeouts
01:46 <alisdair> there was talk of doing the same for gen_server but i don't think that has happened
01:46 nhooyr joined
01:47 <cfreeze> I'm trying to think of a situation where you wouldn't use a genserver but you want your process to maintain state and receive messages to transform your state.
01:48 <asonge> gen_server is a larger mental model, so at least for teaching reasons, writing your own server isn't horribad.
01:49 <cfreeze> As in, is there ever a situation where you forgo the use of a genserver and instead spawn a process to loop over a receive do block
01:49 <asonge> also, if you really really want high performance where you *know* where all the time is spent, you can make your own thing kinda like gen_server
01:49 <cfreeze> That would be the case then
01:49 <asonge> cfreeze: selective receive stuff, which gen_statem kinda does
01:50 <asonge> gen_statem is way way more complicated than gen_server, but it does amazing things
01:51 <cfreeze> Well, would there be any difference between a process and a genserver if you had your receive statement call handle_info on a module stored in state?
01:51 <cfreeze> (in your process)
01:51 <asonge> you could reimplement parts of the API for your own gen_server-ish implementation, sure.
01:51 <cfreeze> Is it slower than a case statement? I wouldn't think so but I'm unsure.
01:52 <asonge> it's another function call, so kinda/sorta slower i think, but the speed difference is probably negligible
01:52 <cfreeze> I see
01:52 <cfreeze> Thanks for the info
01:52 <asonge> the speed stuff i was talking about was more like gen_server starting synchronously for init(), so if you're spawning a ton of short-lived processes, that's a synchronous coordination thing
01:53 <cfreeze> Oh, so there's no reason to use a GenServer if you stop it soon after?
01:53 <asonge> that's why cowboy might not use a gen_server to represent an http connection, for instance.
01:53 <cfreeze> That does happen to be what I'm trying to understand haha
01:53 <cfreeze> I'm looking at cowboy's http module
01:54 <asonge> (this is also why cowboy isn't easy to hot code upgrade, possibly...but you could use the proc_lib module to make something close)
01:54 <asonge> cfreeze: you understand what i'm saying that gen_server.start() and the init callback are synchronous?
01:54 <cfreeze> Yes, they block
01:55 <asonge> right, so that ups the latency to a round trip to the process
01:55 <cfreeze> Yeah I gotcha
01:55 <asonge> spawn -> message -> init process acks when it completes -> spawn returns
01:55 <cfreeze> its two extra function calls, but could make a difference if you're min maxing
01:55 jmill joined
01:56 <asonge> well, it's not just a function call
01:56 <asonge> it's also two context switches to a new process
01:56 <cfreeze> Oh and those are synchronous too
01:56 <cfreeze> vs just spawn
01:56 <cfreeze> which is not
01:57 <asonge> right
01:57 <cfreeze> So why not just spawn a task to start your genservers? haha
01:57 <asonge> but in the general case, a ton of stuff that can go wrong if you just spawn and the process dies right off the bat. it's really simple to have a place for you to initialize the state, and if that can't happen, to return an error.
01:58 <asonge> gen_server is all about the general case
01:58 <cfreeze> But in cowboy's case if that happens you don't care because it's HTTP
01:58 <asonge> well, it spawns a process to handle each connection from an acceptor pool
01:58 <asonge> it wants to return to the pool ASAP
01:58 <cfreeze> yes, ranch does that
01:58 <cfreeze> at least I believe so
01:58 <asonge> yes
01:59 <cfreeze> So still though, if you care about returning to the pool ASAP why couldn't you use genservers and but start them asynchronously using a task or process?
01:59 <cfreeze> Or is the reason why they don't do that just because it's pointless overhead?
01:59 <asonge> well, you pay for the abstraction later
02:00 bitmod joined
02:00 <asonge> so you're trading using a gen_server for total capacity (since you spawn 2 pids instead of 1)
02:00 <cfreeze> though one pid will usually die very quickly becuase it's just waiting for the genserver to start, sending the genserver pid to the appropriate place, and stopping
02:01 <asonge> i'd also say that the lifecycle of an http request that is spent in a gen_server isn't exactly relevant for cowboy.
02:01 fmccann joined
02:01 <cfreeze> What about HTTP's keepalive feature? Would that make more sense for a genserver?
02:01 <asonge> if you were doing something rather special-purpose, sure.
02:02 <asonge> that kind of stuff are where cowboy's early bugs were from
02:02 <cfreeze> Ah
02:02 <cfreeze> hmm
02:02 <cfreeze> Good stuff to know
02:02 <asonge> it's all a system of tradeoffs
02:03 <asonge> but the time you waste in rewriting something to be a gen_server, and then you decide for it not to be and rewrite it...that time difference is nothing
02:03 <asonge> but i'd say have fun writing your own replacement for fun. it's good to learn. also the source for it isn't that complicated.
02:03 <cfreeze> No it's really not
02:03 <cfreeze> Just tedious when it comes to reading the http parsing stuff haha
02:04 <cfreeze> Thanks for your wisdom!
02:05 <tristan__> I like mochiweb/elli's method better. spawn a new acceptor instead of passing the connection off to a new process
02:11 pranz4 joined
02:19 wilo joined
02:21 <asonge> tristan__: are there any obvious performance differences between the two methods?
02:22 jkreeftmeijer joined
02:22 <asonge> i'd imagine the elli way has lower latency in the case where you always have enough acceptors
02:27 <tristan__> yea, that is it
02:29 nhooyr joined
02:30 muncman joined
02:34 mmonkeyking joined
02:42 zlf joined
02:53 elgenie joined
03:01 vendethiel joined
03:04 mika__ joined
03:08 wilo joined
03:11 Cohedrin joined
03:19 mmonkeyking joined
03:20 enilsen16 joined
03:21 sfbw joined
03:23 jkreeftmeijer joined
03:27 cschneid_ joined
03:30 Cohedrin joined
03:36 mmonkeyking joined
03:45 nhooyr joined
03:47 ssswitch joined
03:53 datadragon joined
03:53 __charly__ joined
03:55 __charly__ joined
03:58 enilsen16 joined
04:04 jmill joined
04:06 jimmyrcom joined
04:11 wong2 joined
04:11 mika__ joined
04:15 InternetFriend joined
04:19 sevenseacat joined
04:21 sfbw joined
04:33 enilsen16 joined
04:52 srxa_ joined
04:54 elgenie joined
05:04 codestorm777 joined
05:06 griffinbyatt joined
05:07 dec0n joined
05:08 gvaughn joined
05:17 DarkArcher207 joined
05:22 sfbw joined
05:22 icanhazbroccoli joined
05:24 jkreeftmeijer joined
05:24 Cohedrin joined
05:27 meandi_2 joined
05:27 cobragoat joined
05:35 asabil joined
05:36 gvaughn joined
05:44 <zlf> help
05:45 <asonge> zlf: what's up?
05:45 <zlf> sorry,i'm new
05:45 <asonge> no problem. what are you having issues with?
05:48 jkreeftmeijer joined
05:49 <zlf> I don't know how to find phoenix's defination in alchemist
05:49 <asonge> what do you mean?
05:52 <asonge> if you're trying to jump to definition, i don't know much about emacs + alchemist stuff, though there is a slack channel specifically for that, iirc
06:02 <zlf> thank you
06:03 DarkArcher207 joined
06:03 icanhazbroccoli joined
06:07 griffinbyatt joined
06:13 vendethiel- joined
06:24 sfbw joined
06:31 codestorm joined
06:33 gvaughn joined
06:42 isorehalav joined
06:43 returntrip joined
06:48 craigp_ joined
06:48 ariejan joined
06:50 Ilyes512 joined
06:50 elgenie joined
06:55 tuacker joined
07:08 griffinbyatt joined
07:08 isorehalav joined
07:17 nd___ joined
07:20 hbraun joined
07:21 tuacker joined
07:23 dec0n joined
07:24 mark_66 joined
07:25 sfbw joined
07:25 l14n joined
07:26 cemilowski joined
07:26 codestorm joined
07:26 marr joined
07:26 mattyw joined
07:27 m00dy joined
07:27 tofutoon left
07:28 m00dy joined
07:35 isorehalav joined
07:35 m00dy joined
07:46 jkreeftmeijer joined
07:52 thegengen joined
07:55 Guest67_ joined
07:57 l14n joined
07:58 justelex joined
08:04 bigkevmcd joined
08:06 returntrip joined
08:09 griffinbyatt joined
08:09 ur5us joined
08:10 <dmilith> IMHO adding dependency on gettext was a mistake. It basically crashes every deploy on every system,.. cause no system has it by default.. except linuxes maybe
08:11 PaReeOhNos joined
08:15 <asonge> dmilith: the elixir gettext library is in elixir.
08:15 Ilyes512 joined
08:16 asdfasdfsadfads joined
08:18 bigkevmcd joined
08:21 gvaughn joined
08:25 sfbw joined
08:34 <dmilith> could not compile dependency :gettext, "mix compile" failed. You can recompile this dependency with "mix deps.compile gettext", update it with "mix deps.update gettext" or clean it with "mix deps.clean gettext"
08:34 <dmilith> yea, that's why I can't build it for sure ;)
08:34 <asonge> dmilith: there is no dependency on gettext, the system library. it doesn't interface with C.
08:34 <* sevenseacat> gets popcorn
08:34 <asonge> you can read the source.
08:36 <dmilith> anyway, after deps.update and stuff on latest OTP - http://s.verknowsys.com/fb7d7bd3e04c35c29c07e6000d69f98d.png
08:36 <asonge> latest OTP being 20.0-rc1?
08:36 <dmilith> no, latest production ready OTP.
08:36 <sevenseacat> I've seen other people posting issues about erlang 20 rc
08:37 <sevenseacat> and what version is that?
08:37 <OliverMT> otp20 is not supported
08:37 <dmilith> at least one of latest then erts-8.2.2 ;)
08:37 <asonge> well, that's 19.x, i think
08:38 <asonge> something must've broken with yecc
08:38 <asonge> the parser erlang module is generated by the yecc compiler (which is part of erlang)
08:40 <dmilith> well.. I couldn't compile it with first version of phoenix.. I can't compile it now.. That's why I'm saying ;)
08:42 <sevenseacat> ;) ;) ;) ;) ;)
08:42 <asonge> that's erlang 19.2.3, i should see if i can grab that real quick
08:44 josevalim joined
08:46 Ilyes512 joined
08:47 isorehalav joined
08:47 craigp_ joined
08:48 <asonge> ahrm, it all compiled fine here.
08:48 <asonge> dmilith: how'd you install erlang?
08:48 <dmilith> built from source
08:49 <asonge> can you try to gist the file with the compile error?
08:49 <asonge> i'm interested in what possibly went wrong
08:49 <asonge> since i can't reproduce
08:49 <dmilith> exactly like this: --enable-threads --with-dynamic-trace=dtrace --enable-fp-exceptions --enable-hipe --enable-kernel-poll --enable-smp-support --enable-sctp --with-ssl=${PREFIX} --disable-debug --enable-vm-probes --with-odbc=${PREFIX} --enable-native-libs --with-libatomic_ops=${PREFIX}
08:50 <dmilith> sure
08:50 <asonge> it should be deps/gettext/src/gettext_po_parser.erl
08:50 <dmilith> this is weird part: lib/erlang/lib/parsetools-2.1.4/include/yeccpre.hrl:84: function yeccpars2/7 undefined
08:51 <asonge> where does that happen?
08:51 <dmilith> on compilation of gettext dependency
08:51 <dmilith> right after parse errors
08:51 <asonge> because that sounds like it's something wrong
08:51 <asonge> with your erlang install
08:52 <dmilith> https://gist.github.com/dmilith/8c9364c41fcd2aa99802717778f1204d
08:52 isorehalav joined
08:52 <dmilith> yea, everything works, except gettext. Using this build since 2012
08:52 <dmilith> on 20+ productions too ;)
08:53 <asonge> i wonder if you ran out of memory or something weird.
08:53 <dmilith> 32GiB RAM on local workstation
08:53 <dmilith> 61% in use
08:53 <asonge> well, this output is corrupted in some way
08:53 <josevalim> dmilith: can you consistently reproduce it?
08:53 <josevalim> if you nuke "rm -rf deps/gettext", does the error come back?
08:54 <dmilith> josevalim: yea, it happens since first version of phoenix with gettext support.. I removed these from my projects cause of it
08:54 <dmilith> but some are not from my hand, so not yet done
08:54 <asonge> there's just a bunch of blank lines where there should be more text
08:55 <dmilith> that's why I thought it's some external C module I'm missing.. but if it's native.. then I have no clue wtf
08:55 <josevalim> dmilith: it is really weird. i have never heard about it before
08:55 <dmilith> asonge: just opened what mix deps.update gettext gave me
08:55 <dmilith> the only thing different is PREFIX set not to /usr/local mess
08:56 <dmilith> build options are the same since OTP 17
08:56 <dmilith> I'm using own builds cause other couldn't be trusted, that's why
08:56 <asonge> you're either triggering a bug in erlang, or you've got some kind of mixed set of erlang modules in your path and the wrong beam files are running
08:56 <asonge> or something like that
08:56 <dmilith> but it's exactly the same process
08:56 <dmilith> well.. I'm walking bug trigger. That wouldn't be surprise :D
08:57 <dmilith> ok, but jokes aside. If you have any ideas what might be wrong here.. with just normal build.. then I'd be happy to test it out :)
08:57 <asonge> yeah, the yecc compiler takes .yrl and spits out .erl, and that output is what's corrupted.
08:57 <dmilith> or maybe rebuild it with some explicit options or stuff like that..
08:58 <dmilith> asonge: but other extensions build just fine, except that gettext one
08:58 <dmilith> I mean both mix/ rebar/ rebar3 deps
08:58 <asonge> dmilith: do other extensions use the yecc compiler?
08:58 <asonge> yecc usage is usually rather limited
08:58 <dmilith> this is a very good question ;>
08:58 <dmilith> no clue tbh
08:58 <sammers> hi all
08:59 <dmilith> I don't know Erlang build system too much (yet)
08:59 <dmilith> so please excuse my lack of knowledge in that matter
08:59 cemilowski joined
08:59 <asonge> see if you can compile erlydtl https://github.com/erlydtl/erlydtl
08:59 <josevalim> elixir also has a .yrl file. can you clone elixir and compile it from source?
09:03 <dmilith> josevalim: when I build Elixir bundle, I'm actually building each dependency of OTP, then OTP, then Elixir from source.
09:03 <dmilith> each with closed dependencies (from PREFIX/lib + libs from OS)
09:04 <dmilith> I'm starting to think that compile options that crash Erlang like -ftrapv might be the reason
09:04 <dmilith> I'm using more compiler switches than default builds
09:05 <dmilith> will try to rebuild it without any special compiler options later and let You know if that problem happens
09:05 <sevenseacat> less winky faces now, funny
09:05 <dmilith> (just to be clear - passing -ftrapv to compiler while building OTP will cause int overflow and SIGABRT on workstation sleep)
09:06 <dmilith> since Erlang doesn't care about bug reports (switched to Jira) I'm unable to give them info about that too..
09:07 <asonge> dmilith: they do accept PRs if you have a patch
09:09 <dmilith> I guess Erlang masters would know that it's about :timer making integer overflow while machine being in sleep.. Since ftrapv prevents from integer overflows by switching handler to ABRT (instead of SEGV for example), that's why i got SIGABRT on each wakeup. I did launchd script to just restart it but still I have no clue how to fix it in BEAM ;)
09:09 griffinbyatt joined
09:10 <dmilith> I guess I might be completely wrong in guessing too.. and there's other reason why BEAM is throwing ABRT when built with hardening options
09:11 srxa joined
09:13 <asonge> there's probably many reasons, tbqh
09:14 ctp joined
09:16 gvaughn joined
09:20 jkreeftm_ joined
09:22 isorehalav joined
09:23 Ilyes512 joined
09:24 isorehalav joined
09:26 sfbw joined
09:27 m00dy joined
09:35 Talltree joined
09:35 inoas joined
09:40 PaReeOhNos joined
09:40 m00dy joined
09:48 Ayey_ joined
09:50 <dmilith> the worst of all is that every clean project is trying to get that gettext by force :sigh:
09:50 <dmilith> even in project where I see no gettext even used
09:55 bitmod joined
10:05 <asonge> That doesn't make much sense
10:06 <asonge> deps.lock should get a specific version for all, and there are no global deps
10:08 PaReeOhN_ joined
10:08 Talltree_ joined
10:08 mattyw joined
10:10 griffinbyatt joined
10:10 gvaughn joined
10:11 mika__ joined
10:12 griffinb_ joined
10:22 nhooyr joined
10:26 cemilowski joined
10:27 sfbw joined
10:34 Talltree joined
10:38 gmcabrita joined
10:44 asabil joined
10:48 nhooyr joined
10:51 nhooyr joined
10:57 elgenie joined
10:59 <dmilith> yea, it's dependency of a dependency of a dependency.
10:59 <dmilith> do You maybe know any other project using yacc?
11:00 inoas joined
11:00 <dmilith> (to test that trouble case)
11:01 nighty-- joined
11:02 asabil joined
11:03 srxa_ joined
11:07 Talltree joined
11:15 jschneck joined
11:22 jschneck joined
11:28 sfbw joined
11:30 cevado joined
11:43 jkreeftmeijer joined
11:45 jkreeftm_ joined
11:46 jschneck joined
11:47 justelex joined
11:48 <dmilith> anyone remembers how to convert {1, 2, 3, 4} to an IP without parsing it manually?
11:49 <dmilith> :inet.parse_address for making 1.2.3.4 to {} form.. but the other direction?
11:50 <inoas> I am a newb but this may help http://stackoverflow.com/questions/20829348/how-to-join-strings-in-elixir
11:50 cristianR_ joined
11:50 <inoas> to_string/1 and to_charlist/1 something you can look into
11:51 <josevalim> dmilith: {a, b, c, d} = ip; "#{a}.#{b}.#{c}.#{d}"
11:51 <dmilith> oh dear
11:51 <dmilith> I tried "#{a}.#{b}.#{c}.#{d}" = {46, 101, 118, 71}
11:51 <josevalim> or ip |> Tuple.to_list |> Enum.join(".")
11:51 ctp joined
11:52 dimitarvp joined
11:52 <dmilith> thx
11:53 <inoas> I like the latter :) (as that's the way my brain works :p) - but the first one is pretty pattern matchy <3
11:53 <gazler> benwilson512: Does ExAWS have any support built in for uploading directories to s3?
11:53 <inoas> maybe those examples should be in the string chapter ?
11:53 <dmilith> yea, I was just curious if Elixir already have that :)
11:53 <dmilith> so I was looking in API ;)
11:54 NeverDie joined
11:56 <inoas> I wish I had more time learning into Elixir + Phoenix :(
11:56 <inoas> seems I also missed http://www.elixirconf.eu/
11:57 hbraun joined
11:57 <josevalim> there is elixirldn in august and elixirconf.us in september :)
11:58 Topic for
11:59 gvaughn joined
12:08 m00dy joined
12:09 <ciawal> oh cool, a london one
12:09 <ciawal> hopefully I can go
12:11 craigp_ joined
12:12 <m00dy> Hi guys
12:12 <m00dy> how's going
12:14 jkreeftmeijer joined
12:14 PaReeOhNos joined
12:17 jkreeftm_ joined
12:17 marr joined
12:18 <dimitarvp> <insert Griffin's voice> Going? How it's going? For me personally, good, things are good. Except if we're in the possible future when... <insert 5 minutes of speech>
12:20 justelex joined
12:21 griffinbyatt joined
12:22 kronicdeth joined
12:22 jschneck joined
12:28 gremly joined
12:28 sfbw joined
12:34 cemilowski joined
12:35 sfbw joined
12:39 jkreeftmeijer joined
12:40 asabil joined
12:40 chrismccord joined
12:40 m00dy joined
12:41 m00dy joined
12:44 asabil joined
12:51 gazler joined
12:59 ssswitch joined
13:00 StianL joined
13:01 jschneck joined
13:02 ramortegui joined
13:03 <benwilson512> gazler: not really no, although it should be easy enough to stitch together with Path.expand |> Flow/Task.async_stream(upload)
13:06 <josevalim> Elixir v1.4.3 is out. if anyone can update Elixir on archlinux, it will be very appreciated
13:06 <josevalim> (and homebrew etc)
13:07 <gazler> benwilson512: Yeah, I did something like that. Just wanted to check there was nothing built in I was missing.
13:07 <dimitarvp> josevalim: thanks!
13:07 <gazler> benwilson512: Did you fix your websocket issue btw?
13:08 <benwilson512> yup yeah I accidentally had an older version of my nginx guy in staging :(
13:08 <benwilson512> user error....
13:09 <Nicd-> josevalim: not on homebrew yet
13:18 <Nicd-> josevalim: make test passes on arch linux with erlang 20 rc1
13:18 <Nicd-> anything I should try?
13:18 <fishcakez> Nicd-: the maintener of package should update the package 😀
13:18 <linduxed> hey guys! let's say that i've got some high-res source image that gets run through rmagick, or something like that. over on whatever storage solution one uses, there are now at least two files: "thumb.png" and "full.png"
13:18 <fishcakez> You probably don't want to use otp 20 RC yet
13:18 <fishcakez> Rather wait for otp 20 final
13:19 <linduxed> one way of storing links to these images would be to have a database column that is called "thumbnail_url" and one called "full_image_url"
13:19 <ljarvis> linduxed: same thing applies :)
13:19 <linduxed> ljarvis: no harm in getting the opinion of multiple channels ;-)
13:19 cdg joined
13:19 <Nicd-> fishcakez: too late! :D
13:19 <linduxed> an alternative would be to generate links that have hardcoded suffixes, such as "thumb.png", "full.png" and so on
13:20 <linduxed> ljarvis thinks that the alternative is fine, what do you guys think?
13:20 <Nicd-> just have to make sure I don't reboot my production phoenix :P
13:20 <fishcakez> Nicd-: yeah the person doing arch Linux package should have a word with themselves
13:21 <Nicd-> I wonder why they pushed rc1 to arch
13:21 <Nicd-> but I run production stuff on arch so I can't really complain
13:22 craigp_ joined
13:29 kronicdeth joined
13:30 flaviodesousa joined
13:34 elgenie joined
13:35 maxbeizer joined
13:39 JEG2 joined
13:40 m00dy joined
13:42 m00dy joined
13:43 gvaughn joined
13:44 jerel joined
13:45 justelex_ joined
13:46 m00dy joined
13:46 <drewolson> josevalim: installed via asdf on mac. all it working. scrivener / scrivener_ecto test suites all pass. thanks for the release.
13:46 <josevalim> thanks for checking!
13:48 <josevalim> Nicd-: i have heard that's their philosphy, which is understandable, but i was surprised that they also include RCs
13:48 <Nicd-> yeah usually they don't add RCs
13:48 meh` joined
13:48 gvaughn joined
13:52 jkreeftm_ joined
13:57 <Nicd-> josevalim: I'm guessing the reason for the RC is that they got rid of a few thousand lines of OpenSSL patches
13:57 <Nicd-> josevalim: https://git.archlinux.org/svntogit/community.git/commit/trunk?h=packages/erlang&id=fd4dd0ddaf8674047ce9b0cad893f66125c5e66f
14:01 LastWhisper____ joined
14:03 rodolfojcj joined
14:05 __charly__ joined
14:05 josevalim_ joined
14:08 griffinbyatt joined
14:09 PaReeOhNos joined
14:10 m00dy joined
14:12 mmonkeyking joined
14:13 PaReeOhNos joined
14:13 PaReeOhN_ joined
14:23 jschneck joined
14:24 <josevalim> there is a bug in v1.4.3 pease hold updating packages until v1.4.4 is out
14:24 gvaughn joined
14:24 <Nicd-> oh noo
14:24 <Nicd-> :D
14:26 justelex_ joined
14:27 justelex joined
14:29 <sevenseacat> ah noo
14:34 elasticdog joined
14:35 elasticdog joined
14:42 elgenie joined
14:44 karmajunkie joined
14:47 MarioBranco joined
14:47 m00dy joined
14:48 m00dy joined
14:48 m00dy joined
14:48 hbraun joined
14:50 MarioBranco joined
14:57 srxa joined
15:04 MarioBranco joined
15:05 <josevalim> ok, v1.4.4 is out. if you updated any package manager, please let them know there is a new version out
15:05 kevwil joined
15:07 cschneid_ joined
15:09 stephen_m joined
15:10 smt__ joined
15:13 kevwil joined
15:19 tuacker joined
15:22 srxa joined
15:25 karmajunkie joined
15:28 <Ankhers> If I call GenServer.stop(pid) and it just hangs, is there anything I can do to debug it?
15:32 griffinbyatt joined
15:33 wsieroci joined
15:35 codestorm joined
15:38 Tica2 joined
15:39 ariejan joined
15:40 davidw joined
15:43 jkreeftmeijer joined
15:45 DarkArcher207 joined
15:45 dikaio joined
15:45 jkreeftm_ joined
15:48 sfbw joined
15:51 josevalim joined
15:51 sfbw_ joined
15:53 sfbw joined
15:55 sfbw_ joined
16:01 cemilowski joined
16:03 amclain joined
16:05 cdg joined
16:11 jeffweiss joined
16:12 mattyw joined
16:14 rory joined
16:22 mattyw joined
16:30 webdev007 joined
16:32 vendethiel joined
16:39 rozap joined
16:40 PaReeOhNos joined
16:42 griffinbyatt joined
16:46 <chrismccord> Ankhers : by default it will use timeout: :infinity
16:46 <chrismccord> Ankhers : likely the process is busy working through a message backlog
16:47 <chrismccord> you can use Process.info to see what its mailbox looks like
16:47 <Ankhers> chrismccord: Thanks. I'll look into that.
16:48 amclain joined
16:49 Ayey_ joined
16:50 Tidur joined
16:52 rkazak joined
16:58 steffkes joined
17:01 griffinbyatt joined
17:10 Ayey_ joined
17:11 Cohedrin joined
17:11 rozap joined
17:12 lexmag joined
17:14 asabil joined
17:14 aedigix joined
17:15 icecreamcohen joined
17:16 mmonkeyking joined
17:16 aedigix joined
17:18 icanhazbroccoli joined
17:19 srxa_ joined
17:21 codestorm joined
17:28 InternetFriend joined
17:28 griffinbyatt joined
17:28 karmajunkie joined
17:32 mattyw joined
17:34 kronicdeth joined
17:36 rory left
17:36 asabil joined
17:38 Internet1riend joined
17:43 Uniaika joined
17:45 sunaku joined
17:50 sunaku joined
17:52 jkreeftmeijer joined
17:52 jkreeftmeijer joined
17:53 jkreeftmeijer joined
17:54 jkreeftmeijer joined
17:55 jkreeftmeijer joined
17:55 jkreeftmeijer joined
17:56 jeregrine joined
17:56 jkreeftmeijer joined
17:57 jmill joined
17:58 codestorm joined
18:01 PaReeOhNos joined
18:01 InternetFriend joined
18:03 hahuang65 joined
18:04 ep_ joined
18:06 wsieroci joined
18:11 refriedchicken joined
18:15 craigp joined
18:20 dimitarvp joined
18:20 smt_ joined
18:22 craigp joined
18:23 josevalim joined
18:23 jkreeftmeijer joined
18:25 dimitarvp` joined
18:29 ariejan joined
18:34 InternetFriend joined
18:35 jkreeftmeijer joined
18:52 sfbw joined
18:53 icanhazbroccoli joined
18:57 patientplatypus_ joined
18:57 <patientplatypus_> hi
18:57 patientplatypus joined
18:57 <patientplatypus> hi
18:58 <patientplatypus> i was wondering if there were a good service that people used to deploy phoenix projects
18:58 <patientplatypus> i was trying to follow this guide https://content.nanobox.io/phoenix-vue-js-running-in-minutes/, however it doesnt seem to work
19:04 craigp joined
19:05 <tonyc> what "doesn't work"
19:05 craigp joined
19:08 craigp joined
19:09 asabil joined
19:10 kronicdeth joined
19:10 jmill joined
19:11 InternetFriend joined
19:12 jkreeftmeijer joined
19:14 apotry joined
19:16 jkreeftmeijer joined
19:16 wsieroci joined
19:19 kornelgora joined
19:20 <kornelgora> Hi is good to start learning elixir as first language??
19:24 <asonge> kornelgora: it's probably not bad because it's a really small language, but there probably aren't as many beginner-friendly resources so it's a tossup.
19:26 Ayey_ joined
19:28 <mspo> the environment is a bit complex too
19:30 maxbeizer joined
19:30 gvaughn_ joined
19:31 PaReeOhNos joined
19:31 gvaughn__ joined
19:33 bitmod joined
19:34 sfbw joined
19:35 sfbw joined
19:36 jkreeftm_ joined
19:38 sfbw joined
19:42 <alisdair> josevalim/micmus: would you consider a pr for ecto that added named bindings (rather than indexed)?
19:43 Ayey_ joined
19:47 kau joined
19:50 MarioBranco joined
19:50 PaReeOhNos joined
19:52 squallstter joined
19:54 MarioBranco joined
19:54 hahuang65 joined
19:58 Ayey_ joined
19:59 Ven joined
20:00 <micmus> alisdair: the primary issue is backwards compatibility
20:00 jeregrine joined
20:00 <micmus> We could break some things and release ecto 3, but there are probably some more things to do when doing so, besides just the query syntax changes
20:01 <benwilson512> micmus I wonder if it could be done via an additional library
20:01 <benwilson512> at the end of the day you're just creating a struct
20:01 <alisdair> yeah, i wrote a lib that does it
20:01 <benwilson512> alisdair: public?
20:01 <alisdair> no
20:01 <alisdair> it's not very robust
20:01 <alisdair> it does just enough for what i need
20:01 <benwilson512> ah yea
20:01 <alisdair> but i'd prefer if it was part of ecto so i don't need to worry about updating it
20:04 <alisdair> i'm doing queries with dynamic numbers of joins
20:04 karmajunkie joined
20:04 <micmus> to be honest, ideally I would like to write a simpler low-level lib for building queries and base ecto on top of that. The current implementation is really complex and hard to extend
20:04 <alisdair> yeah
20:05 <alisdair> i thought i could support multiple selects relatively easily
20:05 <micmus> That requires time, though :(
20:05 Ven_ joined
20:05 <alisdair> but there's no real intermediate layer between the select macro dsl and the ast
20:05 kronicdeth joined
20:06 <alisdair> so it requires i join tables, track my binding index, then generate the ast directly myself after all joins are performed
20:07 <asonge> alisdair: this is exactly my use-case
20:08 josevalim joined
20:11 Ven_ joined
20:12 __charly__ joined
20:14 Ayey_ joined
20:17 cdg joined
20:18 timbuchwaldt joined
20:19 timbuchwaldt joined
20:20 inoas joined
20:22 timbuchwaldt joined
20:25 timbuchwaldt joined
20:27 ariejan joined
20:28 timbuchwaldt joined
20:28 jeregrine joined
20:33 returntrip joined
20:34 guacamole joined
20:36 Ven joined
20:41 Ven_ joined
20:47 Ven_ joined
20:54 kau joined
20:55 sunaku joined
20:59 jdqx joined
21:09 ur5us joined
21:16 sfbw joined
21:17 Guest67 joined
21:22 wsieroci_ joined
21:24 asabil joined
21:25 jschneck joined
21:31 sunaku joined
21:34 zv joined
21:36 the_voice- joined
21:38 sunaku joined
21:39 justelex joined
21:40 stephen_m joined
21:43 asabil joined
21:50 OtherAllan joined
21:50 isorehalav joined
21:51 mmonkeyking joined
21:58 isorehalav joined
22:07 mmonkeyking joined
22:08 webdev007 joined
22:09 rkazak joined
22:14 Ayey_ joined
22:16 sfbw joined
22:18 seaword joined
22:18 seaword joined
22:33 Ioyrie joined
22:43 sunaku joined
22:49 Ayey_ joined
22:50 patientplatypus joined
22:50 kronicdeth joined
22:58 InternetFriend joined
23:09 maxbeizer joined
23:17 sfbw joined
23:23 cschneid_ joined
23:24 jhack joined
23:30 Ayey_ joined
23:32 zv joined
23:33 RexM joined
23:45 elgenie joined
23:57 isubasti joined
23:57 mika__ joined