josevalim

Activity Graph

Page 1 of 6 | Next »

2019-09-16

[10:57:02] josevalim: i don't think that's an issue with umbrella projects though. maybe change your configuration to not log to files during test?
[15:27:15] josevalim: gausby_: no! we sort them
[15:27:32] josevalim: oh, the test files, maybe we don't sort those, but i don't think the order is guaranteed
[15:29:07] josevalim: gausby_: we already do it
[20:36:46] josevalim: chrismccord: I would guess he still wants to use the router but put more stuff in the session
[20:37:14] josevalim: The answer is to have a plug in the live router pipeline and add it to the session
[20:51:28] josevalim: right, i am assuming he wants that to pass a custom session to the live view through the router
[23:12:33] josevalim: benwilson512: To be honest, we will be rather moving more stuff to the session and completely remove the session option on live once your PR is merged
[23:13:11] josevalim: We mostly want to rely on the session from cookie
[23:13:25] josevalim: So setting in the session will continue to be the way to go

2019-09-15

[04:50:51] josevalim: Ping timeout: 240 seconds
[04:52:11] josevalim: has joined #elixir-lang

2019-09-14

[18:47:54] josevalim: rawtaz: I think repeat is like that on general nomenclature
[18:48:10] josevalim: There is another one that allows you to say at least one or so
[18:58:33] josevalim: beatpanic: yes, put it in var in your config files
[18:58:38] josevalim: They are like regular elixir code
[18:59:12] josevalim: azazel: if they are not in the String docs they should be, please open up an issue
[19:17:48] josevalim: There is even one official guide on the Phoenix docs covering it

2019-09-13

[13:45:58] josevalim: hauleth: that’s not even sugar. Those are two different APIs with different behaviors
[13:46:36] josevalim: Using :console instead of the backend name would end-up on the same question
[13:48:35] josevalim: But again, not really interested in having the discussion if X is sugar or not
[14:09:04] josevalim: demotri: oh, did you try finding the repo on GitHub?
[14:09:16] josevalim: Is it still maintained there? If so maybe we should update the link

2019-09-11

[03:41:22] josevalim: Ping timeout: 252 seconds
[03:45:50] josevalim: has joined #elixir-lang
[09:14:45] josevalim: hauleth: btw, the use case for Logger.enable/disable is mostly testing. but it can also be useful when you are going to do things you know will log and you want to temporarily disable it, like calling Application.stop
[09:15:25] josevalim: but set_process_level would be enough for such if we support :all / :none, which i think is your original proposal?
[09:23:51] josevalim: hauleth: that could work too. quick question: can't you share the pdict for metadata and the level?
[09:24:01] josevalim: store it in a tuple as we were used to?
[09:29:28] josevalim: hauleth: are primiary filters stored in ets or in persistent_term?
[09:37:48] josevalim: hauleth: one last question, when do they filter out sasl reports?
[09:37:55] josevalim: is it done by a filter? is it done by the built-in handlers?
[09:39:40] josevalim: so does it mean that if handle_sasl_reports is true and the log level is warning, then nothing would be shown either, correct?
[09:39:48] josevalim: i guess our translator filter those based on level anyway
[09:49:57] josevalim: that was probably hauleth :P
[09:50:13] josevalim: and he is making his own dreams come true
[09:50:29] josevalim: OliverMT: in the past yes but not anymore
[09:56:41] josevalim: dysfun: yup
[09:57:22] josevalim: i mean, it is at least 2, but when we drop one, it has to be at least 3
[09:57:36] josevalim: before we drop 1
[09:57:44] josevalim: so we will never go 21/22 to 22/23
[09:57:47] josevalim: if that make any sense
[09:58:02] josevalim: but i would like to stay consistently on at least 3
[10:47:24] josevalim: hauleth: let's please not deprecate stuff in the PR
[10:47:42] josevalim: it will be a large PR and it will be hard to assess later on what was an accidental change of behaviour and what was intentional
[10:47:53] josevalim: so i think we should avoid change of behaviours :)
[10:48:06] josevalim: feel free to sprinkle as many todos as you want though
[10:48:52] josevalim: hauleth: why would it be problematic?
[10:49:08] josevalim: isn't it the same as the new remove handlers option?
[10:50:28] josevalim: all of the Elixir Logger backends?
[10:53:04] josevalim: we can do this:
[10:53:26] josevalim: 1. if handle_otp_reports is true, we remove the erlang handler
[10:53:57] josevalim: 2. if it is false, we don't remove the handler and we use handle_otp_reports to filter erlang messages in the legacy backend like we do for handle_sasl_reports
[10:54:01] josevalim: this way we keep the option working as before
[10:54:36] josevalim: remember you said about having the legacy handler knowing which msgs come from erlang and which come from elixir?
[10:54:55] josevalim: i mean, there was a discusion
[10:55:55] josevalim: hauleth: exactly. or just pass :elixir => true in the metadata
[10:57:28] josevalim: deprecating doens't mean we can allow its behaviour to change
[10:59:09] josevalim: and we need a mechanism in the legacy handler to know if the message came from `Logger`, otherwise we will run a bunch of checks twice
[10:59:35] josevalim: thank you for tackling this!
[12:18:25] josevalim: hauleth: yes, that's fine. then they will have to set a filter for lager that ignores elixir messages, which i guess is why it is important for us to tag them
[13:00:56] josevalim: hauleth: i am worried about having to update the domain though and it being expensive
[13:01:21] josevalim: can we make it saw we have a default domain of `[:elixir]` and if people set their own domain we will recommend them to prefix it with `:elixir`?
[15:06:55] josevalim: hauleth: for logging basically anything extra you add ends up showing on benchmarks
[15:07:41] josevalim: hauleth: i would skip the filter for now too. i think it is a good idea but i would like to hear from people first before providing something
[15:43:43] josevalim: hauleth: if handle_otp_reports is true, then you remove the existing handler as it is today
[15:44:16] josevalim: if handle_otp_reports is false, then in the legacy handler you will skip anything that does not begin with domain: [:elixir | _]
[15:44:20] josevalim: hauleth: would that work?
[15:44:40] josevalim: hauleth: ah, ok , so i misunderstood, sorry
[16:09:21] josevalim: hauleth: i wouldn't honestly not have a filter and built that into the handler. i really want to avoid adding filters so we leave the space for filters for users. does that make sense?
[16:39:55] josevalim: hauleth: imo the downside is that in order for us to understand what is happening we would have to look at bunch of different places. that's why i would prefer to have everything that can skip or not in a single place
[16:40:21] josevalim: at the same time, making it a filter means we only need to install it on app check and keep the legacy handler free of this behaviour, which is cleaner
[16:40:35] josevalim: hauleth: move as you prefer :D
[16:44:28] josevalim: hauleth: on the other hand, keeping it a config in the handler would more easily allow us to change said value at runtime :D
[16:45:17] josevalim: and if we think we will have to keep those options forever (likely) adding the runtime flexibility that you proposed is not bad (but still something that i wouldn't do now)
[16:46:10] josevalim: so anyway, move as you prefer, just don't expose the filter itself for now so we can change the implementation in the future if we want to (i.e. let's continue not adding features for now until we are confident this is the way to go)
[20:17:59] josevalim: rawtaz: try it out in your actual projecct :)
[20:22:49] josevalim: rawtaz: yup, a PR would be appreciated too!
[21:44:06] josevalim: toothfairy__: should be @articles

2019-09-10

[12:03:20] josevalim: Macro.expand should do it
[12:03:25] josevalim: Macro.expand only expands the code, it doesn't execute it
[12:03:32] josevalim: so if you see the warning by then, it is fine
[12:04:08] josevalim: gamache: then once it is expanded, you can call Code.eval_quoted
[12:09:43] josevalim: gamache: hrm, why it is not being emitted on Macro.expand? is the AST being expanded?
[12:10:10] josevalim: works here:
[12:10:13] josevalim: ["1", "2", "3"]
[12:10:13] josevalim: iex(1)> Macro.expand(quote(do: ~w[1 2 3]), __ENV__)
[12:21:02] josevalim: gamache: why it doesn't test it in isolation?
[12:21:19] josevalim: get the ressult of macro.expand and code eval it, and that should not print a warning
[13:59:54] josevalim: gamache: np! thanks for the PR!
[14:01:12] josevalim: gamache: just one tiny comment and we should be good to go
[14:22:24] josevalim: i think benwilson512 is doing something quite close to that
[14:22:29] josevalim: gamache: no, only the first
[16:19:40] josevalim: tristan__: do you know if it is possible to set the mode (embedded or interactive) in release script files
[16:31:14] josevalim: tristan__: yup, it seems to be a boot only option
[16:31:40] josevalim: tristan__: our approach of calling init.restart can get quite slow becaause it takes a while to shutdown the VM and boot it all up again
[16:31:50] josevalim: so i will have to move it up in the release process
[16:31:56] josevalim: but i can def. make it work with build embedded
[16:31:59] josevalim: just asking to see my options
[18:13:29] josevalim: ye,s there is an isssue now
[18:13:37] josevalim: i just hate this keyboard
[22:32:50] josevalim: rawtaz: what are you parsing?

2019-09-07

[07:25:18] josevalim: gamache: yes!
[09:39:47] josevalim: longtomjr: yes, it does
[09:39:53] josevalim: doing `Config` should be enough to link to iot
[09:40:14] josevalim: but the issue is that we don't run the markdown processor on the deprecation text :(
[09:52:30] josevalim: Foxfir3: well, no community can be dependent on a handful of people talking to everybody
[09:52:50] josevalim: write them a clear and concise report on what went wrong and what could be improved
[09:53:19] josevalim: Foxfir3: are you using Nerves?
[09:53:24] josevalim: nerves take care of all of it for you, afaik
[09:53:43] josevalim: you only run `mix firmware` and it deploys everything, allows over the wire firmware updates, etc
[09:54:32] josevalim: it does absolutely everything you want and more
[09:54:34] josevalim: https://www.youtube.com/watch?v=ItIv2ndtzFM
[09:54:42] josevalim: wait, wrong talk, one se
[09:56:24] josevalim: Foxfir3: this one: https://www.youtube.com/watch?v=fRP_dVton7o
[09:56:35] josevalim: there is also an elixir circuits library which supports GPIO, ICI and the whole thing
[09:56:39] josevalim: i don't know much about embedded
[11:06:13] josevalim: longtomjr: "same vm" do you mean... same erlang vm?
[11:06:45] josevalim: so everything is a single docker container
[11:07:28] josevalim: you would package all of them together and do a single deployment
[11:07:38] josevalim: you could break those apps into separate containers later on
[11:07:45] josevalim: but they would be separate VMs as well

2019-09-06

[11:08:44] josevalim: Rust has very good WASM tooling, given the language origins
[13:00:53] josevalim: For certain use cases possibly (browsers, microcontrollers)
[13:01:15] josevalim: For regular deployments I think it will take a good while and I believe it is not the priority right now
[16:28:30] josevalim: OliverMT: to run in the browser you don't need to support the sockets, file system, limited IO
[19:34:46] josevalim: OvermindDL1, gamache: i think v1.10 will officialize almost all private APIs used by the formatter
[19:43:36] josevalim: hopefully now you have no excuse to fork it :P
[19:43:56] josevalim: you should have done it like 3 releases ago :P
[19:46:06] josevalim: *no excuse to not fork it!

2019-09-05

[20:35:54] josevalim: gamache: put it in `priv` of any of the apps
[20:36:02] josevalim: then you can access it using `Application.app_dir`

2019-09-04

[15:55:21] josevalim: benwilson512: not yet

2019-09-02

[18:07:34] josevalim: If you are using elixir releases, you can compute the nodes on your config/releases.exs file. In there you can do it programmatically. It may require OTP 22 though
[19:58:30] josevalim: you can't use node self at that point, beacuwe there is no distribution, but you probably have the node name somewhere

2019-09-01

[01:53:31] josevalim: nickjj: i had some video issues, so it may require a bit more of processing
[16:08:40] josevalim: nickjj: did you watch my video finally it seems?
[16:09:15] josevalim: nickjj: was it watchable? did it flicker at all? i made some comments about poor video quality, was it out of context?
[17:24:11] josevalim: nickjj: the demo on the broadway video is all using telemetry
[17:24:21] josevalim: He just didn’t say it was built on top of it
[17:25:16] josevalim: So all of those metrics in the Broadway dashboard came from telemetry
[17:25:33] josevalim: Then they are sent to the LiveView which sends them to the UI
[18:31:56] josevalim: nickjj: i linked it directly on HN
[18:32:00] josevalim: it is from Marlus
[18:32:36] josevalim: i think you saw the one about a company using broadway+rabbitmq from emerson
[18:34:17] josevalim: https://www.youtube.com/watch?v=tPu-P97-cbE

2019-08-31

[18:25:51] josevalim: vax456: precedence
[18:26:01] josevalim: . binds tighter than &

2019-08-28

[13:51:54] josevalim: benwilson512: iirc, if you have the same element 10000 times in a list, it will be copied 10000 times when in ETS
[15:43:28] josevalim: benwilson512: does flat_size use one word for atoms or the actual value of serialization?
[15:45:30] josevalim: yeah, it may be that in ets they are serialized with their actual contents?
[15:46:14] josevalim: garazdawi: awesome

2019-08-26

[09:40:47] josevalim: inoas: most of elixir operators are type specific
[09:40:58] josevalim: <> for binaries, ++ for lists/charlists
[09:46:41] josevalim: do this in `iex`
[09:46:49] josevalim: those are different datatypes
[09:46:58] josevalim: 'single quoted' is not the same as "double quoted" in elixir
[09:49:20] josevalim: yes, you need to understand the precedence
[09:49:43] josevalim: well, it returns strict because it is hitting the "else" clause, as it should

2019-08-24

[20:43:38] josevalim: serafeim: replace! Should keep the order IMO
[20:43:42] josevalim: Please file a bug report

2019-08-23

[15:45:14] josevalim: Open up an issue, maybe we should warn if there are commas in ~w?
[15:49:08] josevalim: tuacker: we may allow queries in insert all
[15:49:11] josevalim: I don’t remember
[20:46:25] josevalim: gamache: thanks

2019-08-22

[00:56:26] josevalim: *.net *.split
[01:14:09] josevalim: has joined #elixir-lang

2019-08-21

[13:23:51] josevalim: Foxfir3: you have to require the other .exs file before
[13:23:57] josevalim: but that's unusual
[13:24:12] josevalim: we usually call `mix new my_project` and put all of the code inside lib under .ex files
[13:24:18] josevalim: then you don't need to require aything

2019-08-20

[10:47:04] josevalim: serafeim: we can't check if there is anything in a list either in guards
[10:47:38] josevalim: the reason why guards are limited is because the compiler does many optimizations on pattern matching
[10:47:52] josevalim: if we allowed anything, then they become harder to reason and harder to optimize
[10:48:22] josevalim: and we try to avoid linear operations, such as check if something exists in a string, in guards
[10:48:34] josevalim: the only linear operation in guards IIRC is length(...) and it is almost always an anti-pattern to use it

2019-08-19

[08:11:22] josevalim: I am a big fan of developers, engineers, programmers :P
[08:11:34] josevalim: But people find it boring
[16:05:25] josevalim: tristan__: it is fixed on master
[16:05:40] josevalim: MIX_BUILD_PATH was meant to be only the "_build" prefix
[17:37:30] josevalim: Not sure if we have an env var for deps from memory
[18:33:29] josevalim: tristan__: even a PR directly would be accepted. i can totally see how it would be useful

2019-08-18

[18:02:38] josevalim: rawtaz: if it told you to run it again is because it actually failed

2019-08-17

[07:21:46] josevalim: namosca: did you solve it?
[08:45:51] josevalim: Phoenix recent versions no longer import helpers such as `players_path(...)`
[08:46:03] josevalim: now you have to write them as `Routes.players_path(...)`
[08:53:56] josevalim: what is the version reomcmended for the tutorial?
[09:09:38] josevalim: so that's the latest, everything shoudl match

2019-08-15

[14:13:34] josevalim: benwilson512: iirc it is done like that because the selected values are strings but the values in the struct may have been cast
[14:13:49] josevalim: it is a nuisance that i am not sure we can fiix without breaking other cases

2019-08-13

[15:34:29] josevalim: Ankhers: thank you
[15:34:51] josevalim: i am at least glad to see approaches that use functions/macros instead of adding new constructs to the language

2019-08-12

[06:51:43] josevalim: adamu: you don’t need to reimplement
[06:51:49] josevalim: You can only use the signature
[06:52:09] josevalim: Or you can make the whole module with @moduledoc false
[20:18:38] josevalim: when it comes to deployment it is very hard to say there is *the* solution
[20:19:05] josevalim: but elixir releases brings distillery into elixir itself
[20:19:45] josevalim: regarding tiobe, it is very hard to assess anythiing, because their process is not documented. i think at the scale they work on, there is just too much fluctuation. the redmonk rankings are at least much clearer

2019-08-11

[03:12:44] josevalim: *.net *.split
[03:13:45] josevalim: has joined #elixir-lang

2019-08-08

[07:23:41] josevalim: jer: nothing out of the box afaik
[15:21:09] josevalim: bcardarella: pong!

2019-08-07

[18:57:46] josevalim: benwilson512: oh, using $callers would be beautiful
[18:58:00] josevalim: benwilson512: pls ping me in the PR, i will gladly review it
[19:12:10] josevalim: micmus: as it stands right now it won't. we will see how it evolves
[19:12:55] josevalim: just don't judge what it can do based on what it does *today* :)
[19:12:57] josevalim: at least not for now
[19:16:16] josevalim: micmus: i know
[19:16:38] josevalim: sure, that's why i am asking to wait a bit more
[19:16:45] josevalim: i am not judging you for judging :P
[19:20:30] josevalim: micmus: yeah, i am writing a reply but the focuses are different
[19:20:44] josevalim: core erlang finds this stuff out because it is running optimizations
[19:20:56] josevalim: we find stuff out because we are actually verifying
[19:22:53] josevalim: and core erlang is mostly comparing values
[19:23:11] josevalim: while the current PR is a bit more type centric
[19:23:34] josevalim: we are not sure where this is going but we have some room for experimentation until v1.10
[19:24:33] josevalim: on v3_core?
[19:30:19] josevalim: micmus: sys_core_fold is after v3_core, correct?
[19:34:36] josevalim: v3_kernel is the one to kernel :D

2019-08-06

[20:50:33] josevalim: electricityZZZZ: you are asking when making comparisons to node, for example?
[20:51:37] josevalim: electricityZZZZ: ok, so in most languages a connection pool is required and they will all wait if the pool is all used
[20:52:08] josevalim: but usually when you are waiting on a single query, you have to block the current request, unless you use a promise or similar
[20:52:24] josevalim: in elixir, every time you do anything that blocks on IO, it will automatically run another process for you
[20:52:40] josevalim: you don't have to write callbacks, special async annotations, nothing
[20:53:24] josevalim: electricityZZZZ: assuming you have a connection available the pool doesn't matter. the pool is there to give you connections
[20:54:14] josevalim: benwilson512: that's a perfect summary

2019-08-05

[19:41:23] josevalim: Randyr: that's probably because phoenix master targets phoenix pubsub master
[19:41:27] josevalim: and the installer was not updated
[19:41:55] josevalim: add {:phoenix_pubsub, github: "phoenixframework/phoenix_pubsub", override: true} to your mix.exs

2019-08-02

[11:24:21] josevalim: nox: yeah. i should look into it!
[12:59:34] josevalim: micmus: can you please open up an issue?
[12:59:42] josevalim: also, can you compare it with v1.9?
[13:00:02] josevalim: yeah, we had this error on the early diffing implementations, it was likely added back
[13:00:10] josevalim: they should be treated as positional always
[13:01:23] josevalim: micmus: apparently it worked like that before too :'(

2019-08-01

[15:07:27] josevalim: but previoiusly we had to do it by hand, now we can automate it in phoenix
[17:36:30] josevalim: chrismccord: i need 20