Elixir Outlaws - New Elixir Podcast

podcast

#1

Chris Keathley, Anna Neyzberg, and I started a new Elixir podcast. If you would like to have a listen you can find us at http://elixiroutlaws.com. We are pending approval on iTunes, Google Play, and Spotify. We are also on twitter as @ElixirOutlaws. We would love your feedback.


Elixir Podcasts
#2

Nice one! Looks good and I love the name :023:


#3

Excellent, listening to the first episode now :slight_smile:


#4

Let us know what you think or any topics you would like us to discuss. We were missing one host on that show, but she will join us next. She had a schedule conflict :(.


#5

I can’t find it in Overcast :icon_sad:

Edit:
Added it manually via RSS :slight_smile:


#6

I don’t know how to submit to their feed. I tried to look on the website, but I couldn’t find a way. Do you know?


#7

Overcast should automatically pull from iTunes—I also believe it will only show podcasts with more than X subscribers? (Where X might be like 10 or 20). So if it’s on iTunes just give it a little time and it should show up itself.


#8

Thanks, we are submitted to iTunes, but we are awaiting their approval.


#9

We are now approved on iTunes.


#10

I believe it should be on overcast now.


#11

It sure is :slight_smile:


#12

Let us know what you think?


#13

I just listened, and loved it! It’s great to hear someone with a functional background, as well as discussions of higher-level architecture of systems which might need to be distributed etc. The audio quality of one of you was a little poor, but apart from that it was very interesting and I look forward to hearing more.


#14

It is in https://playbeta.pocketcasts.com :slight_smile:


#15

I enjoyed the first episode, it’s very nice to hear more in depth content vs the standard interview at higher levels. The audio was perfectly fine for me, clearer and better balanced than other podcasts I listen to. Looking forward to the second episode :smile:

Edit: Any examples of libraries that utilize the argument method for configuration like mentioned in the podcast? Easy enough to do, but seeing is believing !


#16

I, unfortunately, haven’t seen any libraries utilizing this. Most libraries are set up with library level configuration. I can run through a small example.

Instead of the adapter, internally, calling Application.get_env(:library, :key) it would take a new argument from the outside. LibraryModule.do_something(arg, config). The later allows the caller of the library to send in dynamic runtime configuration. If the application wants a static configuration, it can add this config to the application configuration.

  # in config
  config :my_app, MyModule,
     key: value,
     other_key: :other_value

  # in code

  defmodule MyModule do
    @config Application.get_env(:my_app, MyModule)

  def foo(arg) do
    LibraryModule.do_something(arg, config)
  end

The problem with the old way is that if my system has two applications running on the Beam, and both need different configurations, the library only allows one global config. With the application level being the only configuration each application can have a different config for the same dependency.

The other thing it allows is the application to pass in a runtime configuration. We can take Bamboo for example. Bamboo is a library for sending emails. It expects settings to be at the application level. Now, I want to have the SMTP server configured by a front-end web app at runtime, and be able to change while the system is running. This can be done with the new way, but not the old way.

I do the new way in the bamboo_config_adapter to allow runtime config, but it merges with the compile time config, so it is a little bit of a hybrid. I’m planning on taking out the compile time config out of the adapter.


#17

I’m listening to the first episode on my way back from ElixirConfEU and I’m enjoying it! I would have liked a little introduction who you are and what you do, though :slight_smile:

Belt is all about runtime configuration :wink:
ExAWS also doesn’t require Mix Config and you can pass configuration to pretty much all its functions.


#18

Thanks for the feedback. We are going to do an intro in the next episode. That is the most common feedback we are receiving.


#19

Redix is a good example of this: https://github.com/whatyouhide/redix#usage. Libraries like ecto and phoenix are getting better since they support the “init callback” pattern that @michalmuskala talks about here: http://michal.muskala.eu/2017/07/30/configuring-elixir-libraries.html#callback-module-stateful-libraries.


#20

And there is always my TaskAfter library style that has optional global configuration or custom named local runners, thus it supports all styles with minimal code.