The only thing we really use outside of "public" data is Hoovers.com.
Commission research?
We have not to date, but I think you certainly could / would at a certain point. Think of it as an iterative process, where you're constantly trying to hone in and develop a progressively narrow, sharper, more accurate market hypothesis. IF you reach a point where you need to commission custom research from a research firm, then by all means, do it. Just note that that kind of thing can be very expensive, so you'd probably want to wait until it's truly called for.
There are also a lot of "stock" research reports out there that you can get your hands on... a lot of times you can get them for free by accessing them through a local library, where they might cost hundreds or thousands of dollars if you bought them outright.
OSS/GitHub is what let me crack into the industry without having a CS degree or particularly good contacts. I started learning to code a year or two ago, then started contributing to open source and now I have a pretty solid track record on interesting projects that's helped me get some interest and interviews. Not sure how I could have done that otherwise...
If you don't have an idea for a project (I totally didn't), find an open source project that you like, start contributing to it and get to the point where you can get accepted as a core developer / maintainer. It can be a great way to show that you have chops (and you end up doing many things that are important dev skills, like code reviews, API design, handling a legacy codebase, etc.). Plus, it's fun and can be a good way to meet people.
Yes, the ability to rollback history more easily than paging through `git reflog` would be great. (in particular, if you rebase often you end up with a lot of cruft).
Locally in git you have the HEAD@{n} notation to step back n steps through the reflog, so after a bad rebase a `git reset --hard HEAD@{1}` should be all you need.
how far does that go though? `git push --force --yes --yes-I-am-absolutely-sure --by-pushing-this-commit-I-agree-I-am-paying-attention`. Seems like `--force` is a succinct way to cover those two parts.
Saying that something will have the same language on client and server is misleading: javascript (and most other languages) have very simple syntax - it's more about the libraries involved. Node.js and the browser environment are totally different (and I doubt there are many packages written for both settings).
Even if everyone were working in JavaScript, seems unlikely that you'd be able to be both an awesome client-side and server-side developer.
I'm not a node guy, but I thought one of the big advantages was just that... that you could use a lot of the same code. ORM/object modelling should be fine on server or browser, also template rendering, data/form validation, etc.
One thing that is a pain in conventional web development is for a lot of these things having to implement them twice (or write clever automatic converters or whatever to generate the backbone.js (or whatever) boilerplate models from the original django/rails/whatever/schema.
Well there is one quite obvious way to avoid this, but it has a serious downside.
I did not take that route, thus I am now over 50 :) My advice is to live on way less than your means while you are younger, and then you can have an air of nonchalance as you age, giving the impression of great wisdom ( hopefully somewhat backed up by reality)
That kind of rebase is great, because you are applying your work on top of the master branch (i.e., making the history read as it should be, that your set of commits was added on top of master). That's why git says it's "replaying" your commits on top of it. That usually works because you and master have a common previous point of reference.
If the master branch went back and changed something before that common point of reference, things get more confusing. If you want to see this yourself, checkout a separate branch, rebase interactively and make a big edit in the past. It's much more painful to add on top of that successfully with the first branch (git will want to do a merge commit) because now the history has diverged between them. (and if you use CI, you might notice that when you rebase a wip topic branch locally, git tells you things like "You are 10 commits behind and 5 commits ahead".