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 184.108.40.206
- 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 firstname.lastname@example.org 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 email@example.com 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 firstname.lastname@example.org 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.
I am pleased to be featured at the Cloud Foundry blog, where I have discussed how Cloud Foundry is my preferred choice of PaaS today and the announcement of Mumbai Data Sets that re powered by Cloud Foundry.
The Mumbai Data Sets currently available are:
- Blood Banks in Mumbai
- Help line numbers
- Taxi/Auto Fare
The site is available at http://mumbaidata.cloudfoundry.com and every data set is available as a REST API. Here are the REST End points:
The application is a Node.js application and I loved the way Node made it possible for me to expose the API in rapid time. Cloud Foundry being a polyglot platform allowed me to deploy the Node.js application. It also powers some of my other Java based applications.
If you have not given Cloud Foundry a try, I definitely recommend it.
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
This blog post was original published at the following URL : http://www.xoriant.com/blog/cloud-computing-for-isvs/cloud-computing-the-definition.html
Cloud Computing now finds a way through most technical discussions. Irrespective of the medium (Web Search, Twitter, Online Journals), you will find Cloud Computing being discussed. But ask anyone the definition of Cloud Computing and you will be hard pressed to get two exact definitions from different people.
Some define it as servers available for rent to storage or applications that we access from the browser, etc. All of them are right in ways. But is there a definition that describes the essence of Cloud Computing. While there might be various definitions of that, we shall look at one of the definitions of Cloud Computing in this blog post. It is known as the 5-3-4 Formula.
The 5-3-4 Formula is further broken down into the following:
5 key characteristics
The key characteristics are:
- On Demand Self Service: As the application owner, you should be able to provision additional computational resources for your application, look up reports and perform Administration tasks without requiring human intervention. Cloud vendors are now providing monitoring and provisioning tools where the user is in full control of provisioning things.
- Ubiquitous Network Access: We are living in a world where a desktop and laptop computer is not the only way that people access the Internet. Mobile device access is increasingly becoming a major source of traffic to your application. And it is not just mobile devices but devices fitted in vehicles and even our Televisions that are accessing the Internet. These explosion of device types and various networks around the world brings to the important concept of “ubiquity”. It means that no matter from what device or network , one should be able to reach your application via the public cloud networks. And this access is the cornerstone of cloud computing. Always available and from anywhere.
- Location Independent Resource Pooling: This feature is key to providing your additional resources. As a consumer one should not be worried about how the cloud allocates additional servers, takes care of multi-tenancy and allocation of physical and virtual servers in different geographical locations to meet your demand. Location Independent Resource Pooling is the ability of the Cloud to do exactly that.
- Elasticity: If you have released any online web application you can now look back and see those days where the number of hits to your sites peaked due to a new release or a press announcement. There will be spikes in user activity and you cannot scramble around for additional hardware when that happens. Cloud Computing addresses this through Elasticity. What it means is that the Cloud Vendors will automatically allocate you more resources as your application needs it. Extra Servers, more memory, more storage, etc will be available to your application if the need arises.
- Pay per Use: This is one of the key characteristics and one of the reasons for cloud computing gaining acceptance. Just like you can seldom predict your peak usage, it is important that you pay only for the amount of resources that you use. Cloud Computing vendors have various schemes starting with freemiums and then tiered pricing that clearly specify the quotas that are available based on what they charge you. At any point in time, you can switch between plans and allow for extra charging depending on additional resources that your application might use.
3 delivery models
Cloud Computing is typically delivered in 3 models and each one builds on the other
- IaaS : Infrastructure as a Service. This layer is about providing processing power (CPU cycles), storage, bandwidth, networks and other infrastructural resources. Some of the key players over here are Amazon Web Services (AWS) , Rackspace and others.
- PaaS: Platform as a Service. This layer builds on top of the IaaS layer and provides a developer with a complete stack on which to build applications. The stack comprises APIs that abstract out the low level details and allow the developer to quickly use them to build out the application. The key players in this space are Google (Google App Engine), Microsoft (Azure), Sales Force (force.com) and recent entrants like CloudFoundry from VmWare.
- SaaS: Software as a Service. In simple terms, these are ready made applications that you can use either for free or a fee. You simply need to sign up, optionally pay and login to use the software. Examples of this include SalesForce (CRM), Gmail, Google Apps, etc.
4 deployment models
The 4 deployment models available are given below:
Typically, the public cloud is what is best known to most of us. While classification does exist for other types like private, hybrid (mix of public/private) and community – they are not that prevalent and no clear classification exists. So for all practical purposes, when we refer to the cloud, it is public and with appropriate authentication and access control mechanisms built in.
So the next time, someone asks you to define “Cloud Computing”, you can simply say “5-3-4”.