PyCon India 2010 Videos – Building Scalable Apps using Google App Engine

The Video shooting for PyCon India 2010 held on 25th and 26th Sept at Bangalore, was done by the media partner Vodex. They send the DVDs and CDs to people who have opted for it. Here I am sharing the videos from my talk on “Building Scalable Apps Using Google App Engine”. The video processing was done excellently in complete synchronization with the presentation slides. As a side effect of this, the videos are available in parts as per the slides.

What Not to do in a tech talk


Based on my experiences in attending tech talks and developer conferences recently, and watching YouTube videos of those, which I miss out. I came up with a list of certain things that most people do, and which brings down the interest level of audiences in the talk. This is my effort to sum it all down, and provide solutions to them. This post is continuously updated, so if you guys have points to add, just comment below.

Update

Added points 8 and 9 in During the Talk based on suggestions.

Before the talk

  1. Boasting about your talk. It is perfectly normal to discuss with people about your talk and grab audiences, but you should never keep boasting about your talks. This puts in a negative impression about the speaker, even if your talk is a beauty
  2. Do Rehearse. Many times, developers are confident about the talk they are about to give, because they might have been working on those stuff for years, but before you go on the stage, make sure that you have rehearsed. This will increase your timeliness and boost your confidence.

The recent trends in developer talks is to upload them on youtube, so every single mistake that you do in your talk is stored somewhere digitally, forever. So, make sure you are well prepared

During the talk

  1. Don’t be unplanned. Don’t start off without an agenda, target audience, what is inside the scope of the talk and what is outside of the scope, and finally what the audience should expect from the talk. It is a good idea to let people know the usefulness of the talk they are attending to.
  2. Don’t exceed timeline. A talk scheduled for 45 minutes, should complete by the end of 46th minute. And yes, that includes the question answer session, discussions and greetings. For every extra minute you consume, you are doing it at the expense of number of people sitting there.
  3. Don’t be stupid lecturer. The audience in tech talks come to gain from other’s experience. So, when you are given an opportunity to talk that’s because the talk-selection committee believes that your experience will help others grow and develop applications in your domain, by taking advantage of your experience. Talk about something challenging, how it should be handled, what are common myths, misconceptions, confusions and how to fix those things. People are there not to listen, what they read in the book titled “XYZ for dummies”.
  4. Avoid temptations. Usually there is a subtopic in your talk, which is your favorite. Probably because you are a guru in it, because you build it; the reason is irrelevant. What is relevant is that you should always avoid the temptation to go into too depth of the topic, stick to the timeline and provide a neutral view of it. Stressing too much on a topic creates a non uniform talk and the audience might loose grip at times
  5. Avoid Coding there itself I have seen a lot of engineers who start coding while speaking. This should always be avoided, without exceptions. Coding On The Spot or COTS, makes audience loose interest, takes too much time, and if you believe in Murphy’s rule, something will go wrong, while you are working there. In any of the cases, audience won’t like it. If showing coding is absolutely necessary, make sure you have a video for that, all planned with sub-titles or narration. You can always give your audience a homework to do, which will make sure that the session is alive, even days after.
  6. Avoid too much code in slides Showing parts of code, or snippets is absolutely fine, but make sure it is well balanced with the text/graphics in your slides. Keeping a slide mostly occupied with snippets is a bad idea.
  7. Identify hecklers There are always some people in the audience, who have a question for every line you speak. Avoid those people taking your talks. That ways, you will save time, annoyance. Reserve some time, usually 5 minutes at the end of your talk, for clarifications of doubts. Also, at this point, I would like to introduce you to Google Moderator. You can create a “meeting” on Moderator, and give its shortened URL to the audiences in the beginning of your talk. For every question the audience has, they will create a question in the moderator. Others can like, Vote up, Vote down and possibly answer that question. At the end of the talk, take the most voted questions or the questions that you think needs to be addressed at that time. For rest of the questions, you can answer them later after the talk
  8. Internet Connectivity and Demo If you are displaying web pages – make sure they are all loaded in tabs in your browser before you start. Also make sure you have offline copies in case internet stops working.
  9. Know thy system Make sure you know where your files are – do not spend half your talk searching your file system for those files you want to show.

After the talk

  1. Don’t stay behind the fort People will come to you after the talk to clarify things that got left in the session. Depending on the time you have (and you must be prepared for it) you should talk to them and try to solve their issues. They are the ones who were most attentive in your talk and took the pains to see you after the talk. They are your potential fans, and make sure you do not displease them 🙂
  2. Don’t compare Under any circumstances, you should never compare your talk with any one else. This gives a very bad image of you.
  3. Don’t give false promises If you have shared your email/ moderator URL (and you should) in the talk, you must keep checking them frequently for the next couple of weeks to see if someone has reported any problem/ doubt in your talk.

As always, I am open to more inputs. Kindly share your ideas and thoughts by commenting below so I will keep on updating this post.

PyCon India 2010 Experience

PyCon India this year was held at M.S. Ramaiah Institute of Technology, Bangalore this year on 25th and 26th of Sept. PyCon India 2010 is the primary Python conference in India. A purely volunteer effort, it is being hosted for the second time in India, and has attracted some of the best Python developers in India and abroad.

This year, I had a chance to speak on “Building Scalable Apps Using Google App Engine”. It was an intermediate level talk for 45 minutes. The presentation slides are available at http://in.pycon.org/2010/talks/5-building-scalable-apps-using-google-app-engine

All the presentation slides and other details are available on PyCon India site at http://in.pycon.org/2010/talks. Videos for all the talks shall be made available on YouTube soon, possibly by this week. But could take more time as well. Below are a couple of talks which were quite impressive and should be useful to the developer community are : –

  1. Introduction to Image processing in Python, Anil C R – http://in.pycon.org/2010/talks/33
  2. Python + Wii = Intutive Control, Asim Mittal – http://in.pycon.org/2010/talks/22
  3. Text Parsing in Python, Gayatri Nittala, Madhubala Vasireddy – http://in.pycon.org/2010/talks/57
  4. Rapid 3D game development in Blender, Arun Ravindran – http://in.pycon.org/2010/talks/37
  5. Into 3D with VPython, Deepak Mishra – http://in.pycon.org/2010/talks/81
  6. Agent Based User Simulation and Load Testing, Om Narayan – http://in.pycon.org/2010/talks/41
  7. Internet Protocols in the Python Standard Library, Senthil Kumaran – http://in.pycon.org/2010/talks/14
  8. Building Scalable Apps using Google App Engine, Pranav Prakash – http://in.pycon.org/2010/talks/5
  9. Python Object Model and Introduction to meta programming, Sambasiva S – http://in.pycon.org/2010/talks/13
  10. Test Driven Development, Gayatri Nittala, Madhubala Vasireddy – http://in.pycon.org/2010/talks/58
  11. Python on Mobile Phones, N.Seshadri – http://in.pycon.org/2010/talks/34

I personally could not attend all the talks mentioned above, as some were conflicting with others, but I am looking forward to watching their YouTube developer videos. I will be updating you all when the videos are available.

Also, I had a chance to meet a lot of exiting and energrtic particles – Noufal Ibrahim, Anand Pillai, Abhishek Mishra (@ideamonk) and many more.

I am already looking forward for PyCon India 2011.

And yeah, the food was simply awesome. I really liked it 🙂

Preparing for the talk in PyCon India 2010

So, my talk on ‘Building Scalable Apps using AppEngine‘ in PyCon India 2010 has been approved. Although I have mentioned in the talk details as to how will my talk proceed, I would like to elaborate more on this.

Building Scalable Apps using Google App Engine (Python) (45 minutes )

Now there are a couple of keywords that must be understood clearly. We will proceed one by one on it.

Building Scalable Apps

So, we will be talking about building scalable applications. Building, as in starting from scratch. I will be presuming that the audience has some knowledge of web application development using a framework in any programming language. However acquaintance with Django, TurboGears is highly preferred. I am not expecting a lot of people to be used with Google App Engine, so I will be talking about Google App Engine in some details. What is Google App Engine, What is the purpose of it’s existence, what are its chief features, how is it different from other web application development framework. Then we will be diving into the greatest advantage of Google App Engine over others – Scalability. In some of the talks that I have taken on App Engine, I have seen developers with a blurred view on Scalability. Most of the times, people are mistaken for what in true sense is scaling of application/infrastructure. Scaling is so important to understand because we have been living a world where most of the things we see around are non scalable. Look around yourself, we have the same roads that existed years ago but traffic has been growing exponentially. The cities are the same, railways are the same and so is everything else. It is getting day by day difficult to sustain the burden we put on our limited resources. But nature and we do scale to certain limits. You heart beats normally at 72 beats per minute. While you are running or playing, your body needs more oxygen and so your heart stats to pump at a faster rate in order to cope up with the increased demand. This is called as scaling up. On the other hand consider your brain. Whatever we see, sense, smell are stored in neurons as patterns. The things we need to recall more frequently are stored at much larger neural networks as compared to things that we need infrequently. This is called as scaling out. I hope this explains the difference between a non-scalable architecture, a scale-up architecture and a scale-out architecture. Having understood that, we must know that Google App Engine is designed to scale out. This means that Google App Engine is very efficient at performing tasks at parallel. And this is what we must keep in mind while developing applications on App Engine.

Using Google App Engine

What differentiates App Engine is that it provides us the same infrastructure that is used by Google. Apart from many other things, it implies that we will be using Google BigTable for storing data. AppEngine provides a DataStore environment that is build on top of BigTable. DataStore is not SQL, it is not FlatFile, it is not RDBMS. It is BigTable. And it has its own rules, own ways to read/write from datastore, own ways to maintain concurrency and all other things that should be there in a modern database system. And there are certain restrictions, certain flexibility onto it. In order to be able to develop a scalable application using App Engine, it is very necessary that we know what is datastore capable of and what is outside the limits of datastore. In any application, there are more reads as compared to writes, so we need to make sure that our read latency is very low. And here comes the concept of write once, read many. We take care of all the possible ways in which our data might be needed to read, and we store them at the write time only. We also need to take care in how we write data as there are again a lot of overheads involved in Index building, searching, and quering. Apart from all these things we can do with datastore, we have a high speed, in memory cache called as ‘Memcache’. Used with a perfect blend of Datastore and memcache, the application can be quite fast and scalable.

I am also working on gathering the measurable statistics for a scalable code and a non-scalable code. I hope to complete it by this weekend, and i will upload it here soon.

Apart from this, I will be talking about a little technical background of Oxylabs Networks, India’s leading social apps and game developing company. How we began with MySQL, where MySQL lagged and why we chose AppEngine. How we cater to the needs of our more than 20 million player base with high scalability using App Engine.

And if all of this excites you, creates a chill down your spine, we are looking forward to give you an opportunity to be a part of our team. Attend the talk for more details on this.

PyCon India 2010,
25th and 26th Sept, 2010
M S Ramaiah Institute of Technology, Bangalore, India (map)

Update

Presentation Slide for PyCon India is shared here