I've been using Elixir with Phoenix and Liveview at my job for the past three months as part of a small team building a non-trivial web app (https://duffel.com/links). I'm mostly a front-end developer and was brought in to handle the UX side. Prior to this project I've spent the last 5+ years in the React world.
I found a lot of what the author says to be true. I'm used to the nightmare that is managing front-end dependencies, and it was refreshing to use something so 'batteries included' that comes with most of what I need.
It took me a while to get my head around the Phoenix + Liveview way of doing things, but when my mental model clicked into place and I stopped trying to do things the React way I became a lot more productive. When I had an autocomplete updating live as the user typed all going over the websocket without me writing any JS, it felt magical.
However I definitely found a lot of sharp edges that the author doesn't mention. We struggled a lot with any non-trivial UX, for example with the autosuggest mentioned above I had to add a lot of JS to handle things like being able to use the keyboard's arrow keys to select options. Whenever I jumped into the JS world it often felt like I was fighting against Phoenix, and had to resort to using 'phx-ignore' a lot. It was frustrating to continually struggle to do things I knew how to do easily in a pure JS environment.
Another area I struggled a lot is Elixir's syntax. To me, it feels like there are too many operators. The author touches upon it towards the end when they mention things like '\\' for default arguments, '<>' for joining strings and '++' for joining lists. It's a lot to wrap your head around at times.
Some of the fault for this lies with me; we were working to a tight deadline so I didn't have time to dedicate to learning Elixir, Phoenix and Liveview from first principles, I just jumped in out of necessity. Had I spent more time on the foundations first I may have been able to avoid some of these pitfalls, but I do think it illustrates that like many 'do everything' frameworks, there's a steep learning curve to doing non-trivial things. It's a powerful tool and I'm optimistic about its future, but I'm undecided if I'd choose it for a future project that has significant front-end requirements at this stage.
It sounds like you were able to be reasonably productive without even any time to learn the framework, so I’d say you did alright!
I’d say up until the recent focus on LiveView, Phoenix has been very easy for devs with experience with Rails or Rails clones in other languages to learn. Recently, with all the LiveView changes and the new components, it’s been harder, but I think it’s finally stabilizing a bit and I’ve got to say the newly-released Phoenix 1.7 is another significant step forward in terms of productivity for new apps.
Which part of this app is using LiveView? Since what you link to is using next.js. Are you guys mixing the two?
I really want to find a reason to build something with elixir, and it might be viable for my current work project. We won't be replacing our next.js frontend, though, that's for sure, though I wouldn't mind experimenting with it.
I'm mostly interested in deploying elixir on the backend, since we are using microservices, and there would definitely be a couple of services where elixir seems like a great fit. OTOH, we are also pushing some data through ML models, and it seems like Python is still the only real choice for this kind of stuff. I really wish it weren't the case, since the python interpreter with its GIL is just a piece of crap, to be frank.
Ah sorry, I should have clarified in my original message. The page I linked to is our public marketing site, which is a static site built with Next. The Phoenix application is the product that the site is talking about (Duffel Links).
> Whenever I jumped into the JS world it often felt like I was fighting against Phoenix
I've had the same experience and this is something I've tried to tackle recently. I've started working on LiveSvelte which allows you to plug in Svelte components directly into your LiveView, while still being able to push events to the server with a `pushEvent` function on the client. I've only started working on it this week but I think it's a promising idea. It's not React though but you could develop a similar package with React, I just much prefer Svelte :)
It's different, I've looked into Svonix for my usecase but it wasn't sufficient. Svonix does not support LiveView. It gets you a Svelte component in your Phoenix app without any interaction with the server. It also doesn't support Server Side Rendering which means on your first page load the Svelte component is not visible.
LiveSvelte does allow you to communicate back to the server, which in turn updates the Svelte component from the server, getting you E2E reactivity.
Serious question—if you were on a tight deadline, why did you choose a tech stack that you still had to learn? Leveraging existing knowledge is exactly what anyone in a rush should be doing.
I wasn't personally involved in making this decision, I was brought onto the project after it was taken, but there was a perception that we'd be faster if we did everything as a full-stack application. In fairness, we did deliver what we set out to do so it was a success, even if there were some rough edges to deal with.
Also bear in mind that I'm only covering my front-end perspective on this. I think the back-end developers involved on the project found it much easier to work with as they were already experienced with Elixir and Phoenix. For them, a tightly-coupled front and back end meant that they could change the way things worked and it was straightforward to update a few functions in Elixir and then the HEEX template, as opposed to a decoupled setup where we'd probably have been communicating using a JSON API and changes would have had more of a barrier to adopt.
Hello fellow HN swiftie. I've also been pondering creating some (non copyright infringing) Taylor Swift app recently. Something like this is always a good idea as I'm constantly doing double takes to make sure I'm listening to Taylor's Version whenever a Red or Fearless track starts playing. I wonder if this would be possible too for Youtube playlists/suggestions, as that's my primary streaming music source. Also, since this app is written in Swift (natch), don't suppose there's any possibility of an Android port?
I know this is an unpopular take among reddit swifties, but I really miss The Swift Life app. When it shut down part of me wanted to reverse engineer the server-side to keep it going. It was a unique social media app and had a great, creative and artistic community. I even got free rep tickets from a friend on it! Also Taymojis. I still keep the app's icon on my phones homescreen, and launch it every now and then...
Thanks for the feedback! I've actually never heard of The Swift Life, I was a casual fan for a long time but I only really became a huge fan around the time Lover was released.
You're right about Android (and fwiw this app is 100% SwiftUI). I would love to make one but I don't know if I have the time and ability to make an Android app that I'd be proud putting my name on. I am considering making a web version though. I'd also love to add support for Apple Music, but their API doesn't allow third party apps to delete songs from playlists.
Skyscanner | senior / principal / staff / lead hires | London, Barcelona, Edinburgh, Glasgow, Budapest, Sofia | ONSITE, VISA http://grnh.se/wqox2v1
We're a tech company in the travel industry, helping millions of people every month to see the world. We're growing quickly and have some really exciting things in the pipeline.
Hiring at mid and senior level for various roles - we're heavy on micro-services and data science, plus the other obligatory buzzwords like big data and machine learning. Our stack tends to be Node, Python and Java (depending on the context) and React on the front-end.
I've worked here for five months now and I really think it's a great place to work. There are some great projects to work on, the offices are really cool, the people are very smart (and friendly), and I even get to work on open source!
My referral link is at the top of this post, but feel free to email me at shaun.donnelly[at]skyscanner.net if you'd like me to refer you, or if you'd like to ask anything about the company, roles available or what sort of stuff you'd be working on.
We only do onsite roles right now, but relocation and visa assistance is available if needed.
I wouldn't say I'm a prolific blogger; maybe 4-5 posts per year, but it's nice to have a space to post any thoughts I have.