I found Elixir after a friend recommended looking into it for developing a multi-agent orchestration and task management system. Soon afterwards, I saw Chris McCord’s keynote at ElixirConf US 2025 about what makes Elixir such a great fit for building these types of tools, as well as why it’s a good candidate for increasing developer velocity by taking advantage of AI tools. It’s a really inspiring talk!
I just integrated this into emacs over the weekend and use it with lsp-mode and helm-lsp and elixir-ts-mode and some other core packages … (My Nix configs are kind of a mess and as soon as they’re in good shape I’ll share my emacs config for anyone who’s interested.)
I’m not doing a lot with Phoenix because I’m more focused on Elixir fundamentals, but after tinkering on a small project on a lazy Saturday this looks very promising.
I set up GitHub Actions to run Dialyzer and some security scans
Claude Code has been my favorite CLI tool, but I’m also experimenting with Codex and Gemini CLI
Excited to see how good Gemini 3.0 is when it presumably drops next month in December
For those of you who are experimenting with “vibe engineering” (important distinction between this and “vibe coding” imo), what tools have been invaluable to you?
I am experimenting with AI Intent Driven Development:
I do use the LSP and TIdewave as an MCP server, but not the paid version, because until I get employed I can only afford what is free, which also limits my ability to develop with AI, once I am using Gemini CLI, which isn’t at the level of Claude Sonnet 4.5, that I briefly played with in a trial.
Sonnet 4.5 beats Gemini 3 Pro on SWE-Bench. That’s just wild. Gemini Pro has made some remarkable gains with other benchmarks, but as I understand it, SWE-Bench is the one that matters most for devs who are using these tools to build software.
My choice of using Gemini CLI is purely due to its free allowance making it viable to work with it to try to sharp my skills in AI Assisted Development, and from my brief trial experience with Sonnet 4.5 I am not surprised with that benchmark.
To be honest I don’t find AI at a Senior level for producing code for areas where I am an expert at. The repo helps to make it behave more often as Senior dev or close to it, but once AI isn’t deterministic we need to accept it and move on. I often scrap the current work and start a new session when I see the AI isn’t producing code at a minimal acceptable quality.
I am mainly using it as a learning exercise while prototyping and building a real world Event Modelling Canvas app, and the initial prototype already costed me some weeks of rewriting all Elixir code by hand to untangle the mess AI created, meaning I would have been faster to have coded it by hand from the start. From this AI experience I learned that prompting AI isn’t enough and after some research I came up with the AI Intent Driven Development repo that makes a big different in the code quality output. In this moment I am using AI Intent Driven Development to untangle the Javascript mess into a testable TypeScript package with satisfactory results, but not free of some frustations.
My experience over the last few months (which seems similar to yours) is that AI needs solid guardrails to keep it on track, context management to prevent drift, and careful session clearing. Back when I thought I was going to get back into the Rails ecosystem I found this nifty repo which Obie Fernandez put together for use with Claude Code. The link takes you directly to the prompts for different types of agents, which you might find useful.
I haven’t had time to dig into your whole repo, but after I quick glance I noticed you’re using AGENTS.md. Is this the same file that gets generated with phx.new?
I will point out that my thread in that list was specifically not about using agents to write code, which I considered then (and still consider now) to be rather absurd. I expected agents to catch on with low-risk activities like search rather than stuff like programming where correctness is actually important.
To my surprise, writing code (poorly) seems to have caught on as the “killer app” for agents, and that’s about where I lost interest and went back to writing databases.
I should say that, while I’m quite sure LLMs are helpful for asking questions, I strongly doubt asking models to write code for you is a good path to learning a language. Similarly, I don’t think you can learn math by asking the model to do problems for you. The part where you have to think about your decisions is the learning part. So just be careful.
AI will never be a good path at all to learn a language or even programming systems where code quality matters more then velocity to production, at least until LLMs work on the base of predicting/guessing the most probable next token to send in the answer to the user question.
Why am I using it then? Well I need to get a job, and it seems I need to adapt or be happy unemployed and die on the hill of no AI for writing code.
100% agree with you, @garrison . I still fondly remember having to hand-write five-page proofs back in school. Learning how to think is such an important skill, and one that I think a lot of new learners are going to struggle to develop if they rely too much on LLMs.
For better or for worse, this seems to be the state of things, and I think most devs will have to learn at least enough to be dangerous with these tools.
Anecdotally, I’ve been putting generative AI through its paces for coding tasks for the past six months, including some contract work with an AI dev shop. I’ve seen enough first-hand to be impressed with the potential, but I’ve also seen frontier models struggle with what should be very simple tasks like configuring a grub boot loader, or editing my emacs init.el.
Separately, I just signed up for PragDave’s Elixir course (The Coding Gnome), The Pragmatic Studio’s Elixir & OTP and Full-Stack Phoenix courses, and purchased a small library of books (see my profile). I plan to develop a deep foundational understanding of this ecosystem before attempting to leverage AI to build production-ready apps.
That being said, my hypothesis is that it is possible to get AI to write quality code, but it’s a new skillset that needs to be developed.
I’m happy to share my trials and tribulations here for anyone in the community who’s interested.
This was the course that clicked the functional programming way to me.
I will prefer to say AI can write good enough code that works until it doesn’t any-more. AI will just augment how we humans add accidental coupling and complexity to code bases (tech debt), and products will hit the wall of being hard to change, add features and fix bugs quicker, and I predict it will be hard to fix it.
On the other hand, if before we write a single line of code, we get used to first model the Business capacities, their processes and data-flow to discover the business decisions that drive system behaviour and should be recorded as Business facts, then we can use this model to write code or auto-generate its boilerplate, scrap existing code and rewrite it at a low-cost, even with AI, especially if a Domain Resource Action architecture pattern or a Virtual Slice Architecture is used.
Please share them, because that’s how we often learn from each others.
Example of Business Modelling Driven Development (orange sticky notes are the Business Facts):
Never thought AI would be so bad until it had to write Elisp. Ohhhhh dear….
AI will improve in line with the context window. The more context it can consider, the more the solutions will fit and be future proof. So far not impressed yet but haven’t used more premium models.
Don’t know any free AI that delivers stable quality
I deem freedom to steer bi-directionally a necessity; Emacs provides the freedom. I can control AI with Emacs and AI can control Emacs.
AI is not deterministic, they can go from 8 to 80 with each session you start and use, same prompt, constrains, context, etc., the results will always vary in terms of quality and rarely will hit the excellence mark, just good enough to fit the bill, but off-course that excellent and good have different meanings for different people.
Mark Ericksen, co-host of the Thinking Elixir Podcast, shared his AI development flow in today’s episode: 279 Hot Code Upgrades and Hotter AI Takes. It starts at almost exactly 37 minutes into the podcast. The segment is less than 10 minutes and well worth the listen IMO.
Sonnet 4.5 is pretty good. It performs better on SWE-Bench than any other model, including Opus 4.1 and Gemini 3 Pro.
I think you hit the nail on the head here. I just recently finished reading Eric Evan’s Domain-Driven Design (DDD) book with the intention of first modeling a business’s domain, then creating the spec, then doing red/green TDD (agent-written but human-verified), then writing code that passes those tests, and so on and so forth.
On a related note, I haven’t used Ash Framework yet but I’m really intrigued with the concept, and I thought it was crazy coincidental that I stumbled upon it right after finishing the DDD book. Ash AI also looks really interesting, but I probably won’t get around to trying it out until after I’ve finished learning Elixir and Phoenix (likely early 2026).
Lastly, thank you for sharing that diagram. I love visuals like that. ChatGPT is also pretty decent at creating Mermaid diagrams if you have’t tried it out.
This is the dream! Have you seen Steve Yegge’s efrit? It brings us one step closer to the singularity, which I define as when emacs can reason about itself and self-improve
He also has an interesting project called beads (that is not emacs-specific) focused on improving agent memory. I’ve starred the repo and plan to get back to it later, but with everything else on my plate I don’t know when that will be…
As I said somewhere in the thread its better then Gemini, but not impressed with it. My observations about the state of AI and LLMs still apply to it.
I am not talking about DDD, and I will not adopt it for sure, but modelling a Business shares similarities.
AI can do diagrams, but this aren’t technical diagrams, neither solo diagrams made by one person.
This are Business Models that MUST be designed in real-time collaborative sessions between devs and business people, where business people will be the ones designing it and devs just asking relevant questions, otherwise we will want to think in technical terms and will let them slip into the Business Model, and that MUST NOT happen.
This Business Model main goals are to bridge the gap between business and developers with a shared language that everyone understands and from where ambiguity MUST be removed. The Business Model will then be used by developers to implement the solution, and they can even use it to auto-generate the boilerplate code, and if you are using AI, then it is reasonably good at doing it from this models.
The Business Model is the source of truth that everyone can use in the organisation to refer to Business Capabilities, their processes, actions and how decisions are mad, based in which rules and what are the expected outcomes/facts. When this document isn’t representing any-more the real-world of the organisation it MUST be updated and a new version created.
Not to be a gatekeeper but “vibe engineering” strikes me as an oxymoron. Vibe is associated with loose and intuitional. Engineering is precise and provable. I can’t tell anyone else what to do or think but I do find the term “vibe engineering” a bit troubling.
It’s meant to distinguish between “vibe coding”, which anyone with access to an LLM can do — irrespective of their technical acumen — and whatever else you might call what an experienced developer who knows how to properly use LLMs is capable of doing.
Does that make sense, or would like like me to elaborate?