The year 2013 has been a great one as far as my speaking engagements go, with an event every month. By speaking engagements, I am referring to my 1-day / 2-day hands-on workshops on Android and Cloud Computing.
The events in which I have spoken so far include:
1) January – BITS Pilani Goa – App Engine Workshop
The year kicked off with an interesting 2-day event at BITS Pilani (Goa). The event was organized by the Goa Android User Group as part of the workshops for the college’s main Tech festival : Quark. The first day saw nearly 80-90 students learn about Google App Engine via a 4 hour session. The next day we held a Hackathon for 6-7 teams to come up with an idea and develop an App Engine application as much as they can in a day. Very impressed to see some of the students put together a working app within 24 hours of their learning the platform.
2) February – Thakur Technical College – Android Workshop
This was a 2-day hands-on Android Development workshop organized for the students of Thakur Technical College in Mumbai. The event was held in first week of February and saw 70+ students spend 2 full days learning about Android, right from Hello World to uploading your application into Google Play store.
3) March - Student Dev Days – Goa
This was conducted as part of the Goa Android User Group activity. The event was a 1-day workshop on the Fundamentals of Android Development. The workshop was targeted at newbies who took their first steps in learning about what it takes to develop basic Android programs. The audience was mainly students from various Technical colleges in Goa and nearly 90+ students attended this event. The event was held in March. If you want the material, check out the Github project.
4) April - App Engine Workshop – GDG Ahmedabad
This was held in April and we had 70 participants. I took a 1-day Hands-on workshop on Google App Engine, where we began with a Hello World and then delved into various services like Datastore, XMPP, Email, Cron and also took an overview of the Administration Console. This event had a great mix of experienced professionals, students and college professors. The questions asked were top class. If you want the material, check out the Github project.
I have been fortunate to make trips to Goa and Gujarat. On both occasions, respective Google User Groups invited me for the events. In the case of Goa, it was the Goa Android User Group (GAUG) and recently in Gujarat, it was the Google Developer Group – Ahmedabad. I wish to thank the organizers of these groups for giving me the opportunity.
On April 21, 2013, I conducted a hands-on workshop on Google App Engine as part of the GDG Ahmedabad chapter. The event was attended by around 70 people and we went through Google App Engine (Java) right from Hello World to coverage of various services like Datastore, XMPP, Email, Cron and also an overview of the Administrative Console.
The session was well received and I want to thank GDG Ahmedabad for inviting me over to conduct the session.
We have made the entire material available on Github for a wider audience. I encourage you to use the material if you want to learn about Google App Engine. Feel free to use the material in your local user group too if you want to. The more knowledge we spread, the more we will learn.
The material is hosted at : https://github.com/rominirani/GDG-Ahmedabad-April-2013-AppEngine-Workshop
The material consists of:
- Presentation Slides
- Hands-on Exercises : These are documents that you can follow to build out an example.
- Source Code : All project source code is provided. You can directly import it into your Eclipse workspace.
Keep in mind, that we used the following setup at the workshop:
- Java Development Kit (JDK) 1.7
- Google App Engine Java SDK 18.104.22.168
- Eclipe Juno with Google Eclipse Plugin
See the Application in Action
The application that we built out and which you can do too if you follow the hands-on material is hosted at http://exam-results.appspot.com. The application is an Exam Results Portal that allows an user to retrieve the exam results via the following mechanisms:
- Google Talk Client : Add the Bot email@example.com as a friend in Google Talk. Then just type help and the bot will give you back commands that it can understand. Try giving it help or about or just send it the seat number, it will give back the result.
- Email : Send out an email to firstname.lastname@example.org with the seat number in the subject of the email. It will send out an email with the exam results.
Hope you find the material useful. If you have any questions, do not hesitate to write back to
r o m i n . i r a n i @ m i n d s t o r m s o f t w a r e . c o m
” App Engine Days Are Here Again …. !! “
If you are an undergraduate or high-school student, this is a great opportunity to show your skills with the cloud and demonstrate secure coding practices that is the need of the hour when you write public facing applications that are open 24×7.
To help promote secure development habits, Google is partnering with the organizers of SyScan to host Hardcode, a secure coding contest on the Google App Engine platform.
contest is open to teams of up to 5 students. In the initial round, each team will be told to submit an application that meets certain functional and security requirements. The judges will select the top 5 submissions from that for a final round to be held in Singapore on April 23-25, 2013. The top prize winner takes home Singapore $20,000.
So if you pride yourself on your hacking skills, why not play the role of defender for a change and built a secure app. I can guarantee you that it will be very valuable in the years to come ahead.
Hardcode begins on Friday, January 18th. Subscribe now to get notified about the details.
If you are looking at beginning on App Engine, you can refer to my material.
The App Engine Workshop organized by Google Developer Group Goa in association with BITS Quark 2013 concluded late on Sunday evening and I had a great time, both conducting the workshop on Saturday and then working with the students in the 12 hour hackathon on Sunday.
The Workshop on Saturday was a 4-5 hour affair with an introduction to Google App Engine, development environment setup and an overview of Web Development and using Google App Engine Services like Datastore, XMPP, Email and Cron Job. We faced several challenges by the way of making sure that everyone’s development environment was setup fine and the basic applications were able to compile and deploy. We tried our best and some of the common issues that we faced was around JDK 6 or 7 on everyone’s machines. I will try and write up a post later on some of the issues that a first timer to App Engine is likely to face while setting up his/her machine for the first time and deploying their first apps to the App Engine live environment.
The 2nd day was a 12 hour Hackathon with a trimmed down crowd from yesterday. I guess the really serious and interested among the students showed up on Sunday with a clear determination to write an application. I loved this attitude of the students who till 12-24 hours back had probably no inkling of what App Engine is but here they were on a Sunday morning all geared up to move things along, no matter what the odds were. To me, these folks will be the real winners in the future.
We had a total of 7-8 teams and finally we saw the following applications:
- Virtual Assistant, helps out with every day tasks/reminders. A Google Talk Bot which can have your meeting schedule and can then provide you information of upcoming reminders, etc.
- Cab Sharing App for BITS Pilani campus residents. Share a cab/save costs.
- BITS Tech Search. Search for campus residents with specific skills, areas of research, etc.
- Google + Bing + Social Media Merge Search. Web Interface + Google Talk client.
- Birthday Reminder, extensible to other reminders. Google Talk Bot.
- Data Image Search/Image Recognition. Matlab module Integration with App Engine.
- IMDB Movie Database Search. Search by Category, Genre, etc. Web Interface and Google Talk Bot.
We had one checkpoint in the afternoon to see where the teams were with their tasks and then finally demos that got kicked off after 8PM.
The winners were:
- 1st Prize : Virtual Assistant
- 2nd Prize : Cab Sharing
- 3rd Prize : Birthday Reminder
All of the above applications have tremendous potential and I sincerely hope that the teams take them forward by working on them regularly. If they are able to execute on the future enhancements that they pointed out in their final demo, one can be sure that these applications can be well used by the BITS campus residents.
I would even go to the extent of saying that the participants should host their code on Github and let everyone at BITS pitch in and improve the project.
Special mention: GDG Goa and BITS Quark organizers were terrific in their arrangements. They made my whole task of travelling , stay in Goa most comfortable. Their co-operative attitude and an ability to address all the little issues that one faces while doing any event is commendable. Thank you folks.
For those who could not make it to the Workshop: The material for the workshop is hosted free for anyone to download and learn at their own pace.
A few days to go for the App Engine workshop that I plan to conduct on January 12-13 at BITS Pilani (GOA) campus in association with Google Developer Group (Goa).
For those of you who will be present, we will harness the cloud. For those of you, who cannot make it – there is no excuse not to get going with writing your applications in the cloud, that are powered by one of the popular PaaS platforms out there : Google App Engine.
I have made the entire material for my workshop available that you can follow at your own pace. Now drop those plans for the weekend and say “Hello World” to the cloud with Google App Engine.
Material Website : https://github.com/rominirani/Google-AppEngine-Workshop
The project page above contains a README that should guide you in terms of what to setup and navigating through the material.
The material contains:
1) Presentation: All 3 formats : .pptx, .ppt and pdf. Pick your choice. If you feel that there is another format that is important, let me know. I shall keep that in mind from next time.
2) Hands – on Exercises : Step by Step guide to building out a simple Exam Results application, that allows students to query for their exam results by seat number via Web, XMPP (Google Chat) and Email.
3) Source code for each step
I would love to receive your feedback. Let me know what new chapters/services you would like to see. If you hit any issues, do let me know via email.
My first speaking engagement/training in 2013 is coming up and the venue could not have been better.
Google Developer Group (GDG), Goa have been courteous enough to extend me an opportunity to conduct a workshop on Google App Engine. The App Engine Workshop is being organized in association with the upcoming BITS Pilani (Goa Campus) Quark 2013 Technical Festival.
The event schedule is spread across 2 days on January 12 and 13. On January 12, we will have a hands-on workshop to take the participants through Google App Engine. And then on Sunday, January 13 comes the 12-hour hackathon, where participants will hack away on their App Engine application. Great prizes are on offer for the winners and it should be exciting to see what the participants come up with.
I have the material wrapped up for the Google App Engine workshop on Saturday and I am excited to present it. The only prerequisites expected from the participants is basic knowledge of Java. The rest of the stuff including the App Engine ecosystem, the services and code will be explained in the workshop. The icing on the cake will the hands-on exercises and by the end of the workshop, participants will have an application running in the Google cloud. Not bad for a Saturday afternoon of work, eh ?
If you are in and around Goa this weekend on Jan 12/13 and have an interest in learning about App Engine, hop on and join the fun. Check out the Registration page.
Thanks once again to Smarth Behl, Head of GDG Goa for the invite. It will be great to catch up with the organizers of GDG and GAUG Goa, who have been terrific torchbearers for the community.
If you cannot make it in person, don’t feel bad. I have made the entire presentation, hands-on exercises and code available at a Github site : https://github.com/rominirani/Google-AppEngine-Workshop . So go through it at your own pace, follow it step by step and you could be writing Cloud Application powered by Google App Engine in no time. In case of any queries, just drop me an email and I will be glad to help.
I am pleased to announce to the world, the release of GitHub System Status Bot. This is an automated GTalk Bot that will give you information on the current status of GitHub System and optionally, allow you to opt-in for System status changes via IM Notifications.
A dedicated site for the GitHub Status Bot has been setup at http://githubstatusbot.appspot.com and full instructions on how to add it as a friend in GTalk is available here.
Getting started is as easy as the following:
- Add email@example.com as a friend/buddy in GTalk
- Once added, it understands a total of 7 commands and here is a sample screenshot of the Bot in action when you ask it for help:
The Bot is powered by the following:
In case, you wish to grab the source code, check out the GitHub project. You are free to download, modify and use the source code in any which way you see fit.
And of course, if this whets your appetite on writing your own Bot and you wish to learn how to do that, check out my article.
Contact me anytime if you wish. If you have a few ideas for Bots and wish to collaborate, do let me know.
Hope you enjoy the GitHub System Status Bot.
Google App Engine has announced version 1.6.5 of its App Engine SDK. I was pleasantly surprised to find an excellent feature that was hidden away in the Release Notes. Here is the nugget:
- All user requests have X-AppEngine-Region, X-AppEngine-City, and X-AppEngine-CityLatLong headers which contain location information based on the IP address of the client request. For a full description of these headers, see:
I had covered earlier on X-AppEngine-country and the fact that it worked quite well. And I had suggested just offhand that Google should probably take this one still further and provide other fine grained information too like city. It looks like they have gone further than that and include region, city and latitude / longitude.
In addition to the X-AppEngine-Country in the request header, it has now introduced the following additional location based headers with each request:
The availability of this information is surely going to be useful to a lot of applications that earlier had to resort to additional network calls to get this information from the IP Address.
To test out, I wrote a simple Google App Engine Java project which has a single page (index.jsp) that simply sniffs the value of these header and prints it out and shows a map of where you are visiting from.
Here is the snippet of code that prints out the different header values based where you are accessing the page:
<h2>Hello My Friend. Your co-ordinates are: </h2>
<h3> Country : <%=request.getHeader("X-AppEngine-Country") %></h3>
<h3> Region : <%=request.getHeader("X-AppEngine-Region") %></h3>
<h3> City : <%=request.getHeader("X-AppEngine-City") %></h3>
<h3> Latitude,Longitude : <%=request.getHeader("X-AppEngine-CityLatLong") %></h3>
Since I live in India, it does a good job and prints out the following (as shown in the screenshot below):
You can try it too.
Do you envision using this in your application? What have you been using so far to get similar functionality?
Source Code on GitHub.
Read more Episodes on App Engine Services
Google App Engine recently announced version 1.5.1 of its App Engine SDK. One of the features that interests me is that of the new header added in every client request.
The official announcement from Google is given below:
App Engine will now include a header with every client request that represents a best-effort attempt to identify the country from which the request originated. This header X-AppEngine-country can allow you to customize content based on the origin of the user.
Location is a big thing in most applications. Typically you can classify Location Based Applications into two types:
- One that requires coarse grained information. What this means is that it is enough to know if the user is from a particular city or country. There is no need to know the exact co-ordinates.
- The other type requires access to accurate location information and this typically means getting information about the latitude and longitude. The lat, lon are then used to further fine tune the results or actions.
The X-AppEngine-country is fantastic for applications that need coarse grained location information and would definitely help to avoid some network calls.
To test out, I wrote a simple Google App Engine Java project which has a single page (index.jsp) that simply sniffs the value of this header and prints it out. I was more interested in seeing what it returns. Here is the snippet of code that prints a greeting and the country from where you are accessing the page:
<h2>Hello My Friend from <%=request.getHeader("X-AppEngine-country") %></h2>
Since I live in India, it does a good job and prints out the following (as shown in the screenshot below):
You can try it too.
While this is a good start, here are some points:
- The country code that it provides are standard country abbreviations. Here is a list. If your application does not deal directly with the country code and requires some other value (e.g. full country name) — you might still have to do a lookup.
- Several public APIs that require a coarse grained location might still not work with just the country code given here. So some additional translation might be due.
- I still think this is a great start. And my suggestion to the Google Team if they haven’t already implemented it is to implement the a Header that I shall take the liberty of calling X-AppEngine-city.
So go ahead and give the Location Test a try
from your browser.
Read more Episodes on App Engine Services
I had spoken at IndicThreads Mobile conference which was held in Pune on November 19-20, 2010. One of the talks I gave was Using Google App Engine to power your Mobile Applications. This was the second talk that I gave at the conference, the first one was on using HTML5 to write Mobile Web applications.
This presentation covered Google App Engine via a simple example along with an Android Native Application and a generic HTML5 based Mobile Web Application that were both powered by the Service in the Cloud.