
Phoenix 1.1 Released - clessg
https://groups.google.com/forum/#!topic/phoenix-core/TBacwj0U7rY
======
mbesto
I've been following Phoenix for awhile now and it's one of the first "shiny
new things" that I'm genuinely impressed by...especially coming from Rails.
Why?

\- Out of the box, it solves the architectural performance problem that
inhibits every Rails project by using the ErlangVM

\- It's a fairly easy migration path for someone that has a Ruby/web-mvc
background

\- It's API-ready out of the box, which means connecting to devices, other
services, etc is built into it's design

\- Since it's functional programming by design, it means data manipulation is
inherent to developing applications

I'm excited to see the adoption go up.

~~~
dudul
I honestly don't understand why Ruby developers are all so excited about
Elixir/Phoenix.

Don't hear me wrong, I think Elixir is an amazing language and I love using
it, but it has _nothing_ to do with Ruby, the paradigm is completely
different. It makes me think that the only reason Ruby devs are so into it is
just because the syntax is similar, which make them seem a little... shallow I
guess.

~~~
pbowyer
> I honestly don't understand why Ruby developers are all so excited about
> Elixir/Phoenix.

Perhaps the history of Ruby uptake explains it? My feeling is many of these
'Ruby' developers started as Rails developers. Rails did cool stuff, but it
had they fanboy/hype around it that only Apple usually garner.

I wonder if now Ruby is established, has lost its excitement, and problems are
encountered by users day-to-day, Elixir looks like the next magic bullet? I.e.
they are predisposed to being attracted to the noise [and NodeJS didn't
attract them all because of...??]

I've nothing against Ruby or Rails, but I did not appreciate the single-minded
hype and excitement around one piece of technology which wasn't flawless.

~~~
dudul
I can relate to that yes. What kept me away from RoR is this strange community
that seemed to stubbornly refused to look into anything else, believing that
their technology was the silver bullet. Maybe I was wrong, but that's the
feeling I got. I have to say, the performance issues in Ruby always were a bit
problem to me.

I would hate to see the same thing happen with Elixir which, I believe, can
become an amazing technology and finally help give Erlang the recognition it
deserves.

------
dimgl
Big fan of Phoenix and the Elixir community. Everyone has been extremely
welcoming and Chris himself has given me some advice when I'm stuck. Very
happy with this framework and I look forward to seeing how the Elixir
community grows.

To newcomers: learn Plug first. I created a web server using just Plug and
it's been a blast. At first it was difficult to wrap my head around how things
were supposed to work, but as time went on Plug's flexibility really started
to show; I basically fell in love with Elixir! Now I've moved on to Phoenix
(which is built on top of Plug) and it's been a much easier ride than diving
into Phoenix head first.

~~~
urs2102
I can totally agree - I've been on their Slack channel and it's nothing but
friendly and welcoming. It's kind of like the MINASWAN (Matz is Nice And So We
Are Nice) idea in Ruby, but since the Elixir community is even smaller, it's
even more important.

------
abritinthebay
We use Phoenix and Elixir a lot at Bleacher Report and it's great.

However there is very little information out there on how to improve
performance. For example - we saw out of the box performance for a simple data
parser being better with Symphony than Phoenix (but both were way better than
Rails).

It's not a catch all performance booster, even on things you would expect it
would be (this was an API that pulled lots of data concurrently from other
sources to build the API).

It IS a huge improvement over rails however. José Valim is a great guy and we
were lucky enough to have him talk about both here at BR. Plugs alone are a
lovely architectural touch and it's worth people checking out the system just
from a widening your perspective type of deal, even if you won't be using it
in production.

Good practices all round.

~~~
josevalim
For Phoenix, the main constraints in performance are usually around
configuration like the size of your database pool or if protocols are being
consolidated. Once those are tweaked, you are usually good to go!

Generally speaking though, Erlang in Anger is a great (and free) resource and
Observer is a fantastic tool. When we made Phoenix handle 2 million
connections, observer was all we needed to find the bottlenecks. The fix was
then to optimize ETS or introduce a pool of processes.

If performance is not what you expect, feel free to ping me or Chris. I
personally enjoy doing this kind of work. :)

~~~
bherms
You're awesome Jose... Incredibly prolific, brilliant, and most of all, kind.
Thanks for all you do.

------
rubyrescue
I still think Whisper has the biggest Phoenix deployment in terms of traffic.
It's a huge part of what makes our web development easy because our backend is
all Erlang. Thanks Chris and José (and everyone else) for such a great set of
tools.

~~~
bherms
bleacher report is running their api's all off phoenix as well from what i
recall.... multiple millions of requests per minute at least

~~~
rubyrescue
cool! let's get together and talk about scaling it out... shoot me a mail (in
profile)

~~~
bherms
I'm not actually there anymore, but I know they were moving a lot of stuff to
Elixir and Phoenix and some of my friends have given a few talks on it... I
went to the last two Elixirconf's but haven't really used it much
professionally myself yet. Another media company called Inverse is using
Phoenix and Elixir for a lot of their infrastructure. They're still small, but
growing rapidly. inverse.com

------
connorshea
This release includes the optional addition of GetText, which allows
Internationalization (i18n) :)

Very happy to see one of my major qualms be resolved so quickly! Lots of
potential for Phoenix. Currently using Rails, and I assume I will be for the
next year or two, after that I'm pretty dead-set on switching over to Phoenix.

Looking forward to it, keep up the good work!

------
bsaul
Last time i tried to dig into elixir/erlang ecosystem, i tried to have a look
at how deployment was supposed to be made with those platform, and only found
at least 3 years old articles and debates on how to do it.

Could someone point me at a description of the current best practice ?

Edit : seems like phoenix documentation has a section explaining just that
pretty well. Wonder why i couldn't find anything as clear elsewhere...

~~~
devbug
exrm + conform

------
bpicolo
I've been using Elixir and Phoenix lately. It's out-of-the-box defaults are
insanely good, though certainly some parts of the language are tricky to get
used to.

But MAN is phoenix great.

------
Keats
Is there a realistic opensource example app? Curious to see how it looks like.

Ruby syntax is a big minus for me and afaik Erlang is not strongly typed.
While obviously syntax is a personal preference, I'm quite interested to hear
from Phoenix users how it compares to Go/Haskell/Rust/etc, especially in cases
where I don't need real-time.

~~~
adambrod
You can use dialyzer to add type safety at compile time. It's not quite as
good as Elm's compiler but it's much better than JS type checkers.

[http://learningelixir.joekain.com/elixir-type-
safety/](http://learningelixir.joekain.com/elixir-type-safety/)

~~~
simoncion
Dialyzer is good, but -as you mention- it has limits:

[http://erlang.org/pipermail/erlang-
questions/2015-December/0...](http://erlang.org/pipermail/erlang-
questions/2015-December/087072.html)

You _can 't_ use Dialyzer to give you the more-or-less iron-clad type safety
you get in C++ or Java, but you _can_ use it to get warned about many type
errors that might have otherwise gone unnoticed.

------
tracker1
Semi-OT but I _really_ think that there shouldn't be any more software
products with the name/codename Phoenix _EVER AGAIN_ ... Had no idea what this
was without looking.

Can recall several projects named "Phoenix" and none of them really gained
notoriety... And please, not "Firebird"

~~~
glandium
12 years (almost 13) after a certain browser had to change its name because of
trademarks, it's interesting to see that Phoenix Technologies doesn't seem to
care about this one.

~~~
tracker1
Maybe it's partly that I live _in_ Phoenix, AZ... but I've seen a lot of
companies/software that use "Phoenix" in the name to the point it's really a
meaningless name to me.

Though in looking into it, it does seem pretty cool.

------
acconrad
I built a side project in Phoenix
([http://www.peergym.com](http://www.peergym.com)) and was impressed how fast
the community has adopted to creating solutions - everything from
authentication to geolocation is covered.

If you're curious to try Phoenix but feel like the ecosystem is too bare
bones, you should check out awesome-elixir, which grows every day!

[https://github.com/h4cc/awesome-elixir](https://github.com/h4cc/awesome-
elixir)

------
Scarbutt
As outsider I'm impressed how such a new language as Elixir has such
productive web dev community.

~~~
davidw
José Valim was part of the Rails core team - it's likely he _gets_ web stuff
in a very deep way.

~~~
dpeck
Not to mention having a mountain of great Erlang bits to build on. Its been
great for everyone.

------
desireco42
Damn, am I the first one :)! Well WOOHOO ! ! !

I been working on my Elixir skills and Phoenix, and let me tell you how
fantastic it is, it is pleasure to use Phoenix, as someone coming from Rails,
it has a lot of good parts. Channels... are awesome. I love it and can't wait
to see what will future bring.

And performance, that we have plenty.

FYI, I am day to day using Rails and have few Meteor projects, but I can see
my future in Phoenix on both accounts.

Weird how when you click on google groups link on top, instead of Phoenix
announcement, it takes you to all announcements :)

------
icn2
Thanks for hardworking! Chris has been very active on answering questions on
slack as well!

------
acheron
So I guess there are no longer any trademark issues with Phoenix BIOS and the
name was up for grabs? Guess Mozilla just had bad timing.

~~~
djur
The BIOS company had an on-chip browser, which was the source of the
controversy.

------
tolmasky
Is this what its like to be old, to first think this is going to be a link to
an archived message from 2002 about the Phoenix browser? Also, to starting
worrying whether they're going to have to rename this thing just like Firefox
had to.

------
sotojuan
I have been reading through Learn You Some Erlang because I had to do a
presentation on Erlang for a class. As soon as I finish it and understand it
and OTP, I am moving to Elixir and possibly Phoenix. Both are going to have a
great future.

------
lai
I'm very interested in trying Phoenix out.

The 2 million connection journey they have is quite impressive, though it
would've been nicer if they made those clients actually do something other
than just connect to the server.

~~~
chrismccord
The test was specifically around max channel clients and pubsub subscribers,
but we'd like to do more tests in other areas when we can get access to a lot
of hardware again. To be clear the clients were mostly idle, but we did
broadcast messages to all 2M subscribers, which is quite a bit of work with 2M
messages being sent down the wire in 1-3s.

~~~
lai
Ah, true, sorry I missed that detail. 2M broadcast in 1-3 seconds is pretty
nice.

------
BuckRogers
As a Pythonista, I'm envious that Rubyists have this excellent thing called
Elixir to migrate to. I would jump wholesale to Elixir if I could fulfill all
my various use cases with it. But at one point I may start using Phoenix for
my web stuff.

Definitely keeping my eye on it, and I think these guys (Elixir in particular)
nailed the right implementation.

If I had a language I could wish for, a BEAM VM language with Pythonic syntax
would be it.

~~~
josevalim
I have actually tried to a make Elixir space sensitive but I was not
comfortable on how it played out with the macro system. You can still see
though some Python influences, like heredocs, doc tests, the System module,
etc.

Still, past the initial syntax similarities with Ruby, it is a very different
language than both Ruby and Python. You should definitely give it a try :)

~~~
BuckRogers
An invite directly from the head honcho himself! Thanks Jose, I will do so. My
dream language was basically Elixir, another BEAM VM language but Pythonic but
called something like 'Hydra' to play off the Python theme. Envisioning a
multiheaded snake fits right in with the Erlang actor theme.

But, why reinvent the wheel when you guys already have something similar
enough. I'll for sure reserve some time to dive in.

------
findjashua
any particular advantages over node.js + es2016 async/await?

~~~
perishabledave
Node.js and Elixir/Erlang have two different models of concurrent programming.
Node has its single threaded event loop and Elixir uses the Actor model.
Practically that means that your code is split into many small individual
actors or routines that are highly concurrent (and parallelizable) and work
together by speaking to each other.

Some specific advantages of Elixir's model of concurrency along with it's
implementation is:

* BEAM (Elixir/Erlang's VM) creates a schedulers for each core in your machine. Processes are efficiently loaded across each scheduler. This means that your application can easily make use of and scale with the cores of your computer.

* Processes are lightweight. These processes are much smaller in size than an operating system process or thread. It isn't uncommon for an Elixir application to have hundreds of thousands of these lightweight processes. In a way, an Elixir application is almost like a micro service architecture, each process does a small little thing and communicates with other processes to work together.

* Processes can be preempted. A node block can yield on IO operations, but what if a block is CPU intensive. The other blocks waiting in the queue will starve. In BEAM the scheduler can preempt a process if it's taking to long and let other processes have some time on the CPU.

* Processes can crash and thats ok. Since processes don't share memory, they can crash without corrupting the memory of other processes. Elixir/Erlang also has a great library (OTP) that deals with handling how processes crash. If a process crashes it can be restarted without having to restart your whole application. One of Erlang's flagship applications was quoted to have nine nines uptime. That's 99.9999999% uptime. That's not because it didn't have errors, but because the application knows how to deal with those errors without having to bring the whole application down.

Hope that helps.

