Live data from Hacker News

Elixir at Ramp

engineering.ramp.com

21–30 of 44 posts

Re: Elixir at Ramp

#21
post #2

To preface, I share a lot of the same sentiments as the author. My Elixir was Scala - learned it inside and out, then picked up Akka which taught me a lot of neat Erlang-derived principles. My favorite quote is "Make it work, make it right, make it fast," which is very close to the Armstrong comic. Having said that, I would not recommend Elixir or Scala or anything similar for startups. The 3 main reasons: 1) It's a…

I'm starting a startup with Scala and Akka. I'm doing this because I tried doing the same thing with Node and before then Java, but both the language and ecosystem could not help me (solo founder) move fast enough or give me confidence that my architecture was going to last a couple years down the road.

I also didn't want to make things "just work" and refactor later, because I think that's just overall terrible advice. The cost of going back and rewriting your architecture is enormous. Might as well use tools you feel confident can scale with your startup than hack something together and have a complete mess on your hands.

Re: Elixir at Ramp

#22
post #17
post #16

Earlier quoted context omitted.

So what do you recommend? Rust? JS? TS? Java? C++? I'd not recommend Scala for other reasons: being multi paradigm makes it hard to learn, read, re-read and collaborate on. Kotlin would be a more sensible choice on the JVM imho (no implicit nulls, fully OO at the core with FP where it makes sense in that context, sum-types, exhaustiveness checks, no exception/annotation frenzy like Java). And Erlang misses types. Gle…

The problem with Scala is that it's a huge language and it gives you a lot of ways to misbehave. It is the same exact problem that C++ has - too many people turn it into an intellectual exercise and a dick-measuring contest of who can write the most elegant (unreadable) code. If you ignore all that, Scala is an amazing language.

That's also a strength? If you (the technical founder) know how to leverage Scala and can hire competent Scala devs (there are a lot of them who exist), you can potentially cut your development team by some large factor.

Re: Elixir at Ramp

#23

I'm from Python and JavaScript lands and I'm currently learning Rust very slowly. There are many reasons why I feel Erlang or Go or Rust shines brighter in many situations but my issue is that I not only need to get up to speed, build scrappy prototypes fast, but also hopefully, hire other engineers including juniors. There are many ways one can build systems with multiple languages and take the benefit that each has…

IHMO junior develpers are not a problem. A customer of mine hired a developer at his first job after university. He graduated in Mathematics with some college level expertise of Java. We gave him an Ubuntu VM with Elixir and our Phoenix project and he learned to work and to use the language (the former is more difficult than the latter.) I think that learning Elixir was as difficult for him as it would have been learning any other language, including Java in a real world environment.

The problem could be with senior developers: if we had no experience with Elixir we probably would have resisted starting a new project (the main project of the company) with a new language. But this is the same with any language. Would I be confident to build a company on Python or Ruby or JS if I didn't know them well? Not at all. Would I start with Java? Not after all the years I have not used it.

Re: Elixir at Ramp

#24
The author wrote:

> My hot take about most dynamic languages is that they are a poor fit for startups who have intentions of being long-term businesses

I don't think that's fair to say. There's plenty of long term businesses running at scale using dynamic languages. That's employee and load scale too.

Dropbox is ~13 years old, has ~4 million lines of Python and operate at crazy scale. I ended up talking to one of their ex-engineers last month about how they build and deploy their set up at: https://runninginproduction.com/podcast/82-dropbox-gives-you...

Then there's Basecamp which is one of the oldest SAAS apps around using Rails and GitHub too which isn't quite as old but definitely falls into the long term business category.

Re: Elixir at Ramp

#25
post #24

The author wrote: > My hot take about most dynamic languages is that they are a poor fit for startups who have intentions of being long-term businesses I don't think that's fair to say. There's plenty of long term businesses running at scale using dynamic languages. That's employee and load scale too. Dropbox is ~13 years old, has ~4 million lines of Python and operate at crazy scale. I ended up talking to one of the…

Unless something has changed, I believe Instagram is still on Django

Re: Elixir at Ramp

#26
It annoys me how much Elixir zealots proselytize the language as the the objectively best thing since sliced bread, and all other languages are worse. But it's a well written article.

Good on them for finding Elixir useful, but none of the benefits they talk about seem very compelling for me. Most of them are available as table stakes in other languages (rerunning failed tests as an USP of mix test, really?), or very situational/subjective benefits. I find the import system in Elixir to be very opaque, making it hard to know where a function is coming from after it's been aliased and use:d. I subjectively find explicit import statements much clearer when debugging code.

The final drops for me are the missing explicit return statement, and the extraordinarily bad tracebacks on error. If I could I would excise Elixir from our company.

Re: Elixir at Ramp

#27

It annoys me how much Elixir zealots proselytize the language as the the objectively best thing since sliced bread, and all other languages are worse. But it's a well written article. Good on them for finding Elixir useful, but none of the benefits they talk about seem very compelling for me. Most of them are available as table stakes in other languages (rerunning failed tests as an USP of mix test, really?), or very…

Hahaha maybe so, but have you met Go devs? The cult of "simplicity" and static typing fundamentalism is just a reaction to JavaScript IMHO. What these folks don't realize is that langs like Python can do everything including static types, and was always strongly typed, having never allowed bad casting edge cases like JS.

I will also add that goroutines (and actors and other first-class concurrency constructs) built into a language doesn't really help with web startups that aren't targeting large scale consumer traffic or systems level apps, and even if it did, multiprocessing GIL languages has never been an issue. It's a cool feature for sure, but language fundamentalism is just a way for insecure devs to feel cooler.

Re: Elixir at Ramp

#28
post #17

Earlier quoted context omitted.

The problem with Scala is that it's a huge language and it gives you a lot of ways to misbehave. It is the same exact problem that C++ has - too many people turn it into an intellectual exercise and a dick-measuring contest of who can write the most elegant (unreadable) code. If you ignore all that, Scala is an amazing language.

That's also a strength? If you (the technical founder) know how to leverage Scala and can hire competent Scala devs (there are a lot of them who exist), you can potentially cut your development team by some large factor.

> you can potentially cut your development team by some large factor

Compared to what? Java? Kotlin?

And only initial development? Or also maintenance?

And why potentially and not certainly? What can make that difference?

Re: Elixir at Ramp

#29

It annoys me how much Elixir zealots proselytize the language as the the objectively best thing since sliced bread, and all other languages are worse. But it's a well written article. Good on them for finding Elixir useful, but none of the benefits they talk about seem very compelling for me. Most of them are available as table stakes in other languages (rerunning failed tests as an USP of mix test, really?), or very…

Regarding explicit vs implicit imports, elixir supports both. However explicit aliases are preferred both for clarity and compilation speed. Perhaps discuss with your team why they are (seemingly) preferring to import rather than alias?

Re: Elixir at Ramp

#30
post #25
post #24

The author wrote: > My hot take about most dynamic languages is that they are a poor fit for startups who have intentions of being long-term businesses I don't think that's fair to say. There's plenty of long term businesses running at scale using dynamic languages. That's employee and load scale too. Dropbox is ~13 years old, has ~4 million lines of Python and operate at crazy scale. I ended up talking to one of the…

Unless something has changed, I believe Instagram is still on Django

They are a heavily custom fork from a very old version of Django, but apparently much is still "recognisably Django".
Post reply on HN