logoalt Hacker News

creakingstairsyesterday at 12:53 PM2 repliesview on HN

I guess I'll give it another try. I quite liked the idea behind it but last time I tried, I gave up mid way. Because everything was a macro, there was no auto-complete and that coupled with sparse documentation with buggy website (at the time, looks like its completely different now) was too frustrating.

I also wonder how well this would work with upcoming type system.


Replies

joshpriceyesterday at 1:41 PM

It's definitely worth taking another look.

The Ash DSLs get full autocomplete from your LSP and so make sure this is setup. The new Elixir LSP called Expert - https://expert-lsp.org/ is coming soon and aims to make this a much smoother process.

The documentation has been overhauled multiple times and is constantly being improved. If you encounter issues please raise an issue or a PR, knowing where users get confused is important for improving the docs for everyone.

One issue that new users often run into is that Ash is spread over multiple packages for different extensions and Hex didn't support multiple package search, which is being currently improved. So double check you're searching in the right package. Dash can help with this offline if you have it.

Tidewave (https://tidewave.ai/) MCP can help with doc search too if you are using a LLM/AI assisted editor like Cursor, Windsurf or Claude Code, etc. We also have some Ash specific announcements this week along these lines... ;)

enraged_camelyesterday at 12:57 PM

>> I guess I'll give it another try.

I wouldn't bother. We have been using Ash at work for the past nine months. I'm not a fan, and dread using parts of the app that are built with Ash. It makes my productivity plummet due to cryptic error messages, really poor documentation, and high levels of obfuscation (by way of countless macros) that hides what is happening under the hood. Based on my conversations with other team members, most of the team feels this way. The only reason we're continuing to use it because it enforces a level of standardization on the codebase.

show 2 replies