I’m the author of that article. Ping me if you have any questions about CQRS/ES and Elixir.
btw, I created a to collect top resources about Elixir. After all, there’re too many resources. Check out it: https://github.com/tony612/the-zen-of-elixir
@mkunikow posted a link to this article earlier, it has some flattering comments about Elixir
Elixir appeals largely to those with Ruby or Erlang backgrounds. Its creator, José Valim, was a Rails Core developer, so it’s no surprise his creation draws much of its inspiration from Ruby. Because of its esoteric syntax, Erlang has been one of the least approachable programming languages. Yet it sits atop an incredible piece of technology. It’s the same technology which handles most of the phone calls in the world with 99.9999999% uptime. That is 32 milliseconds of downtime a year. The creators of WhatsApp scaled to hundreds of millions of users with only a few developers in part thanks to its robustness. Elixir brings this technology to the broader public.
Thanks to the Phoenix framework, Elixir will attract a lot of Rails developers. It feels like the next generation of Rails in a functional flavored Ruby. It does things with ease that Ruby has been hacked into doing: long-running processes, multi-core processing, and WebSockets, among others. I think we’ll see Elixir use grow for both monolithic-style minimum viable products and for apps that require high user concurrency like chat, messaging, and audio/video calls. The platform can also see interesting uses in Internet of Things and machine-to-machine applications because of its ability to handle large numbers of connections.[/quote]
Wrote a blog post on the value of multiple changesets:
Hope you find it helpful. Any feedback is a welcome.
Blogged some of my recent thoughts:
I just wrote a blog about using Elixir processes as aggregate roots in DDD. Please let me know your views about it.
What’s the added value of GenServer in this example? If read caching is what you’re looking for, I think ETS would be a much better idea. Using GenServers to represent objects makes your application complicated and brittle. For instance, since you’re using casts, in a high load situation the message queues can keep growing until the VM runs out of memory.
It’s similar to the discussion on To spawn, or not to spawn? and the Functional Web Development with Elixir, OTP, and Phoenix book thread.
Here is a blogpost about some not so basic aspects of Elixir, https://blog.10pines.com/2017/05/11/dissecting-elixir/ hope you enjoy it
I really like that, a great description overall and I’m still only part-way through.
I just published an article about refactoring std_json_io library, hope will be of interest for some of you: https://medium.com/@chvanikoff/lets-refactor-std-json-io-e444b6f2c580.
Hmm, that’s a cool read, I love seeing how such things change and develop.
This is a great summary. I think it could be improved even further by mentioning one important aspect - naming things.
In particular the naming conventions around packages that build on top of other packages, e.g. ecto extensions, some reusable plugs, etc. It’s tempting to put your library under the
Ecto.Whatever namespace, but that’s a bad idea. The
Ecto namespace is already owned by the Ecto package itself and it’s easy to see what problems it might cause if it decides to add a module called
Ecto.Whatever itself. It’s usually a much better idea to make the main namespace
EctoWhatever - something unique to the new package.
Firstly Thanks for taking time and having a look. That means a lot to me.
what you mentioned is highly important . I don’t how I missed that.
Thanks a lot for pointing out.
Medium article was great.
However tbqh the youtube audio sounds like you are speaking orcish with your head stuck in a toilet bowl. You might want to flush that one and re-record.
This was interesting:
wish = fn -> fn -> fn -> IO.write "this is chain" end end end wish.().().() # usage
Are there any examples of this being useful/being used in e.g. elixir lang or other well-written projects?
Thanks for that … definitely will take care of that … Thanks for the feed…
I know the elixir’s
Stream module has a lot of function ref returning, but it is not quite like this. FWIR it does not have any function def chaining.