9 ms·
Phoenix 1.1 Released
- desireco42 11y agoDamn, 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 :)
- bpicolo 11y agoI'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.
- icn2 11y agoThanks for hardworking! Chris has been very active on answering questions on slack as well!
- dimgl 11y agoBig 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.
- tonyarkles 11y agoI second the recommendation to build something with Plug first. Phoenix was my first dip into Elixir, but I quickly found that I didn't know wtf was going on. I built a little API thing that accesses sheets via the Smartsheet API, and decided to do that from scratch. Started with a GenServer to do the API access, and then added Plug. This showed me how all of the pieces fit together without starting from even a Plug template. Very useful exercise!
- urs2102 11y agoI 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.
- Scarbutt 11y agoAs outsider I'm impressed how such a new language as Elixir has such productive web dev community.
- acheron 11y agoSo 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 11y agoThe BIOS company had an on-chip browser, which was the source of the controversy.
- connorshea 11y agoThis 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!
- tolmasky 11y agoIs 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.
- mbesto 11y agoI'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.
- thirdsun 11y agoSame here - the strongest argument for me are the performance benefits. I really like working in Rails but Ruby's general performance and memory handling tends to be a issue - when you run into problems it's hard to find the root. Looking forward to diving into Phoenix and Elixir.
- tclancy 11y agoSimilar here: I've been happily working in Django for a long time, but Phoenix/ Elixir has me intrigued.
- Cyph0n 11y agoI just find the Erlang style bizarre. I know it's a great language but I'm really don't see myself going the extra mile. I think Django is a good mid level framework that is good enough performance-wise for most cases. I'm now learning Play and Scala to take cover those high demand edge cases.
- lai 11y agoI'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 11y agoThe 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 11y agoAh, true, sorry I missed that detail. 2M broadcast in 1-3 seconds is pretty nice.
- sotojuan 11y agoI 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.
- abritinthebay 11y agoWe 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.
- desireco42 11y agoCan't say for sure, but in PHP some modules are writted in C and optimized, it might be that you are seeing that. Overall PHP due to number of things, how collections are processed etc is very slow. Elixir/Phoenix is pretty much consistently fast and encourages practices that I believe will make your app really fast.
- mercurial 11y agoI thought the tradeoffs of the Beam VM (soft real-time) meant that "fast" would always be preceded by "not very". Unless you mean compared to Ruby?
- josevalim 11y agoFor 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. :)
- acconrad 11y agoI 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
- Keats 11y agoIs 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.
- rgoomar 11y agoYeah, this website: https://elixirstatus.com/ https://elixirstatus.com/ is completely open source: https://github.com/rrrene/elixirstatus-web https://github.com/rrrene/elixirstatus-web
- adambrod 11y agoYou 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 11y agoDialyzer is good, but -as you mention- it has limits: http://erlang.org/pipermail/erlang-questions/2015-December/087072.html http://erlang.org/pipermail/erlang-questions/2015-December/0... 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.
- bsaul 11y agoLast 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 11y agoexrm + conform
- rubyrescue 11y agoI 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 11y agobleacher report is running their api's all off phoenix as well from what i recall.... multiple millions of requests per minute at least
- rubyrescue 11y agocool! let's get together and talk about scaling it out... shoot me a mail (in profile)
- bherms 11y agoI'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
- findjashua 11y agoany particular advantages over node.js + es2016 async/await?
- tim333 11y agoMore reliable I think. Node doesn't get the very high kind of uptime that Erlang does.
- perishabledave 11y agoNode.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.
- anonyfox 11y agoElixir or Erlang provide truly parallel or even distributed code execution. node.js is just concurrent, so it falls flat when doing heavy CPU work. And no, clustering node.js isn't even remotely comparable for anything but trivial API services.
- tracker1 11y agoSemi-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 11y ago12 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 11y agoMaybe 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.
- BuckRogers 11y agoAs 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.
- iamd3vil 11y agoI am a Pythonista myself and I use Elixir at work. Even though Elixir looks like Ruby, it has very little in common with Ruby. Elixir's syntax is very simple and it's very easy to migrate from Ruby/Python. Please try it, you may actually like it more than Python :)
- josevalim 11y agoI 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 11y agoAn 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.