
Elixir School - myth_drannon
https://elixirschool.com
======
TheAceOfHearts
I've been toying on and off with Elixir for a while now, and generally found
it to be a fun language. You hear good things about Erlang's design, but the
lack of familiarity lowers its approachability. On the other hand, Elixir is a
much easier sell, since it's like a functional-Ruby.

One of the many nice thing about Elixir is Mix, the default build tool. Since
everyone is using the same tools for config, dependency management, tasks,
etc. you can find your way around new projects very quickly.

It's a great time to pick up Elixir if you're looking to build a web app.
Phoenix released 1.3.0 [0] a few days back. The project structure changes
along with Ecto 2.0 seem like a good step in the right direction, helping you
separate the domain model from the persistence layer, and group related
features together.

My biggest complaint with Phoenix is that they don't treat JavaScript as a
first-class citizen. But as long as you're just writing small scripts to glue
stuff together, it's probably fine to avoid writing tests. They've also gone
with Brunch as their build tool, while I'd prefer Webpack for most cases.
Although I recognize both have their use-cases.

Umbrella project support was also added to Phoenix in the latest release, so
you can embrace the monolith while still breaking stuff up when it makes
sense. I'd be interested in reading other's experiences with umbrella
projects, as I haven't had any good use-cases, so I've only been able to
speculate on the matter.

[0]
[http://phoenixframework.org/blog/phoenix-1-3-0-released](http://phoenixframework.org/blog/phoenix-1-3-0-released)

~~~
Existenceblinks
I really really don't understand why people replace Brunch with Webpack while
I keep seeing complaining about Webpack problem. Except the React mobs make
that happen. I wonder how many people need what Brunch can't do which are
specified in [http://brunch.io/docs/why-brunch](http://brunch.io/docs/why-
brunch). Not sure if including Webpack by default would "treat JavaScript as a
first-class citizen".

Also, Elixir is not Ruby, not even "it's like". Don't talk about what's going
behind the scene yet. Even on the surface - syntax, can you list what similar
syntax except def(do)end? I can't think of any, maybe i miss something but I'm
sure there aren't many or maybe it's just that def(do)end.

> Since everyone is using the same tools for config

I don't think so in terms of releases. There are controversial ways of
configuring `sys.config` and environment variables. No consensus here.

~~~
beckler
I've come around to Brunch, and I think it's the right choice for Phoenix.

I used Webpack for a while, but every time I needed to setup a new project I
had to go back to the docs to figure out what I wanted. I tried using a
generator, and it was awful... maintaining all the generated Webpack
configurations was like trying to maintain a whole project within my project.

I wish Brunch had some more in-depth documentation, but I like not wasting so
much time on getting that stuff setup.

~~~
Existenceblinks
> maintaining all the generated Webpack configurations was like trying to
> maintain a whole project within my project

That's true to me too. I'm not happy leaving a bunch of generated
configuration I hesitate to touch in my project folder. It includes too many
of what aren't supposed to be changed, and freedom is not an excuse for this
case.

------
doomspork
Wow! Awesome to see Elixir School here. I'm the creator, happy to answer any
questions or listen to feedback!

We've got a lot of big things coming this year. A whole new site, new lessons,
and a few exciting new additions.

~~~
Xeoncross
Very functional site. It's easy to read and I already was several pages into
learning Elixir!

~~~
doomspork
Thank you! Any and all feedback is welcomed too! If you see anything that
needs improvement please feel free to submit a PR.

~~~
Xeoncross
Does elixir only have 'int'? In that intro section I'd like to see mention of
8, 16, 24, 32, 64, and 128 bit ints/complex (if they exist). Nothing big, just
mention that they exist and I won't have to abandon the language for higher
maths.

~~~
doomspork
Hi Xeoncross! Elixir does have floats, we should make mention of them. If
you'd like to submit a PR we'd happily accept :)

~~~
Xeoncross
No, not 32, 64, 128 bit floats/doubles (though I'm glad it has those as well).
I meant plain ints. Do I have to do binary math or can I make use of large
numbers natively?

------
siscia
It is a while I don't code in elixir however when I was learning the complex
part definitely wasn't the one in this course.

The complex part is to start to think about decompose a big problem into
smaller problems solvable by different Erlang modules. When to spawn another
process or when to re architecture the code.

Really great work but I would go a little bit ahead and add some more specific
Elixir/Erlang part.

Also what really really helped me was to understand how a GenServer was
written, it may be worthed to make the student write its own limited version
of a GenServer...

~~~
doomspork
Howdy @siscia! When I wrote Elixir School the intention was never to be a full
fledged tutorial or to "hand hold". The purpose of the site is to get you
familiar with the topics, wet your appetite, and enable you to go out and
learn more on your own.

~~~
siscia
It works perfectly for that :)

It is a good work, really! I was just trying to provide some useful feedback
:)

~~~
doomspork
No worries, much appreciated :)

We're working hard on some big changes this year including additional lessons
and a blog. The blog will allow us to cover topics and material that don't fit
well without our current lessons. Check back!

------
rhgraysonii
Contributor here. Happy to answer any specific questions or address feedback.

~~~
doomspork
Thanks for all of your help @rhgraysonii! Elixir School wouldn't be what it is
without all of the contributors and translators :)

------
_virtu
I've been really enjoying the pragmatic studio series as well. I highly
recommend it if you're looking into getting into Elixir.

------
jeffrand
I read through this a little while ago when trying to decide if I should try
out Elixir for a side project. The language is really intriguing, but I don't
want to start a project without grokking how a more complicated project is
laid out. Can anyone provide an open source example of a relatively complex
project?

~~~
doomspork
The biggest open source project I know of is:
[https://github.com/bigardone/phoenix-
trello](https://github.com/bigardone/phoenix-trello)

I'm working with a couple other contributors to Elixir School on new material
that will go into more detail with regards to designing more involved
applications.

I agree that resource is sorely missing from the Elixir community.

------
Dirlewanger
Excellent resource. Both this and the amazingly thorough official
guide/documentation got me over the initial hump of learning Elixir.

~~~
doomspork
Thank you Dirlewanger! Let us know if there's any improvements you'd like to
see.

------
deathtrader666
I wonder what is the added value on Elixir School, when it clearly looks like
the same content is rehashed from the elixir-lang website..

------
jmcgough
Elixir School is great, as well as elixir's hexdocs.

~~~
doomspork
Thank you for the kind words jmcgough!

~~~
jmcgough
Of course, and thank you for all of the work you've done. I'd love more than
anything for Elixir to take off so there's more Elixir jobs out there, and
educating developers is a key part of making the language more popular. I used
ElixirSchool a lot (and still do now) while I was ramping up on the language,
great job with it!

