Ask HN: What language/framework do you plan to use in your next project?

119 points by gkya ↗ HN
Whether it is a side project or a professional one, what programming language and/or framework (web, gui, &c) do you plan to use for your next project, and why?

263 comments

[ 2.9 ms ] story [ 271 ms ] thread
React + WebAPI on dotnet core. Fast, portable, good documentation all around, and simple.

Simple is good.

React, probably redux, with a backend using either node/express or scala/play
What do you think of Play? I just started looking into it and it seems pretty painless for basic stuff.
It is. If you're looking for a web framework with statically typed language and don't want to deal with this monstrosity they call spring then Play has little competition. While basic stuff is easy, you can do more than just basic stuff since it's a full featured web framework. Some benchmarks: https://gist.github.com/schmitch/2ca3359bc34560c6063d0b00eb0...
Django, started learning it in may and loved it so far. I have a lot of experience with PHP frameworks such as Laravel and the Yii platform and NodeJS + React + Redux. So I wanted to broaden my skillset :)
Python + Flask. Low overhead with most of the capabilities of other frameworks.
The thing I hate most about Flask is how hard it makes testing. There's too much global state and stuff you have to mock/hack. A little too lightweight for my taste.

I'm using Pyramid and it's decent. A little less convention-oriented than Rails but still, nice.

Hack for the web, C++ and Lua for games, C# for something because I have to justify the degree I'm paying off.
Ruby on Rails.

Because for 95% of my projects, personal and professional, thats the tool to solve it. I don't have to reinvent anything, or worry about gaping security holes common to web applications - i just need to work on the problem domain.

I can focus on good modeling and good front-end UI/UX. And there is flexibility in delivering desktop/mobile applications quickly, using what i've already built in rails.

As a one man band, I can't think of a better instrument to play.

Same here. I like to dabble in other languages and frameworks, but nothing makes me as productive as rails
Me too. For web development nothing comes close.
Not even Django ? Why ?
Not OP but django is huge and the dependency chain is crazy for me its just way more than i need and doesn't solve a problem that i can already solve with more light weight frameworks.

I have know django developers who were great in django but never got their heads around python beyond the framework.

Maybe things have changed since the last time i poked at it.

I don't find Rails (the "most productive" comparison point according to the thread) more lightweight than Django...
I can't speak for OP, but for me:

1) I generally prefer Ruby's syntax over Python's (I would miss blocks for sure) 2) Rail's ecosystem seems larger than Django's, but that could just me being more familiar with it 3) There seem to be a lot more Rails jobs than Django ones

Django would make more sense for a business that uses python for other things, though.

Have you tried Elixir and Phoenix? I came from C# but i know a lot of people come from Ruby and say Phoenix is similar enough to Rails.
elixir is awesome, and it's the language i use on my personal projects. But it's still pretty immature and if you're writing a web application, rails will get you further, quicker.

With rails when i'm writing some new code quite often i'll open pry and experiment. %w!bob tom harry!.<tab><tab> gives me all the things I can do on this array. So maybe I'd do %w!bob tom harry!.sort

If i'm in iex (the elixir equivalent REPL) I have no such help! first, I can't use %w! to define an array, and secondly You can't call things like that. The equivalent is

    ['bob', 'tim', 'atom'] |> Enum.sort
which isn't discoverable in the same way
> "first, I can't use %w! to define an array, and secondly You can't call things like that."

The second part is a pretty fundamental language difference but you can use sigils to handle the first part. E.g., to generate word lists use ~w like so:

     ~w(bob tom harry)
If you don't want to use parens, you could use pointy brackets, braces, pipes or a few other delimiters instead.
thanks for the tip!
There are so many jobs out there in rails / ruby. I really want to learn it, but the tutorials I've seen teach you how to generate a blog engine. I want some real world examples and tutorials, where's the best place to start?
:) For me, I really got a lot of value out of railscasts.com. I watched all of them like people watch their favorite TV shows. Helped me see the world through rails developer eyes.
I used to pay for a subscription to Railscasts, and it was money well spent. It's too bad that Ryan stopped making new videos.

Railscasts was awesome. In particular, I really loved the ASCIIcast feature on each video. I can't say enough about how helpful that site was in terms of helping me learn Rails.

Tutorials are always going to be toy problems. If you want to work on real world problems, make something real.
> There are so many jobs out there in rails / ruby.

Just today, another commenter [1] said that...

  The job market for Rails devs seems to be pretty dry.
  Many Rails devs I know, including myself, do not get even
  10% of Rails job offers anymore, as it used to be until a
  couple of years ago.
[1] https://news.ycombinator.com/item?id=14863819
ok, maybe "so many" is a little bit of an exaggeration. WeWorkRemotely.com lists 72 programming jobs at the moment, and 16 of those mention ruby and/or rails.

That's about 20% of the jobs.

Tried getting a job to move to Rails development once. I have 5+ years of PHP and MVC frameworks experience. They said I can't get the job for two reasons:

1. If they tried hiring me as a mid-level Rails dev, I'd be too inexperienced in Rails

2. If they tried hiring me as a staring Rails dev, I'd be too underpaid

So apparently, my past web dev skills are non-transferrable to some companies that hire web developers. Yikes.

This is exactly how i feel about flask and prior to flask turbogears. Stick with what you know until it doesn't solve the problems in satisfactory way.
true, but I could have just stuck with PHP then I feel. But rails represented more than just slinging code - it represented professionalism. Doing things well. Maintainability, and above all else developer happiness.

With PHP, building an online store was possible for me. With Rails, it became obvious.

Always be willing to upgrade - but don't hastily discard something useful for something new either.

Couldn't agree more.
This seems off. Not the correlation to languages (although I'm pretty sure that I've contributed my fair share of negative commit messages to Rails projects), but the fact that only about 20% of commit messages are deemed neutral. I would expect at least 50% there, since most times the commit message just neutrally describes what has changed.
Oh how I love Rails, the framework and language (Ruby) of developer happiness. But now working in AI, it's a Python game. This is maybe embarrassing to admit but I prefer having the Python pipeline, TensorFlow, numpy, etc. living on its own box, exposing inference as an api, so I can keep developing in Rails and its supporting ecosystem (background processing, push notifications, etc.) as the main app handling everything else.
that sounds like a very pragmatic separation. Well done! What are you doing with AI?
Why would that be embarrassing? You've effectively created your own private AI microservice (to use the buzzword du jour) and consumed it in your favorite webapp stack. Sounds pretty smart to me.
Guess I'm just used to scoffs from elitist, self-loathing devs who look down on Rails people :)
I guess the question is, why not Django?

I mean, I get it - for a personal project, I did exactly what you just described, wrote the web app in rails and wrote some scikit-learn stuff with python. I did this mainly because I like rails, I like python for ML stuff, and I didn't want to have to learn Django to get a prototype working.

But assuming you were willing to take a small hit/make a small investment in a new technology, do you think it might be a little better to have it all in python, and use Django? Or is the separation similar enough that it doesn't really make much of a difference (i.e., you'd be calling the ML stuff through an api anyway, an your web app would be pretty separate from your ML service, so the only real benefit to Django vs Rails is one language for everything, which I'm inclined to think isn't that big a deal).

I've moved more heavily into Python lately because of data analysis, ML, numpy, all that, and I am enjoying it a lot. I find python very nice to write in, even though I like Ruby and Rails a lot. Python looks good on the page, and has that clarity I like in ruby and rails, and of course the scientific programming world isn't really a ruby one, python is far, far more prevalent. So I've been thinking of taking the plunge and learning Django, but I'm not completely convinced it's really necessary, since you can do what you just described here...

Oh also, (sorry, this is a very scattered post), would you mind sharing some of the technical information about what tech you used to create the api for your python side?

I guess the question is, why not Node/React/PHP/Laravel/JSP/a bowl of noodles?
> I guess the question is, why not Django?

Ok, so I'm going to bite. I'm using Django for my company's website[1], and while I think it's hands-down the best framework for Python, I must admit to having felt some envy when I investigated what all the fuss on Rails was all about.

I think Rails' controller concepts are cleaner, and its way of handling forms is simpler and more direct (granted, with more sugar or magic, which some have a problem with -- not me).

[1] https://zenaud.io

emacs + elisp. Emacs has proven staying power.

Using emacs as a base to improve an internal business process.

Details (if possible)? I'm an Emacs geek myself and would really appreciate knowing how you can use it in business.
Sure...using forms-mode to search, add and update information in a postgres db.

I would like to find a way for everyone to use org-mode but we were running into too many merge conflicts.

I just learned about mmm-mode (https://github.com/purcell/mmm-mode) but I haven't really dug into it to see if this could be the bridge between Org-mode + forms-mode.

Interesting, I hadn't thought of using forms-mode to do that. It doesn't seem to support it out of the box – are you writing other functions to dump the results of a postgres query into a file, and then using forms-mode to edit that?

Editing and entering structured data is still one of the most annoying tasks I do, and I still don't have a good solution to it.

We have postgrest ( https://postgrest.com ) between emacs and postgres. PostgREST turns a postgresql database into a restful api.

The emacs package requires request, json, widget, wid-edit and cl.

I would like to open source it in the near future.

Announce it someplace if you do!
Will do!
react + grpc with services in go & python
Express OR Laravel on backend and Angular 4 + Typescript on the front (ionic if mobile)
Rust. I just want to be a hipster and try it.
Good luck :) I love the language, but you'll need some perseverance to learn the more interesting parts like lifetimes and the borrow checker. I can recommend the book on rust-lang.org!
I will definitely be taking a read. I've tried to get into Rust before and it was a lot to be getting into (especially since I was also trying to learn Go at the time.)

But now, almost a year later, I think I finally have a pretty good handle on Go, so I think it's time to break out the Rust again.

I’m currently using Rust to make a program to manage my dotfile configuration/templating. I’m having fun, but it’s hard (and I’m porting something from Ruby that has a long history).
Elixir/Phoenix.
Same here, doing frontend stuff in Elm. After a couple of sideprojects or smaller parts of production env with this stack I want to make a full project
Web2py with a "normal" front-end, possibly some VueJS sprinkled in. Still haven't found anything as easy as Web2py to define my models/tables, built-in user auth, and get CRUD up super fast.
Python, Django, Intercooler.js

Python because of the syntax, and community.

Django vs other python frameworks, because it has sane defaults, and has made everything pluggable or easy to ignore should I need to change.

Intercooler because I'm awful at js, and the few things im doing shouldnt need full js apps.

VueJS + Node/Express on AWS Lambda
C, shell and Octave

Some computations with sparse matrices are better expressed in the M-code, but the bulk of the image processing work is done by standalone programs written in C, piped together by a shell script.

It depends what the project is.
This is my answer as well. The more projects and teams I work on, the less I'm willing to tie myself to any one language or framework. It's bitten me too many times in the past. Give me the spec, show me what the team I'm working with knows, then we can decide.

"Django is a great fit for any web application," becomes "Patch Django or spin up additional services with a new communication layer for web sockets?"

"Python is fast to develop in, and it will always be fast enough when running," becomes "It's not fast enough, and we don't have expertise to write the C extensions."

"Ansible is awesome," becomes "Salt fits our security needs."

"Angular all the things!" And we all saw where that one went.

For all I know, I'll be writing an Elm application in Electron. I hope not, but stranger things have happened.

Python and flask. It appeals to me how the philosophy of both is to be direct, simple, and powerful.
Reason, Reason-React, Ruby, Ruby on Rails, Postgres, Redis.
Jai, if it gets released in the next year or so. Fingers crossed!
I can't wait for Jai to be released, both figuratively and literally. It's most likely going to be another year or two. In the meantime, I'm going to use Nim for some experiments in desktop application GUI development.
Backend: Scala, Play framework, Akka, Postgres - rock solid type safety, scalable out of the box, mature but modern framework and the best database money can't buy. Frontend - Typescript/Angular/Material - all included framework with typescript's static typing works well from small to large projects.