Try to sit in the middle of the carriage. I don't get motion sickness on trains, but I find doing that makes a meaningful difference to how comfortable it is to type on a laptop on a commuter train.
Develop a sense of curiosity, get into the habit of asking yourself why things are they way they are, even if you don't need to know the answer. Read widely about technology and follow the threads to new topics. Try things just to see how/if they work. Go's a great start - it'll get you thinking about programming language design, concurrency, networking, etc., and all of those will lead to something else.
You'll also need to be comfortable thinking about things you don't understand. If everything you do is familiar to you you're not thinking broadly enough.
From the article: "To be clear, Malik isn’t talking about Kickstarter where funders make a donation that acts like a pre-order. He’s talking about the public buying stock in private companies, something that may soon be legal thanks to the JOBS Act..."
This doesn't seem that bad to me, what problems is it causing?
The only changes I'd make would be to wrap it up in a script so you have one-click deploys, and possibly implement the 'copy and symlink' strategy that Capistrano uses so you have minimal downtime during deploys and instant roll-backs if necessary.
... one other thing though. With a bit of practice you can remove the need to develop on feature branches; break things down into really small chunks and get into the habit of making half-done features unobtrusive (e.g. hiding UI elements until they're ready). That way you can push to master often and have confidence it'll always be safe to deploy, which simplifies your tooling and reduces the scope for merge conflicts etc.
I personally find branching a lot better than the method you described. Master is always safe to deploy in my current setup and I don't usually get merge conflicts :-)
That should never be necessary; if you invest in the appropriate automation you can get your regular deployment process down to a few minutes and then even emergency fixes can go through the normal channels. The benefit is of course mainly the ease of day to day deployment, but it does mean that in those emergency cases you don't need to worry about what you've forgotten to do, or how your changes might mess up the assumptions baked into the automated system.
The code base doesn't have unit tests. It was built by a hobbiest 4 years ago. The current version supports legacy features from a previous version. It is mainly procedural with a smattering of random classes. There is a lot of code duplication. It is the definition of spaghetti code.
Honestly I wouldn't know where to begin with unit tests in this code base.