ericmj

Activity Graph

Page 1 of 2 | Next »

2019-09-10

[15:34:47] ericmj: What does mix hex.config output?
[15:37:05] ericmj: Has deps.get worked before on your machine?
[15:37:55] ericmj: Are you running inside a VM or container?
[15:41:23] ericmj: No, that shouldn’t be an issue
[15:41:52] ericmj: The error message is saying that elixir can not find a network
[15:44:14] ericmj: If you start iex and run `:gen_tcp.connect('google.com', 80, [])`, what does it return?
[15:46:58] ericmj: So there is either something wrong your installation or network setup or in between
[15:47:17] ericmj: The VM cannot find a network to make connections with
[15:49:29] ericmj: What’s a shell ping?
[15:51:18] ericmj: I am not sure that shows anything though? You can run that outside of iex and it should show the same result?
[15:57:15] ericmj: The ping command does not use the VM

2019-08-22

[00:56:15] ericmj: *.net *.split
[01:14:01] ericmj: has joined #elixir-lang
[21:57:10] ericmj: chrismccord: pong
[21:59:00] ericmj: chrismccord: anyone with access to the repository, so both `mix deps.get` and `mix hex.publish`
[22:50:21] ericmj: rawtaz: number of colors in the hex logo
[22:52:11] ericmj: hypercore: does it not say why it failed?
[22:54:02] ericmj: hypercore: did you try these options? https://hexdocs.pm/edeliver/readme.html#help
[23:01:09] ericmj: the point of edeliver is to build everything on the production server
[23:02:20] ericmj: then you need all your build dependencies on the production server unfortunately

2019-08-13

[11:03:13] ericmj: otherwise it would be difficult to sort arbitrary types, in for example an ordered dictionary
[11:30:41] ericmj: it's more of a problem when the language is weekly typed and coerces `"2" > 1` into `2 > 1`
[11:31:21] ericmj: the main problem I can see with how it works in elixir is that it kind hide bugs where you expect two types to be the same
[14:14:14] ericmj: Ankhers: wdym, what kind of emails would you like to see?
[14:15:59] ericmj: the downside I can see is that we would need to duplicate all email template
[14:17:09] ericmj: how does a text email client handle emails that only have text/html?
[14:19:43] ericmj: yeah, maybe we could just send the HTML content in the text/plain section also?
[14:20:06] ericmj: that way clients can render it, we don't duplicate templates, and it is still fairly readable
[14:24:14] ericmj: Ankhers: yeah, please show with a gist
[14:37:15] ericmj: Ankhers: that looks perfect!

2019-08-12

[12:13:44] ericmj: Remote host closed the connection
[12:13:57] ericmj: has joined #elixir-lang

2019-08-11

[12:56:37] ericmj: `h MyModule.my_func`

2019-08-08

[12:00:29] ericmj: yep, `Decimal.round(3266, -2) |> Decimal.to_integer()`
[12:01:08] ericmj: it would be slower than an algorithm built solely for integers though

2019-08-07

[12:45:04] ericmj: OliverMT: the goal of Phoenix.Token is that only the application server should be able to decode it
[12:45:55] ericmj: you can probably do it in javascript if you reimplement the functionality of Phoenix.Token, but I don't know of any library that does that
[12:47:16] ericmj: JWT has elixir and javascript implementations
[12:47:37] ericmj: why would JWT be more crazy than Phoenix.Token?
[19:27:10] ericmj: Does core erlang do any verifications not related to optimization?
[19:28:27] ericmj: If it’s only sanity checks it will be more limited unless the goals of core erlang changes

2019-08-04

[19:22:23] ericmj: you can publish only docs with `mix hex.publish docs`
[19:32:10] ericmj: josevalim: since ex_doc generates README.md as readme.html should it downcase the extras links by default
[19:32:21] ericmj: this would fix the famous 404 problem when publishing to hexdocs

2019-08-01

[22:37:19] ericmj: *.net *.split

2019-07-29

[20:46:43] ericmj: I don't think you could do it for generic processes since you cant generically serialize the state of a process to move it

2019-07-25

[19:57:20] ericmj: yeah, they are different. phx_new is the generator for phoenix projects. phoenix is the dependency your project will use

2019-07-22

[17:23:08] ericmj: yes, but you can do `import Ecto.Query, only: [where: 2], warn: false`

2019-07-18

[09:43:11] ericmj: you can update 60 minutes after you published
[14:04:47] ericmj: you need to chose another name for your new migration
[14:05:42] ericmj: you seem to have three duplicate migrations create close together
[14:05:50] ericmj: priv/repo/migrations
[14:06:14] ericmj: dont the files show in your version control?
[14:06:58] ericmj: you don't have to use the generators btw :)

2019-07-16

[10:40:29] ericmj: absolutejam: could you add a CSS class to the entries you are adding that you remove on the next update, only that class will have the animation?

2019-07-12

[12:39:27] ericmj: slightlycyborg: the main thing about the syntax is not that it's similar to ruby. it's a small syntax *with syg that can be translated to a small AST
[12:39:35] ericmj: (with sugar)*
[12:39:57] ericmj: that's the goal of the syntax
[12:40:19] ericmj: the core syntax is small and sugar is added to make it easier to write and read
[12:40:24] ericmj: here you can find the elixir design goals https://elixir-lang.org/blog/2013/08/08/elixir-design-goals/

2019-07-11

[18:22:47] ericmj: benwilson512: is the error persistent?

2019-07-09

[11:56:01] ericmj: *.net *.split
[12:01:32] ericmj: has joined #elixir-lang

2019-07-04

[10:56:39] ericmj: it only looks at the javascript deps
[10:57:20] ericmj: in phoenix_live_view's case it's only javascript
[10:57:27] ericmj: they support other languages as well, but not elixir
[10:59:08] ericmj: the other problem is that mix.exs is code, making it hard to analyze
[10:59:58] ericmj: I guess it could look at mix.lock though
[11:00:16] ericmj: but that's only strict versions...
[11:01:45] ericmj: success typing is a way of doing type analysis on code
[11:02:30] ericmj: the "success typing" is the set of types that dialyzer infers will lead to successful execution (not crashing)
[11:03:54] ericmj: the term was defined for dialyzer afaik

2019-07-02

[13:56:44] ericmj: that's great to hear, I am glad it helped explain things
[13:58:24] ericmj: https://devchat.tv/elixir-mix/emx-058-mint-library-with-eric-meadows-j%C3%B6nsson-andrea-leopardi/
[16:24:53] ericmj: lucus16: mix.lock is used by developers of the library – not consumers of the library
[16:25:04] ericmj: you should commit it so all devs get the same version

2019-07-01

[15:33:14] ericmj: bcardarella: pong
[15:35:38] ericmj: bcardarella: yeah, do you wan't to only search package names or descriptions also?
[15:41:01] ericmj: bcardarella: hum, not sure that is possible :/
[15:41:47] ericmj: yeah, unless you search for specific fields
[15:42:07] ericmj: if you search for specific fields like `name:phoenix* name:*live*` it does AND
[15:42:35] ericmj: example: https://hex.pm/packages?search=name%3Aphoenix*+name%3A*live*&sort=recent_downloads
[15:42:41] ericmj: https://hex.pm/packages?search=description%3Aphoenix+description%3Alive&sort=recent_downloads
[15:42:48] ericmj: not really sure why it works like that
[15:44:00] ericmj: partly, but it was a long time ago and others have contributed things like the field specific search
[15:44:14] ericmj: the search functionality is unfortunately pretty basic
[15:45:56] ericmj: Nicd-: very true :)

2019-06-28

[09:00:10] ericmj: serafeim: it says that it's a bad idea :)
[09:02:34] ericmj: right, it's not strange, the example says why it wouldn't work as someone may expect
[09:06:57] ericmj: do you use handle_cast or handle_call?
[09:08:17] ericmj: then GenServer is probably good to use
[09:08:43] ericmj: serafeim: is this in the same shell you ran `elixir -v`? ensure you have the same PATHs
[09:09:40] ericmj: what does `which mix` and `which elixir` return?
[09:11:27] ericmj: jkva: use :normal or :shutdown as stop reason
[18:32:40] ericmj: flash messages are stored in the session
[18:33:05] ericmj: do not drop the whole session only erase the keys you use for login
[18:34:03] ericmj: `delete_session/2`
[18:37:58] ericmj: because they don't need flash or anything else the session?
[18:38:13] ericmj: or anything else using* the session
[18:39:53] ericmj: but then flash wont work?
[18:40:37] ericmj: hexpm doesn't delete the cookie, are we doing it wrong?
[18:41:47] ericmj: nickjj: https://github.com/hexpm/hexpm/blob/master/lib/hexpm_web/controllers/login_controller.ex#L18 and https://github.com/hexpm/hexpm/blob/master/lib/hexpm_web/controllers/login_controller.ex#L32
[18:42:19] ericmj: you don't have to delete the cookie?

2019-06-27

[19:42:11] ericmj: have you looked at `Plug.Session`?

2019-06-25

[20:10:19] ericmj: Enum.reject I think?
[20:10:42] ericmj: oh, then no
[20:11:34] ericmj: it is still optimized to not increase the stack
[20:12:10] ericmj: Zarathu: you can make a proposal on the elixir-lang-core mailing list
[20:13:35] ericmj: I am not saying it isn't O(n)
[20:13:54] ericmj: I am saying the tail recursive isn't necessarily faster or use less memory than the body recursive
[20:13:59] ericmj: http://erlang.org/doc/efficiency_guide/myths.html#myth--tail-recursive-functions-are-much-faster-----than-recursive-functions
[20:28:58] ericmj: Zarathu: your implementation is still O(n) even though you can avoid iterating the whole list
[20:34:18] ericmj: in average you would iterate half the list which is linear on the size of the list and O(n)
[20:36:26] ericmj: Zarathu: yeah
[20:38:21] ericmj: Randyr: it uses the cache for me https://usercontent.irccloud-cdn.com/file/NIJpQxCl/Screen%20Shot%202019-06-25%20at%2022.37.46.png
[20:38:39] ericmj: depending on how you reload the page you may be forcing the browser to not use the cache
[20:40:38] ericmj: Randyr: try accessing the site via the address field instead of doing a refresh
[20:41:47] ericmj: some browsers assume the user wants a hard reload on refresh
[20:46:24] ericmj: I was also very confused by this in the past, I think chrome used to behave like firefox does

2019-06-19

[13:12:02] ericmj: your validator is a function, so it's simply an extra argument to your function
[13:17:30] ericmj: yes and yes
[13:17:44] ericmj: there is no way around the race condition
[13:21:05] ericmj: if you can set up a database constraints that checks for the same thing you can avoid the race condition
[13:21:16] ericmj: but I can't see if that's possible without seeing the actual code
[13:21:41] ericmj: the query and the schemas
[13:29:11] ericmj: right, it's not possibly to write a constraint for that since you are not changing anything in the database around the discounts
[13:29:44] ericmj: and the race condition should be rare and maybe even fine since I am guessing you are rarely changing discounts?

2019-06-18

[11:14:14] ericmj: serafeim: have you read about positional and named bindings? https://hexdocs.pm/ecto/Ecto.Query.html#module-positional-bindings
[11:14:53] ericmj: hypercore: are you connecting to the same database and query the same table?
[11:16:14] ericmj: serafeim: who do you know it is underdocumented if you forgot the docs :)
[11:17:22] ericmj: that seems pretty subjective
[11:18:02] ericmj: it is in the module docs for Ecto.Query, that's where I would expect it to be
[11:19:13] ericmj: I hope you found you what you were looking for

2019-06-12

[12:12:08] ericmj: nickjj: do you use `on_conflict: :replace_all`?
[12:15:54] ericmj: yeah, that sounds like the behavior you want
[12:16:27] ericmj: if you don't want everything to be replaced then you shouldn't use `:replace_all` :)
[12:19:15] ericmj: you can automate that with the schema reflection functions
[12:19:38] ericmj: `MySchema.__schema__(:fields) -- [:inserted_at]`
[12:21:36] ericmj: it removes matching elements from a list
[22:47:47] ericmj: phoenix raises ActionClauseError on clauses that don't match
[22:48:16] ericmj: ActionClauseError implements Plug.Exception which converts the exception to a 400 status
[22:51:21] ericmj: wdym error handler?
[22:53:51] ericmj: yeah, you need to handle all errors in ErrorView

2019-06-08

[08:02:16] ericmj: if you run `iex` then `elixir` is already started
[08:02:58] ericmj: how did you start the other node?
[08:03:36] ericmj: if you don't have elixir you can't start elixir
[08:05:10] ericmj: you usually send a reference to a function the other node already has
[08:05:47] ericmj: there isn't any built in support for that
[08:05:57] ericmj: not that I know at least
[08:06:37] ericmj: yes, it's better to install elixir and assume both nodes run the same code
[08:08:10] ericmj: Miyu-saki: are you doing this to run in production or just testing things right now?
[08:08:36] ericmj: copy the whole project directory to the other node
[08:09:26] ericmj: and then run both nodes with `iex -S mix` to ensure the code load paths are correct
[08:12:37] ericmj: you can also make a release like Nicd- says, but it requires more work setting up and building the release
[08:12:53] ericmj: the benefit of the release is that it includes elixir so you don't have to install it
[08:13:48] ericmj: not a lot
[08:13:51] ericmj: but 1.9 isn't out :)
[08:14:22] ericmj: it wouldn't be a development environment, you just need elixir installed
[08:38:29] ericmj: what is the erlang version?
[08:40:10] ericmj: elixir 1.7.4 is not compatible with OTP 22
[08:40:34] ericmj: well, it is compatible
[08:40:38] ericmj: but all tests may not pass
[08:40:41] ericmj: so you are probably fine
[08:41:11] ericmj: you want to run the same version if you are connecting nodes to each other
[08:50:15] ericmj: releases can solve this problem, because you can include erlang in the release
[10:42:28] ericmj: it can be harder than splitting on words
[10:42:56] ericmj: for example https://elixir-lang.org/. is a valid URL but you probably don't want the trailing dot as part of the url
[11:18:26] ericmj: URI.parse wont do any validation, it accepts any string

2019-06-07

[09:55:58] ericmj: serafeim: none of the build tools that interact with hex work like that
[09:57:27] ericmj: that's what micmus was saying :)

2019-05-30

[20:13:26] ericmj: when you switch to elixir 1,9 releases you can copy that code to config/releases.exs and it should work the same
[20:15:21] ericmj: config/prod.exs should be used for compile time configuration and config/releases.exs for release configuration
[20:16:14] ericmj: usually, yes
[20:17:30] ericmj: I don't know how phoenix plans to handle that file in the future
[20:17:52] ericmj: it's your application that choses to make the distinction secret==runtime
[20:18:05] ericmj: it's not a constraint elixir or phoenix puts
[20:19:09] ericmj: it's not specific to phoenix, it's just a normal mix config file
[20:19:34] ericmj: nothing in the configs is phoenix specific
[20:19:57] ericmj: there is no such thing as a phoenix project, they are all mix projects
[20:21:13] ericmj: I am not sure what you are asking, but nothing in 1.9 is affecting phoenix specifically because there is no such thing as a phoenix project
[20:21:31] ericmj: phoenix uses the same elixir conventions as all other projects
[20:22:26] ericmj: right, wait for elixir 1.9 and phoenix 1.5
[20:22:42] ericmj: it's mostly copying things around
[20:24:07] ericmj: I have no idea when phoenix will make its next release, sorry
[20:24:36] ericmj: phoenix' prod.secrets.exs was just a way to have a separate config file that you could .gitignore
[20:24:45] ericmj: there is nothing special about that file
[20:25:00] ericmj: you don't have to wait for phoenix 1.5 to use elixir releases
[20:25:12] ericmj: only if you generate a new mix project probably
[20:26:03] ericmj: remember. there is no such thing as a phoenix project. if an elixir project can use the new releases then a project using phoenix can as well
[20:26:24] ericmj: yes, just follow the new elixir docs
[20:27:22] ericmj: also, there is no rush to switch to elixir releases. if you use distillery now it will still contain to work in 1.9

2019-05-27

[19:19:34] ericmj: Ping timeout: 276 seconds
[19:40:44] ericmj: has joined #elixir-lang

2019-05-23

[17:29:28] ericmj: icecreamcohen: is the database using HTTP/1 or HTTP/2?
[17:30:55] ericmj: mojito can be a good use case when you send requests to a single host like a database
[17:31:37] ericmj: you can also write a custom connection pool around mint that handles your needs specifically
[17:34:02] ericmj: if you support active mode it is easy to support passive mode
[17:34:19] ericmj: remove the calls to setopts and wrap the recv in {:tcp, ...}
[17:35:56] ericmj: I think broadway assumes you write the mint handling parts with gen_stage?
[17:39:51] ericmj: if the socket mode is the only thing that limits mint to be used with dbconn then I think we can fix that
[17:40:19] ericmj: was a long time since I used dbconn though
[17:40:25] ericmj: fishcakez: are you around?
[17:43:00] ericmj: please open an issue on mint about passive mode
[17:47:24] ericmj: isn't this what gen_stage is for?
[17:49:25] ericmj: they are all abstractions providing benefits and drawbacks from each other
[17:53:10] ericmj: not really, in one you call :gen_tcp.recv in the other you don't
[17:53:21] ericmj: in passive mode you would still own the socket
[17:55:04] ericmj: yes, that would change, you would call :gen_tcp.recv instead of receive
[17:58:16] ericmj: right, you can't support both active and passive without two interfaces
[17:58:29] ericmj: in the same way gen_tcp has two interfaces for active and passive
[17:59:07] ericmj: micmus: I prefer if the user still sources the data, gives more flexibility, specially with the new sockets API
[17:59:28] ericmj: the new sockets API might give us non-blocking passive mode
[18:01:37] ericmj: mint calls gen_tcp/ssl directly but the underlying transport is flexible
[18:02:08] ericmj: we had a transport behavior before 0.1.0 but it was not needed so we scrapped it, but we can easily add it back
[18:02:50] ericmj: fishcakez: if mint supported passove mode could it work with dbconn, or would it require any other changes?
[18:04:45] ericmj: right, dbconn doesn't support concurrent requests for a single connection

2019-05-22

[18:01:43] ericmj: feld: if nginx only accepts 206 to a range request then nginx is at fault
[18:02:02] ericmj: you should be expected to handle a 200 response on a range request
[18:03:11] ericmj: yes, ecto's binary_id is of the binary type in elixir
[18:04:43] ericmj: you can use is_binary + byte_size
[18:05:20] ericmj: `defguard is_binary_id(arg) when is_binary(arg) and byte_size(arg) == 8`
[18:05:30] ericmj: (I think byte_size is 8 for binary_id)

2019-05-15

[11:30:39] ericmj: there are other tools that visualize the coverage report better
[11:32:10] ericmj: mix coveralls.detail --filter general.ex
[11:32:22] ericmj: the default coverage tool also shows lines but maybe not in the cli
[11:42:48] ericmj: nickjj: --cover generates a directory cover/ with the details of each file
[11:44:17] ericmj: you can find the docs by running `mix help test`
[11:46:34] ericmj: isn't it your terminal that creates links?
[11:47:26] ericmj: or can you create links with ANSI codes or something like that?
[11:47:48] ericmj: not that I know of
[11:48:11] ericmj: maybe if you have something like file:///...

2019-05-13

[10:48:52] ericmj: because you wouldn't able to call it when mix is not available
[10:48:59] ericmj: for example when seeding your staging environment
[11:02:52] ericmj: it can be useful to have access to the mix context
[11:03:02] ericmj: for example your configuration in mix.exs

2019-05-02

[01:19:57] ericmj: Ping timeout: 250 seconds
[01:50:45] ericmj: has joined #elixir-lang
[03:25:28] ericmj: Ping timeout: 245 seconds

2019-04-29

[18:54:43] ericmj: jnoon2: you should list the deps in mix.exs
[18:55:17] ericmj: `{:sibling_app_in_umbrella, in_umbrella: true}`

2019-04-28

[13:42:49] ericmj: Randyr: hexpm inlines svg icons at compile time
[13:43:09] ericmj: used like this https://github.com/hexpm/hexpm/blob/d55c39c9863a7a738042014d1c47182e6e39cd0b/lib/hexpm_web/templates/page/index.html.eex#L17
[13:43:32] ericmj: https://github.com/hexpm/hexpm/blob/master/lib/hexpm_web/views/icons.ex

2019-04-25

[14:20:00] ericmj: you don't need `null: true`, it's the default