We've all been there when a guy walks in your door and promises huge wealth if you'll just build and "be the geek". I'm going to be both this time.
So, HN, if you're in my shoes and moving from hard stuff to soft stuff - what language or toolset gives you the best bang for the buck? I'd like to make progress quickly but also have something I can build to be robust and perhaps bring professional developers in with me down the road.
I would leverage a JS framework on the front end, as that will definitely improve the responsiveness. Perhaps something in React or whatever is the currently vogue framework.
For drawing and graphics, D3 is really powerful and will help you avoid having to write all the drawing routines from scratch.
You have helped me so much!
Personally, I found PHP is the easiest to get into web development. You do not have to use MVC or any framework at all. For other languages (python, js), web development almost always requires using a framework, which can take more time to learn than learn the PHP language. And PHP is also easier for hosting.
That being said the other options are great as well, JS has come a long way since the days of yore.
PS: It's all going to be a bit... rocky in the beginning. No matter what you choose. It takes a while to wrap your head around everything but it is doable in a decent timeframe.
For the backend, although it pains me to say so, I suggest PHP simply because there's a metric fkton of tutorials, guide, mentors, bootcamps, and what-have-you.
However, if your goal is to expand one day and hire on developers, I'd look around your area to see what's in demand and go with that, as it'll be your best bet to find developers later on.
I'm sure you'll get lots of suggestions for JS frontend frameworks, but honestly I'd stay away from them and go with the basics, JavaScript + JQuery + D3, plenty powerful and doesn't have the extra learning curve of whatever flavor-of-the-month JS framework.
Personally I'd not use PHP because I don't like to work in it, and I'm more productive in other languages, but there's no denying it's the most used webserver language in existence, it's updated/modern, hosting is cheap, and there are LOADS of information out there for how to do just about anything.
You will need a solution for producing front end JS/HTML/CSS. This should probably be your starting point in fact - create a site mockup with static pages and no real backend, use that to gain feedback, then build out the real functionality. For JS code Typescript is a very popular option to aid some additional maintainability. There are also many build systems available for compiling finished pages.
When you're ready to have a backend, you can evaluate it separately later. You need a combination of a language, a web server, and a database at minimum. Again, an early site can avoid horizontal scaling and focus on having one good database doing everything and backing everything up reliably. (Focus backend efforts on reliability first!)
I would recommend taking a look at Rails (ruby) and Laravel (PHP).
Laravel is probably the best bang for your buck. https://laracasts.com/series/laravel-from-scratch-2018/episo...
Laracasts, is a great way to get up and running.
I would start creating a standard web applications with just enough js+jQuery in the beginning vs doing a full SPA with vue or react. You can do that with version 2 if things take off.
This provides most everything needed to create a feature rich "Single Page, Offline First, Progressive, web app.
Almost all of the app code is Javascript. What little server side code is needed I write in Perl, but Python would work just as well.
Personally, I think CouchDB/PouchDB is highly underrated. I believe the reason for this is that most developers started out using an SQL backend DB and are too lazy to learn how to use CouchDB.
I don't mean that to be an insult, they're using what they know and that's to be expected, but they don't know what they're missing by not learning how to use CouchDB/PouchDB, and they're missing a lot.
CouchDB was designed from the ground up for the web apps. It has features that make it much easier to develop multiuser apps and PouchDB makes it incredibly easy to implement them. User signup, authentication, permissions, are all very easy to implement. CRUD routines and Full Text Search are super easy, and lightening fast. Live Data Sync for multiuser/collaborative apps is builtin.
Adding offline first capabilties is easy using Google's "Workbox" (https://developers.google.com/web/tools/workbox/).
That's a pretty powerful foundation to build upon.
Honestly, if you can teach yourself the basics. Your main tech challenge domains will be network and canvas rendering runtime debugging.
Take a look at High Performance Browser Networking
https://hpbn.co/
And Google's series of Udacity courses on building performant web apps
https://www.udacity.com/course/browser-rendering-optimizatio...
Best of luck ;)
Pros:
+ You are already a bit familiar with Python
+ Django provides out of the box solutions for authentication, db management, migrations + bunch of stuff that takes quite a bit of effort
+ React is easy to grasp, since there isn't many buzzwords and concepts. Basically it's just JS.
Cons:
- You have to put effort in learning Javascript and browser fundamentals. There's no running away from it.
I built http://writango.com with the stack I mentioned. Literally took me a weekend to get the project's first version up.
But, if you just want something that will maximize your productivity, you should stick to the basics: HTML, CSS, Javascript and jQuery. It's super easy and will get your web app done much more quickly than anything else. Otherwise, you'll end up in a rabbit-hole spending days just getting your infrastructure set up.
In fact, the 1.8.0 release for Elixir was just announced earlier today here: https://elixir-lang.org/blog/2019/01/14/elixir-v1-8-0-releas... (https://news.ycombinator.com/item?id=18903602)
What makes Phoenix great is that, not only is it blazing fast, but the framework serves as more of a web interface to your application as oppose to "taking over" your application, like with other major frameworks. Moreover, you get the full power of Erlang and OTP as well. I will have to say that some things are a little rough still, like deploying your application. This process is not as smooth as what you would experience with a Rails or Django app, but it will definitely get better over time. One of the features of Phoenix that is also really exciting is LiveView. If you have some time, definitely check out Chris McCord's 2018 keynote: https://www.youtube.com/watch?v=Z2DU0qLfPIY
There are a lot of great books and resources to explore. I listed a few below:
https://elixirforum.com/
https://elixircasts.io/
https://www.manning.com/books/elixir-in-action-second-editio... (just released)
https://pragprog.com/titles/category/elixir?f[sort_by]=pubda...
https://www.manning.com/books/phoenix-in-action
With regards to Python, I cannot give too much recommendation as I have experience in Ruby/Rails and Elixir/Phoenix primarily. However, if you really want to begin building, stick with Python, since you already have experience with that language, and look into a popular framework, like Django or Flask.