hola
domingo, 29 de abril de 2012
lunes, 2 de abril de 2012
Cloud Enhancement for your Smartphone
A
couple of weeks ago I decided to develop an app intended to replace
our grocery list at home -- we normally keep all items in a sheet of
paper. The first alternative was to do the web app in HTML5 since
everybody is talking about the power of the new javascript libraries,
etc. so i couldn’t wait to implement it.
For the HTML5 version I developed a website (soon to be revealed to the general public) that allows users to keep grocery items under control. The website turned out to be more advanced than what I was expecting. It has plenty of business logic. There were items that if labeled weekly, would require a reschedule. There were other items that were “Reminder Only” to be scheduled some day in the future. And there were some other items that required a description in case there was a sale. Yes, my wife and I went crazy with the design. Therefore, I kept all the rules in the business layer and worked on the presentation layer leveraging on html5 to reduce the development time. (I used GAE for the cloud).
The first HTML5 release was a total failure. Although I did my testing, I did not realized how bad the 3G network coverage inside the commercial center is. Each time I marked an item as “checked out” it took forever for the connection to respond. I was always lagging a couple of aisles behind my wife trying to keep up with what had already been bought and what was pending. No wonder why I marked that we had bought soy milk when in fact we did not! (We just bought milk).
So it was time to go RESTful and do some more cloud enhancements. For the new redesign, most of the data is kept local vs 100% online. At the time the Android App is initiated, the app downloads the lists and the items for the specific user. It then saves them in the local database. The user then edits the items locally and syncs them at will. This design proved to be better than the HTML5 version. It was faster and more responsive.
Cloud Experience
It was pretty easy to set up the RESTful services in GAE. Although they do not provide a framework for those services, the open source community is pretty active on this area. I used Restlet, a framework with a pretty light library and pretty active user community, fresh documentation, and easy to use API. And because my friends always complain that I use Python, this time I used Java for GAE. The Restlet Framework has customized a release for Android apps, too. I also noticed that datanucleus, the persistence framework behind the Java GAE, also had RESTful interface but I did not use it.
There are some factors to consider while exposing your RESTful services using the cloud. You have to think about the warm-up period. Due to the nature of the cloud, most providers can put your instance to sleep if there is no activity. When the instance is brought back to life, your end user looses some precious seconds loading content. So I activated the warm-up functions in GAE and also updated some of the cron definitions for activating my persistence manager. After that the response time was down from 10 seconds to 600 ms. Huge improvements.
Other Frameworks
I was amazed at how many frameworks are there for Android and iOS cloud offerings. There are companies that give you an SDK and basically you can store all your data in their cloud for a fee. They take care of caching, serialization, security, geolocation, and performance. Funny because those are the same services that you already get from GAE or Azure. Some of the companies that I checked were Parse , Cocoafish , Urban Airship ,and Kii Cloud to name a few.
Conclusions
There is definitely an advantage in going cloud for Smartphone apps. One of the key factors for the clod storage is that most datastores are NoSQL. Therefore, your schemas can be modified without the pain of foreign keys or any restrictions which is great for the release cycle of Smartphone Apps that usually is every two weeks. So it is a very good solution.
For the HTML5 version I developed a website (soon to be revealed to the general public) that allows users to keep grocery items under control. The website turned out to be more advanced than what I was expecting. It has plenty of business logic. There were items that if labeled weekly, would require a reschedule. There were other items that were “Reminder Only” to be scheduled some day in the future. And there were some other items that required a description in case there was a sale. Yes, my wife and I went crazy with the design. Therefore, I kept all the rules in the business layer and worked on the presentation layer leveraging on html5 to reduce the development time. (I used GAE for the cloud).
The first HTML5 release was a total failure. Although I did my testing, I did not realized how bad the 3G network coverage inside the commercial center is. Each time I marked an item as “checked out” it took forever for the connection to respond. I was always lagging a couple of aisles behind my wife trying to keep up with what had already been bought and what was pending. No wonder why I marked that we had bought soy milk when in fact we did not! (We just bought milk).
So it was time to go RESTful and do some more cloud enhancements. For the new redesign, most of the data is kept local vs 100% online. At the time the Android App is initiated, the app downloads the lists and the items for the specific user. It then saves them in the local database. The user then edits the items locally and syncs them at will. This design proved to be better than the HTML5 version. It was faster and more responsive.
Cloud Experience
It was pretty easy to set up the RESTful services in GAE. Although they do not provide a framework for those services, the open source community is pretty active on this area. I used Restlet, a framework with a pretty light library and pretty active user community, fresh documentation, and easy to use API. And because my friends always complain that I use Python, this time I used Java for GAE. The Restlet Framework has customized a release for Android apps, too. I also noticed that datanucleus, the persistence framework behind the Java GAE, also had RESTful interface but I did not use it.
There are some factors to consider while exposing your RESTful services using the cloud. You have to think about the warm-up period. Due to the nature of the cloud, most providers can put your instance to sleep if there is no activity. When the instance is brought back to life, your end user looses some precious seconds loading content. So I activated the warm-up functions in GAE and also updated some of the cron definitions for activating my persistence manager. After that the response time was down from 10 seconds to 600 ms. Huge improvements.
Other Frameworks
I was amazed at how many frameworks are there for Android and iOS cloud offerings. There are companies that give you an SDK and basically you can store all your data in their cloud for a fee. They take care of caching, serialization, security, geolocation, and performance. Funny because those are the same services that you already get from GAE or Azure. Some of the companies that I checked were Parse , Cocoafish , Urban Airship ,and Kii Cloud to name a few.
Conclusions
There is definitely an advantage in going cloud for Smartphone apps. One of the key factors for the clod storage is that most datastores are NoSQL. Therefore, your schemas can be modified without the pain of foreign keys or any restrictions which is great for the release cycle of Smartphone Apps that usually is every two weeks. So it is a very good solution.
jueves, 26 de enero de 2012
Android development
These days I'm mostly developing Android apps. We'll see how it goes.
martes, 12 de abril de 2011
Effective Management: Which are the most valued traits in my boss
Recently, I read an article about Google's efforts inside to determine what makes a good manager. I was struck to find out that technical expertise did not rank among the top attributes of a good manager. Given my technical background, this remark sounded counter intuitive. Reflecting upon the article and remembering my former bosses, I changed my mind and agreed with it.
The most successful managers I had were not the techiest but instead the ones who: (1) gained an excellent understanding by just asking a few good questions, (2) those who related to the team, (3) and supported the professional development of the people they had in charge.
At least those are the main traits for me. Let me hear what do you have to say
The most successful managers I had were not the techiest but instead the ones who: (1) gained an excellent understanding by just asking a few good questions, (2) those who related to the team, (3) and supported the professional development of the people they had in charge.
At least those are the main traits for me. Let me hear what do you have to say
Etiquetas:
boss,
carrer,
jobs,
successful,
traits
miércoles, 9 de marzo de 2011
Standarizing Spanish Coffee and Beer
Two of the most common drinks in Spain: beer and coffee, present one of the most frequently confused terminology. In different Spanish cities, the same word will mean different things. This article discusses these frustrating differences.
First, starting with the basic: coffee with milk has a different meaning in Barcelona than in Seville. In Barcelona it is served in a coffee cup but in Seville it is served in a tall transparent glass. Transparency seems to be crucial because that's how the experienced drinker can distinguish the amount of milk with the coffee. A variant of the macciato, "el cortado", is also interpreted differently in the country's capital. In Madrid I ordered one and it looked like the coffee and milk served in Barcelona. In Pamplona and Barcelona it is served in glass a little bit taller than a shot glass -- if they don't, it is because the bar tender considers you a "guiri" so make sure to demand one like the locals do!
If things are difficult to manage with coffee, imagine the beer problems. One of my summer favorites is a refreshing drink called "clara": half-lemon half-beer that it is easy to order in Barcelona. However, if you order "clara" in perfect Spanish in Pamplona, the bar tender will not understand. You would have to order "lemon and beer" in order to be understood. A "tubo" is half a pint in Madrid and a "caña" is half a pint in Barcelona. [expandir]. I may sound like an expert but I always have problems ordering a real "cerveza" because it gets confused with the small size "caña". I have to emphasize, "yes, the big one" -- and wonder if the bar tender understood. My wife who is from Spain, always makes fun of my nervousness on the matter.
Yes, I have to publicly admit my uncertainties when ordering drinks in Spain even though I speak fluent Spanish and I have lived in Barcelona for over 8 years. The next time the government decides on standardizing shoe sizes, I'll promote the drinks standard.
miércoles, 23 de febrero de 2011
Innovation through Personal Projects
Working in an industry were innovation is key, I believe we should always find ways to foster new ideas. My suggestion is to apply the idea of Google in this company and allow employees to dedicate 20% of their time to a personal project. This blog entry analyzes how this initiative could benefit the company.
Sponsoring this competition will add excitement to the idea. On one side, we can classify the projects in different market segments. On the other side, we can invite our clients in those segments to be judges of the projects. For me this is an excellent way to showcase talent and do some branding. Furthermore, it is a great opportunity to increase sales.
As cheap as it sounds the prizes could be items that the company currently owns. For example, free days of vacation, more the RAM, an extra monitor, or free data roaming for your smartphone. Please no ipads, they are a cliche.
I believe this idea will encourage everybody to come up with new developments. But let me know what do you think.
Any takers?
Sponsoring this competition will add excitement to the idea. On one side, we can classify the projects in different market segments. On the other side, we can invite our clients in those segments to be judges of the projects. For me this is an excellent way to showcase talent and do some branding. Furthermore, it is a great opportunity to increase sales.
As cheap as it sounds the prizes could be items that the company currently owns. For example, free days of vacation, more the RAM, an extra monitor, or free data roaming for your smartphone. Please no ipads, they are a cliche.
I believe this idea will encourage everybody to come up with new developments. But let me know what do you think.
Any takers?
Suscribirse a:
Entradas (Atom)