Here's a tentative plan- 1. Do fully AndrewNg's course from Coursera
2. Do a course called AnalyticsEdge by MIT folks from edx.org. I can't recommend this course highly enough. It's a gem. You will learn practical stuff like RoC curves, and what not. Note that for a few things you will need to google and read on your own as the course might just give you an overview.
3. Keep the book "Elements of Statistical Learning" by Trevor Hastie handy. You will need to refer this book a lot.
4. There is also a course that Professor Hastie runs but I don't know the link for it. I highly recommend it as it gives a very good grounding on things like GBM, which are used a lot in practical scenarios.
5. Pick up twitter/enron emails/product reviews datasets and do sentiment analysis on it.
6. Pick up a lot of documents on some topic and make a program for automatically producing a summary of those documents - first read some papers on it.
7. Don't do Kaggle. It's something you do when you have considerable expertise with ML/AI.
8. Pick up flights data and do prediction for flight delays. Use different algorithms, compare them.
9. Make a recommendation system to recommend books/music/movies (or all).
10. Make a Neural Network to predict moves in a tic-tac-toe game.
These are a few things that can get you started. This is vast field but once you've done the above in earnest I think you have a good grounding.
Pick a topic that interests you and write a paper on it - it's not such a big deal.
It is all a lot simpler: power, money and sphere of influence. No one is going to give up power and money in a poor country. That's why Mr. Putin and Company build tons of bullshit about external enemies, preventing folks from blaming the government for existing economical and social problems.
Disclaimer: I'm from a country that is in Eastern Europe and borders with Russia. It also has very close relations with it. Russia affects internal politics and mass media. 80% are brain-washed.
As for these JSR's: I have a strong feeling that Enterprise Edition has become a little detached from the real world.
Java SE is fine but the audience and industry is becoming not interested in Java Server Faces and Portlets as society is shifting to client-side technologies to do same stuff with JavaScript, TypeScript, etc. Java SE is enough to work on server providing RESTful interfaces to the outside world.
Regarding JMS: may be it is a variety of Java asynchronous processing/storage tools that don't need EE at all (like Actors, Hazelcast, Hadoop, Redis, etc).
Society has shifted from the client to the server and back again a couple of times before, and don't forget that one of the biggest web sites out there (Twitter) has switched back from the client to the server.
Pure client-side technologies have many disadvantages, including a long initial load time, high local memory usage and high CPU usage. Ironically, a browser tab in Chrome can easily take up a magnitude more memory than a Java EE server takes up.
And don't forget that the client-side ecosystem is anything but stable. Google the phrase "javascript framework of the week" and the term Javascript fatigue.
Even if you do want to go with client-side UIs, there's a wealth of technology in Java EE to back these; JAX-RS, WebSockets, JSON-P, Bean Validation, JPA, JTA, etc etc.
You are right about JAX-RS, WebSockets, JSON-P, JPA, JTA, etc: there are no replacements for these Java EE technologies in client-side technologies.
But I have a feeling that author is judging about whole set of EE technologies by JSRs that loose their popularity at the current time. I've provided explanation for that.
As for Chrome: the lifecycle of the UI in Chrome is different than UI lifecyclein JSF/Portlets. JSF/Portlet builds the DOM in memory, sends the output, GC cleans up after. This happens per request.
But I've seen GC utilization in JSF under a big load. It wasn't nice.
Also, JSF/Portlets' APIs are mostly synchronous.
Also, browsers are evolving. Client-side technologies are easier to learn. Server-side is harder. That's why I don't believe in major shift back to server-side. Twitter is relatively simple application. This is an exception, I think. There will be cases when server-side rendering is more efficient. But UI will be much simpler (no templating support, for example).
>But I have a feeling that author is judging about whole set of EE technologies by JSRs that loose their popularity at the current time.
That would have been a viable explanation, I agree.
Unfortunately, this isn't the case. I follow all the Java EE specs very closely, and this inactivity by Oracle concerns each and every spec. JPA as pure backend technology didn't even get an update, then after much asking a maintenance release was scheduled, but that's completely quiet again. JAX-RS, same deal. Spec lead didn't show up for months, and then occasionally he shows up saying little more than: "no! we're not going to do that"
And the same thing is true for brand new specs like MVC and Security. They were started with much enthusiasm, and then at exactly the same time as the graphs in this article shows (just after JavaOne) commits and mails from the spec leads completely plummeted.
>I've seen GC utilization in JSF under a big load. It wasn't nice.
I've actually seen the reverse. Which version and implementation of JSF was that?
The GC churn of JSF is rather good, and better than for instance Spring MVC + Thymeleaf, which people somehow expect to perform better.
> Also, JSF/Portlets' APIs are mostly synchronous.
In what respect? Many JSF applications uses AJAX quite intensively. And WebSockets is used a lot too. PrimeFaces has its own Atmosphere based implementation for a long time, while JSF 2.3 will adopt the approach introduced by OmniFaces which is more Java EE standards centric.
But while an interesting discussion, I'm pretty sure client-side vs server-side is not the main thing the article is about, which is really about Oracle silently and without giving any reason all of a sudden doing almost nothing anymore.
Below is my favorite response by vaibkv:
vaibkv 15 days ago
Here's a tentative plan- 1. Do fully AndrewNg's course from Coursera 2. Do a course called AnalyticsEdge by MIT folks from edx.org. I can't recommend this course highly enough. It's a gem. You will learn practical stuff like RoC curves, and what not. Note that for a few things you will need to google and read on your own as the course might just give you an overview. 3. Keep the book "Elements of Statistical Learning" by Trevor Hastie handy. You will need to refer this book a lot. 4. There is also a course that Professor Hastie runs but I don't know the link for it. I highly recommend it as it gives a very good grounding on things like GBM, which are used a lot in practical scenarios. 5. Pick up twitter/enron emails/product reviews datasets and do sentiment analysis on it. 6. Pick up a lot of documents on some topic and make a program for automatically producing a summary of those documents - first read some papers on it. 7. Don't do Kaggle. It's something you do when you have considerable expertise with ML/AI. 8. Pick up flights data and do prediction for flight delays. Use different algorithms, compare them. 9. Make a recommendation system to recommend books/music/movies (or all). 10. Make a Neural Network to predict moves in a tic-tac-toe game. These are a few things that can get you started. This is vast field but once you've done the above in earnest I think you have a good grounding. Pick a topic that interests you and write a paper on it - it's not such a big deal.