Podcast: Play in new window | Download
Subscribe: iTunes | Android | RSS
Justin and Jason discuss Jason’s new puppy, when “quick and dirty” works and when it doesn’t, the latest with Math Academy, the transition from a subject-based to a course-based approach to content development, how Jason works with his remote developer, “The Math Academy Way”, fun and profit with 3D printing, Jason’s frustrations with trying to capture real-time crypto data, how to automatically and instantaneously restart a crashed Linux process, and the frustration of having to continually relearn Linux administration.
@Jason The value in what you’re doing at Math Academy is really hard to overestimate, even with “just” a few hundred students. My entire life would have been different with access to a program like that. I’m not sure how I did, but I studied on a very similar time scale as your students. I got into a college my family couldn’t afford before high school, was doing linear algebra, discrete math and abstract algebra when I was 14 and I was completely alone.
Nobody else at school was my age and none of my friends even knew anyone else doing something similar. I got good grades for a couple of years and then went back to high school and hated it. It was good socially, but I struggled to even keep the minimum grades to stay on sports teams. I didn’t graduate. Later, when I went back to college at the normal age, I still wasn’t a very good student and I didn’t actually finish my B.A. until age 24. Even today, I know less math than I did at 14 or 15. That said, a portion did stick and probably helped my successful transition into software in my 30s, thanks to whiteboard interviews.
In the long run, I definitely think Math Academy is more important than what you did at Uber. It, or at least Lyft, would have existed anyway. One thing I’d love to see would be training towards GRE subject tests in pure math, applied math or physics. Unlike every MOOC credential I’ve seen that would carry weight that neither universities nor most employers would deny.
With the crashing node process it could be that process is running out of memory. Node by default only allows the process to use 1400MB of memory and if it exceeds that you won’t get an exception that you can handle.
One simple thing to do is just to write a bash script that loops starting your node process. That way when it crashes bash will start it again immediately. For simple things like dealing with processes that crash occasionally I’ve found the bash script approach works pretty well.
Hey Jason,
For node process management you can use something like PM2:
https://github.com/Unitech/pm2
PM2 restarts a failed node process in 10-20ms. It also has a nice API so you can monitor/control child processes from your main node app. No Linux admin bot is needed 🙂
And you don’t have to re-invent the wheel with sockets for inter-process communication. ZeroMQ is super fast and very reliable. With 0MQ pub/sub a publisher or a subscriber can be restarted at any time and connection will be re-established automatically, you don’t need to write any code. There is no loss of data when a subscriber restarts quickly because the data is queued on the publisher’s side.
@Mark – Thanks so much for that. Running Math Academy is just an incredible amount of work and it never seems to abate, but every time I talk with the kids or parents it reminds me how worth it it all is.
I’m sorry to hear your academic experience turned out to be so frustrating, but it’s really impressive that you were able to do that kind of math on your own.
@Caleb – The Node.js memory limit is an interesting hypothesis, but according to top, it doesn’t appear to be the problem.
@Michael Rakita – Yeah, I looked into PM2 as an option, but I eneded up going with systemd, mostly because Justin put it in my brain. Anyway, it seems to work well, and it restarts the crashed process within a matter of a couple hundred milliseconds, which I think is probably quick enough.
I want a Code Bot, and I want it now, daddy!
Unfortunately my comment got lost in the aether, so you’ll just have to assume it was witty. 🙂
Thanks for the increased frequency guys!