ladco
Hi,
I have proficiency in Java. I came to know about elixir and phoenix. I liked language and got pretty excited. I need to build a REST based backend server for my startup. I was thinking of using phoenix but as I started rethinking in functional way is getting difficult. Most of the time I start thinking in imperative way of solving.
This is hampering progress on my work. Anybody, who was in the same boat, what did you do. Any help/comments is appreciated.
Trending in Questions
I’m working on a project that simulates the bumbl example in the programming phoenix book. It acts almost like an email client. We have a...
New
Hello!
Could someone please give me a help/sample code, how to delete a file from s3 using waffle/waffle_ecto from Phoenix app.
I creat...
New
I’m seeing that a list inside a Kino.DataTable will be interpreted as a charlist, even if the Kino.configure() is set to charlists: :as_l...
New
So my question is quite simple and i have found no conclusive answer on forum, google or AI.
Should we use :erlang.float for Integer to ...
New
Hi, I’ve just set up an application with ash_authentication. There is only magic link strategy for now, so there is no confirmation add o...
New
If a change or preparation module uses Ash.Changeset.get_argument/2 or Ash.Query.get_argument/2 (or any of the other get_argument functio...
New
I’m trying to set up Emacs with elixir-ls via lsp-mode and credo via Flycheck. This should mostly be preconfigured as Flycheck picks up c...
New
Other Trending Topics
I am happy to introduce the very α version of the new programming language compiled to BEAM.
Welcome Cure.
It has literally three kille...
New
Hobbes is a low-level distributed database for the Elixir programming language.
Hobbes provides a simple, safe, and scalable storage lay...
New
Hi there! We created Gust: A task orchestrator inspired by Airflow.
For those who have never heard about Aiflow, it’s a Python-based wor...
New
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
Xamal is a deployment tool for Elixir apps that deploys native releases to bare metal servers over SSH. It’s a port of GitHub - basecamp/...
New
Hello everyone. After busy few months I am happy to announce v0.1.0 of Emerge & Solve.
They are GUI (Emerge) and State management (S...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #blog-post
- #elixirconf-us
- #elixir-ls
- #ai
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #hex
- #security
- #metaprogramming










Showing Posts 1 to 10- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
lukerandall
I suggest you examine what you’re looking for from your startup. Is it to learn new languages & programming paradigms and to have fun, or to validate a business idea?
If it’s the former, great. Keep going with Elixir, ask questions when you get stuck and have fun. If the latter, I suspect using a language you’re not proficient with is a mistake. You’re validating an idea, odds are you’re going to throw away or rewrite the code you’re currently writing. Use the language that you’re most productive in, so you can get to that stage sooner.
easco
I will echo what @lukerandall said. “Startup” implies that you have money - perhaps your livelihood, on the line. In that case go with what you know.
Now to your point of retooling your thinking. Making the move from the Object Oriented paradigm to the functional paradigm is difficult. For the folks I know who have worked through it, there is not really any special trick. It takes practice, plain and simple.
What worked well for me was working my way through a lot of small problems - using something like exercism (http://exercism.io). With the way functions compose it seemed to work well for me to try little things and then build them together into bigger constructs. I also spent time using Functional Paradigms in applications that were otherwise Object Oriented (Swift and Objective-C in my case). After a while you get a good feel for when a problem is particularly suited to the Functional Paradigm which helps.
ladco
Thanks luke. I have been thinking of moving to Java but after coding in Elixir, Java looks very verbose. But yes, I think I will be more productive and validate idea.
febeling
Definitely avoid transitioning from OO programmer to functional programmer at the same time as you transition from engineer to entrepreneur. Both are quite challenging endeavours, which you’re better off tackling one after the other.
CptnKirk
As others have said, for a startup, go with what you know. Nobody here is going to think less of you for picking something you’re used to for your, everything is on the line, startup. At least if that thing is Java.
That said, if you want a little help thinking in Elixir, I recommend this course: https://pragdave.me/. It helped me.
Aside from that. As my hero, Joe Armstrong, says, “Make it work, then make it beautiful, then make it fast”. Elixir forces you to think in terms of Data + Data Processing. I find that I can program Elixir like I would Java, then look at my working code and try and make it beautiful. Once you get the hang of porting your large imperative functions to smaller, piped, sometimes recursive, functions, you’ll start to think in terms of “native” Elixir idioms more and more often.
Phoenix is a web toolkit (some would call it a framework). Play is a fine alternative for the JVM. I am enjoying my Elixir journey, however it took me many months to become comfortable enough with Elixir and the ecosystem of libraries to bet my reputation and livelihood on it. If you don’t have that kind of time for exploration, then I’d advise you to stick with Java, and keep learning Elixir in your spare time.
tckb
Welcome to FP world!
@ladco as a full time Java developer and a beginner in FP. This is what I would suggest:
With the gears shifting in Java, as you already know, you can always write Java in Functional way. This is how I started in FP, before even discovering elixir/erlang. I do program almost regularly in elixir, for practicing as a hobby.
When you are starting something of your own, you quickly need an MVP or might try out an interesting idea. The point is your TAT could be in the matter of hours or days, and this could be a matter of getting a new customer or packing up!
So, this is at-most important: YOU NEED TO BE PRODUCTIVE! you don’t have time to debug some unknown exception that popped up in production and have clueless about it. I think if you are still exploring, I would still advice you to look around, not just pick the first thing you see. Phoenix is a great framework, I’d love for what I can do, but for designing just REST apis, it just might a bit bloated (may be I wrong?)
anyways, here’s the bottom line:
You use Java to design your apis (It’s verbose? yes – but it just works. if bothered too much, then switch to scala/play) and put it production. then, on the side, you can test the same with phoenix on the side – in dev. With startup, I believe your budget will also be limited.
Good luck!
Chandra
PS: you can always ping me if you need any help with Java
Almog
I really believe in choosing the tech for the problem and not about what is popular. So for example if you need a real-time app then something like Elixir or Meteor.js might, if your doing something that needs machine learning your better off using Python. Just find out what you need a go from there.
Also for startup and MVP’s is not about having everything perfect it’s about get a first version out there. Keep it simple
mbuhot
If you know Java but are interested in some functional features then Kotlin might be worth a look.
You can easily make your data classes immutable and transform them with map/filter/reduce operations, and use well known Java frameworks as needed.
tx8
I would suggest to go with what you know best, except if you have people experienced with Elixir/Erlang on your team who could guide you through.
Some tips from me to enhance Java experience:
Java has some good frameworks as well. From simple Java Spark or Ninja to full-fledged Spring (It supports Reactor).
If you need to use Actor model you could use Akka. (Could be integrated to the Spring Framework as well.)
mkunikow
For startup use … cloud, something you can easy and fast prototype
if you want to go java route … you can check https://www.jhipster.tech/
Or Kotlin instead Java