spontaliku-softaria

spontaliku-softaria

How do you guys do your work in Elixir on everyday basis, in production, on commercial job, for a long time (years)?

(Sorry for huge text, I just want to describe context properly.)

I’m thinking to move from Java to Elixir and currently I’m stuck because Java IDEs looks much more developed and practical. Which makes me really sad because Elixir seems to have much better language design and practices overall. In my experience, proper tooling is one of the most (if not the most) important feature which a language has to provide to be practical. And IDE is the most important of tools because it basically defines your productivity in long-term work.

There is Intellij plugin. I believe it’s biggest problem is the same as some other Jetbrain IDEs: it has own grammar parser. I’ve faced it already with Typescript: Intellij support was terrible until they moved to language server, and even now it is buggy and much less stable than VS Code for example. Based on Github issues and my own experience, the plugin suffers from same problems.

Looks like there are no more IDEs - the rest is text editors. They do not understand the language they edit, so a lot of productivity is missing. Simple example: imagine you decided to rename a named function after a couple of years. In stupid old Java with Intellij you do it in a second. With text editor you are stuck with plain text replacement because your editor does not know what a named function is and how to look for it’s usages properly. So you will introduce errors just with simple renaming. That’s why I don’t look at text editors as a long-term tools: they just do the job worse than IDE.

So, I wonder how big projects in Elixir are done from everyday work perspective and how I should be doing it.

Another question which bothers me: why Elixir creators does not provide or support an IDE themselves? This look to be essential for success of a practical language.

Showing Posts 1 to 6

sanswork

sanswork

I just use VIM not an IDE. I don’t use any of the elixir plugins either except for the colors. I should probably get an autocomplete plugin working eventually but it hasn’t been a priority.

imagine you decided to rename a named function after a couple of years.

How often do you actually do this? Even with regular refactoring actually renaming functions is something I never do in my work after like the first day or two while I’m hashing ideas out. Sounds like an issue with your workflow if you’re regularly renaming functions.

So you will introduce errors just with simple renaming.

Yup, the compiler will tell you where they all are.

This look to be essential for success of a practical language.

I don’t think this is true at all. Lots of languages have become hugely successful before getting a proper IDE. JS, Ruby, Python, PHP, Go.

kokolegorille

kokolegorille

Elixir LS is really good, so useful I just switched to vscode.

spontaliku-softaria

spontaliku-softaria OP

How often do you actually do this?

On a big project lasting for years refactoring is not just normal, it is mandatory to fight technical debt. It was just one example, but such situations happen regularly.

Sounds like an issue with your workflow if you’re regularly renaming functions.

One day you rename something, another - move to other module, the other day you decided to rename the module. The point is - any change that requires understanding of the language is pain with text editor.
Reducing pain and raising productivity during development is the task for tools.

You are more productive with IDE than with text editor. Sorry but I don’t want to prove it in this particular topic.

Yup, the compiler will tell you where they all are.

Yes, generally it helps.
Or not. Even in statically typed language some usual refactorings does not bring syntactic errors.
Or it will, but errors would be terrible to understand.
Compiler must be exceptionally good to aid in such situations and even if it is, errors directly in code are easier and faster to understand and fix.

Lots of languages have become hugely successful before getting a proper IDE. JS, Ruby, Python, PHP, Go.

Ruby, Python, PHP became popular decades ago. Programming is different today and languages market is different too. JS became popular by single reason - it is the only language available in browsers. Not sure about how Goers do their everyday work tho.

I don’t want to offend you, but I have to ask: what is your long-term commercial development experience? Maybe it’s something wrong with me.

spontaliku-softaria

spontaliku-softaria OP

It looks fine indeed, but it’s VS Code who limits productivity. For example, no refactorings at all.

sanswork

sanswork

On a big project lasting for years refactoring is not just normal, it is mandatory to fight technical debt.

Agreed but renaming functions as part of your refactoring shouldn’t be a normal task. Refactor in private.

Even in statically typed language some usual refactorings does not bring syntactic errors.

When it comes to renaming functions you’ll be told the function name doesn’t exist anymore and be recommended replacements.

I don’t want to offend you, but I have to ask: what is your long-term commercial development experience?

I’ve been developing professionally for around 20 years now. Another 5 on top of that as a hobbyist. I’ve worked with large consultancies like Cap Gemini on very large long term projects, I’ve worked with banks like Morgan Stanley on their ETL systems, I worked as a developer for years on the largest pure affiliate system. I’ve worked in probably a dozen languages over that period too.

I’ve worked on some very large very long term applications and over the course of my professional life I honestly can’t remember any instance of renaming public functions in maintenance. I’m sure it has happened it is just so rare as to be unmemorable.

dimitarvp

dimitarvp

Not gonna argue for or against IDEs; I try to use VSCode but recompiling several (or several hundred) files before I even save a one-line change has been getting on my nerves due to ElixirLS being so aggressive that it manages to slow down a moderately impressive desktop machine (and a quite strong MacBook Pro as well).

I find myself cycling between a very vanilla Emacs setup and VSCode+ElixirLS depending on mood and/or scope of the task ahead.

Outside of that, I would recommend the mix xref task to OP. I always use it before refactoring.

— All posts loaded —

Where Next? Top

Trending in Questions Top

itzmidinesh
Hi all, I’m working on a Phoenix project where I need to make external HTTP requests and I’m trying to choose between Req and HTTPoison....
New
yarrichar
I’m very new to Elixir, so sorry if this is a silly question: I am wondering what happens to the mailbox of a process when the machine i...
New
pragdave
How do I tell Hologram not to escape HTML when substituting into templates? {Textile.render(@product.long_description)} escapes the HTM...
New
Fl4m3Ph03n1x
Background When trying to execute mix release on a Windows 11 machine for a Phoenix project I get the following error: * assembling mark...
New
rlipscombe
I’d like to create a file with 600 permissions (rw-------), but there’s a race condition if I create it and then change the permissions. ...
New
saleyn
Is there a way to import record definitions in the iex shell for pretty printing (similar to the rr command in the erl shell)? This woul...
New
rlipscombe
When I use Mix.install with a git dependency, using git@github.com:... how do I change the SSH identity used? I’ve got two Github accoun...
New

Other Trending Topics Top

dominicletz
Hey there, I haven’t seen a list of useful Elixir specific skills for the popular AI tools yet so I’m starting one here with my first. ...
New
raa-ziq
Hi everyone :waving_hand: I wanted to share something I’ve been building — NowBlind, a random chat app designed to help people discover ...
New
mudasobwa
I fully migrated to my own harness from Anthropic/Gemini and I think it’s time to share it. Welcome DSH, the DeepSeek Harness, fully writ...
New
KristerV
Hey. Is there anyone here who creates agents in their apps? Not talking about using agents, but creating them. I’m finding it pretty diff...
New
OndrejValenta
(I just needed to vent somewhere and LinkedIn is full of hope, or hype, I’m not sure which exactly) AI dream has many faces, but general...
New
kip
Localize is the next generation localisation library for Elixir. Think of it as ex_cldr version 3.0. The first version will be released ...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews