Hello,
I know that the best way to learn coding is to actually create a project. I thought about my biggest interests and which type of a project would keep me excited over longer period of time. Finally I decided to create an Equity Trading Journal. There are plenty of such apps but the goal is purely educational + making things my own way.
At the moment I keep all my trades in (quite advanced already) google sheet document, but it's getting a bit slow and also I can see some of its limitations.
I'm learning JavaScript and jQuery right now, I know HTML + css quite well, so my initial idea was to start in JS. On second thought however it may not be a good idea to keep all source files open to the public, so I assume (correct me if I'm wrong) that in addition to HTML/CSS I'll need a backend language. One option is to learn node.js the other using python (with its libraries for data analysis, graphs etc.). To summarize:
Questions:
As always I'd appreciate your feedback :)
Interesting project. I would suggest java for the backend (with spring boot) because it’s good base and ecosystem with a large amount of choices. I have not that much experience with nodejs ( only smaller projects) but compared to java I’m not (yet) confident that the DX is that good in larger projects (may someone can tell with more experience). Database wise, I do think you’ll need one. I’m yet not entirely sure whether you should go with a rational or nosql database. May take a look at rethinkdb, we’re (at work) happy with it.
On front-end choose what you like but I would recommend d3js for Charts and aggrid for (advanced) table stuff since you may handle with a quite amount of values.
I'm in a similar position as you. I've been working on a couple of projects for the last 5 months or so. I've been pretty focused on JavaScript so I decided to develop my projects using HTML/CSS/JavaScript to strengthen my grasp of these core languages.
I want to get back to Python and learn Python 3.x in the new year. At the same time, I was advised to stick with one language and become really good at it (I sometimes have a tendency to bounce around a little) so I've been learning JavaScript on the client side as well as on the back-end (using Node, Ember, React).
As it happens, I'm working on two bigger projects and a couple smaller ones. I decided to build all of them in these three languages. It's a great way to learn more, and put what I've learned into practice.
My suggestion is to use the languages you've learned and do as much as you can with those languages. Obviously if there are languages better suited for your project, use that.
That said, I tend towards following the slightly harder route because I really want to nail down the fundamentals.
Eryk Sawicki
Dominik
First thing I'd suggest is ditching the idiotic code bloat and pointless crypticness that is jQuery.
<broken record> If you bother learning vanilla JavaScript FIRST you will quickly find that 99%+ of what is done with jQuery falls into one of three categories: 1. Stuff that can be done in less code without the framework 2. Stuff that's HTML or CSS' job and has no business in the scripting 3. Stuff that has no business on a website -- or even an application -- in the first place! </broken>
A situation only exacerbated by the simple fact that jQuery promotes sloppy coding like repeatedly grabbing the same elements via selector, not ACTUALLY hooking the elements but instead their garbage wrapper object, and of course schlepping along with innerHTML style methodologies like we still care about Nyetscape 4.
Which of course is why the majority of stuff people do with jQuery doesn't even WORK if you are deploying a website under the CSP.
If you bother learning to use JavaScript, HTML, and CSS correctly you will quickly realize just how idiotic ALL the various frameworks, pre-processors and other such 'tools' truly are; in the majority of cases doing little more than making you the tool. I question the rationality -- hell even the sanity -- of those who use them by choice.
Now, if you're already getting versed in JavaScript a full stack solution based on it -- such as node.js -- could be your easiest option... but the question is will this be a standalone application, or something that is accessed online?
The need for extra crap from python -- and that python is EXTREMELY ill suited for outputting markup makes it an all-around bad choice if you want to use HTML/CSS/JS for the front-end. I'm not a fan of the language to begin with, and that stems from it being extremely ill suited to any practical task... NOT that it prevents people from trying.
IF you're going to work server-client as a website, I'd be pointing you at PHP -- for the simple reason that you don't have to micromanage your own hosting to use it. Python and node.js are cute, but try finding a managed webhost that will even LET YOU run it! For someone like me who can just grab a blank unmanaged VPS, install my choice of OS however the hell I want it's a non-issue, but MOST people starting out aren't ready to set up their own hosting from scratch, something that if you want node.js or python on the back-end you are likely going to be stuck having to do... you ask most managed hosts for anything other than PHP, they'll typically say "no we don't allow that" without further explanation.
Though that's why I consider learning to manage your own hosting be it a dedicated server or a VPS is important. The tutorials for "perfect server" over on howToForge being a great start!
However if this is to be a full stack application without an online client-server relationship, sticking with just JavaScript becomes much more viable thanks to solutions like nw.js or electron. I prefer the latter:
electronjs.org
They are basically just node.js with a Blink rendering instance running atop them, giving you a proper 'view' component where you can fully leverage HTML, CSS, and JavaScript to create your UI. Almost like a browser in reverse.
Personally I feel electron is better implemented, documented, and is more actively developed than nw.js since it exists to support their larger project, the atom editor. To this end the result is so good that even Microsoft eschewed their own engines, runtimes, and languages to use it to create their "Visual Studio Code" editor.
You know they're onto something when it was good enough to make Microsoft go "You know what? F**k .NET and UWP!" -- the real laugh being UWP can do full stack JavaScript crapplets, so what does that say about it?
Bottom line, I think we need a better picture of what TYPE of system this is going to be -- are you talking about a website? A standalone application? A hybrid?
But even so, skip the frameworks until you know enough about the underlying languages to know if you're being packed full of manure over if they are ACTUALLY any easier or not. Dimes to dollars you do so, you'll quickly recognize idiocy like jQuery for the moronic halfwit inept BS that it is.