Hacker Newsnew | past | comments | ask | show | jobs | submit | hibbitybibbity's commentslogin

Elixir/Erlang is best for building long-running systems that you don't want to go down. Erlang's creators optimized for stability (phone systems) and sort of reinvented concurrency and distribution in support of that goal. There are some great talks by Joe Armstrong about this on YouTube, highly recommend!

For CPU-bound tasks and number crunching you can always just write it in Rust (or C or Zig) and NIF out to it from Elixir.

As a dev who builds apps that are served over the internet, it covers everything I need. Maybe that's a specialty niche.


I thought I would miss static typing more than I do. Elixir's pattern matching is actually extremely powerful in its own right.


You sound a lot like me when I first approached Ash a year ago, especially the part about being new to Elixir and worrying I'd just reproduce my prior MVC frustrations (Laravel in my case) in Phoenix.

I've been using Ash for about a year now and it's really hit the spot. Wishing you well on your journey!


I'm planning on trying ash at the weekend when I have time, but right now it's still a little nebulous to me. Have you found a boundary where you end up just being constrained and you're just back to normal phoenix dev?


Not really because Phoenix handles the web layer while Ash handles the domain/application layer. In other words Phoenix provides one interface, of potentially many, through which users could access an application built in Ash.

Which is all to say if there's been something I couldn't figure out in Ash I've tended to put it into a regular Elixir module rather than anything Phoenix-specific.

The only exception I can think of is that AshAuthentication doesn't provide support for API keys out of the box, so I have ended up writing my own little plugs for that.

If you are just getting started I'd strongly recommend working through tutorials and/or the Ash book (it's in beta but pretty solid) rather than just diving into a project. It's a lot when you're first wrapping your head around it.


We just launched an api key strategy `mix ash_authentication.add_strategy api_key`


Oh baller


Just wanna chime in and say expr is the bomb


I came to Elixir from PHP/Laravel so I approached Ash with a similar skepticism. I was looking specifically for a set of tools that would allow me to rebuild an ancient and unwieldy ColdFusion SAAS product, as a solo dev, with maximum stability and minimum boilerplate. I landed on Elixir+Ash after about a year of exploring other ecosystems and languages.

If you look under the hood of Ash's macros, they're all just shorthand for creating a particular struct with sensible defaults. It's not actually doing a ton of magic. You can replace them entirely with direct function calls, or probably even manually declare the structs yourself.

If there's magic, it tends to be more in the execution step - like how `Ash.read()` can push authorization logic into the query/db layer. But that's exactly the kind of logic I don't want to have to write myself over and over again.

I have never compared Phoenix's generated auth stuff to Ash's so I can't speak to that. However I can say Ash's generators all use `igniter`, which is part of the Ash project. It allows for package developers to reach into Elixir's AST to make smarter installers/updaters, and is being adopted more broadly throughout the Elixir ecosystem. So in terms of code generation Ash's approach is gaining a lot of traction.

Speaking for myself here, I've really liked working with Ash. The value becomes more apparent the more I use it.


When I was first getting started with Ash I also found the documentation to be frustrating at times. It's less of an issue for me now that I'm more familiar with it. I asked a lot of questions in the discord and found them to be super responsive.

Also, the book is out now.


I've got an app coming out of beta that runs web accessibility scans, which uses Elixir+Ash. Beta testers loved it, it's been very stable and I barely had to touch it over the beta period.

This app has a lot of complex headless browser flows that rely a lot on Ash.StateMachine, and Ash has only gotten better the deeper I've gotten into it. The app gets more simple and stable the more I integrate with Ash.

The declarative "data-oriented programming" paradigm took some getting used to (I come from PHP) but it makes so much sense and makes it easy to plug Ash resources into any other use case. Deriving a JSON api is an easy example.

In another app I'm using Ash.Reactor to model agentic AI workflows (it's just RAG but with extra steps). Reactor was originally intended as a saga orchestrator that models workflows as a DAG. DAG is the perfect abstraction for this use case and it works ridiculously well.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: