John-BoothIQ

John-BoothIQ

150,000 Lines of Vibe Coded Elixir: The Good, The Bad, and The Ugly

TL;DR:

  • Good: AI is great at Elixir. It gets better as your codebase grows.

  • Bad: It defaults to defensive, imperative code. You need to be strict about what good Elixir looks like.

  • Ugly: It can’t debug concurrent test failures. It doesn’t understand that each test runs in an isolated transaction, or that processes have independent lifecycles. It spirals until you step in.

  • Bottom Line: Even with the drawbacks, the productivity gains are off the charts. I expect it will only get better.

You can read the full article here:

Most Liked

tozz

tozz

150k LoC doesn’t mean anything if you don’t have a of declaration of what it does.

Our Elixir project is at 31k lines cloc --exclude-dir=node_modules,_build,deps . and I will remove a few thousand since this is in the middle of a refactor and I haven’t been cleaning up things thoroughly.

It’s a fairly simple app, a full admin, api for mobile clients, orchestration logic via Oban to process data, spin up servers etc. Some 3rd party integrations.

I use Tidewave quite a bit and I’ve noticed the Anthropic models (haven’t tried others) are happy to duplicate logic like crazy, this is why I’m wary about LoC as an indication of anything really (and personally I want to keep it low, not high).

garrison

garrison

Does it matter how many lines of code there are in nobody reads them? Does it matter if logic is duplicated if nobody ever has to change it?

Everyone trying to apply good software practice to vibecoding (“vibe engineering”, “subagents”, “orchestration”) is going to get wrecked by the bitter lesson as usual. Differentiability is king.

Either retreat upmarket or embrace the vibes.

egeersoz

egeersoz

This is a bit surprising to read. Opus 4.5 helped me do a comprehensive refactor of my app’s test suite, and concurrency was a big part of that. It did deep dives into each domain and identified which tests are safe to run concurrently, and we were able to make the suite run 40% faster overall. It also fixed several intermittent test failures caused by concurrency, as well as the dreaded DBConnection errors that tend to clutter the test outputs.

Where Next?

Popular in Blog Posts Top

marcelo
Long story short, over the past years we’ve been scaling our operation quite a lot at Unbabel. Most of our codebase is Python and some of...
New
fredwu
Hi folks, I wrote a blog post the other day on how I built my MVP in 3 months whilst having a day job, using Elixir/Phoenix/LiveView. Th...
New
ErlangSolutions
Hey all, it’s Erlang Solutions. We released loads of Elixir content from our senior developers last week in celebration of ElixirConf US...
New
sashaafm
How to use the blogs section You can post links to your blog posts either in one of the Official Blog Posts threads (like this one), or, ...
296 25433 131
New
paulanthonywilson
All a bit meta, but this is a quick post on creating a Jekyll blog post from a Livebook page. Posted via Devtalk (see this thread for ...
New
zachdaniel
In this post I explore the silos that exist in the Elixir ecosystem, the pros and cons, and what we can improve.
New
sheharyarn
In this article, I talk about the Elixir library Delta we at Slab just open-sourced, its various features including support for Operation...
New
AstonJ
Update: How to use the blogs section You can post in one of the Official Blog Posts threads (like this one), or, via Devtalk and a new t...
New
New
brainlid
Dialyzer is a tool that you’ve probably heard about in the Elixir community. You may have even used it. However, adding Dialyzer to an ex...
New

Other popular topics Top

siddhant3030
Hi, I have to write a raw query for one of my project. But till now I have used ecto queries and don’t have much experience writing raw ...
New
baxterw3b
Hi guys, i’m new in the Elixir world, and i have to say, that i love it! i’m having some problem to understand anonymous functions with ...
New
mcarvalho
What is the difference between System.get_env and Application.get_env? For example, what are best practices to use one versus another.
New
chrismccord
As promised, the first release candidate of Phoenix 1.3.0 is out! This release focuses on code generators with improved project structure...
New
pmjoe
I have a relationship of love and hate with Elixir. Lots of things are just absolutely right, but there are some things that are kind of ...
New
fireproofsocks
Forgive me if this is obvious, but how does one delete a database record WITHOUT selecting it first? Ecto.Repo — Ecto v3.14.0 has exampl...
New
msaraiva
Surface is an experimental library built on top of Phoenix LiveView and its new LiveComponent API that aims to provide a more declarative...
564 43757 214
New
belgoros
I’m not a pro in using Regex and can’t figure out why the following behaviour happens, especially if we take into account the difference ...
New
joeerl
Hello again - after a longish gap I’ve decided I really must dig into Elixir and see what’s been happening here - so I have a few questio...
New
lanycrost
Hi everyone! I need implement if…else if…else condition from my elixir code, and anymore of this control flow structures not work proper...
New

Latest on Elixir Forum

We're in Beta

About us Mission Statement