I enjoyed the opportunity to participate in a live Google Developer Live hangout on the topic of how Udacity uses App Engine. Unfortunately there was not enough time to respond to all the great questions on air. What follows is my best attempt to respond to the remaining questions.
krmboya: “In your opinion, how low-level should the average modern programmer go? Is it still worth learning assembly language and various pointer-manipulation tricks?“
I recommend you should always learn as much about computing as you can. You can be a productive software engineer without knowing Assembly or C. However, I do think it is necessary to eventually become familiar with Assembly or C if you want to be a really great software engineer.
Kenny: “What are the disadvantages of using Google App Engine and how does it compare to a service like Amazon’s AWS?“
Shahriar: “What makes Google app engine a better choice over using the AWS stack?“
Comparing Google App Engine and AWS is like comparing a box of cake mix to a counter full of flour, sugar, water and eggs. App Engine represents the final product of a complete platform whereas AWS gives you the ingredients that still need to be combined into a complete platform. App Engine’s advantage can also be its disadvantage: On the one hand you don’t have to do any “sys-admining” but on the other hand you can’t do any sys-admining when something is going wrong.
ppmt: “I have seen the cost of using GAE but as a mere mortal it is difficult to imagine how it translated in real life. Would you be able to say how much it cost Udacity to be hosted on GAE?“
They vary greatly depending on what is trending with our course traffic as well as any ad-hoc analysis and data-dumping we have going on at the moment. I can say, though, that even before our funding when our budget was tighter, the costs were reasonable enough that price was never a factor when determining where to implement new features.
Travis: “What is the biggest hurdle to developing an application on the cloud?“
I think that developing a solid product vision for the application is harder than building it, especially if you build it in App Engine. My recommendation is to spend one day building a simple app in App Engine and then the next day building the same app in AWS with Elastic Beanstalk against DynamoDB + ElastiCache + CloudFront. One is going to feel better to you than the other depending on your comfort level with the operations side of building web applications. My advice is to just go with the one that feels better and don’t look back — if and when it comes time to move to something else, it will be obvious what type of platform you need. In the meantime, don’t let yourself get stuck trying to future-proof every decision. It’s better to have a successful app on the wrong platform than no app at all!
As for the biggest hurdle developing an application specifically on App Engine: I would say the first hurdle is setting up your first application. Once you have that done, you get to cruise for an surprisingly long while you build out features. The next hurdle is re-arranging things to perform better once your app takes off. Udacity is working through the second hurdle now and it took us about a year to get from the first to second. The best part is that you have plenty of time to develop the level of engineering sophistication needed to get past the second hurdle — you shouldn’t expect the same kind of beating Steve describes in his course when learning how to scale Reddit.
Eric: “What types of projects would you use GAE for a real application?“
I would use App Engine for any website or mobile backend that doesn’t require specialized libraries for processing. For example, I wouldn’t build Voxer on App Engine because they require things like audio stream processing, which, are going to eventually rely on low-level unix libraries written in C. Clash of Clans on the other hand probably has a relatively straight-forward backend for saving state and managing scheduled tasks — all things very native to App Engine with additional benefit of horizontal scale-out when the app becomes ultra popular.
Anthony: “I have been wondering what the best way to implement a chat server on the GAE would be?“
Мурат: “What is the copyright status of the CS253 course? Does it go under Creative Commons license? Can we translate the course into another language and share it in our websites?“
All our current courses are offered under the Creative Commons license and I am not aware of any desire to change that. New translations are very much appreciated! You can find existing translations and instructions for submitting new ones at our Universal Subtitles team page.
Bobi: “I really want to know if you’re going to have more technology related programming classes as well. Like: – Low level programming for microcontrollers – RTOS – Embedded Design basics Thanks and keep being awesome!“
We are currently producing a course that is somewhat in this direction called Functional Hardware Verification (CS348). Much of Udacity’s team has a robotics background and we love things like hardware and programming micro controllers. I think it is safe to expect more courses is this area, especially since it is a very employable field. The challenge, obviously, is figuring out how to organize project-based course materials.