20 ms·
Building a Reddit-like site after 3-4 months learning Elixir
- kbd 9y agoI don't appreciate the "Elixir is growing" commentary in the title. That's not justified because a person wrote a program in it.
- jazoom 9y agoJust grew by 1
- kbd 9y agoAnd somewhere else someone stopped using it. One person doesn't make a trend as the title claims.
- kranner 9y agoArguably this post will lead to net-positive growth. I'm certainly going to try it after having read the top comments.
- RUTHLESS_RUFUS 9y agoI stopped using it just to throw a wrench in your gears. Grind this thing to a halt! (...no, actually Elixir is pretty cool.)
- Kiro 9y agoYeah, the post has nothing to do with Elixir's growth. Simply "Building a Reddit clone in Elixir" is a much better title.
- pmarreck 9y agoAgreed that that is not a logical conclusion given that evidence. It is, however, likely true based on the evidence that each ElixirConf so far has doubled the number of attendees of the previous year. Search trends for the language seem to be growing, although not seemingly strongly: https://trends.google.com/trends/explore?q=%2Fm%2F0pl075p https://trends.google.com/trends/explore?q=%2Fm%2F0pl075p
- stanislavb 9y agop.e. why "Elixir is growing" in the title - because more and more people are building sophisticated and production ready services using Elixir. Elixir isn't in the Top 50 programming languages yet, but I reckon it will be there in not more than 3 months... and that is respectful given its age.
- zealsham 9y agoExactly what I See in elixir. It Keeps growing each and every day
- sdiepend 9y agoSays you? It's hard/to early to tell ofcourse, but currently it looks like it's stagnating. https://insights.stackoverflow.com/trends?tags=elixir https://insights.stackoverflow.com/trends?tags=elixir
- minhajuddin 9y agoA lot of Elixir Q&A actually happens on https://elixirforum.com/ https://elixirforum.com/ and the slack channel https://elixir-lang.slack.com/ https://elixir-lang.slack.com/ . So stackoverflow trends may not be the best thing to judge this.
- juhatl 9y agoAs an avid Elixir user, your comment got me thinking about how and where I look for help. I realized that it wouldn't even really occur to me to use Stack Overflow for answers regarding Elixir, as the other platforms you mentioned tend to be so active and well suited for that purpose. This isn't to say that I wouldn't use SO for other purposes, as I actively visit the site for JS/PHP content. Anecdotal evidence to support your insight by all means, of course.
- te_chris 9y agoAbsolutely. The elixir community on the forum are amazing.
- josteink 9y agoFor the lazy who are unsure what Elixir is: http://elixir-lang.org/ http://elixir-lang.org/ (I assumed it was a front-end Javascript framework or something like that)
- eloisant 9y agoFrom what I gathered, it's popular for Rails developers who want something that feels like Rails, but with (much) better performances and concurrency. For me coming from Scala, I feel like the lack of typesystem would be a step back.
- brightball 9y agoIt has a type system, just a differently structured one to support its goals. In a naturally distributed language there are a number of headaches that are created by overly strict typing (think REST vs WSDL as an example). It's an entirely different way of thinking about the problem that enables you to accomplish things that you can't effectively do outside of the BEAM. https://blog.codeship.com/understanding-elixir-types/ https://blog.codeship.com/understanding-elixir-types/
- notriddle 9y ago[Plain Elixir has one data type.](http://www.theorangeduck.com/page/defence-unitype http://www.theorangeduck.com/page/defence-unitype)
- rehemiau 9y agoThere are (optional) type annotations. https://hexdocs.pm/elixir/typespecs.html https://hexdocs.pm/elixir/typespecs.html
- amorphid 9y agoTypespecs are mostly for static analysis. They describe the types of inputs and expected outputs.
- 9y ago
- minhajuddin 9y agoGoogle trends shows that Elixir is in fact growing: https://trends.google.co.in/trends/explore?q=%2Fm%2F0pl075p,%2Fm%2F03yb8hb,%2Fm%2F03j_q,%2Fm%2F02mm3 https://trends.google.co.in/trends/explore?q=%2Fm%2F0pl075p,...
- cyberferret 9y agoStrange - that graph set shows Elixir on a slight growth path, but Erlang on a slight downward path? Isn't Elixir simply the framework around Erlang?? It would be a bit like showing Rails on the uptake, but Ruby going down, isn't it?
- unscaled 9y agoNo, Elixir is an entirely different language running on the same virtual machine as Erlang. It's as seeing a graph with Java usage going down, while Kotlin or Scala up.
- cyberferret 9y agoThanks @unscaled and @LukaD for clarifying this. I hadn't used the language, so didn't understand that Elixir wasn't just the name of the framework. Not sure why I got the downvotes for asking a question, but there you go...
- hashkb 9y agoBecause literally five seconds of googling would have gotten you the answer. Your comment didn't add anything for anyone but yourself. That's why you got downvoted.
- cname 9y agoI was wondering the same thing, so I found cyberferret's comment (and the answers) useful. It might be helpful to anyone who's skimming through here.
- 9y ago
- raphy 9y agoI have been using Elixir extensively for my services for a year now and it's been a really great experience overall.
- arvidkahl 9y agoHappy to see more and more non-trivial platform-based implementations in Elixir. We're using the Elixir/OTP+Phoenix stack for our own projects, handling networks of radio-connected sensors. It has been a breeze developing with Elixir, as not only the language is maturing, but the ecosystem is steadily growing as well - and there are a number of great libraries, from Ecto to Phoenix itself. The OTP foundation of Erlang and hence Elixir just screams "platform" or at least "network", as it was designed to handle parallel flows of data. Great to see yet another project utilizing this aspect of the language.
- jameskegel 9y agoMay I hear more about the nature of your sensor project?
- im_down_w_otp 9y agoNot sure what you mean by "parallel flows of data", but Erlang/Elixir isn't particularly good at handling multiple streams of data between distributed nodes if you're relying on the built-in distribution subsystem (net_kernel). Only a single TCP connection is opened between any two nodes and there's a head-of-line blocking issue with message delivery (intentionally for backward-compatibility reasons). Certainly you can build your own multi-connection subsystem if you want to, but that's true of almost anything. I've had to do this for Erlang several times.
- zambal 9y agoInstead of rolling your own connection subsystem, there is also this https://github.com/lasp-lang/partisan https://github.com/lasp-lang/partisan Although they call it still experimental, it seems to be pretty actively developed.
- crusso 9y agoI write a lot of server processes that communicate with remote devices. Elixir has become my go-to language for whipping up new communication utilities. The syntax is comfortable, although I had to get used to a Functional Programming style at first. What I like most is the language and runtime's features that make parallelization so easy. Spawning threads that are monitored, have their own protected state, that are managed if they crash, and are trivially spread across different machines on the network made it straightforward to write fairly highly available code right from the beginning without a lot of planning.
- FrancoAustrian 9y agoThanks to Erlang
- steveklabnik 9y agoThanks to BEAM, no?
- granda 9y agoCan you go into more detail about the type of highly available code that you write?
- eggy 9y agoI prefer LFE (Lisp Flavored Erlang) because I prefer Lisp syntax to the Ruby-like Elixir syntax. LFE compiles down to core Erlang, while Elixir compiles down to vanilla Erlang. True macros can be done in LFE, but as I understand it, macros are done after parsing in Elixir. LFE was created by one of Erlang's co-creators.
- christophilus 9y agoI'm curious to hear what you've built with LFE, and what the experience was like? What would you say were the biggest stumbling blocks you ran into? I'm also in your camp (not liking Elixir or Erlang's syntax, but really liking BEAM). I like Clojure a whole lot, but would prefer it on BEAM for a whole variety of reasons. LFE seemed like a step back from Clojure in many ways when I looked at it.
- nunb 9y agoPerhaps the 'step back' is that LFE is a Lisp-2 like Common Lisp whereas Clojure is a Lisp-1 like Scheme. You might find Joxa interesting, it predates Elixir, but came after LFE and is patterned on Clojure. http://joxa.org http://joxa.org
- weatherlight 9y agoum.. this is incorrect. Elixir Source Code -> -> Elixir Macro Expansion -> Erlang Abstract Format --> Core Erlang --> BEAM bytecode Erlang does something very similar. Erlang Source Code -> Erlang Abstract Format --> Core Erlang --> BEAM bytecode I'm pretty sure that LFE doesn't skip the Erlang Abstract Format step
- pmarreck 9y agoIt's fine to be a fan of LFE, but not so fine to spread misinformation about Elixir macros. Macros in Elixir are "true" compile-time macros... They take the AST as an argument, and are expected to return an AST. Possibly the first, or one of the first, implementations of "true" macros in a non-homoiconic language, which was previously a strong selling point of homoiconic (Lisplike, syntax-less) languages.
- teilo 9y agoMy company replaced the integration server I had originally written in Python/Django/Celery/RabbitMQ with one built in Elixir/OTP. The results were impressive. Our task load was getting out of hand, and during peak load throwing memory and CPU at it was not helping. Task monitoring was also a pain. It needed a complete rewrite, because the original design, while robust for what it targeted at the time, could not keep up with our growth. The integration developer I hired to take over the project looked into using Go at first, but then discovered Elixir. I started learning it with him (he quickly surpassed me), and after a few trial task implementations, I gave him the go-ahead. We couldn't be happier with the result. Thanks to OTP and the existing tools built around it, we have great monitoring, and the ability to easily and quickly scale up workers at peak times.
- sillysaurus3 9y agoAre you sure this isn't more of a case of "a motivated developer writes great software" than "a silver bullet language"?
- simplify 9y agoDid he say "silver bullet language"? It seemed like a good fit for his use case; I don't see him claiming anything more than that.
- teilo 9y agoCorrect. Not saying anything more than that. The BeamVM/OTP is a better fit for long-running high-concurrency fault-tollerant systems. That's what it was designed for. I have not switched to Elixir/Phoenix for my other web development. I still use Django for that.
- Xeoncross 9y agoAnything specific you liked about Elixir more than Go?
- tsukaisute 9y ago